[{"data":1,"prerenderedAt":8857},["ShallowReactive",2],{"$fGCo9l1hMtNdUiA6QzdUX5X3kLqaWcC5t2kdz4LrvCvc":3,"versions":2020,"-docs-4-x-getting-started-data-fetching":2024,"-docs-4-x-getting-started-data-fetching-surround":8852},[4,1120,1931],{"title":5,"titleTemplate":6,"icon":7,"path":8,"stem":9,"children":10,"page":108},"Docs",null,"i-lucide-book-marked","/docs/3.x","docs/3.x",[11,109,246,426,907,999,1036,1078],{"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/3.x/getting-started","docs/3.x/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/3.x/getting-started/introduction","docs/3.x/1.getting-started/01.introduction","i-lucide-info",{"title":24,"path":25,"stem":26,"titleTemplate":6,"icon":27},"Installation","/docs/3.x/getting-started/installation","docs/3.x/1.getting-started/02.installation","i-lucide-play",{"title":29,"path":30,"stem":31,"titleTemplate":6,"icon":32},"Configuration","/docs/3.x/getting-started/configuration","docs/3.x/1.getting-started/03.configuration","i-lucide-cog",{"title":34,"path":35,"stem":36,"titleTemplate":6,"icon":37},"Views","/docs/3.x/getting-started/views","docs/3.x/1.getting-started/04.views","i-lucide-panels-top-left",{"title":39,"path":40,"stem":41,"titleTemplate":6,"icon":42},"Assets","/docs/3.x/getting-started/assets","docs/3.x/1.getting-started/05.assets","i-lucide-image",{"title":44,"path":45,"stem":46,"titleTemplate":6,"icon":47},"Styling","/docs/3.x/getting-started/styling","docs/3.x/1.getting-started/06.styling","i-lucide-palette",{"title":49,"path":50,"stem":51,"titleTemplate":6,"icon":52},"Routing","/docs/3.x/getting-started/routing","docs/3.x/1.getting-started/07.routing","i-lucide-milestone",{"title":54,"path":55,"stem":56,"titleTemplate":6,"icon":57},"SEO and Meta","/docs/3.x/getting-started/seo-meta","docs/3.x/1.getting-started/08.seo-meta","i-lucide-file-search",{"title":59,"path":60,"stem":61,"titleTemplate":6,"icon":62},"Transitions","/docs/3.x/getting-started/transitions","docs/3.x/1.getting-started/09.transitions","i-lucide-toggle-right",{"title":64,"path":65,"stem":66,"titleTemplate":6,"icon":67},"Data Fetching","/docs/3.x/getting-started/data-fetching","docs/3.x/1.getting-started/10.data-fetching","i-lucide-cable",{"title":69,"path":70,"stem":71,"titleTemplate":6,"icon":72},"State Management","/docs/3.x/getting-started/state-management","docs/3.x/1.getting-started/11.state-management","i-lucide-database",{"title":74,"path":75,"stem":76,"titleTemplate":6,"icon":77},"Error Handling","/docs/3.x/getting-started/error-handling","docs/3.x/1.getting-started/12.error-handling","i-lucide-bug-off",{"title":79,"path":80,"stem":81,"titleTemplate":6,"icon":82},"Server","/docs/3.x/getting-started/server","docs/3.x/1.getting-started/13.server","i-lucide-pc-case",{"title":84,"path":85,"stem":86,"titleTemplate":6,"icon":87},"Layers","/docs/3.x/getting-started/layers","docs/3.x/1.getting-started/14.layers","i-lucide-layers",{"title":89,"path":90,"stem":91,"titleTemplate":6,"icon":92},"Prerendering","/docs/3.x/getting-started/prerendering","docs/3.x/1.getting-started/15.prerendering","i-lucide-file-code-2",{"title":94,"path":95,"stem":96,"titleTemplate":6,"icon":97},"Deployment","/docs/3.x/getting-started/deployment","docs/3.x/1.getting-started/16.deployment","i-lucide-cloud",{"title":99,"path":100,"stem":101,"titleTemplate":6,"icon":102},"Testing","/docs/3.x/getting-started/testing","docs/3.x/1.getting-started/17.testing","i-lucide-circle-check",{"title":104,"path":105,"stem":106,"titleTemplate":6,"icon":107},"Upgrade Guide","/docs/3.x/getting-started/upgrade","docs/3.x/1.getting-started/18.upgrade","i-lucide-circle-arrow-up",false,{"title":110,"titleTemplate":111,"icon":112,"path":113,"stem":114,"children":115,"page":108},"Directory Structure","%s · Nuxt Directory Structure","i-vscode-icons-default-folder","/docs/3.x/directory-structure","docs/3.x/2.directory-structure",[116,121,126,131,136,141,146,151,156,161,165,170,174,179,184,189,194,199,204,209,214,218,223,228,232,236,241],{"title":117,"path":118,"stem":119,"titleTemplate":6,"icon":120},".nuxt","/docs/3.x/directory-structure/nuxt","docs/3.x/2.directory-structure/0.nuxt","i-vscode-icons-folder-type-temp",{"title":122,"path":123,"stem":124,"titleTemplate":6,"icon":125},".output","/docs/3.x/directory-structure/output","docs/3.x/2.directory-structure/0.output","i-vscode-icons-folder-type-package",{"title":127,"path":128,"stem":129,"titleTemplate":6,"icon":130},"assets","/docs/3.x/directory-structure/assets","docs/3.x/2.directory-structure/1.assets","i-vscode-icons-folder-type-asset",{"title":132,"path":133,"stem":134,"titleTemplate":6,"icon":135},"components","/docs/3.x/directory-structure/components","docs/3.x/2.directory-structure/1.components","i-vscode-icons-folder-type-component",{"title":137,"path":138,"stem":139,"titleTemplate":6,"icon":140},"composables","/docs/3.x/directory-structure/composables","docs/3.x/2.directory-structure/1.composables","i-vscode-icons-folder-type-src",{"title":142,"path":143,"stem":144,"titleTemplate":6,"icon":145},"content","/docs/3.x/directory-structure/content","docs/3.x/2.directory-structure/1.content","i-vscode-icons-folder-type-log",{"title":147,"path":148,"stem":149,"titleTemplate":6,"icon":150},"layers","/docs/3.x/directory-structure/layers","docs/3.x/2.directory-structure/1.layers","i-vscode-icons-folder-type-nuxt",{"title":152,"path":153,"stem":154,"titleTemplate":6,"icon":155},"layouts","/docs/3.x/directory-structure/layouts","docs/3.x/2.directory-structure/1.layouts","i-vscode-icons-folder-type-view",{"title":157,"path":158,"stem":159,"titleTemplate":6,"icon":160},"middleware","/docs/3.x/directory-structure/middleware","docs/3.x/2.directory-structure/1.middleware","i-vscode-icons-folder-type-middleware",{"title":162,"path":163,"stem":164,"titleTemplate":6,"icon":150},"modules","/docs/3.x/directory-structure/modules","docs/3.x/2.directory-structure/1.modules",{"title":166,"path":167,"stem":168,"titleTemplate":6,"icon":169},"node_modules","/docs/3.x/directory-structure/node_modules","docs/3.x/2.directory-structure/1.node_modules","i-vscode-icons-folder-type-node",{"title":171,"path":172,"stem":173,"titleTemplate":6,"icon":155},"pages","/docs/3.x/directory-structure/pages","docs/3.x/2.directory-structure/1.pages",{"title":175,"path":176,"stem":177,"titleTemplate":6,"icon":178},"plugins","/docs/3.x/directory-structure/plugins","docs/3.x/2.directory-structure/1.plugins","i-vscode-icons-folder-type-plugin",{"title":180,"path":181,"stem":182,"titleTemplate":6,"icon":183},"public","/docs/3.x/directory-structure/public","docs/3.x/2.directory-structure/1.public","i-vscode-icons-folder-type-public",{"title":185,"path":186,"stem":187,"titleTemplate":6,"icon":188},"server","/docs/3.x/directory-structure/server","docs/3.x/2.directory-structure/1.server","i-vscode-icons-folder-type-server",{"title":190,"path":191,"stem":192,"titleTemplate":6,"icon":193},"shared","/docs/3.x/directory-structure/shared","docs/3.x/2.directory-structure/1.shared","i-vscode-icons-folder-type-shared",{"title":195,"path":196,"stem":197,"titleTemplate":6,"icon":198},"utils","/docs/3.x/directory-structure/utils","docs/3.x/2.directory-structure/1.utils","i-vscode-icons-folder-type-tools",{"title":200,"path":201,"stem":202,"titleTemplate":6,"icon":203},".env","/docs/3.x/directory-structure/env","docs/3.x/2.directory-structure/2.env","i-vscode-icons-file-type-dotenv",{"title":205,"path":206,"stem":207,"titleTemplate":6,"icon":208},".gitignore","/docs/3.x/directory-structure/gitignore","docs/3.x/2.directory-structure/2.gitignore","i-vscode-icons-file-type-git",{"title":210,"path":211,"stem":212,"titleTemplate":6,"icon":213},".nuxtignore","/docs/3.x/directory-structure/nuxtignore","docs/3.x/2.directory-structure/2.nuxtignore","i-vscode-icons-file-type-nuxt",{"title":215,"path":216,"stem":217,"titleTemplate":6,"icon":213},".nuxtrc","/docs/3.x/directory-structure/nuxtrc","docs/3.x/2.directory-structure/2.nuxtrc",{"title":219,"path":220,"stem":221,"titleTemplate":6,"icon":222},"app.vue","/docs/3.x/directory-structure/app","docs/3.x/2.directory-structure/3.app","i-vscode-icons-file-type-vue",{"title":224,"path":225,"stem":226,"titleTemplate":6,"icon":227},"app.config.ts","/docs/3.x/directory-structure/app-config","docs/3.x/2.directory-structure/3.app-config","i-vscode-icons-file-type-light-config",{"title":229,"path":230,"stem":231,"titleTemplate":6,"icon":222},"error.vue","/docs/3.x/directory-structure/error","docs/3.x/2.directory-structure/3.error",{"title":233,"path":234,"stem":235,"titleTemplate":6,"icon":213},"nuxt.config.ts","/docs/3.x/directory-structure/nuxt-config","docs/3.x/2.directory-structure/3.nuxt-config",{"title":237,"path":238,"stem":239,"titleTemplate":6,"icon":240},"package.json","/docs/3.x/directory-structure/package","docs/3.x/2.directory-structure/3.package","i-vscode-icons-file-type-npm",{"title":242,"path":243,"stem":244,"titleTemplate":6,"icon":245},"tsconfig.json","/docs/3.x/directory-structure/tsconfig","docs/3.x/2.directory-structure/3.tsconfig","i-vscode-icons-file-type-tsconfig",{"title":247,"titleTemplate":6,"icon":248,"path":249,"stem":250,"children":251,"page":108},"Guide","i-lucide-book-open","/docs/3.x/guide","docs/3.x/3.guide",[252,287,306,321,356,379],{"title":253,"titleTemplate":254,"icon":255,"path":256,"stem":257,"children":258,"page":108},"Key Concepts","%s · Nuxt Concepts","i-lucide-medal","/docs/3.x/guide/concepts","docs/3.x/3.guide/1.concepts",[259,263,267,271,275,279,283],{"title":260,"path":261,"stem":262,"titleTemplate":6},"Rendering Modes","/docs/3.x/guide/concepts/rendering","docs/3.x/3.guide/1.concepts/1.rendering",{"title":264,"path":265,"stem":266,"titleTemplate":6},"Nuxt Lifecycle","/docs/3.x/guide/concepts/nuxt-lifecycle","docs/3.x/3.guide/1.concepts/2.nuxt-lifecycle",{"title":268,"path":269,"stem":270,"titleTemplate":6},"Auto-imports","/docs/3.x/guide/concepts/auto-imports","docs/3.x/3.guide/1.concepts/3.auto-imports",{"title":272,"path":273,"stem":274,"titleTemplate":6},"Server Engine","/docs/3.x/guide/concepts/server-engine","docs/3.x/3.guide/1.concepts/4.server-engine",{"title":276,"path":277,"stem":278,"titleTemplate":6},"Modules","/docs/3.x/guide/concepts/modules","docs/3.x/3.guide/1.concepts/5.modules",{"title":280,"path":281,"stem":282,"titleTemplate":6},"TypeScript","/docs/3.x/guide/concepts/typescript","docs/3.x/3.guide/1.concepts/8.typescript",{"title":284,"path":285,"stem":286,"titleTemplate":6},"Code Style","/docs/3.x/guide/concepts/code-style","docs/3.x/3.guide/1.concepts/9.code-style",{"title":288,"titleTemplate":289,"icon":290,"path":291,"stem":292,"children":293,"page":108},"Best Practices","%s · Best Practices","i-lucide-square-check","/docs/3.x/guide/best-practices","docs/3.x/3.guide/2.best-practices",[294,298,302],{"title":295,"path":296,"stem":297,"titleTemplate":6},"Nuxt and hydration","/docs/3.x/guide/best-practices/hydration","docs/3.x/3.guide/2.best-practices/hydration",{"title":299,"path":300,"stem":301,"titleTemplate":6},"Nuxt Performance","/docs/3.x/guide/best-practices/performance","docs/3.x/3.guide/2.best-practices/performance",{"title":303,"path":304,"stem":305,"titleTemplate":6},"Nuxt Plugins","/docs/3.x/guide/best-practices/plugins","docs/3.x/3.guide/2.best-practices/plugins",{"title":307,"titleTemplate":308,"icon":309,"path":310,"stem":311,"children":312,"page":108},"Working with AI","Working with AI: %s","i-lucide-bot","/docs/3.x/guide/ai","docs/3.x/3.guide/3.ai",[313,317],{"title":314,"path":315,"stem":316,"titleTemplate":6},"MCP Server","/docs/3.x/guide/ai/mcp","docs/3.x/3.guide/3.ai/1.mcp",{"title":318,"path":319,"stem":320,"titleTemplate":6},"LLMs.txt","/docs/3.x/guide/ai/llms-txt","docs/3.x/3.guide/3.ai/2.llms-txt",{"title":322,"titleTemplate":323,"icon":324,"path":325,"stem":326,"children":327,"page":108},"Module Author Guide","%s · Nuxt Modules Author Guide","i-lucide-box","/docs/3.x/guide/modules","docs/3.x/3.guide/4.modules",[328,332,336,340,344,348,352],{"title":329,"path":330,"stem":331,"titleTemplate":6},"Create Your First Module","/docs/3.x/guide/modules/getting-started","docs/3.x/3.guide/4.modules/1.getting-started",{"title":333,"path":334,"stem":335,"titleTemplate":6},"Understand Module Structure","/docs/3.x/guide/modules/module-anatomy","docs/3.x/3.guide/4.modules/2.module-anatomy",{"title":337,"path":338,"stem":339,"titleTemplate":6},"Add Plugins, Components & More","/docs/3.x/guide/modules/recipes-basics","docs/3.x/3.guide/4.modules/3.recipes-basics",{"title":341,"path":342,"stem":343,"titleTemplate":6},"Use Hooks & Extend Types","/docs/3.x/guide/modules/recipes-advanced","docs/3.x/3.guide/4.modules/4.recipes-advanced",{"title":345,"path":346,"stem":347,"titleTemplate":6},"Test Your Module","/docs/3.x/guide/modules/testing","docs/3.x/3.guide/4.modules/5.testing",{"title":349,"path":350,"stem":351,"titleTemplate":6},"Follow Best Practices","/docs/3.x/guide/modules/best-practices","docs/3.x/3.guide/4.modules/6.best-practices",{"title":353,"path":354,"stem":355,"titleTemplate":6},"Publish & Share Your Module","/docs/3.x/guide/modules/ecosystem","docs/3.x/3.guide/4.modules/7.ecosystem",{"title":357,"titleTemplate":358,"icon":359,"path":360,"stem":361,"children":362,"page":108},"Recipes","%s · Recipes","i-lucide-cooking-pot","/docs/3.x/guide/recipes","docs/3.x/3.guide/5.recipes",[363,367,371,375],{"title":364,"path":365,"stem":366,"titleTemplate":6},"Custom Routing","/docs/3.x/guide/recipes/custom-routing","docs/3.x/3.guide/5.recipes/1.custom-routing",{"title":368,"path":369,"stem":370,"titleTemplate":6},"Vite Plugins","/docs/3.x/guide/recipes/vite-plugin","docs/3.x/3.guide/5.recipes/2.vite-plugin",{"title":372,"path":373,"stem":374,"titleTemplate":6},"Custom useFetch","/docs/3.x/guide/recipes/custom-usefetch","docs/3.x/3.guide/5.recipes/3.custom-usefetch",{"title":376,"path":377,"stem":378,"titleTemplate":6},"Sessions and Authentication","/docs/3.x/guide/recipes/sessions-and-authentication","docs/3.x/3.guide/5.recipes/4.sessions-and-authentication",{"title":380,"titleTemplate":381,"icon":382,"path":383,"stem":384,"children":385,"page":108},"Going Further","%s · Nuxt Advanced","i-lucide-star","/docs/3.x/guide/going-further","docs/3.x/3.guide/6.going-further",[386,390,394,398,402,406,410,414,418,422],{"title":387,"path":388,"stem":389,"titleTemplate":6},"Custom Events","/docs/3.x/guide/going-further/events","docs/3.x/3.guide/6.going-further/1.events",{"title":391,"path":392,"stem":393,"titleTemplate":6},"Experimental Features","/docs/3.x/guide/going-further/experimental-features","docs/3.x/3.guide/6.going-further/1.experimental-features",{"title":395,"path":396,"stem":397,"titleTemplate":6},"Features","/docs/3.x/guide/going-further/features","docs/3.x/3.guide/6.going-further/1.features",{"title":399,"path":400,"stem":401,"titleTemplate":6},"Runtime Config","/docs/3.x/guide/going-further/runtime-config","docs/3.x/3.guide/6.going-further/10.runtime-config",{"title":403,"path":404,"stem":405,"titleTemplate":6},"Nightly Release Channel","/docs/3.x/guide/going-further/nightly-release-channel","docs/3.x/3.guide/6.going-further/11.nightly-release-channel",{"title":407,"path":408,"stem":409,"titleTemplate":6},"Lifecycle Hooks","/docs/3.x/guide/going-further/hooks","docs/3.x/3.guide/6.going-further/2.hooks",{"title":411,"path":412,"stem":413,"titleTemplate":6},"Nuxt Kit","/docs/3.x/guide/going-further/kit","docs/3.x/3.guide/6.going-further/4.kit",{"title":415,"path":416,"stem":417,"titleTemplate":6},"NuxtApp","/docs/3.x/guide/going-further/nuxt-app","docs/3.x/3.guide/6.going-further/6.nuxt-app",{"title":419,"path":420,"stem":421,"titleTemplate":6},"Authoring Nuxt Layers","/docs/3.x/guide/going-further/layers","docs/3.x/3.guide/6.going-further/7.layers",{"title":423,"path":424,"stem":425,"titleTemplate":6},"Debugging","/docs/3.x/guide/going-further/debugging","docs/3.x/3.guide/6.going-further/9.debugging",{"title":427,"titleTemplate":428,"icon":429,"path":430,"stem":431,"children":432,"page":108},"API","%s · Nuxt API","i-lucide-code-xml","/docs/3.x/api","docs/3.x/4.api",[433,499,622,745,816,889,902],{"title":434,"titleTemplate":435,"icon":324,"path":436,"stem":437,"children":438,"page":108},"Components","%s · Nuxt Components","/docs/3.x/api/components","docs/3.x/4.api/1.components",[439,443,447,451,455,459,463,467,471,475,479,483,487,491,495],{"title":440,"path":441,"stem":442,"titleTemplate":6},"\u003CClientOnly>","/docs/3.x/api/components/client-only","docs/3.x/4.api/1.components/1.client-only",{"title":444,"path":445,"stem":446,"titleTemplate":6},"\u003CDevOnly>","/docs/3.x/api/components/dev-only","docs/3.x/4.api/1.components/1.dev-only",{"title":448,"path":449,"stem":450,"titleTemplate":6},"\u003CNuxtClientFallback>","/docs/3.x/api/components/nuxt-client-fallback","docs/3.x/4.api/1.components/1.nuxt-client-fallback",{"title":452,"path":453,"stem":454,"titleTemplate":6},"\u003CNuxtPicture>","/docs/3.x/api/components/nuxt-picture","docs/3.x/4.api/1.components/10.nuxt-picture",{"title":456,"path":457,"stem":458,"titleTemplate":6},"\u003CTeleport>","/docs/3.x/api/components/teleports","docs/3.x/4.api/1.components/11.teleports",{"title":460,"path":461,"stem":462,"titleTemplate":6},"\u003CNuxtRouteAnnouncer>","/docs/3.x/api/components/nuxt-route-announcer","docs/3.x/4.api/1.components/12.nuxt-route-announcer",{"title":464,"path":465,"stem":466,"titleTemplate":6},"\u003CNuxtTime>","/docs/3.x/api/components/nuxt-time","docs/3.x/4.api/1.components/13.nuxt-time",{"title":468,"path":469,"stem":470,"titleTemplate":6},"\u003CNuxtPage>","/docs/3.x/api/components/nuxt-page","docs/3.x/4.api/1.components/2.nuxt-page",{"title":472,"path":473,"stem":474,"titleTemplate":6},"\u003CNuxtLayout>","/docs/3.x/api/components/nuxt-layout","docs/3.x/4.api/1.components/3.nuxt-layout",{"title":476,"path":477,"stem":478,"titleTemplate":6},"\u003CNuxtLink>","/docs/3.x/api/components/nuxt-link","docs/3.x/4.api/1.components/4.nuxt-link",{"title":480,"path":481,"stem":482,"titleTemplate":6},"\u003CNuxtLoadingIndicator>","/docs/3.x/api/components/nuxt-loading-indicator","docs/3.x/4.api/1.components/5.nuxt-loading-indicator",{"title":484,"path":485,"stem":486,"titleTemplate":6},"\u003CNuxtErrorBoundary>","/docs/3.x/api/components/nuxt-error-boundary","docs/3.x/4.api/1.components/6.nuxt-error-boundary",{"title":488,"path":489,"stem":490,"titleTemplate":6},"\u003CNuxtWelcome>","/docs/3.x/api/components/nuxt-welcome","docs/3.x/4.api/1.components/7.nuxt-welcome",{"title":492,"path":493,"stem":494,"titleTemplate":6},"\u003CNuxtIsland>","/docs/3.x/api/components/nuxt-island","docs/3.x/4.api/1.components/8.nuxt-island",{"title":496,"path":497,"stem":498,"titleTemplate":6},"\u003CNuxtImg>","/docs/3.x/api/components/nuxt-img","docs/3.x/4.api/1.components/9.nuxt-img",{"title":500,"titleTemplate":501,"icon":502,"path":503,"stem":504,"children":505,"page":108},"Composables","%s · Nuxt Composables","i-lucide-arrow-left-right","/docs/3.x/api/composables","docs/3.x/4.api/2.composables",[506,510,514,518,522,526,530,534,538,542,546,550,554,558,562,566,570,574,578,582,586,590,594,598,602,606,610,614,618],{"title":507,"path":508,"stem":509,"titleTemplate":6},"onPrehydrate","/docs/3.x/api/composables/on-prehydrate","docs/3.x/4.api/2.composables/on-prehydrate",{"title":511,"path":512,"stem":513,"titleTemplate":6},"useAppConfig","/docs/3.x/api/composables/use-app-config","docs/3.x/4.api/2.composables/use-app-config",{"title":515,"path":516,"stem":517,"titleTemplate":6},"useAsyncData","/docs/3.x/api/composables/use-async-data","docs/3.x/4.api/2.composables/use-async-data",{"title":519,"path":520,"stem":521,"titleTemplate":6},"useCookie","/docs/3.x/api/composables/use-cookie","docs/3.x/4.api/2.composables/use-cookie",{"title":523,"path":524,"stem":525,"titleTemplate":6},"useError","/docs/3.x/api/composables/use-error","docs/3.x/4.api/2.composables/use-error",{"title":527,"path":528,"stem":529,"titleTemplate":6},"useFetch","/docs/3.x/api/composables/use-fetch","docs/3.x/4.api/2.composables/use-fetch",{"title":531,"path":532,"stem":533,"titleTemplate":6},"useHead","/docs/3.x/api/composables/use-head","docs/3.x/4.api/2.composables/use-head",{"title":535,"path":536,"stem":537,"titleTemplate":6},"useHeadSafe","/docs/3.x/api/composables/use-head-safe","docs/3.x/4.api/2.composables/use-head-safe",{"title":539,"path":540,"stem":541,"titleTemplate":6},"useHydration","/docs/3.x/api/composables/use-hydration","docs/3.x/4.api/2.composables/use-hydration",{"title":543,"path":544,"stem":545,"titleTemplate":6},"useLazyAsyncData","/docs/3.x/api/composables/use-lazy-async-data","docs/3.x/4.api/2.composables/use-lazy-async-data",{"title":547,"path":548,"stem":549,"titleTemplate":6},"useLazyFetch","/docs/3.x/api/composables/use-lazy-fetch","docs/3.x/4.api/2.composables/use-lazy-fetch",{"title":551,"path":552,"stem":553,"titleTemplate":6},"useLoadingIndicator","/docs/3.x/api/composables/use-loading-indicator","docs/3.x/4.api/2.composables/use-loading-indicator",{"title":555,"path":556,"stem":557,"titleTemplate":6},"useNuxtApp","/docs/3.x/api/composables/use-nuxt-app","docs/3.x/4.api/2.composables/use-nuxt-app",{"title":559,"path":560,"stem":561,"titleTemplate":6},"useNuxtData","/docs/3.x/api/composables/use-nuxt-data","docs/3.x/4.api/2.composables/use-nuxt-data",{"title":563,"path":564,"stem":565,"titleTemplate":6},"usePreviewMode","/docs/3.x/api/composables/use-preview-mode","docs/3.x/4.api/2.composables/use-preview-mode",{"title":567,"path":568,"stem":569,"titleTemplate":6},"useRequestEvent","/docs/3.x/api/composables/use-request-event","docs/3.x/4.api/2.composables/use-request-event",{"title":571,"path":572,"stem":573,"titleTemplate":6},"useRequestFetch","/docs/3.x/api/composables/use-request-fetch","docs/3.x/4.api/2.composables/use-request-fetch",{"title":575,"path":576,"stem":577,"titleTemplate":6},"useRequestHeader","/docs/3.x/api/composables/use-request-header","docs/3.x/4.api/2.composables/use-request-header",{"title":579,"path":580,"stem":581,"titleTemplate":6},"useRequestHeaders","/docs/3.x/api/composables/use-request-headers","docs/3.x/4.api/2.composables/use-request-headers",{"title":583,"path":584,"stem":585,"titleTemplate":6},"useRequestURL","/docs/3.x/api/composables/use-request-url","docs/3.x/4.api/2.composables/use-request-url",{"title":587,"path":588,"stem":589,"titleTemplate":6},"useResponseHeader","/docs/3.x/api/composables/use-response-header","docs/3.x/4.api/2.composables/use-response-header",{"title":591,"path":592,"stem":593,"titleTemplate":6},"useRoute","/docs/3.x/api/composables/use-route","docs/3.x/4.api/2.composables/use-route",{"title":595,"path":596,"stem":597,"titleTemplate":6},"useRouteAnnouncer","/docs/3.x/api/composables/use-route-announcer","docs/3.x/4.api/2.composables/use-route-announcer",{"title":599,"path":600,"stem":601,"titleTemplate":6},"useRouter","/docs/3.x/api/composables/use-router","docs/3.x/4.api/2.composables/use-router",{"title":603,"path":604,"stem":605,"titleTemplate":6},"useRuntimeConfig","/docs/3.x/api/composables/use-runtime-config","docs/3.x/4.api/2.composables/use-runtime-config",{"title":607,"path":608,"stem":609,"titleTemplate":6},"useRuntimeHook","/docs/3.x/api/composables/use-runtime-hook","docs/3.x/4.api/2.composables/use-runtime-hook",{"title":611,"path":612,"stem":613,"titleTemplate":6},"useSeoMeta","/docs/3.x/api/composables/use-seo-meta","docs/3.x/4.api/2.composables/use-seo-meta",{"title":615,"path":616,"stem":617,"titleTemplate":6},"useServerSeoMeta","/docs/3.x/api/composables/use-server-seo-meta","docs/3.x/4.api/2.composables/use-server-seo-meta",{"title":619,"path":620,"stem":621,"titleTemplate":6},"useState","/docs/3.x/api/composables/use-state","docs/3.x/4.api/2.composables/use-state",{"title":623,"titleTemplate":624,"icon":625,"path":626,"stem":627,"children":628,"page":108},"Utils","%s · Nuxt Utils","i-lucide-square-function","/docs/3.x/api/utils","docs/3.x/4.api/3.utils",[629,633,637,641,645,649,653,657,661,665,669,673,677,681,685,689,693,697,701,705,709,713,717,721,725,729,733,737,741],{"title":630,"path":631,"stem":632,"titleTemplate":6},"$fetch","/docs/3.x/api/utils/dollarfetch","docs/3.x/4.api/3.utils/$fetch",{"title":634,"path":635,"stem":636,"titleTemplate":6},"abortNavigation","/docs/3.x/api/utils/abort-navigation","docs/3.x/4.api/3.utils/abort-navigation",{"title":638,"path":639,"stem":640,"titleTemplate":6},"addRouteMiddleware","/docs/3.x/api/utils/add-route-middleware","docs/3.x/4.api/3.utils/add-route-middleware",{"title":642,"path":643,"stem":644,"titleTemplate":6},"callOnce","/docs/3.x/api/utils/call-once","docs/3.x/4.api/3.utils/call-once",{"title":646,"path":647,"stem":648,"titleTemplate":6},"clearError","/docs/3.x/api/utils/clear-error","docs/3.x/4.api/3.utils/clear-error",{"title":650,"path":651,"stem":652,"titleTemplate":6},"clearNuxtData","/docs/3.x/api/utils/clear-nuxt-data","docs/3.x/4.api/3.utils/clear-nuxt-data",{"title":654,"path":655,"stem":656,"titleTemplate":6},"clearNuxtState","/docs/3.x/api/utils/clear-nuxt-state","docs/3.x/4.api/3.utils/clear-nuxt-state",{"title":658,"path":659,"stem":660,"titleTemplate":6},"createError","/docs/3.x/api/utils/create-error","docs/3.x/4.api/3.utils/create-error",{"title":662,"path":663,"stem":664,"titleTemplate":6},"defineLazyHydrationComponent","/docs/3.x/api/utils/define-lazy-hydration-component","docs/3.x/4.api/3.utils/define-lazy-hydration-component",{"title":666,"path":667,"stem":668,"titleTemplate":6},"defineNuxtComponent","/docs/3.x/api/utils/define-nuxt-component","docs/3.x/4.api/3.utils/define-nuxt-component",{"title":670,"path":671,"stem":672,"titleTemplate":6},"defineNuxtPlugin","/docs/3.x/api/utils/define-nuxt-plugin","docs/3.x/4.api/3.utils/define-nuxt-plugin",{"title":674,"path":675,"stem":676,"titleTemplate":6},"defineNuxtRouteMiddleware","/docs/3.x/api/utils/define-nuxt-route-middleware","docs/3.x/4.api/3.utils/define-nuxt-route-middleware",{"title":678,"path":679,"stem":680,"titleTemplate":6},"definePageMeta","/docs/3.x/api/utils/define-page-meta","docs/3.x/4.api/3.utils/define-page-meta",{"title":682,"path":683,"stem":684,"titleTemplate":6},"defineRouteRules","/docs/3.x/api/utils/define-route-rules","docs/3.x/4.api/3.utils/define-route-rules",{"title":686,"path":687,"stem":688,"titleTemplate":6},"navigateTo","/docs/3.x/api/utils/navigate-to","docs/3.x/4.api/3.utils/navigate-to",{"title":690,"path":691,"stem":692,"titleTemplate":6},"onBeforeRouteLeave","/docs/3.x/api/utils/on-before-route-leave","docs/3.x/4.api/3.utils/on-before-route-leave",{"title":694,"path":695,"stem":696,"titleTemplate":6},"onBeforeRouteUpdate","/docs/3.x/api/utils/on-before-route-update","docs/3.x/4.api/3.utils/on-before-route-update",{"title":698,"path":699,"stem":700,"titleTemplate":6},"onNuxtReady","/docs/3.x/api/utils/on-nuxt-ready","docs/3.x/4.api/3.utils/on-nuxt-ready",{"title":702,"path":703,"stem":704,"titleTemplate":6},"prefetchComponents","/docs/3.x/api/utils/prefetch-components","docs/3.x/4.api/3.utils/prefetch-components",{"title":706,"path":707,"stem":708,"titleTemplate":6},"preloadComponents","/docs/3.x/api/utils/preload-components","docs/3.x/4.api/3.utils/preload-components",{"title":710,"path":711,"stem":712,"titleTemplate":6},"preloadRouteComponents","/docs/3.x/api/utils/preload-route-components","docs/3.x/4.api/3.utils/preload-route-components",{"title":714,"path":715,"stem":716,"titleTemplate":6},"prerenderRoutes","/docs/3.x/api/utils/prerender-routes","docs/3.x/4.api/3.utils/prerender-routes",{"title":718,"path":719,"stem":720,"titleTemplate":6},"refreshCookie","/docs/3.x/api/utils/refresh-cookie","docs/3.x/4.api/3.utils/refresh-cookie",{"title":722,"path":723,"stem":724,"titleTemplate":6},"refreshNuxtData","/docs/3.x/api/utils/refresh-nuxt-data","docs/3.x/4.api/3.utils/refresh-nuxt-data",{"title":726,"path":727,"stem":728,"titleTemplate":6},"reloadNuxtApp","/docs/3.x/api/utils/reload-nuxt-app","docs/3.x/4.api/3.utils/reload-nuxt-app",{"title":730,"path":731,"stem":732,"titleTemplate":6},"setPageLayout","/docs/3.x/api/utils/set-page-layout","docs/3.x/4.api/3.utils/set-page-layout",{"title":734,"path":735,"stem":736,"titleTemplate":6},"setResponseStatus","/docs/3.x/api/utils/set-response-status","docs/3.x/4.api/3.utils/set-response-status",{"title":738,"path":739,"stem":740,"titleTemplate":6},"showError","/docs/3.x/api/utils/show-error","docs/3.x/4.api/3.utils/show-error",{"title":742,"path":743,"stem":744,"titleTemplate":6},"updateAppConfig","/docs/3.x/api/utils/update-app-config","docs/3.x/4.api/3.utils/update-app-config",{"title":746,"titleTemplate":747,"icon":748,"path":749,"stem":750,"children":751,"page":108},"Commands","%s · Nuxt Commands","i-lucide-square-terminal","/docs/3.x/api/commands","docs/3.x/4.api/4.commands",[752,756,760,764,768,772,776,780,784,788,792,796,800,804,808,812],{"title":753,"path":754,"stem":755,"titleTemplate":6},"nuxt add","/docs/3.x/api/commands/add","docs/3.x/4.api/4.commands/add",{"title":757,"path":758,"stem":759,"titleTemplate":6},"nuxt analyze","/docs/3.x/api/commands/analyze","docs/3.x/4.api/4.commands/analyze",{"title":761,"path":762,"stem":763,"titleTemplate":6},"nuxt build","/docs/3.x/api/commands/build","docs/3.x/4.api/4.commands/build",{"title":765,"path":766,"stem":767,"titleTemplate":6},"nuxt build-module","/docs/3.x/api/commands/build-module","docs/3.x/4.api/4.commands/build-module",{"title":769,"path":770,"stem":771,"titleTemplate":6},"nuxt cleanup","/docs/3.x/api/commands/cleanup","docs/3.x/4.api/4.commands/cleanup",{"title":773,"path":774,"stem":775,"titleTemplate":6},"nuxt dev","/docs/3.x/api/commands/dev","docs/3.x/4.api/4.commands/dev",{"title":777,"path":778,"stem":779,"titleTemplate":6},"nuxt devtools","/docs/3.x/api/commands/devtools","docs/3.x/4.api/4.commands/devtools",{"title":781,"path":782,"stem":783,"titleTemplate":6},"nuxt generate","/docs/3.x/api/commands/generate","docs/3.x/4.api/4.commands/generate",{"title":785,"path":786,"stem":787,"titleTemplate":6},"nuxt info","/docs/3.x/api/commands/info","docs/3.x/4.api/4.commands/info",{"title":789,"path":790,"stem":791,"titleTemplate":6},"create nuxt","/docs/3.x/api/commands/init","docs/3.x/4.api/4.commands/init",{"title":793,"path":794,"stem":795,"titleTemplate":6},"nuxt module","/docs/3.x/api/commands/module","docs/3.x/4.api/4.commands/module",{"title":797,"path":798,"stem":799,"titleTemplate":6},"nuxt prepare","/docs/3.x/api/commands/prepare","docs/3.x/4.api/4.commands/prepare",{"title":801,"path":802,"stem":803,"titleTemplate":6},"nuxt preview","/docs/3.x/api/commands/preview","docs/3.x/4.api/4.commands/preview",{"title":805,"path":806,"stem":807,"titleTemplate":6},"nuxt test","/docs/3.x/api/commands/test","docs/3.x/4.api/4.commands/test",{"title":809,"path":810,"stem":811,"titleTemplate":6},"nuxt typecheck","/docs/3.x/api/commands/typecheck","docs/3.x/4.api/4.commands/typecheck",{"title":813,"path":814,"stem":815,"titleTemplate":6},"nuxt upgrade","/docs/3.x/api/commands/upgrade","docs/3.x/4.api/4.commands/upgrade",{"title":411,"titleTemplate":817,"icon":818,"path":819,"stem":820,"children":821,"page":108},"%s · Nuxt Kit","i-lucide-package","/docs/3.x/api/kit","docs/3.x/4.api/5.kit",[822,825,828,832,836,840,844,848,852,855,859,863,866,869,873,877,881,885],{"title":276,"path":823,"stem":824,"titleTemplate":6},"/docs/3.x/api/kit/modules","docs/3.x/4.api/5.kit/1.modules",{"title":399,"path":826,"stem":827,"titleTemplate":6},"/docs/3.x/api/kit/runtime-config","docs/3.x/4.api/5.kit/10.runtime-config",{"title":829,"path":830,"stem":831,"titleTemplate":6},"Templates","/docs/3.x/api/kit/templates","docs/3.x/4.api/5.kit/10.templates",{"title":833,"path":834,"stem":835,"titleTemplate":6},"Nitro","/docs/3.x/api/kit/nitro","docs/3.x/4.api/5.kit/11.nitro",{"title":837,"path":838,"stem":839,"titleTemplate":6},"Resolving","/docs/3.x/api/kit/resolving","docs/3.x/4.api/5.kit/12.resolving",{"title":841,"path":842,"stem":843,"titleTemplate":6},"Logging","/docs/3.x/api/kit/logging","docs/3.x/4.api/5.kit/13.logging",{"title":845,"path":846,"stem":847,"titleTemplate":6},"Builder","/docs/3.x/api/kit/builder","docs/3.x/4.api/5.kit/14.builder",{"title":849,"path":850,"stem":851,"titleTemplate":6},"Examples","/docs/3.x/api/kit/examples","docs/3.x/4.api/5.kit/15.examples",{"title":84,"path":853,"stem":854,"titleTemplate":6},"/docs/3.x/api/kit/layers","docs/3.x/4.api/5.kit/16.layers",{"title":856,"path":857,"stem":858,"titleTemplate":6},"Programmatic Usage","/docs/3.x/api/kit/programmatic","docs/3.x/4.api/5.kit/2.programmatic",{"title":860,"path":861,"stem":862,"titleTemplate":6},"Compatibility","/docs/3.x/api/kit/compatibility","docs/3.x/4.api/5.kit/3.compatibility",{"title":268,"path":864,"stem":865,"titleTemplate":6},"/docs/3.x/api/kit/autoimports","docs/3.x/4.api/5.kit/4.autoimports",{"title":434,"path":867,"stem":868,"titleTemplate":6},"/docs/3.x/api/kit/components","docs/3.x/4.api/5.kit/5.components",{"title":870,"path":871,"stem":872,"titleTemplate":6},"Context","/docs/3.x/api/kit/context","docs/3.x/4.api/5.kit/6.context",{"title":874,"path":875,"stem":876,"titleTemplate":6},"Pages","/docs/3.x/api/kit/pages","docs/3.x/4.api/5.kit/7.pages",{"title":878,"path":879,"stem":880,"titleTemplate":6},"Layout","/docs/3.x/api/kit/layout","docs/3.x/4.api/5.kit/8.layout",{"title":882,"path":883,"stem":884,"titleTemplate":6},"Head","/docs/3.x/api/kit/head","docs/3.x/4.api/5.kit/9.head",{"title":886,"path":887,"stem":888,"titleTemplate":6},"Plugins","/docs/3.x/api/kit/plugins","docs/3.x/4.api/5.kit/9.plugins",{"title":890,"titleTemplate":6,"icon":891,"path":892,"stem":893,"children":894,"page":108},"Advanced","i-lucide-brain","/docs/3.x/api/advanced","docs/3.x/4.api/6.advanced",[895,898],{"title":407,"path":896,"stem":897,"titleTemplate":6},"/docs/3.x/api/advanced/hooks","docs/3.x/4.api/6.advanced/1.hooks",{"title":899,"path":900,"stem":901,"titleTemplate":6},"Import meta","/docs/3.x/api/advanced/import-meta","docs/3.x/4.api/6.advanced/2.import-meta",{"title":903,"path":904,"stem":905,"titleTemplate":906,"icon":32},"Nuxt Configuration","/docs/3.x/api/nuxt-config","docs/3.x/4.api/6.nuxt-config","%s",{"title":849,"titleTemplate":908,"icon":909,"path":910,"stem":911,"children":912,"page":108},"%s · Nuxt Examples","i-lucide-app-window-mac","/docs/3.x/examples","docs/3.x/4.examples",[913,917,939,954,990],{"title":914,"path":915,"stem":916,"titleTemplate":6},"Hello World","/docs/3.x/examples/hello-world","docs/3.x/4.examples/0.hello-world",{"title":395,"path":918,"stem":919,"children":920,"page":108},"/docs/3.x/examples/features","docs/3.x/4.examples/1.features",[921,925,928,931,935],{"title":922,"path":923,"stem":924,"titleTemplate":6},"Auto Imports","/docs/3.x/examples/features/auto-imports","docs/3.x/4.examples/1.features/1.auto-imports",{"title":64,"path":926,"stem":927,"titleTemplate":6},"/docs/3.x/examples/features/data-fetching","docs/3.x/4.examples/1.features/2.data-fetching",{"title":69,"path":929,"stem":930,"titleTemplate":6},"/docs/3.x/examples/features/state-management","docs/3.x/4.examples/1.features/3.state-management",{"title":932,"path":933,"stem":934,"titleTemplate":6},"Meta Tags","/docs/3.x/examples/features/meta-tags","docs/3.x/4.examples/1.features/4.meta-tags",{"title":936,"path":937,"stem":938,"titleTemplate":6},"Layouts","/docs/3.x/examples/features/layouts","docs/3.x/4.examples/1.features/5.layouts",{"title":49,"path":940,"stem":941,"children":942,"page":108},"/docs/3.x/examples/routing","docs/3.x/4.examples/2.routing",[943,947,950],{"title":944,"path":945,"stem":946,"titleTemplate":6},"Middleware","/docs/3.x/examples/routing/middleware","docs/3.x/4.examples/2.routing/middleware",{"title":874,"path":948,"stem":949,"titleTemplate":6},"/docs/3.x/examples/routing/pages","docs/3.x/4.examples/2.routing/pages",{"title":951,"path":952,"stem":953,"titleTemplate":6},"Universal Router","/docs/3.x/examples/routing/universal-router","docs/3.x/4.examples/2.routing/universal-router",{"title":890,"path":955,"stem":956,"children":957,"page":108},"/docs/3.x/examples/advanced","docs/3.x/4.examples/4.advanced",[958,961,964,968,972,976,980,983,986],{"title":84,"path":959,"stem":960,"titleTemplate":6},"/docs/3.x/examples/advanced/config-extends","docs/3.x/4.examples/4.advanced/config-extends",{"title":74,"path":962,"stem":963,"titleTemplate":6},"/docs/3.x/examples/advanced/error-handling","docs/3.x/4.examples/4.advanced/error-handling",{"title":965,"path":966,"stem":967,"titleTemplate":6},"JSX / TSX","/docs/3.x/examples/advanced/jsx","docs/3.x/4.examples/4.advanced/jsx",{"title":969,"path":970,"stem":971,"titleTemplate":6},"Locale","/docs/3.x/examples/advanced/locale","docs/3.x/4.examples/4.advanced/locale",{"title":973,"path":974,"stem":975,"titleTemplate":6},"Module Extend Pages","/docs/3.x/examples/advanced/module-extend-pages","docs/3.x/4.examples/4.advanced/module-extend-pages",{"title":977,"path":978,"stem":979,"titleTemplate":6},"Teleport","/docs/3.x/examples/advanced/teleport","docs/3.x/4.examples/4.advanced/teleport",{"title":99,"path":981,"stem":982,"titleTemplate":6},"/docs/3.x/examples/advanced/testing","docs/3.x/4.examples/4.advanced/testing",{"title":519,"path":984,"stem":985,"titleTemplate":6},"/docs/3.x/examples/advanced/use-cookie","docs/3.x/4.examples/4.advanced/use-cookie",{"title":987,"path":988,"stem":989,"titleTemplate":6},"Use Custom Fetch Composable","/docs/3.x/examples/advanced/use-custom-fetch-composable","docs/3.x/4.examples/4.advanced/use-custom-fetch-composable",{"title":991,"path":992,"stem":993,"children":994,"page":108},"Experimental","/docs/3.x/examples/experimental","docs/3.x/4.examples/7.experimental",[995],{"title":996,"path":997,"stem":998,"titleTemplate":6},"WASM","/docs/3.x/examples/experimental/wasm","docs/3.x/4.examples/7.experimental/wasm",{"title":1000,"titleTemplate":1001,"icon":1002,"path":1003,"stem":1004,"children":1005,"page":108},"Community","%s · Nuxt Community","i-lucide-messages-square","/docs/3.x/community","docs/3.x/5.community",[1006,1011,1016,1021,1026,1031],{"title":1007,"path":1008,"stem":1009,"titleTemplate":6,"icon":1010},"Getting Help","/docs/3.x/community/getting-help","docs/3.x/5.community/2.getting-help","i-lucide-life-buoy",{"title":1012,"path":1013,"stem":1014,"titleTemplate":6,"icon":1015},"Reporting Bugs","/docs/3.x/community/reporting-bugs","docs/3.x/5.community/3.reporting-bugs","i-lucide-bug",{"title":1017,"path":1018,"stem":1019,"titleTemplate":6,"icon":1020},"Contribution","/docs/3.x/community/contribution","docs/3.x/5.community/4.contribution","i-lucide-git-pull-request",{"title":1022,"path":1023,"stem":1024,"titleTemplate":6,"icon":1025},"Framework","/docs/3.x/community/framework-contribution","docs/3.x/5.community/5.framework-contribution","i-lucide-github",{"title":1027,"path":1028,"stem":1029,"titleTemplate":6,"icon":1030},"Roadmap","/docs/3.x/community/roadmap","docs/3.x/5.community/6.roadmap","i-lucide-map",{"title":1032,"path":1033,"stem":1034,"titleTemplate":6,"icon":1035},"Releases","/docs/3.x/community/changelog","docs/3.x/5.community/7.changelog","i-lucide-bell-dot",{"title":1037,"titleTemplate":1038,"icon":1039,"path":1040,"stem":1041,"children":1042,"page":108},"Migrate to Nuxt Bridge","Migrate to Nuxt Bridge: %s","i-lucide-ship","/docs/3.x/bridge","docs/3.x/6.bridge",[1043,1047,1050,1053,1057,1061,1065,1068,1071,1074],{"title":1044,"path":1045,"stem":1046,"titleTemplate":6},"Overview","/docs/3.x/bridge/overview","docs/3.x/6.bridge/1.overview",{"title":29,"path":1048,"stem":1049,"titleTemplate":6},"/docs/3.x/bridge/configuration","docs/3.x/6.bridge/10.configuration",{"title":280,"path":1051,"stem":1052,"titleTemplate":6},"/docs/3.x/bridge/typescript","docs/3.x/6.bridge/2.typescript",{"title":1054,"path":1055,"stem":1056,"titleTemplate":6},"Legacy Composition API","/docs/3.x/bridge/bridge-composition-api","docs/3.x/6.bridge/3.bridge-composition-api",{"title":1058,"path":1059,"stem":1060,"titleTemplate":6},"Plugins and Middleware","/docs/3.x/bridge/plugins-and-middleware","docs/3.x/6.bridge/4.plugins-and-middleware",{"title":1062,"path":1063,"stem":1064,"titleTemplate":6},"New Composition API","/docs/3.x/bridge/nuxt3-compatible-api","docs/3.x/6.bridge/5.nuxt3-compatible-api",{"title":932,"path":1066,"stem":1067,"titleTemplate":6},"/docs/3.x/bridge/meta","docs/3.x/6.bridge/6.meta",{"title":399,"path":1069,"stem":1070,"titleTemplate":6},"/docs/3.x/bridge/runtime-config","docs/3.x/6.bridge/7.runtime-config",{"title":833,"path":1072,"stem":1073,"titleTemplate":6},"/docs/3.x/bridge/nitro","docs/3.x/6.bridge/8.nitro",{"title":1075,"path":1076,"stem":1077,"titleTemplate":6},"Vite","/docs/3.x/bridge/vite","docs/3.x/6.bridge/9.vite",{"title":1079,"titleTemplate":1080,"icon":107,"path":1081,"stem":1082,"children":1083,"page":108},"Migrate to Nuxt 3","Migrate to Nuxt 3: %s","/docs/3.x/migration","docs/3.x/7.migration",[1084,1087,1091,1094,1097,1100,1103,1106,1109,1113,1117],{"title":1044,"path":1085,"stem":1086,"titleTemplate":6},"/docs/3.x/migration/overview","docs/3.x/7.migration/1.overview",{"title":1088,"path":1089,"stem":1090,"titleTemplate":6},"Build Tooling","/docs/3.x/migration/bundling","docs/3.x/7.migration/10.bundling",{"title":79,"path":1092,"stem":1093,"titleTemplate":6},"/docs/3.x/migration/server","docs/3.x/7.migration/11.server",{"title":29,"path":1095,"stem":1096,"titleTemplate":6},"/docs/3.x/migration/configuration","docs/3.x/7.migration/2.configuration",{"title":276,"path":1098,"stem":1099,"titleTemplate":6},"/docs/3.x/migration/module-authors","docs/3.x/7.migration/20.module-authors",{"title":922,"path":1101,"stem":1102,"titleTemplate":6},"/docs/3.x/migration/auto-imports","docs/3.x/7.migration/3.auto-imports",{"title":932,"path":1104,"stem":1105,"titleTemplate":6},"/docs/3.x/migration/meta","docs/3.x/7.migration/4.meta",{"title":1058,"path":1107,"stem":1108,"titleTemplate":6},"/docs/3.x/migration/plugins-and-middleware","docs/3.x/7.migration/5.plugins-and-middleware",{"title":1110,"path":1111,"stem":1112,"titleTemplate":6},"Pages and Layouts","/docs/3.x/migration/pages-and-layouts","docs/3.x/7.migration/6.pages-and-layouts",{"title":1114,"path":1115,"stem":1116,"titleTemplate":6},"Component Options","/docs/3.x/migration/component-options","docs/3.x/7.migration/7.component-options",{"title":399,"path":1118,"stem":1119,"titleTemplate":6},"/docs/3.x/migration/runtime-config","docs/3.x/7.migration/8.runtime-config",{"title":5,"titleTemplate":6,"icon":7,"path":1121,"stem":1122,"children":1123,"page":108},"/docs/4.x","docs/4.x",[1124,1182,1276,1403,1761,1838,1860,1894],{"title":12,"titleTemplate":13,"icon":14,"path":1125,"stem":1126,"children":1127,"page":108},"/docs/4.x/getting-started","docs/4.x/1.getting-started",[1128,1131,1134,1137,1140,1143,1146,1149,1152,1155,1158,1161,1164,1167,1170,1173,1176,1179],{"title":19,"path":1129,"stem":1130,"titleTemplate":6,"icon":22},"/docs/4.x/getting-started/introduction","docs/4.x/1.getting-started/01.introduction",{"title":24,"path":1132,"stem":1133,"titleTemplate":6,"icon":27},"/docs/4.x/getting-started/installation","docs/4.x/1.getting-started/02.installation",{"title":29,"path":1135,"stem":1136,"titleTemplate":6,"icon":32},"/docs/4.x/getting-started/configuration","docs/4.x/1.getting-started/03.configuration",{"title":34,"path":1138,"stem":1139,"titleTemplate":6,"icon":37},"/docs/4.x/getting-started/views","docs/4.x/1.getting-started/04.views",{"title":39,"path":1141,"stem":1142,"titleTemplate":6,"icon":42},"/docs/4.x/getting-started/assets","docs/4.x/1.getting-started/05.assets",{"title":44,"path":1144,"stem":1145,"titleTemplate":6,"icon":47},"/docs/4.x/getting-started/styling","docs/4.x/1.getting-started/06.styling",{"title":49,"path":1147,"stem":1148,"titleTemplate":6,"icon":52},"/docs/4.x/getting-started/routing","docs/4.x/1.getting-started/07.routing",{"title":54,"path":1150,"stem":1151,"titleTemplate":6,"icon":57},"/docs/4.x/getting-started/seo-meta","docs/4.x/1.getting-started/08.seo-meta",{"title":59,"path":1153,"stem":1154,"titleTemplate":6,"icon":62},"/docs/4.x/getting-started/transitions","docs/4.x/1.getting-started/09.transitions",{"title":64,"path":1156,"stem":1157,"titleTemplate":6,"icon":67},"/docs/4.x/getting-started/data-fetching","docs/4.x/1.getting-started/10.data-fetching",{"title":69,"path":1159,"stem":1160,"titleTemplate":6,"icon":72},"/docs/4.x/getting-started/state-management","docs/4.x/1.getting-started/11.state-management",{"title":74,"path":1162,"stem":1163,"titleTemplate":6,"icon":77},"/docs/4.x/getting-started/error-handling","docs/4.x/1.getting-started/12.error-handling",{"title":79,"path":1165,"stem":1166,"titleTemplate":6,"icon":82},"/docs/4.x/getting-started/server","docs/4.x/1.getting-started/13.server",{"title":84,"path":1168,"stem":1169,"titleTemplate":6,"icon":87},"/docs/4.x/getting-started/layers","docs/4.x/1.getting-started/14.layers",{"title":89,"path":1171,"stem":1172,"titleTemplate":6,"icon":92},"/docs/4.x/getting-started/prerendering","docs/4.x/1.getting-started/15.prerendering",{"title":94,"path":1174,"stem":1175,"titleTemplate":6,"icon":97},"/docs/4.x/getting-started/deployment","docs/4.x/1.getting-started/16.deployment",{"title":99,"path":1177,"stem":1178,"titleTemplate":6,"icon":102},"/docs/4.x/getting-started/testing","docs/4.x/1.getting-started/17.testing",{"title":104,"path":1180,"stem":1181,"titleTemplate":6,"icon":107},"/docs/4.x/getting-started/upgrade","docs/4.x/1.getting-started/18.upgrade",{"title":110,"titleTemplate":111,"icon":112,"path":1183,"stem":1184,"children":1185,"page":108},"/docs/4.x/directory-structure","docs/4.x/2.directory-structure",[1186,1189,1192,1234,1237,1240,1243,1246,1249,1252,1255,1258,1261,1264,1267,1270,1273],{"title":117,"path":1187,"stem":1188,"titleTemplate":6,"icon":120},"/docs/4.x/directory-structure/nuxt","docs/4.x/2.directory-structure/0.nuxt",{"title":122,"path":1190,"stem":1191,"titleTemplate":6,"icon":125},"/docs/4.x/directory-structure/output","docs/4.x/2.directory-structure/0.output",{"title":1193,"titleTemplate":111,"head":1194,"defaultOpen":1196,"icon":1197,"path":1198,"stem":1199,"children":1200,"page":108},"app",{"title":1195},"app/",true,"i-vscode-icons-folder-type-app","/docs/4.x/directory-structure/app","docs/4.x/2.directory-structure/1.app",[1201,1204,1207,1210,1213,1216,1219,1222,1225,1228,1231],{"title":127,"path":1202,"stem":1203,"titleTemplate":6,"icon":130},"/docs/4.x/directory-structure/app/assets","docs/4.x/2.directory-structure/1.app/1.assets",{"title":132,"path":1205,"stem":1206,"titleTemplate":6,"icon":135},"/docs/4.x/directory-structure/app/components","docs/4.x/2.directory-structure/1.app/1.components",{"title":137,"path":1208,"stem":1209,"titleTemplate":6,"icon":140},"/docs/4.x/directory-structure/app/composables","docs/4.x/2.directory-structure/1.app/1.composables",{"title":152,"path":1211,"stem":1212,"titleTemplate":6,"icon":155},"/docs/4.x/directory-structure/app/layouts","docs/4.x/2.directory-structure/1.app/1.layouts",{"title":157,"path":1214,"stem":1215,"titleTemplate":6,"icon":160},"/docs/4.x/directory-structure/app/middleware","docs/4.x/2.directory-structure/1.app/1.middleware",{"title":171,"path":1217,"stem":1218,"titleTemplate":6,"icon":155},"/docs/4.x/directory-structure/app/pages","docs/4.x/2.directory-structure/1.app/1.pages",{"title":175,"path":1220,"stem":1221,"titleTemplate":6,"icon":178},"/docs/4.x/directory-structure/app/plugins","docs/4.x/2.directory-structure/1.app/1.plugins",{"title":195,"path":1223,"stem":1224,"titleTemplate":6,"icon":198},"/docs/4.x/directory-structure/app/utils","docs/4.x/2.directory-structure/1.app/1.utils",{"title":219,"path":1226,"stem":1227,"titleTemplate":6,"icon":222},"/docs/4.x/directory-structure/app/app","docs/4.x/2.directory-structure/1.app/3.app",{"title":224,"path":1229,"stem":1230,"titleTemplate":6,"icon":227},"/docs/4.x/directory-structure/app/app-config","docs/4.x/2.directory-structure/1.app/3.app-config",{"title":229,"path":1232,"stem":1233,"titleTemplate":6,"icon":222},"/docs/4.x/directory-structure/app/error","docs/4.x/2.directory-structure/1.app/3.error",{"title":142,"path":1235,"stem":1236,"titleTemplate":6,"icon":145},"/docs/4.x/directory-structure/content","docs/4.x/2.directory-structure/1.content",{"title":147,"path":1238,"stem":1239,"titleTemplate":6,"icon":150},"/docs/4.x/directory-structure/layers","docs/4.x/2.directory-structure/1.layers",{"title":162,"path":1241,"stem":1242,"titleTemplate":6,"icon":150},"/docs/4.x/directory-structure/modules","docs/4.x/2.directory-structure/1.modules",{"title":166,"path":1244,"stem":1245,"titleTemplate":6,"icon":169},"/docs/4.x/directory-structure/node_modules","docs/4.x/2.directory-structure/1.node_modules",{"title":180,"path":1247,"stem":1248,"titleTemplate":6,"icon":183},"/docs/4.x/directory-structure/public","docs/4.x/2.directory-structure/1.public",{"title":185,"path":1250,"stem":1251,"titleTemplate":6,"icon":188},"/docs/4.x/directory-structure/server","docs/4.x/2.directory-structure/1.server",{"title":190,"path":1253,"stem":1254,"titleTemplate":6,"icon":193},"/docs/4.x/directory-structure/shared","docs/4.x/2.directory-structure/1.shared",{"title":200,"path":1256,"stem":1257,"titleTemplate":6,"icon":203},"/docs/4.x/directory-structure/env","docs/4.x/2.directory-structure/2.env",{"title":205,"path":1259,"stem":1260,"titleTemplate":6,"icon":208},"/docs/4.x/directory-structure/gitignore","docs/4.x/2.directory-structure/2.gitignore",{"title":210,"path":1262,"stem":1263,"titleTemplate":6,"icon":213},"/docs/4.x/directory-structure/nuxtignore","docs/4.x/2.directory-structure/2.nuxtignore",{"title":215,"path":1265,"stem":1266,"titleTemplate":6,"icon":213},"/docs/4.x/directory-structure/nuxtrc","docs/4.x/2.directory-structure/2.nuxtrc",{"title":233,"path":1268,"stem":1269,"titleTemplate":6,"icon":213},"/docs/4.x/directory-structure/nuxt-config","docs/4.x/2.directory-structure/3.nuxt-config",{"title":237,"path":1271,"stem":1272,"titleTemplate":6,"icon":240},"/docs/4.x/directory-structure/package","docs/4.x/2.directory-structure/3.package",{"title":242,"path":1274,"stem":1275,"titleTemplate":6,"icon":245},"/docs/4.x/directory-structure/tsconfig","docs/4.x/2.directory-structure/3.tsconfig",{"title":247,"titleTemplate":6,"icon":248,"path":1277,"stem":1278,"children":1279,"page":108},"/docs/4.x/guide","docs/4.x/3.guide",[1280,1305,1318,1328,1353,1369],{"title":253,"titleTemplate":254,"icon":255,"path":1281,"stem":1282,"children":1283,"page":108},"/docs/4.x/guide/concepts","docs/4.x/3.guide/1.concepts",[1284,1287,1290,1293,1296,1299,1302],{"title":260,"path":1285,"stem":1286,"titleTemplate":6},"/docs/4.x/guide/concepts/rendering","docs/4.x/3.guide/1.concepts/1.rendering",{"title":264,"path":1288,"stem":1289,"titleTemplate":6},"/docs/4.x/guide/concepts/nuxt-lifecycle","docs/4.x/3.guide/1.concepts/2.nuxt-lifecycle",{"title":268,"path":1291,"stem":1292,"titleTemplate":6},"/docs/4.x/guide/concepts/auto-imports","docs/4.x/3.guide/1.concepts/3.auto-imports",{"title":272,"path":1294,"stem":1295,"titleTemplate":6},"/docs/4.x/guide/concepts/server-engine","docs/4.x/3.guide/1.concepts/4.server-engine",{"title":276,"path":1297,"stem":1298,"titleTemplate":6},"/docs/4.x/guide/concepts/modules","docs/4.x/3.guide/1.concepts/5.modules",{"title":280,"path":1300,"stem":1301,"titleTemplate":6},"/docs/4.x/guide/concepts/typescript","docs/4.x/3.guide/1.concepts/8.typescript",{"title":284,"path":1303,"stem":1304,"titleTemplate":6},"/docs/4.x/guide/concepts/code-style","docs/4.x/3.guide/1.concepts/9.code-style",{"title":288,"titleTemplate":289,"icon":290,"path":1306,"stem":1307,"children":1308,"page":108},"/docs/4.x/guide/best-practices","docs/4.x/3.guide/2.best-practices",[1309,1312,1315],{"title":295,"path":1310,"stem":1311,"titleTemplate":6},"/docs/4.x/guide/best-practices/hydration","docs/4.x/3.guide/2.best-practices/hydration",{"title":299,"path":1313,"stem":1314,"titleTemplate":6},"/docs/4.x/guide/best-practices/performance","docs/4.x/3.guide/2.best-practices/performance",{"title":303,"path":1316,"stem":1317,"titleTemplate":6},"/docs/4.x/guide/best-practices/plugins","docs/4.x/3.guide/2.best-practices/plugins",{"title":307,"titleTemplate":308,"icon":309,"path":1319,"stem":1320,"children":1321,"page":108},"/docs/4.x/guide/ai","docs/4.x/3.guide/3.ai",[1322,1325],{"title":314,"path":1323,"stem":1324,"titleTemplate":6},"/docs/4.x/guide/ai/mcp","docs/4.x/3.guide/3.ai/1.mcp",{"title":318,"path":1326,"stem":1327,"titleTemplate":6},"/docs/4.x/guide/ai/llms-txt","docs/4.x/3.guide/3.ai/2.llms-txt",{"title":322,"titleTemplate":323,"icon":324,"path":1329,"stem":1330,"children":1331,"page":108},"/docs/4.x/guide/modules","docs/4.x/3.guide/4.modules",[1332,1335,1338,1341,1344,1347,1350],{"title":329,"path":1333,"stem":1334,"titleTemplate":6},"/docs/4.x/guide/modules/getting-started","docs/4.x/3.guide/4.modules/1.getting-started",{"title":333,"path":1336,"stem":1337,"titleTemplate":6},"/docs/4.x/guide/modules/module-anatomy","docs/4.x/3.guide/4.modules/2.module-anatomy",{"title":337,"path":1339,"stem":1340,"titleTemplate":6},"/docs/4.x/guide/modules/recipes-basics","docs/4.x/3.guide/4.modules/3.recipes-basics",{"title":341,"path":1342,"stem":1343,"titleTemplate":6},"/docs/4.x/guide/modules/recipes-advanced","docs/4.x/3.guide/4.modules/4.recipes-advanced",{"title":345,"path":1345,"stem":1346,"titleTemplate":6},"/docs/4.x/guide/modules/testing","docs/4.x/3.guide/4.modules/5.testing",{"title":349,"path":1348,"stem":1349,"titleTemplate":6},"/docs/4.x/guide/modules/best-practices","docs/4.x/3.guide/4.modules/6.best-practices",{"title":353,"path":1351,"stem":1352,"titleTemplate":6},"/docs/4.x/guide/modules/ecosystem","docs/4.x/3.guide/4.modules/7.ecosystem",{"title":357,"titleTemplate":358,"icon":359,"path":1354,"stem":1355,"children":1356,"page":108},"/docs/4.x/guide/recipes","docs/4.x/3.guide/5.recipes",[1357,1360,1363,1366],{"title":364,"path":1358,"stem":1359,"titleTemplate":6},"/docs/4.x/guide/recipes/custom-routing","docs/4.x/3.guide/5.recipes/1.custom-routing",{"title":368,"path":1361,"stem":1362,"titleTemplate":6},"/docs/4.x/guide/recipes/vite-plugin","docs/4.x/3.guide/5.recipes/2.vite-plugin",{"title":372,"path":1364,"stem":1365,"titleTemplate":6},"/docs/4.x/guide/recipes/custom-usefetch","docs/4.x/3.guide/5.recipes/3.custom-usefetch",{"title":376,"path":1367,"stem":1368,"titleTemplate":6},"/docs/4.x/guide/recipes/sessions-and-authentication","docs/4.x/3.guide/5.recipes/4.sessions-and-authentication",{"title":380,"titleTemplate":381,"icon":382,"path":1370,"stem":1371,"children":1372,"page":108},"/docs/4.x/guide/going-further","docs/4.x/3.guide/6.going-further",[1373,1376,1379,1382,1385,1388,1391,1394,1397,1400],{"title":387,"path":1374,"stem":1375,"titleTemplate":6},"/docs/4.x/guide/going-further/events","docs/4.x/3.guide/6.going-further/1.events",{"title":391,"path":1377,"stem":1378,"titleTemplate":6},"/docs/4.x/guide/going-further/experimental-features","docs/4.x/3.guide/6.going-further/1.experimental-features",{"title":395,"path":1380,"stem":1381,"titleTemplate":6},"/docs/4.x/guide/going-further/features","docs/4.x/3.guide/6.going-further/1.features",{"title":399,"path":1383,"stem":1384,"titleTemplate":6},"/docs/4.x/guide/going-further/runtime-config","docs/4.x/3.guide/6.going-further/10.runtime-config",{"title":403,"path":1386,"stem":1387,"titleTemplate":6},"/docs/4.x/guide/going-further/nightly-release-channel","docs/4.x/3.guide/6.going-further/11.nightly-release-channel",{"title":407,"path":1389,"stem":1390,"titleTemplate":6},"/docs/4.x/guide/going-further/hooks","docs/4.x/3.guide/6.going-further/2.hooks",{"title":411,"path":1392,"stem":1393,"titleTemplate":6},"/docs/4.x/guide/going-further/kit","docs/4.x/3.guide/6.going-further/4.kit",{"title":415,"path":1395,"stem":1396,"titleTemplate":6},"/docs/4.x/guide/going-further/nuxt-app","docs/4.x/3.guide/6.going-further/6.nuxt-app",{"title":419,"path":1398,"stem":1399,"titleTemplate":6},"/docs/4.x/guide/going-further/layers","docs/4.x/3.guide/6.going-further/7.layers",{"title":423,"path":1401,"stem":1402,"titleTemplate":6},"/docs/4.x/guide/going-further/debugging","docs/4.x/3.guide/6.going-further/9.debugging",{"title":427,"titleTemplate":428,"icon":429,"path":1404,"stem":1405,"children":1406,"page":108},"/docs/4.x/api","docs/4.x/4.api",[1407,1456,1547,1638,1690,1748,1758],{"title":434,"titleTemplate":435,"icon":324,"path":1408,"stem":1409,"children":1410,"page":108},"/docs/4.x/api/components","docs/4.x/4.api/1.components",[1411,1414,1417,1420,1423,1426,1429,1432,1435,1438,1441,1444,1447,1450,1453],{"title":440,"path":1412,"stem":1413,"titleTemplate":6},"/docs/4.x/api/components/client-only","docs/4.x/4.api/1.components/1.client-only",{"title":444,"path":1415,"stem":1416,"titleTemplate":6},"/docs/4.x/api/components/dev-only","docs/4.x/4.api/1.components/1.dev-only",{"title":448,"path":1418,"stem":1419,"titleTemplate":6},"/docs/4.x/api/components/nuxt-client-fallback","docs/4.x/4.api/1.components/1.nuxt-client-fallback",{"title":452,"path":1421,"stem":1422,"titleTemplate":6},"/docs/4.x/api/components/nuxt-picture","docs/4.x/4.api/1.components/10.nuxt-picture",{"title":456,"path":1424,"stem":1425,"titleTemplate":6},"/docs/4.x/api/components/teleports","docs/4.x/4.api/1.components/11.teleports",{"title":460,"path":1427,"stem":1428,"titleTemplate":6},"/docs/4.x/api/components/nuxt-route-announcer","docs/4.x/4.api/1.components/12.nuxt-route-announcer",{"title":464,"path":1430,"stem":1431,"titleTemplate":6},"/docs/4.x/api/components/nuxt-time","docs/4.x/4.api/1.components/13.nuxt-time",{"title":468,"path":1433,"stem":1434,"titleTemplate":6},"/docs/4.x/api/components/nuxt-page","docs/4.x/4.api/1.components/2.nuxt-page",{"title":472,"path":1436,"stem":1437,"titleTemplate":6},"/docs/4.x/api/components/nuxt-layout","docs/4.x/4.api/1.components/3.nuxt-layout",{"title":476,"path":1439,"stem":1440,"titleTemplate":6},"/docs/4.x/api/components/nuxt-link","docs/4.x/4.api/1.components/4.nuxt-link",{"title":480,"path":1442,"stem":1443,"titleTemplate":6},"/docs/4.x/api/components/nuxt-loading-indicator","docs/4.x/4.api/1.components/5.nuxt-loading-indicator",{"title":484,"path":1445,"stem":1446,"titleTemplate":6},"/docs/4.x/api/components/nuxt-error-boundary","docs/4.x/4.api/1.components/6.nuxt-error-boundary",{"title":488,"path":1448,"stem":1449,"titleTemplate":6},"/docs/4.x/api/components/nuxt-welcome","docs/4.x/4.api/1.components/7.nuxt-welcome",{"title":492,"path":1451,"stem":1452,"titleTemplate":6},"/docs/4.x/api/components/nuxt-island","docs/4.x/4.api/1.components/8.nuxt-island",{"title":496,"path":1454,"stem":1455,"titleTemplate":6},"/docs/4.x/api/components/nuxt-img","docs/4.x/4.api/1.components/9.nuxt-img",{"title":500,"titleTemplate":501,"icon":502,"path":1457,"stem":1458,"children":1459,"page":108},"/docs/4.x/api/composables","docs/4.x/4.api/2.composables",[1460,1463,1466,1469,1472,1475,1478,1481,1484,1487,1490,1493,1496,1499,1502,1505,1508,1511,1514,1517,1520,1523,1526,1529,1532,1535,1538,1541,1544],{"title":507,"path":1461,"stem":1462,"titleTemplate":6},"/docs/4.x/api/composables/on-prehydrate","docs/4.x/4.api/2.composables/on-prehydrate",{"title":511,"path":1464,"stem":1465,"titleTemplate":6},"/docs/4.x/api/composables/use-app-config","docs/4.x/4.api/2.composables/use-app-config",{"title":515,"path":1467,"stem":1468,"titleTemplate":6},"/docs/4.x/api/composables/use-async-data","docs/4.x/4.api/2.composables/use-async-data",{"title":519,"path":1470,"stem":1471,"titleTemplate":6},"/docs/4.x/api/composables/use-cookie","docs/4.x/4.api/2.composables/use-cookie",{"title":523,"path":1473,"stem":1474,"titleTemplate":6},"/docs/4.x/api/composables/use-error","docs/4.x/4.api/2.composables/use-error",{"title":527,"path":1476,"stem":1477,"titleTemplate":6},"/docs/4.x/api/composables/use-fetch","docs/4.x/4.api/2.composables/use-fetch",{"title":531,"path":1479,"stem":1480,"titleTemplate":6},"/docs/4.x/api/composables/use-head","docs/4.x/4.api/2.composables/use-head",{"title":535,"path":1482,"stem":1483,"titleTemplate":6},"/docs/4.x/api/composables/use-head-safe","docs/4.x/4.api/2.composables/use-head-safe",{"title":539,"path":1485,"stem":1486,"titleTemplate":6},"/docs/4.x/api/composables/use-hydration","docs/4.x/4.api/2.composables/use-hydration",{"title":543,"path":1488,"stem":1489,"titleTemplate":6},"/docs/4.x/api/composables/use-lazy-async-data","docs/4.x/4.api/2.composables/use-lazy-async-data",{"title":547,"path":1491,"stem":1492,"titleTemplate":6},"/docs/4.x/api/composables/use-lazy-fetch","docs/4.x/4.api/2.composables/use-lazy-fetch",{"title":551,"path":1494,"stem":1495,"titleTemplate":6},"/docs/4.x/api/composables/use-loading-indicator","docs/4.x/4.api/2.composables/use-loading-indicator",{"title":555,"path":1497,"stem":1498,"titleTemplate":6},"/docs/4.x/api/composables/use-nuxt-app","docs/4.x/4.api/2.composables/use-nuxt-app",{"title":559,"path":1500,"stem":1501,"titleTemplate":6},"/docs/4.x/api/composables/use-nuxt-data","docs/4.x/4.api/2.composables/use-nuxt-data",{"title":563,"path":1503,"stem":1504,"titleTemplate":6},"/docs/4.x/api/composables/use-preview-mode","docs/4.x/4.api/2.composables/use-preview-mode",{"title":567,"path":1506,"stem":1507,"titleTemplate":6},"/docs/4.x/api/composables/use-request-event","docs/4.x/4.api/2.composables/use-request-event",{"title":571,"path":1509,"stem":1510,"titleTemplate":6},"/docs/4.x/api/composables/use-request-fetch","docs/4.x/4.api/2.composables/use-request-fetch",{"title":575,"path":1512,"stem":1513,"titleTemplate":6},"/docs/4.x/api/composables/use-request-header","docs/4.x/4.api/2.composables/use-request-header",{"title":579,"path":1515,"stem":1516,"titleTemplate":6},"/docs/4.x/api/composables/use-request-headers","docs/4.x/4.api/2.composables/use-request-headers",{"title":583,"path":1518,"stem":1519,"titleTemplate":6},"/docs/4.x/api/composables/use-request-url","docs/4.x/4.api/2.composables/use-request-url",{"title":587,"path":1521,"stem":1522,"titleTemplate":6},"/docs/4.x/api/composables/use-response-header","docs/4.x/4.api/2.composables/use-response-header",{"title":591,"path":1524,"stem":1525,"titleTemplate":6},"/docs/4.x/api/composables/use-route","docs/4.x/4.api/2.composables/use-route",{"title":595,"path":1527,"stem":1528,"titleTemplate":6},"/docs/4.x/api/composables/use-route-announcer","docs/4.x/4.api/2.composables/use-route-announcer",{"title":599,"path":1530,"stem":1531,"titleTemplate":6},"/docs/4.x/api/composables/use-router","docs/4.x/4.api/2.composables/use-router",{"title":603,"path":1533,"stem":1534,"titleTemplate":6},"/docs/4.x/api/composables/use-runtime-config","docs/4.x/4.api/2.composables/use-runtime-config",{"title":607,"path":1536,"stem":1537,"titleTemplate":6},"/docs/4.x/api/composables/use-runtime-hook","docs/4.x/4.api/2.composables/use-runtime-hook",{"title":611,"path":1539,"stem":1540,"titleTemplate":6},"/docs/4.x/api/composables/use-seo-meta","docs/4.x/4.api/2.composables/use-seo-meta",{"title":615,"path":1542,"stem":1543,"titleTemplate":6},"/docs/4.x/api/composables/use-server-seo-meta","docs/4.x/4.api/2.composables/use-server-seo-meta",{"title":619,"path":1545,"stem":1546,"titleTemplate":6},"/docs/4.x/api/composables/use-state","docs/4.x/4.api/2.composables/use-state",{"title":623,"titleTemplate":624,"icon":625,"path":1548,"stem":1549,"children":1550,"page":108},"/docs/4.x/api/utils","docs/4.x/4.api/3.utils",[1551,1554,1557,1560,1563,1566,1569,1572,1575,1578,1581,1584,1587,1590,1593,1596,1599,1602,1605,1608,1611,1614,1617,1620,1623,1626,1629,1632,1635],{"title":630,"path":1552,"stem":1553,"titleTemplate":6},"/docs/4.x/api/utils/dollarfetch","docs/4.x/4.api/3.utils/$fetch",{"title":634,"path":1555,"stem":1556,"titleTemplate":6},"/docs/4.x/api/utils/abort-navigation","docs/4.x/4.api/3.utils/abort-navigation",{"title":638,"path":1558,"stem":1559,"titleTemplate":6},"/docs/4.x/api/utils/add-route-middleware","docs/4.x/4.api/3.utils/add-route-middleware",{"title":642,"path":1561,"stem":1562,"titleTemplate":6},"/docs/4.x/api/utils/call-once","docs/4.x/4.api/3.utils/call-once",{"title":646,"path":1564,"stem":1565,"titleTemplate":6},"/docs/4.x/api/utils/clear-error","docs/4.x/4.api/3.utils/clear-error",{"title":650,"path":1567,"stem":1568,"titleTemplate":6},"/docs/4.x/api/utils/clear-nuxt-data","docs/4.x/4.api/3.utils/clear-nuxt-data",{"title":654,"path":1570,"stem":1571,"titleTemplate":6},"/docs/4.x/api/utils/clear-nuxt-state","docs/4.x/4.api/3.utils/clear-nuxt-state",{"title":658,"path":1573,"stem":1574,"titleTemplate":6},"/docs/4.x/api/utils/create-error","docs/4.x/4.api/3.utils/create-error",{"title":662,"path":1576,"stem":1577,"titleTemplate":6},"/docs/4.x/api/utils/define-lazy-hydration-component","docs/4.x/4.api/3.utils/define-lazy-hydration-component",{"title":666,"path":1579,"stem":1580,"titleTemplate":6},"/docs/4.x/api/utils/define-nuxt-component","docs/4.x/4.api/3.utils/define-nuxt-component",{"title":670,"path":1582,"stem":1583,"titleTemplate":6},"/docs/4.x/api/utils/define-nuxt-plugin","docs/4.x/4.api/3.utils/define-nuxt-plugin",{"title":674,"path":1585,"stem":1586,"titleTemplate":6},"/docs/4.x/api/utils/define-nuxt-route-middleware","docs/4.x/4.api/3.utils/define-nuxt-route-middleware",{"title":678,"path":1588,"stem":1589,"titleTemplate":6},"/docs/4.x/api/utils/define-page-meta","docs/4.x/4.api/3.utils/define-page-meta",{"title":682,"path":1591,"stem":1592,"titleTemplate":6},"/docs/4.x/api/utils/define-route-rules","docs/4.x/4.api/3.utils/define-route-rules",{"title":686,"path":1594,"stem":1595,"titleTemplate":6},"/docs/4.x/api/utils/navigate-to","docs/4.x/4.api/3.utils/navigate-to",{"title":690,"path":1597,"stem":1598,"titleTemplate":6},"/docs/4.x/api/utils/on-before-route-leave","docs/4.x/4.api/3.utils/on-before-route-leave",{"title":694,"path":1600,"stem":1601,"titleTemplate":6},"/docs/4.x/api/utils/on-before-route-update","docs/4.x/4.api/3.utils/on-before-route-update",{"title":698,"path":1603,"stem":1604,"titleTemplate":6},"/docs/4.x/api/utils/on-nuxt-ready","docs/4.x/4.api/3.utils/on-nuxt-ready",{"title":702,"path":1606,"stem":1607,"titleTemplate":6},"/docs/4.x/api/utils/prefetch-components","docs/4.x/4.api/3.utils/prefetch-components",{"title":706,"path":1609,"stem":1610,"titleTemplate":6},"/docs/4.x/api/utils/preload-components","docs/4.x/4.api/3.utils/preload-components",{"title":710,"path":1612,"stem":1613,"titleTemplate":6},"/docs/4.x/api/utils/preload-route-components","docs/4.x/4.api/3.utils/preload-route-components",{"title":714,"path":1615,"stem":1616,"titleTemplate":6},"/docs/4.x/api/utils/prerender-routes","docs/4.x/4.api/3.utils/prerender-routes",{"title":718,"path":1618,"stem":1619,"titleTemplate":6},"/docs/4.x/api/utils/refresh-cookie","docs/4.x/4.api/3.utils/refresh-cookie",{"title":722,"path":1621,"stem":1622,"titleTemplate":6},"/docs/4.x/api/utils/refresh-nuxt-data","docs/4.x/4.api/3.utils/refresh-nuxt-data",{"title":726,"path":1624,"stem":1625,"titleTemplate":6},"/docs/4.x/api/utils/reload-nuxt-app","docs/4.x/4.api/3.utils/reload-nuxt-app",{"title":730,"path":1627,"stem":1628,"titleTemplate":6},"/docs/4.x/api/utils/set-page-layout","docs/4.x/4.api/3.utils/set-page-layout",{"title":734,"path":1630,"stem":1631,"titleTemplate":6},"/docs/4.x/api/utils/set-response-status","docs/4.x/4.api/3.utils/set-response-status",{"title":738,"path":1633,"stem":1634,"titleTemplate":6},"/docs/4.x/api/utils/show-error","docs/4.x/4.api/3.utils/show-error",{"title":742,"path":1636,"stem":1637,"titleTemplate":6},"/docs/4.x/api/utils/update-app-config","docs/4.x/4.api/3.utils/update-app-config",{"title":746,"titleTemplate":747,"icon":748,"path":1639,"stem":1640,"children":1641,"page":108},"/docs/4.x/api/commands","docs/4.x/4.api/4.commands",[1642,1645,1648,1651,1654,1657,1660,1663,1666,1669,1672,1675,1678,1681,1684,1687],{"title":753,"path":1643,"stem":1644,"titleTemplate":6},"/docs/4.x/api/commands/add","docs/4.x/4.api/4.commands/add",{"title":757,"path":1646,"stem":1647,"titleTemplate":6},"/docs/4.x/api/commands/analyze","docs/4.x/4.api/4.commands/analyze",{"title":761,"path":1649,"stem":1650,"titleTemplate":6},"/docs/4.x/api/commands/build","docs/4.x/4.api/4.commands/build",{"title":765,"path":1652,"stem":1653,"titleTemplate":6},"/docs/4.x/api/commands/build-module","docs/4.x/4.api/4.commands/build-module",{"title":769,"path":1655,"stem":1656,"titleTemplate":6},"/docs/4.x/api/commands/cleanup","docs/4.x/4.api/4.commands/cleanup",{"title":773,"path":1658,"stem":1659,"titleTemplate":6},"/docs/4.x/api/commands/dev","docs/4.x/4.api/4.commands/dev",{"title":777,"path":1661,"stem":1662,"titleTemplate":6},"/docs/4.x/api/commands/devtools","docs/4.x/4.api/4.commands/devtools",{"title":781,"path":1664,"stem":1665,"titleTemplate":6},"/docs/4.x/api/commands/generate","docs/4.x/4.api/4.commands/generate",{"title":785,"path":1667,"stem":1668,"titleTemplate":6},"/docs/4.x/api/commands/info","docs/4.x/4.api/4.commands/info",{"title":789,"path":1670,"stem":1671,"titleTemplate":6},"/docs/4.x/api/commands/init","docs/4.x/4.api/4.commands/init",{"title":793,"path":1673,"stem":1674,"titleTemplate":6},"/docs/4.x/api/commands/module","docs/4.x/4.api/4.commands/module",{"title":797,"path":1676,"stem":1677,"titleTemplate":6},"/docs/4.x/api/commands/prepare","docs/4.x/4.api/4.commands/prepare",{"title":801,"path":1679,"stem":1680,"titleTemplate":6},"/docs/4.x/api/commands/preview","docs/4.x/4.api/4.commands/preview",{"title":805,"path":1682,"stem":1683,"titleTemplate":6},"/docs/4.x/api/commands/test","docs/4.x/4.api/4.commands/test",{"title":809,"path":1685,"stem":1686,"titleTemplate":6},"/docs/4.x/api/commands/typecheck","docs/4.x/4.api/4.commands/typecheck",{"title":813,"path":1688,"stem":1689,"titleTemplate":6},"/docs/4.x/api/commands/upgrade","docs/4.x/4.api/4.commands/upgrade",{"title":411,"titleTemplate":817,"icon":818,"path":1691,"stem":1692,"children":1693,"page":108},"/docs/4.x/api/kit","docs/4.x/4.api/5.kit",[1694,1697,1700,1703,1706,1709,1712,1715,1718,1721,1724,1727,1730,1733,1736,1739,1742,1745],{"title":276,"path":1695,"stem":1696,"titleTemplate":6},"/docs/4.x/api/kit/modules","docs/4.x/4.api/5.kit/1.modules",{"title":399,"path":1698,"stem":1699,"titleTemplate":6},"/docs/4.x/api/kit/runtime-config","docs/4.x/4.api/5.kit/10.runtime-config",{"title":829,"path":1701,"stem":1702,"titleTemplate":6},"/docs/4.x/api/kit/templates","docs/4.x/4.api/5.kit/10.templates",{"title":833,"path":1704,"stem":1705,"titleTemplate":6},"/docs/4.x/api/kit/nitro","docs/4.x/4.api/5.kit/11.nitro",{"title":837,"path":1707,"stem":1708,"titleTemplate":6},"/docs/4.x/api/kit/resolving","docs/4.x/4.api/5.kit/12.resolving",{"title":841,"path":1710,"stem":1711,"titleTemplate":6},"/docs/4.x/api/kit/logging","docs/4.x/4.api/5.kit/13.logging",{"title":845,"path":1713,"stem":1714,"titleTemplate":6},"/docs/4.x/api/kit/builder","docs/4.x/4.api/5.kit/14.builder",{"title":849,"path":1716,"stem":1717,"titleTemplate":6},"/docs/4.x/api/kit/examples","docs/4.x/4.api/5.kit/15.examples",{"title":84,"path":1719,"stem":1720,"titleTemplate":6},"/docs/4.x/api/kit/layers","docs/4.x/4.api/5.kit/16.layers",{"title":856,"path":1722,"stem":1723,"titleTemplate":6},"/docs/4.x/api/kit/programmatic","docs/4.x/4.api/5.kit/2.programmatic",{"title":860,"path":1725,"stem":1726,"titleTemplate":6},"/docs/4.x/api/kit/compatibility","docs/4.x/4.api/5.kit/3.compatibility",{"title":268,"path":1728,"stem":1729,"titleTemplate":6},"/docs/4.x/api/kit/autoimports","docs/4.x/4.api/5.kit/4.autoimports",{"title":434,"path":1731,"stem":1732,"titleTemplate":6},"/docs/4.x/api/kit/components","docs/4.x/4.api/5.kit/5.components",{"title":870,"path":1734,"stem":1735,"titleTemplate":6},"/docs/4.x/api/kit/context","docs/4.x/4.api/5.kit/6.context",{"title":874,"path":1737,"stem":1738,"titleTemplate":6},"/docs/4.x/api/kit/pages","docs/4.x/4.api/5.kit/7.pages",{"title":878,"path":1740,"stem":1741,"titleTemplate":6},"/docs/4.x/api/kit/layout","docs/4.x/4.api/5.kit/8.layout",{"title":882,"path":1743,"stem":1744,"titleTemplate":6},"/docs/4.x/api/kit/head","docs/4.x/4.api/5.kit/9.head",{"title":886,"path":1746,"stem":1747,"titleTemplate":6},"/docs/4.x/api/kit/plugins","docs/4.x/4.api/5.kit/9.plugins",{"title":890,"titleTemplate":6,"icon":891,"path":1749,"stem":1750,"children":1751,"page":108},"/docs/4.x/api/advanced","docs/4.x/4.api/6.advanced",[1752,1755],{"title":407,"path":1753,"stem":1754,"titleTemplate":6},"/docs/4.x/api/advanced/hooks","docs/4.x/4.api/6.advanced/1.hooks",{"title":899,"path":1756,"stem":1757,"titleTemplate":6},"/docs/4.x/api/advanced/import-meta","docs/4.x/4.api/6.advanced/2.import-meta",{"title":903,"path":1759,"stem":1760,"titleTemplate":906,"icon":32},"/docs/4.x/api/nuxt-config","docs/4.x/4.api/6.nuxt-config",{"title":849,"titleTemplate":908,"icon":909,"path":1762,"stem":1763,"children":1764,"page":108},"/docs/4.x/examples","docs/4.x/4.examples",[1765,1768,1787,1800,1831],{"title":914,"path":1766,"stem":1767,"titleTemplate":6},"/docs/4.x/examples/hello-world","docs/4.x/4.examples/0.hello-world",{"title":395,"path":1769,"stem":1770,"children":1771,"page":108},"/docs/4.x/examples/features","docs/4.x/4.examples/1.features",[1772,1775,1778,1781,1784],{"title":922,"path":1773,"stem":1774,"titleTemplate":6},"/docs/4.x/examples/features/auto-imports","docs/4.x/4.examples/1.features/1.auto-imports",{"title":64,"path":1776,"stem":1777,"titleTemplate":6},"/docs/4.x/examples/features/data-fetching","docs/4.x/4.examples/1.features/2.data-fetching",{"title":69,"path":1779,"stem":1780,"titleTemplate":6},"/docs/4.x/examples/features/state-management","docs/4.x/4.examples/1.features/3.state-management",{"title":932,"path":1782,"stem":1783,"titleTemplate":6},"/docs/4.x/examples/features/meta-tags","docs/4.x/4.examples/1.features/4.meta-tags",{"title":936,"path":1785,"stem":1786,"titleTemplate":6},"/docs/4.x/examples/features/layouts","docs/4.x/4.examples/1.features/5.layouts",{"title":49,"path":1788,"stem":1789,"children":1790,"page":108},"/docs/4.x/examples/routing","docs/4.x/4.examples/2.routing",[1791,1794,1797],{"title":944,"path":1792,"stem":1793,"titleTemplate":6},"/docs/4.x/examples/routing/middleware","docs/4.x/4.examples/2.routing/middleware",{"title":874,"path":1795,"stem":1796,"titleTemplate":6},"/docs/4.x/examples/routing/pages","docs/4.x/4.examples/2.routing/pages",{"title":951,"path":1798,"stem":1799,"titleTemplate":6},"/docs/4.x/examples/routing/universal-router","docs/4.x/4.examples/2.routing/universal-router",{"title":890,"path":1801,"stem":1802,"children":1803,"page":108},"/docs/4.x/examples/advanced","docs/4.x/4.examples/4.advanced",[1804,1807,1810,1813,1816,1819,1822,1825,1828],{"title":84,"path":1805,"stem":1806,"titleTemplate":6},"/docs/4.x/examples/advanced/config-extends","docs/4.x/4.examples/4.advanced/config-extends",{"title":74,"path":1808,"stem":1809,"titleTemplate":6},"/docs/4.x/examples/advanced/error-handling","docs/4.x/4.examples/4.advanced/error-handling",{"title":965,"path":1811,"stem":1812,"titleTemplate":6},"/docs/4.x/examples/advanced/jsx","docs/4.x/4.examples/4.advanced/jsx",{"title":969,"path":1814,"stem":1815,"titleTemplate":6},"/docs/4.x/examples/advanced/locale","docs/4.x/4.examples/4.advanced/locale",{"title":973,"path":1817,"stem":1818,"titleTemplate":6},"/docs/4.x/examples/advanced/module-extend-pages","docs/4.x/4.examples/4.advanced/module-extend-pages",{"title":977,"path":1820,"stem":1821,"titleTemplate":6},"/docs/4.x/examples/advanced/teleport","docs/4.x/4.examples/4.advanced/teleport",{"title":99,"path":1823,"stem":1824,"titleTemplate":6},"/docs/4.x/examples/advanced/testing","docs/4.x/4.examples/4.advanced/testing",{"title":519,"path":1826,"stem":1827,"titleTemplate":6},"/docs/4.x/examples/advanced/use-cookie","docs/4.x/4.examples/4.advanced/use-cookie",{"title":987,"path":1829,"stem":1830,"titleTemplate":6},"/docs/4.x/examples/advanced/use-custom-fetch-composable","docs/4.x/4.examples/4.advanced/use-custom-fetch-composable",{"title":991,"path":1832,"stem":1833,"children":1834,"page":108},"/docs/4.x/examples/experimental","docs/4.x/4.examples/7.experimental",[1835],{"title":996,"path":1836,"stem":1837,"titleTemplate":6},"/docs/4.x/examples/experimental/wasm","docs/4.x/4.examples/7.experimental/wasm",{"title":1000,"titleTemplate":1001,"icon":1002,"path":1839,"stem":1840,"children":1841,"page":108},"/docs/4.x/community","docs/4.x/5.community",[1842,1845,1848,1851,1854,1857],{"title":1007,"path":1843,"stem":1844,"titleTemplate":6,"icon":1010},"/docs/4.x/community/getting-help","docs/4.x/5.community/2.getting-help",{"title":1012,"path":1846,"stem":1847,"titleTemplate":6,"icon":1015},"/docs/4.x/community/reporting-bugs","docs/4.x/5.community/3.reporting-bugs",{"title":1017,"path":1849,"stem":1850,"titleTemplate":6,"icon":1020},"/docs/4.x/community/contribution","docs/4.x/5.community/4.contribution",{"title":1022,"path":1852,"stem":1853,"titleTemplate":6,"icon":1025},"/docs/4.x/community/framework-contribution","docs/4.x/5.community/5.framework-contribution",{"title":1027,"path":1855,"stem":1856,"titleTemplate":6,"icon":1030},"/docs/4.x/community/roadmap","docs/4.x/5.community/6.roadmap",{"title":1032,"path":1858,"stem":1859,"titleTemplate":6,"icon":1035},"/docs/4.x/community/changelog","docs/4.x/5.community/7.changelog",{"title":1037,"titleTemplate":1038,"icon":1039,"path":1861,"stem":1862,"children":1863,"page":108},"/docs/4.x/bridge","docs/4.x/6.bridge",[1864,1867,1870,1873,1876,1879,1882,1885,1888,1891],{"title":1044,"path":1865,"stem":1866,"titleTemplate":6},"/docs/4.x/bridge/overview","docs/4.x/6.bridge/1.overview",{"title":29,"path":1868,"stem":1869,"titleTemplate":6},"/docs/4.x/bridge/configuration","docs/4.x/6.bridge/10.configuration",{"title":280,"path":1871,"stem":1872,"titleTemplate":6},"/docs/4.x/bridge/typescript","docs/4.x/6.bridge/2.typescript",{"title":1054,"path":1874,"stem":1875,"titleTemplate":6},"/docs/4.x/bridge/bridge-composition-api","docs/4.x/6.bridge/3.bridge-composition-api",{"title":1058,"path":1877,"stem":1878,"titleTemplate":6},"/docs/4.x/bridge/plugins-and-middleware","docs/4.x/6.bridge/4.plugins-and-middleware",{"title":1062,"path":1880,"stem":1881,"titleTemplate":6},"/docs/4.x/bridge/nuxt3-compatible-api","docs/4.x/6.bridge/5.nuxt3-compatible-api",{"title":932,"path":1883,"stem":1884,"titleTemplate":6},"/docs/4.x/bridge/meta","docs/4.x/6.bridge/6.meta",{"title":399,"path":1886,"stem":1887,"titleTemplate":6},"/docs/4.x/bridge/runtime-config","docs/4.x/6.bridge/7.runtime-config",{"title":833,"path":1889,"stem":1890,"titleTemplate":6},"/docs/4.x/bridge/nitro","docs/4.x/6.bridge/8.nitro",{"title":1075,"path":1892,"stem":1893,"titleTemplate":6},"/docs/4.x/bridge/vite","docs/4.x/6.bridge/9.vite",{"title":1079,"titleTemplate":1080,"icon":107,"path":1895,"stem":1896,"children":1897,"page":108},"/docs/4.x/migration","docs/4.x/7.migration",[1898,1901,1904,1907,1910,1913,1916,1919,1922,1925,1928],{"title":1044,"path":1899,"stem":1900,"titleTemplate":6},"/docs/4.x/migration/overview","docs/4.x/7.migration/1.overview",{"title":1088,"path":1902,"stem":1903,"titleTemplate":6},"/docs/4.x/migration/bundling","docs/4.x/7.migration/10.bundling",{"title":79,"path":1905,"stem":1906,"titleTemplate":6},"/docs/4.x/migration/server","docs/4.x/7.migration/11.server",{"title":29,"path":1908,"stem":1909,"titleTemplate":6},"/docs/4.x/migration/configuration","docs/4.x/7.migration/2.configuration",{"title":276,"path":1911,"stem":1912,"titleTemplate":6},"/docs/4.x/migration/module-authors","docs/4.x/7.migration/20.module-authors",{"title":922,"path":1914,"stem":1915,"titleTemplate":6},"/docs/4.x/migration/auto-imports","docs/4.x/7.migration/3.auto-imports",{"title":932,"path":1917,"stem":1918,"titleTemplate":6},"/docs/4.x/migration/meta","docs/4.x/7.migration/4.meta",{"title":1058,"path":1920,"stem":1921,"titleTemplate":6},"/docs/4.x/migration/plugins-and-middleware","docs/4.x/7.migration/5.plugins-and-middleware",{"title":1110,"path":1923,"stem":1924,"titleTemplate":6},"/docs/4.x/migration/pages-and-layouts","docs/4.x/7.migration/6.pages-and-layouts",{"title":1114,"path":1926,"stem":1927,"titleTemplate":6},"/docs/4.x/migration/component-options","docs/4.x/7.migration/7.component-options",{"title":399,"path":1929,"stem":1930,"titleTemplate":6},"/docs/4.x/migration/runtime-config","docs/4.x/7.migration/8.runtime-config",{"title":1932,"path":1933,"stem":1934,"children":1935,"page":108},"Blog","/blog","blog",[1936,1940,1944,1948,1952,1956,1960,1964,1968,1972,1976,1980,1984,1988,1992,1996,2000,2004,2008,2012,2016],{"title":1937,"path":1938,"stem":1939},"Announcing 3.0","/blog/v3","blog/1.v3",{"title":1941,"path":1942,"stem":1943},"Nuxt 3.3","/blog/v3-3","blog/10.v3-3",{"title":1945,"path":1946,"stem":1947},"Nuxt 3.4","/blog/v3-4","blog/11.v3-4",{"title":1949,"path":1950,"stem":1951},"Nuxt 3.5","/blog/v3-5","blog/12.v3-5",{"title":1953,"path":1954,"stem":1955},"Nuxt 3.6","/blog/v3-6","blog/13.v3-6",{"title":1957,"path":1958,"stem":1959},"Nuxt on the Edge","/blog/nuxt-on-the-edge","blog/14.nuxt-on-the-edge",{"title":1961,"path":1962,"stem":1963},"Nuxt DevTools v1.0","/blog/nuxt-devtools-v1-0","blog/18.nuxt-devtools-v1-0",{"title":1965,"path":1966,"stem":1967},"Nuxt: A vision for 2023","/blog/vision-2023","blog/2.vision-2023",{"title":1969,"path":1970,"stem":1971},"The Evolution of Shiki v1.0","/blog/shiki-v1","blog/21.shiki-v1",{"title":1973,"path":1974,"stem":1975},"Refreshed Nuxt ESLint Integrations","/blog/eslint-module","blog/24.eslint-module",{"title":1977,"path":1978,"stem":1979},"Introducing Nuxt Scripts","/blog/nuxt-scripts","blog/26.nuxt-scripts",{"title":1981,"path":1982,"stem":1983},"Introducing Nuxt Icon v1","/blog/nuxt-icon-v1-0","blog/29.nuxt-icon-v1-0",{"title":1985,"path":1986,"stem":1987},"Introducing Nuxt DevTools","/blog/introducing-nuxt-devtools","blog/3.introducing-nuxt-devtools",{"title":1989,"path":1990,"stem":1991},"Announcing Nuxt 3 Release Candidate","/blog/nuxt3-rc","blog/3.nuxt3-rc",{"title":1993,"path":1994,"stem":1995},"Nuxt 2 End-of-Life (EOL)","/blog/nuxt2-eol","blog/4.nuxt2-eol",{"title":1997,"path":1998,"stem":1999},"Introducing Nuxt 3 Beta","/blog/nuxt3-beta","blog/4.nuxt3-beta",{"title":2001,"path":2002,"stem":2003},"Going Full Static","/blog/going-full-static","blog/5.going-full-static",{"title":2005,"path":2006,"stem":2007},"Introducing Smart Prefetching","/blog/introducing-smart-prefetching","blog/6.introducing-smart-prefetching",{"title":2009,"path":2010,"stem":2011},"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":2013,"path":2014,"stem":2015},"Nuxt 2 Static Improvements","/blog/nuxt-static-improvements","blog/8.nuxt-static-improvements",{"title":2017,"path":2018,"stem":2019},"Nuxt 2: From Terminal to Browser","/blog/nuxtjs-from-terminal-to-browser","blog/9.nuxtjs-from-terminal-to-browser",{"v3":2021,"v4":2022,"v2":2023},"3.21.1","4.3.1","2.18.1",{"id":2025,"title":64,"body":2026,"description":8846,"extension":8847,"links":6,"meta":8848,"navigation":8849,"path":1156,"seo":8850,"stem":1157,"titleTemplate":6,"__hash__":8851},"docsv4/docs/4.x/1.getting-started/10.data-fetching.md",{"type":2027,"value":2028,"toc":8813},"minimark",[2029,2046,2049,2084,2092,2101,2110,2122,2135,2152,2481,2490,2495,2506,2517,2522,2534,2649,2676,2684,2688,2703,2763,2800,2817,2925,2935,2980,2985,2995,3099,3110,3115,3117,3120,3125,3130,3153,3157,3170,3303,3339,3476,3484,3704,3807,3813,3817,3824,3898,3916,3922,3944,3948,3959,3963,3972,4169,4179,4245,4251,4257,4262,4266,4276,4282,4389,4400,4404,4410,4572,4579,4701,4710,4714,4718,4723,4734,4760,4769,4773,4777,4793,4800,4832,4999,5005,5030,5193,5196,5332,5336,5339,5484,5488,5496,5657,5669,5682,5685,5693,5846,5849,5859,5973,5980,6094,6102,6108,6229,6233,6236,6350,6359,6366,6720,6727,6730,6739,6748,6976,6982,7005,7009,7018,7024,7037,7041,7044,7266,7398,7402,7412,7524,7535,7537,7541,7577,7585,7599,7603,7620,7631,7635,7675,7740,7744,7754,7923,8023,8027,8036,8045,8190,8326,8329,8333,8353,8356,8615,8619,8626,8805,8809],[2030,2031,2032,2033,2036,2037,2042,2043,2045],"p",{},"Nuxt comes with two composables and a built-in library to perform data-fetching in browser or server environments: ",[2034,2035,527],"code",{},", ",[2038,2039,2040],"a",{"href":1467},[2034,2041,515],{}," and ",[2034,2044,630],{},".",[2030,2047,2048],{},"In a nutshell:",[2050,2051,2052,2060,2074],"ul",{},[2053,2054,2055,2059],"li",{},[2038,2056,2057],{"href":1552},[2034,2058,630],{}," is the simplest way to make a network request.",[2053,2061,2062,2066,2067,2069,2070,2045],{},[2038,2063,2064],{"href":1476},[2034,2065,527],{}," is a wrapper around ",[2034,2068,630],{}," that fetches data only once in ",[2038,2071,2073],{"href":2072},"/docs/4.x/guide/concepts/rendering#universal-rendering","universal rendering",[2053,2075,2076,2080,2081,2083],{},[2038,2077,2078],{"href":1467},[2034,2079,515],{}," is similar to ",[2034,2082,527],{}," but offers more fine-grained control.",[2030,2085,2086,2087,2042,2089,2091],{},"Both ",[2034,2088,527],{},[2034,2090,515],{}," share a common set of options and patterns that we will detail in the last sections.",[2093,2094,2096,2097,2042,2099],"h2",{"id":2095},"the-need-for-usefetch-and-useasyncdata","The need for ",[2034,2098,527],{},[2034,2100,515],{},[2030,2102,2103,2104,2109],{},"Nuxt is a framework which can run isomorphic (or universal) code in both server and client environments. If the ",[2038,2105,2106,2108],{"href":1552},[2034,2107,630],{}," function"," is used to perform data fetching in the setup function of a Vue component, this may cause data to be fetched twice, once on the server (to render the HTML) and once again on the client (when the HTML is hydrated). This can cause hydration issues, increase the time to interactivity and cause unpredictable behavior.",[2030,2111,2112,2113,2042,2117,2121],{},"The ",[2038,2114,2115],{"href":1476},[2034,2116,527],{},[2038,2118,2119],{"href":1467},[2034,2120,515],{}," composables solve this problem by ensuring that if an API call is made on the server, the data is forwarded to the client in the payload.",[2030,2123,2124,2125,2131,2132,2045],{},"The payload is a JavaScript object accessible through ",[2038,2126,2128],{"href":2127},"/docs/4.x/api/composables/use-nuxt-app#payload",[2034,2129,2130],{},"useNuxtApp().payload",". It is used on the client to avoid refetching the same data when the code is executed in the browser ",[2038,2133,2134],{"href":2072},"during hydration",[2136,2137,2138],"tip",{},[2030,2139,2140,2141,2147,2148,2045],{},"Use the ",[2038,2142,2146],{"href":2143,"rel":2144},"https://devtools.nuxt.com",[2145],"nofollow","Nuxt DevTools"," to inspect this data in the ",[2149,2150,2151],"strong",{},"Payload tab",[2153,2154,2160],"pre",{"className":2155,"code":2156,"filename":2157,"language":2158,"meta":2159,"style":2159},"language-vue shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","\u003Cscript setup lang=\"ts\">\nconst { data } = await useFetch('/api/data')\n\nasync function handleFormSubmit () {\n  const res = await $fetch('/api/submit', {\n    method: 'POST',\n    body: {\n      // My form data\n    },\n  })\n}\n\u003C/script>\n\n\u003Ctemplate>\n  \u003Cdiv v-if=\"data == undefined\">\n    No data\n  \u003C/div>\n  \u003Cdiv v-else>\n    \u003Cform @submit=\"handleFormSubmit\">\n      \u003C!-- form input tags -->\n    \u003C/form>\n  \u003C/div>\n\u003C/template>\n","app/app.vue","vue","",[2034,2161,2162,2197,2238,2244,2261,2291,2311,2321,2328,2334,2342,2348,2358,2363,2373,2396,2402,2412,2424,2447,2453,2463,2472],{"__ignoreMap":2159},[2163,2164,2167,2171,2175,2179,2182,2185,2188,2192,2194],"span",{"class":2165,"line":2166},"line",1,[2163,2168,2170],{"class":2169},"sDfIl","\u003C",[2163,2172,2174],{"class":2173},"sRlkE","script",[2163,2176,2178],{"class":2177},"smZ93"," setup",[2163,2180,2181],{"class":2177}," lang",[2163,2183,2184],{"class":2169},"=",[2163,2186,2187],{"class":2169},"\"",[2163,2189,2191],{"class":2190},"sGFVr","ts",[2163,2193,2187],{"class":2169},[2163,2195,2196],{"class":2169},">\n",[2163,2198,2200,2203,2206,2210,2213,2216,2220,2224,2227,2230,2233,2235],{"class":2165,"line":2199},2,[2163,2201,2202],{"class":2177},"const",[2163,2204,2205],{"class":2169}," {",[2163,2207,2209],{"class":2208},"sZSNi"," data ",[2163,2211,2212],{"class":2169},"}",[2163,2214,2215],{"class":2169}," =",[2163,2217,2219],{"class":2218},"s8R28"," await",[2163,2221,2223],{"class":2222},"s3cPz"," useFetch",[2163,2225,2226],{"class":2208},"(",[2163,2228,2229],{"class":2169},"'",[2163,2231,2232],{"class":2190},"/api/data",[2163,2234,2229],{"class":2169},[2163,2236,2237],{"class":2208},")\n",[2163,2239,2241],{"class":2165,"line":2240},3,[2163,2242,2243],{"emptyLinePlaceholder":1196},"\n",[2163,2245,2247,2250,2252,2255,2258],{"class":2165,"line":2246},4,[2163,2248,2249],{"class":2177},"async",[2163,2251,2108],{"class":2177},[2163,2253,2254],{"class":2222}," handleFormSubmit",[2163,2256,2257],{"class":2169}," ()",[2163,2259,2260],{"class":2169}," {\n",[2163,2262,2264,2267,2270,2272,2274,2277,2279,2281,2284,2286,2289],{"class":2165,"line":2263},5,[2163,2265,2266],{"class":2177},"  const",[2163,2268,2269],{"class":2208}," res",[2163,2271,2215],{"class":2169},[2163,2273,2219],{"class":2218},[2163,2275,2276],{"class":2222}," $fetch",[2163,2278,2226],{"class":2173},[2163,2280,2229],{"class":2169},[2163,2282,2283],{"class":2190},"/api/submit",[2163,2285,2229],{"class":2169},[2163,2287,2288],{"class":2169},",",[2163,2290,2260],{"class":2169},[2163,2292,2294,2297,2300,2303,2306,2308],{"class":2165,"line":2293},6,[2163,2295,2296],{"class":2173},"    method",[2163,2298,2299],{"class":2169},":",[2163,2301,2302],{"class":2169}," '",[2163,2304,2305],{"class":2190},"POST",[2163,2307,2229],{"class":2169},[2163,2309,2310],{"class":2169},",\n",[2163,2312,2314,2317,2319],{"class":2165,"line":2313},7,[2163,2315,2316],{"class":2173},"    body",[2163,2318,2299],{"class":2169},[2163,2320,2260],{"class":2169},[2163,2322,2324],{"class":2165,"line":2323},8,[2163,2325,2327],{"class":2326},"sWuyu","      // My form data\n",[2163,2329,2331],{"class":2165,"line":2330},9,[2163,2332,2333],{"class":2169},"    },\n",[2163,2335,2337,2340],{"class":2165,"line":2336},10,[2163,2338,2339],{"class":2169},"  }",[2163,2341,2237],{"class":2173},[2163,2343,2345],{"class":2165,"line":2344},11,[2163,2346,2347],{"class":2169},"}\n",[2163,2349,2351,2354,2356],{"class":2165,"line":2350},12,[2163,2352,2353],{"class":2169},"\u003C/",[2163,2355,2174],{"class":2173},[2163,2357,2196],{"class":2169},[2163,2359,2361],{"class":2165,"line":2360},13,[2163,2362,2243],{"emptyLinePlaceholder":1196},[2163,2364,2366,2368,2371],{"class":2165,"line":2365},14,[2163,2367,2170],{"class":2169},[2163,2369,2370],{"class":2173},"template",[2163,2372,2196],{"class":2169},[2163,2374,2376,2379,2382,2385,2387,2389,2392,2394],{"class":2165,"line":2375},15,[2163,2377,2378],{"class":2169},"  \u003C",[2163,2380,2381],{"class":2173},"div",[2163,2383,2384],{"class":2177}," v-if",[2163,2386,2184],{"class":2169},[2163,2388,2187],{"class":2169},[2163,2390,2391],{"class":2190},"data == undefined",[2163,2393,2187],{"class":2169},[2163,2395,2196],{"class":2169},[2163,2397,2399],{"class":2165,"line":2398},16,[2163,2400,2401],{"class":2208},"    No data\n",[2163,2403,2405,2408,2410],{"class":2165,"line":2404},17,[2163,2406,2407],{"class":2169},"  \u003C/",[2163,2409,2381],{"class":2173},[2163,2411,2196],{"class":2169},[2163,2413,2415,2417,2419,2422],{"class":2165,"line":2414},18,[2163,2416,2378],{"class":2169},[2163,2418,2381],{"class":2173},[2163,2420,2421],{"class":2177}," v-else",[2163,2423,2196],{"class":2169},[2163,2425,2427,2430,2433,2436,2438,2440,2443,2445],{"class":2165,"line":2426},19,[2163,2428,2429],{"class":2169},"    \u003C",[2163,2431,2432],{"class":2173},"form",[2163,2434,2435],{"class":2177}," @submit",[2163,2437,2184],{"class":2169},[2163,2439,2187],{"class":2169},[2163,2441,2442],{"class":2190},"handleFormSubmit",[2163,2444,2187],{"class":2169},[2163,2446,2196],{"class":2169},[2163,2448,2450],{"class":2165,"line":2449},20,[2163,2451,2452],{"class":2326},"      \u003C!-- form input tags -->\n",[2163,2454,2456,2459,2461],{"class":2165,"line":2455},21,[2163,2457,2458],{"class":2169},"    \u003C/",[2163,2460,2432],{"class":2173},[2163,2462,2196],{"class":2169},[2163,2464,2466,2468,2470],{"class":2165,"line":2465},22,[2163,2467,2407],{"class":2169},[2163,2469,2381],{"class":2173},[2163,2471,2196],{"class":2169},[2163,2473,2475,2477,2479],{"class":2165,"line":2474},23,[2163,2476,2353],{"class":2169},[2163,2478,2370],{"class":2173},[2163,2480,2196],{"class":2169},[2030,2482,2483,2484,2486,2487,2489],{},"In the example above, ",[2034,2485,527],{}," would make sure that the request would occur in the server and is properly forwarded to the browser. ",[2034,2488,630],{}," has no such mechanism and is a better option to use when the request is solely made from the browser.",[2491,2492,2494],"h3",{"id":2493},"suspense","Suspense",[2030,2496,2497,2498,2505],{},"Nuxt uses Vue's ",[2038,2499,2502],{"href":2500,"rel":2501},"https://vuejs.org/guide/built-ins/suspense",[2145],[2034,2503,2504],{},"\u003CSuspense>"," component under the hood to prevent navigation before every async data is available to the view. The data fetching composables can help you leverage this feature and use what suits best on a per-call basis.",[2507,2508,2509],"note",{},[2030,2510,2511,2512,2516],{},"You can add the ",[2038,2513,2514],{"href":1442},[2034,2515,480],{}," to add a progress bar between page navigations.",[2093,2518,2520],{"id":2519},"fetch",[2034,2521,630],{},[2030,2523,2524,2525,2530,2531,2533],{},"Nuxt includes the ",[2038,2526,2529],{"href":2527,"rel":2528},"https://github.com/unjs/ofetch",[2145],"ofetch"," library, and is auto-imported as the ",[2034,2532,630],{}," alias globally across your application.",[2153,2535,2539],{"className":2155,"code":2536,"filename":2537,"language":2158,"meta":2538,"style":2159},"\u003Cscript setup lang=\"ts\">\nasync function addTodo () {\n  const todo = await $fetch('/api/todos', {\n    method: 'POST',\n    body: {\n      // My todo data\n    },\n  })\n}\n\u003C/script>\n","pages/todos.vue","twoslash",[2034,2540,2541,2561,2574,2600,2614,2622,2627,2631,2637,2641],{"__ignoreMap":2159},[2163,2542,2543,2545,2547,2549,2551,2553,2555,2557,2559],{"class":2165,"line":2166},[2163,2544,2170],{"class":2169},[2163,2546,2174],{"class":2173},[2163,2548,2178],{"class":2177},[2163,2550,2181],{"class":2177},[2163,2552,2184],{"class":2169},[2163,2554,2187],{"class":2169},[2163,2556,2191],{"class":2190},[2163,2558,2187],{"class":2169},[2163,2560,2196],{"class":2169},[2163,2562,2563,2565,2567,2570,2572],{"class":2165,"line":2199},[2163,2564,2249],{"class":2177},[2163,2566,2108],{"class":2177},[2163,2568,2569],{"class":2222}," addTodo",[2163,2571,2257],{"class":2169},[2163,2573,2260],{"class":2169},[2163,2575,2576,2578,2581,2583,2585,2587,2589,2591,2594,2596,2598],{"class":2165,"line":2240},[2163,2577,2266],{"class":2177},[2163,2579,2580],{"class":2208}," todo",[2163,2582,2215],{"class":2169},[2163,2584,2219],{"class":2218},[2163,2586,2276],{"class":2222},[2163,2588,2226],{"class":2173},[2163,2590,2229],{"class":2169},[2163,2592,2593],{"class":2190},"/api/todos",[2163,2595,2229],{"class":2169},[2163,2597,2288],{"class":2169},[2163,2599,2260],{"class":2169},[2163,2601,2602,2604,2606,2608,2610,2612],{"class":2165,"line":2246},[2163,2603,2296],{"class":2173},[2163,2605,2299],{"class":2169},[2163,2607,2302],{"class":2169},[2163,2609,2305],{"class":2190},[2163,2611,2229],{"class":2169},[2163,2613,2310],{"class":2169},[2163,2615,2616,2618,2620],{"class":2165,"line":2263},[2163,2617,2316],{"class":2173},[2163,2619,2299],{"class":2169},[2163,2621,2260],{"class":2169},[2163,2623,2624],{"class":2165,"line":2293},[2163,2625,2626],{"class":2326},"      // My todo data\n",[2163,2628,2629],{"class":2165,"line":2313},[2163,2630,2333],{"class":2169},[2163,2632,2633,2635],{"class":2165,"line":2323},[2163,2634,2339],{"class":2169},[2163,2636,2237],{"class":2173},[2163,2638,2639],{"class":2165,"line":2330},[2163,2640,2347],{"class":2169},[2163,2642,2643,2645,2647],{"class":2165,"line":2336},[2163,2644,2353],{"class":2169},[2163,2646,2174],{"class":2173},[2163,2648,2196],{"class":2169},[2650,2651,2652],"warning",{},[2030,2653,2654,2655,2657,2658,2662,2663,2666,2667,2669,2670,2675],{},"Beware that using only ",[2034,2656,630],{}," will not provide ",[2038,2659,2661],{"href":2660},"/docs/4.x/getting-started/data-fetching#the-need-for-usefetch-and-useasyncdata","network calls de-duplication and navigation prevention",". ",[2664,2665],"br",{},"\nIt is recommended to use ",[2034,2668,630],{}," for client-side interactions (event-based) or combined with ",[2038,2671,2673],{"href":2672},"/docs/4.x/getting-started/data-fetching#useasyncdata",[2034,2674,515],{}," when fetching the initial component data.",[2677,2678,2679],"read-more",{"to":1552},[2030,2680,2681,2682,2045],{},"Read more about ",[2034,2683,630],{},[2491,2685,2687],{"id":2686},"pass-client-headers-to-the-api","Pass Client Headers to the API",[2030,2689,2690,2691,2693,2694,2698,2699,2702],{},"When calling ",[2034,2692,527],{}," on the server, Nuxt will use ",[2038,2695,2696],{"href":1509},[2034,2697,571],{}," to proxy client headers and cookies (with the exception of headers not meant to be forwarded, like ",[2034,2700,2701],{},"host",").",[2153,2704,2706],{"className":2155,"code":2705,"language":2158,"meta":2159,"style":2159},"\u003Cscript setup lang=\"ts\">\nconst { data } = await useFetch('/api/echo')\n\u003C/script>\n",[2034,2707,2708,2728,2755],{"__ignoreMap":2159},[2163,2709,2710,2712,2714,2716,2718,2720,2722,2724,2726],{"class":2165,"line":2166},[2163,2711,2170],{"class":2169},[2163,2713,2174],{"class":2173},[2163,2715,2178],{"class":2177},[2163,2717,2181],{"class":2177},[2163,2719,2184],{"class":2169},[2163,2721,2187],{"class":2169},[2163,2723,2191],{"class":2190},[2163,2725,2187],{"class":2169},[2163,2727,2196],{"class":2169},[2163,2729,2730,2732,2734,2736,2738,2740,2742,2744,2746,2748,2751,2753],{"class":2165,"line":2199},[2163,2731,2202],{"class":2177},[2163,2733,2205],{"class":2169},[2163,2735,2209],{"class":2208},[2163,2737,2212],{"class":2169},[2163,2739,2215],{"class":2169},[2163,2741,2219],{"class":2218},[2163,2743,2223],{"class":2222},[2163,2745,2226],{"class":2208},[2163,2747,2229],{"class":2169},[2163,2749,2750],{"class":2190},"/api/echo",[2163,2752,2229],{"class":2169},[2163,2754,2237],{"class":2208},[2163,2756,2757,2759,2761],{"class":2165,"line":2240},[2163,2758,2353],{"class":2169},[2163,2760,2174],{"class":2173},[2163,2762,2196],{"class":2169},[2153,2764,2767],{"className":2765,"code":2766,"language":2191,"meta":2159,"style":2159},"language-ts shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","// /api/echo.ts\nexport default defineEventHandler(event => parseCookies(event))\n",[2034,2768,2769,2774],{"__ignoreMap":2159},[2163,2770,2771],{"class":2165,"line":2166},[2163,2772,2773],{"class":2326},"// /api/echo.ts\n",[2163,2775,2776,2779,2782,2785,2787,2791,2794,2797],{"class":2165,"line":2199},[2163,2777,2778],{"class":2218},"export",[2163,2780,2781],{"class":2218}," default",[2163,2783,2784],{"class":2222}," defineEventHandler",[2163,2786,2226],{"class":2208},[2163,2788,2790],{"class":2789},"s1nJG","event",[2163,2792,2793],{"class":2177}," =>",[2163,2795,2796],{"class":2222}," parseCookies",[2163,2798,2799],{"class":2208},"(event))\n",[2030,2801,2802,2803,2807,2808,2810,2811,2814,2815,2045],{},"Alternatively, the example below shows how to use ",[2038,2804,2805],{"href":1515},[2034,2806,579],{}," to access and send cookies to the API from a server-side request (originating on the client). Using an isomorphic ",[2034,2809,630],{}," call, we ensure that the API endpoint has access to the same ",[2034,2812,2813],{},"cookie"," header originally sent by the user's browser. This is only necessary if you aren't using ",[2034,2816,527],{},[2153,2818,2820],{"className":2155,"code":2819,"language":2158,"meta":2159,"style":2159},"\u003Cscript setup lang=\"ts\">\nconst headers = useRequestHeaders(['cookie'])\n\nasync function getCurrentUser () {\n  return await $fetch('/api/me', { headers })\n}\n\u003C/script>\n",[2034,2821,2822,2842,2866,2870,2883,2913,2917],{"__ignoreMap":2159},[2163,2823,2824,2826,2828,2830,2832,2834,2836,2838,2840],{"class":2165,"line":2166},[2163,2825,2170],{"class":2169},[2163,2827,2174],{"class":2173},[2163,2829,2178],{"class":2177},[2163,2831,2181],{"class":2177},[2163,2833,2184],{"class":2169},[2163,2835,2187],{"class":2169},[2163,2837,2191],{"class":2190},[2163,2839,2187],{"class":2169},[2163,2841,2196],{"class":2169},[2163,2843,2844,2846,2849,2851,2854,2857,2859,2861,2863],{"class":2165,"line":2199},[2163,2845,2202],{"class":2177},[2163,2847,2848],{"class":2208}," headers ",[2163,2850,2184],{"class":2169},[2163,2852,2853],{"class":2222}," useRequestHeaders",[2163,2855,2856],{"class":2208},"([",[2163,2858,2229],{"class":2169},[2163,2860,2813],{"class":2190},[2163,2862,2229],{"class":2169},[2163,2864,2865],{"class":2208},"])\n",[2163,2867,2868],{"class":2165,"line":2240},[2163,2869,2243],{"emptyLinePlaceholder":1196},[2163,2871,2872,2874,2876,2879,2881],{"class":2165,"line":2246},[2163,2873,2249],{"class":2177},[2163,2875,2108],{"class":2177},[2163,2877,2878],{"class":2222}," getCurrentUser",[2163,2880,2257],{"class":2169},[2163,2882,2260],{"class":2169},[2163,2884,2885,2888,2890,2892,2894,2896,2899,2901,2903,2905,2908,2911],{"class":2165,"line":2263},[2163,2886,2887],{"class":2218},"  return",[2163,2889,2219],{"class":2218},[2163,2891,2276],{"class":2222},[2163,2893,2226],{"class":2173},[2163,2895,2229],{"class":2169},[2163,2897,2898],{"class":2190},"/api/me",[2163,2900,2229],{"class":2169},[2163,2902,2288],{"class":2169},[2163,2904,2205],{"class":2169},[2163,2906,2907],{"class":2208}," headers",[2163,2909,2910],{"class":2169}," }",[2163,2912,2237],{"class":2173},[2163,2914,2915],{"class":2165,"line":2293},[2163,2916,2347],{"class":2169},[2163,2918,2919,2921,2923],{"class":2165,"line":2313},[2163,2920,2353],{"class":2169},[2163,2922,2174],{"class":2173},[2163,2924,2196],{"class":2169},[2136,2926,2927],{},[2030,2928,2929,2930,2934],{},"You can also use ",[2038,2931,2932],{"href":1509},[2034,2933,571],{}," to proxy headers to the call automatically.",[2936,2937,2938,2941],"caution",{},[2030,2939,2940],{},"Be very careful before proxying headers to an external API and just include headers that you need. Not all headers are safe to be bypassed and might introduce unwanted behavior. Here is a list of common headers that are NOT to be proxied:",[2050,2942,2943,2950,2961,2972],{},[2053,2944,2945,2036,2947],{},[2034,2946,2701],{},[2034,2948,2949],{},"accept",[2053,2951,2952,2036,2955,2036,2958],{},[2034,2953,2954],{},"content-length",[2034,2956,2957],{},"content-md5",[2034,2959,2960],{},"content-type",[2053,2962,2963,2036,2966,2036,2969],{},[2034,2964,2965],{},"x-forwarded-host",[2034,2967,2968],{},"x-forwarded-port",[2034,2970,2971],{},"x-forwarded-proto",[2053,2973,2974,2036,2977],{},[2034,2975,2976],{},"cf-connecting-ip",[2034,2978,2979],{},"cf-ray",[2093,2981,2983],{"id":2982},"usefetch",[2034,2984,527],{},[2030,2986,2112,2987,2991,2992,2994],{},[2038,2988,2989],{"href":1476},[2034,2990,527],{}," composable uses ",[2034,2993,630],{}," under-the-hood to make SSR-safe network calls in the setup function.",[2153,2996,2998],{"className":2155,"code":2997,"filename":2157,"language":2158,"meta":2538,"style":2159},"\u003Cscript setup lang=\"ts\">\nconst { data: count } = await useFetch('/api/count')\n\u003C/script>\n\n\u003Ctemplate>\n  \u003Cp>Page visits: {{ count }}\u003C/p>\n\u003C/template>\n",[2034,2999,3000,3020,3053,3061,3065,3073,3091],{"__ignoreMap":2159},[2163,3001,3002,3004,3006,3008,3010,3012,3014,3016,3018],{"class":2165,"line":2166},[2163,3003,2170],{"class":2169},[2163,3005,2174],{"class":2173},[2163,3007,2178],{"class":2177},[2163,3009,2181],{"class":2177},[2163,3011,2184],{"class":2169},[2163,3013,2187],{"class":2169},[2163,3015,2191],{"class":2190},[2163,3017,2187],{"class":2169},[2163,3019,2196],{"class":2169},[2163,3021,3022,3024,3026,3029,3031,3034,3036,3038,3040,3042,3044,3046,3049,3051],{"class":2165,"line":2199},[2163,3023,2202],{"class":2177},[2163,3025,2205],{"class":2169},[2163,3027,3028],{"class":2173}," data",[2163,3030,2299],{"class":2169},[2163,3032,3033],{"class":2208}," count ",[2163,3035,2212],{"class":2169},[2163,3037,2215],{"class":2169},[2163,3039,2219],{"class":2218},[2163,3041,2223],{"class":2222},[2163,3043,2226],{"class":2208},[2163,3045,2229],{"class":2169},[2163,3047,3048],{"class":2190},"/api/count",[2163,3050,2229],{"class":2169},[2163,3052,2237],{"class":2208},[2163,3054,3055,3057,3059],{"class":2165,"line":2240},[2163,3056,2353],{"class":2169},[2163,3058,2174],{"class":2173},[2163,3060,2196],{"class":2169},[2163,3062,3063],{"class":2165,"line":2246},[2163,3064,2243],{"emptyLinePlaceholder":1196},[2163,3066,3067,3069,3071],{"class":2165,"line":2263},[2163,3068,2170],{"class":2169},[2163,3070,2370],{"class":2173},[2163,3072,2196],{"class":2169},[2163,3074,3075,3077,3079,3082,3085,3087,3089],{"class":2165,"line":2293},[2163,3076,2378],{"class":2169},[2163,3078,2030],{"class":2173},[2163,3080,3081],{"class":2169},">",[2163,3083,3084],{"class":2208},"Page visits: {{ count }}",[2163,3086,2353],{"class":2169},[2163,3088,2030],{"class":2173},[2163,3090,2196],{"class":2169},[2163,3092,3093,3095,3097],{"class":2165,"line":2313},[2163,3094,2353],{"class":2169},[2163,3096,2370],{"class":2173},[2163,3098,2196],{"class":2169},[2030,3100,3101,3102,3106,3107,3109],{},"This composable is a wrapper around the ",[2038,3103,3104],{"href":1467},[2034,3105,515],{}," composable and ",[2034,3108,630],{}," utility.",[3111,3112],"video-accordion",{"title":3113,"video-id":3114},"Watch a video from Alexander Lichter to avoid using useFetch the wrong way","njsGVmcWviY",[2677,3116],{"to":1476},[3118,3119],"link-example",{"to":1776},[2093,3121,3123],{"id":3122},"useasyncdata",[2034,3124,515],{},[2030,3126,2112,3127,3129],{},[2034,3128,515],{}," composable is responsible for wrapping async logic and returning the result once it is resolved.",[2136,3131,3132],{},[2030,3133,3134,3137,3138,2662,3141,3143,3144,3147,3148,3152],{},[2034,3135,3136],{},"useFetch(url)"," is nearly equivalent to ",[2034,3139,3140],{},"useAsyncData(url, () => event.$fetch(url))",[2664,3142],{},"\nIt's developer experience sugar for the most common use case. (You can find out more about ",[2034,3145,3146],{},"event.fetch"," at ",[2038,3149,3150],{"href":1509},[2034,3151,571],{},".)",[3111,3154],{"title":3155,"video-id":3156},"Watch a video from Alexander Lichter to dig deeper into the difference between useFetch and useAsyncData","0X-aOpSGabA",[2030,3158,3159,3160,3164,3165,3169],{},"There are some cases when using the ",[2038,3161,3162],{"href":1476},[2034,3163,527],{}," composable is not appropriate, for example when a CMS or a third-party provide their own query layer. In this case, you can use ",[2038,3166,3167],{"href":1467},[2034,3168,515],{}," to wrap your calls and still keep the benefits provided by the composable.",[2153,3171,3174],{"className":2155,"code":3172,"filename":3173,"language":2158,"meta":2159,"style":2159},"\u003Cscript setup lang=\"ts\">\nconst { data, error } = await useAsyncData('users', () => myGetFunction('users'))\n\n// This is also possible:\nconst { data, error } = await useAsyncData(() => myGetFunction('users'))\n\u003C/script>\n","app/pages/users.vue",[2034,3175,3176,3196,3247,3251,3256,3295],{"__ignoreMap":2159},[2163,3177,3178,3180,3182,3184,3186,3188,3190,3192,3194],{"class":2165,"line":2166},[2163,3179,2170],{"class":2169},[2163,3181,2174],{"class":2173},[2163,3183,2178],{"class":2177},[2163,3185,2181],{"class":2177},[2163,3187,2184],{"class":2169},[2163,3189,2187],{"class":2169},[2163,3191,2191],{"class":2190},[2163,3193,2187],{"class":2169},[2163,3195,2196],{"class":2169},[2163,3197,3198,3200,3202,3204,3206,3209,3211,3213,3215,3218,3220,3222,3225,3227,3229,3231,3233,3236,3238,3240,3242,3244],{"class":2165,"line":2199},[2163,3199,2202],{"class":2177},[2163,3201,2205],{"class":2169},[2163,3203,3028],{"class":2208},[2163,3205,2288],{"class":2169},[2163,3207,3208],{"class":2208}," error ",[2163,3210,2212],{"class":2169},[2163,3212,2215],{"class":2169},[2163,3214,2219],{"class":2218},[2163,3216,3217],{"class":2222}," useAsyncData",[2163,3219,2226],{"class":2208},[2163,3221,2229],{"class":2169},[2163,3223,3224],{"class":2190},"users",[2163,3226,2229],{"class":2169},[2163,3228,2288],{"class":2169},[2163,3230,2257],{"class":2169},[2163,3232,2793],{"class":2177},[2163,3234,3235],{"class":2222}," myGetFunction",[2163,3237,2226],{"class":2208},[2163,3239,2229],{"class":2169},[2163,3241,3224],{"class":2190},[2163,3243,2229],{"class":2169},[2163,3245,3246],{"class":2208},"))\n",[2163,3248,3249],{"class":2165,"line":2240},[2163,3250,2243],{"emptyLinePlaceholder":1196},[2163,3252,3253],{"class":2165,"line":2246},[2163,3254,3255],{"class":2326},"// This is also possible:\n",[2163,3257,3258,3260,3262,3264,3266,3268,3270,3272,3274,3276,3278,3281,3283,3285,3287,3289,3291,3293],{"class":2165,"line":2263},[2163,3259,2202],{"class":2177},[2163,3261,2205],{"class":2169},[2163,3263,3028],{"class":2208},[2163,3265,2288],{"class":2169},[2163,3267,3208],{"class":2208},[2163,3269,2212],{"class":2169},[2163,3271,2215],{"class":2169},[2163,3273,2219],{"class":2218},[2163,3275,3217],{"class":2222},[2163,3277,2226],{"class":2208},[2163,3279,3280],{"class":2169},"()",[2163,3282,2793],{"class":2177},[2163,3284,3235],{"class":2222},[2163,3286,2226],{"class":2208},[2163,3288,2229],{"class":2169},[2163,3290,3224],{"class":2190},[2163,3292,2229],{"class":2169},[2163,3294,3246],{"class":2208},[2163,3296,3297,3299,3301],{"class":2165,"line":2293},[2163,3298,2353],{"class":2169},[2163,3300,2174],{"class":2173},[2163,3302,2196],{"class":2169},[2507,3304,3305],{},[2030,3306,3307,3308,3312,3313,3315,3316,3318,3319,3321,3322,3324,3325,3315,3327,3329,3330,3334,3335,2045],{},"The first argument of ",[2038,3309,3310],{"href":1467},[2034,3311,515],{}," is a unique key used to cache the response of the second argument, the querying function. This key can be ignored by directly passing the querying function, the key will be auto-generated.\n",[2664,3314],{}," ",[2664,3317],{},"\nSince the autogenerated key only takes into account the file and line where ",[2034,3320,515],{}," is invoked, it is recommended to always create your own key to avoid unwanted behavior, like when you are creating your own custom composable wrapping ",[2034,3323,515],{},".\n",[2664,3326],{},[2664,3328],{},"\nSetting a key can be useful to share the same data between components using ",[2038,3331,3332],{"href":1500},[2034,3333,559],{}," or to ",[2038,3336,3338],{"href":3337},"/docs/4.x/api/utils/refresh-nuxt-data#refresh-specific-data","refresh specific data",[2153,3340,3343],{"className":2155,"code":3341,"filename":3342,"language":2158,"meta":2159,"style":2159},"\u003Cscript setup lang=\"ts\">\nconst { id } = useRoute().params\n\nconst { data, error } = await useAsyncData(`user:${id}`, () => {\n  return myGetFunction('users', { id })\n})\n\u003C/script>\n","app/pages/users/[id].vue",[2034,3344,3345,3365,3388,3392,3437,3462,3468],{"__ignoreMap":2159},[2163,3346,3347,3349,3351,3353,3355,3357,3359,3361,3363],{"class":2165,"line":2166},[2163,3348,2170],{"class":2169},[2163,3350,2174],{"class":2173},[2163,3352,2178],{"class":2177},[2163,3354,2181],{"class":2177},[2163,3356,2184],{"class":2169},[2163,3358,2187],{"class":2169},[2163,3360,2191],{"class":2190},[2163,3362,2187],{"class":2169},[2163,3364,2196],{"class":2169},[2163,3366,3367,3369,3371,3374,3376,3378,3381,3383,3385],{"class":2165,"line":2199},[2163,3368,2202],{"class":2177},[2163,3370,2205],{"class":2169},[2163,3372,3373],{"class":2208}," id ",[2163,3375,2212],{"class":2169},[2163,3377,2215],{"class":2169},[2163,3379,3380],{"class":2222}," useRoute",[2163,3382,3280],{"class":2208},[2163,3384,2045],{"class":2169},[2163,3386,3387],{"class":2208},"params\n",[2163,3389,3390],{"class":2165,"line":2240},[2163,3391,2243],{"emptyLinePlaceholder":1196},[2163,3393,3394,3396,3398,3400,3402,3404,3406,3408,3410,3412,3414,3417,3420,3423,3426,3429,3431,3433,3435],{"class":2165,"line":2246},[2163,3395,2202],{"class":2177},[2163,3397,2205],{"class":2169},[2163,3399,3028],{"class":2208},[2163,3401,2288],{"class":2169},[2163,3403,3208],{"class":2208},[2163,3405,2212],{"class":2169},[2163,3407,2215],{"class":2169},[2163,3409,2219],{"class":2218},[2163,3411,3217],{"class":2222},[2163,3413,2226],{"class":2208},[2163,3415,3416],{"class":2169},"`",[2163,3418,3419],{"class":2190},"user:",[2163,3421,3422],{"class":2169},"${",[2163,3424,3425],{"class":2208},"id",[2163,3427,3428],{"class":2169},"}`",[2163,3430,2288],{"class":2169},[2163,3432,2257],{"class":2169},[2163,3434,2793],{"class":2177},[2163,3436,2260],{"class":2169},[2163,3438,3439,3441,3443,3445,3447,3449,3451,3453,3455,3458,3460],{"class":2165,"line":2263},[2163,3440,2887],{"class":2218},[2163,3442,3235],{"class":2222},[2163,3444,2226],{"class":2173},[2163,3446,2229],{"class":2169},[2163,3448,3224],{"class":2190},[2163,3450,2229],{"class":2169},[2163,3452,2288],{"class":2169},[2163,3454,2205],{"class":2169},[2163,3456,3457],{"class":2208}," id",[2163,3459,2910],{"class":2169},[2163,3461,2237],{"class":2173},[2163,3463,3464,3466],{"class":2165,"line":2293},[2163,3465,2212],{"class":2169},[2163,3467,2237],{"class":2208},[2163,3469,3470,3472,3474],{"class":2165,"line":2313},[2163,3471,2353],{"class":2169},[2163,3473,2174],{"class":2173},[2163,3475,2196],{"class":2169},[2030,3477,2112,3478,3480,3481,3483],{},[2034,3479,515],{}," composable is a great way to wrap and wait for multiple ",[2034,3482,630],{}," requests to be completed, and then process the results.",[2153,3485,3487],{"className":2155,"code":3486,"language":2158,"meta":2159,"style":2159},"\u003Cscript setup lang=\"ts\">\nconst { data: discounts, status } = await useAsyncData('cart-discount', async (_nuxtApp, { signal }) => {\n  const [coupons, offers] = await Promise.all([\n    $fetch('/cart/coupons', { signal }),\n    $fetch('/cart/offers', { signal }),\n  ])\n\n  return { coupons, offers }\n})\n// discounts.value.coupons\n// discounts.value.offers\n\u003C/script>\n",[2034,3488,3489,3509,3569,3603,3630,3655,3660,3664,3680,3686,3691,3696],{"__ignoreMap":2159},[2163,3490,3491,3493,3495,3497,3499,3501,3503,3505,3507],{"class":2165,"line":2166},[2163,3492,2170],{"class":2169},[2163,3494,2174],{"class":2173},[2163,3496,2178],{"class":2177},[2163,3498,2181],{"class":2177},[2163,3500,2184],{"class":2169},[2163,3502,2187],{"class":2169},[2163,3504,2191],{"class":2190},[2163,3506,2187],{"class":2169},[2163,3508,2196],{"class":2169},[2163,3510,3511,3513,3515,3517,3519,3522,3524,3527,3529,3531,3533,3535,3537,3539,3542,3544,3546,3549,3552,3555,3557,3559,3562,3565,3567],{"class":2165,"line":2199},[2163,3512,2202],{"class":2177},[2163,3514,2205],{"class":2169},[2163,3516,3028],{"class":2173},[2163,3518,2299],{"class":2169},[2163,3520,3521],{"class":2208}," discounts",[2163,3523,2288],{"class":2169},[2163,3525,3526],{"class":2208}," status ",[2163,3528,2212],{"class":2169},[2163,3530,2215],{"class":2169},[2163,3532,2219],{"class":2218},[2163,3534,3217],{"class":2222},[2163,3536,2226],{"class":2208},[2163,3538,2229],{"class":2169},[2163,3540,3541],{"class":2190},"cart-discount",[2163,3543,2229],{"class":2169},[2163,3545,2288],{"class":2169},[2163,3547,3548],{"class":2177}," async",[2163,3550,3551],{"class":2169}," (",[2163,3553,3554],{"class":2789},"_nuxtApp",[2163,3556,2288],{"class":2169},[2163,3558,2205],{"class":2169},[2163,3560,3561],{"class":2789}," signal",[2163,3563,3564],{"class":2169}," })",[2163,3566,2793],{"class":2177},[2163,3568,2260],{"class":2169},[2163,3570,3571,3573,3576,3579,3581,3584,3587,3589,3591,3595,3597,3600],{"class":2165,"line":2240},[2163,3572,2266],{"class":2177},[2163,3574,3575],{"class":2169}," [",[2163,3577,3578],{"class":2208},"coupons",[2163,3580,2288],{"class":2169},[2163,3582,3583],{"class":2208}," offers",[2163,3585,3586],{"class":2169},"]",[2163,3588,2215],{"class":2169},[2163,3590,2219],{"class":2218},[2163,3592,3594],{"class":3593},"s52Pk"," Promise",[2163,3596,2045],{"class":2169},[2163,3598,3599],{"class":2222},"all",[2163,3601,3602],{"class":2173},"([\n",[2163,3604,3605,3608,3610,3612,3615,3617,3619,3621,3623,3625,3628],{"class":2165,"line":2246},[2163,3606,3607],{"class":2222},"    $fetch",[2163,3609,2226],{"class":2173},[2163,3611,2229],{"class":2169},[2163,3613,3614],{"class":2190},"/cart/coupons",[2163,3616,2229],{"class":2169},[2163,3618,2288],{"class":2169},[2163,3620,2205],{"class":2169},[2163,3622,3561],{"class":2208},[2163,3624,2910],{"class":2169},[2163,3626,3627],{"class":2173},")",[2163,3629,2310],{"class":2169},[2163,3631,3632,3634,3636,3638,3641,3643,3645,3647,3649,3651,3653],{"class":2165,"line":2263},[2163,3633,3607],{"class":2222},[2163,3635,2226],{"class":2173},[2163,3637,2229],{"class":2169},[2163,3639,3640],{"class":2190},"/cart/offers",[2163,3642,2229],{"class":2169},[2163,3644,2288],{"class":2169},[2163,3646,2205],{"class":2169},[2163,3648,3561],{"class":2208},[2163,3650,2910],{"class":2169},[2163,3652,3627],{"class":2173},[2163,3654,2310],{"class":2169},[2163,3656,3657],{"class":2165,"line":2293},[2163,3658,3659],{"class":2173},"  ])\n",[2163,3661,3662],{"class":2165,"line":2313},[2163,3663,2243],{"emptyLinePlaceholder":1196},[2163,3665,3666,3668,3670,3673,3675,3677],{"class":2165,"line":2323},[2163,3667,2887],{"class":2218},[2163,3669,2205],{"class":2169},[2163,3671,3672],{"class":2208}," coupons",[2163,3674,2288],{"class":2169},[2163,3676,3583],{"class":2208},[2163,3678,3679],{"class":2169}," }\n",[2163,3681,3682,3684],{"class":2165,"line":2330},[2163,3683,2212],{"class":2169},[2163,3685,2237],{"class":2208},[2163,3687,3688],{"class":2165,"line":2336},[2163,3689,3690],{"class":2326},"// discounts.value.coupons\n",[2163,3692,3693],{"class":2165,"line":2344},[2163,3694,3695],{"class":2326},"// discounts.value.offers\n",[2163,3697,3698,3700,3702],{"class":2165,"line":2350},[2163,3699,2353],{"class":2169},[2163,3701,2174],{"class":2173},[2163,3703,2196],{"class":2169},[2507,3705,3706,3716],{},[2030,3707,3708,3710,3711,3715],{},[2034,3709,515],{}," is for fetching and caching data, not triggering side effects like calling Pinia actions, as this can cause unintended behavior such as repeated executions with nullish values. If you need to trigger side effects, use the ",[2038,3712,3713],{"href":1561},[2034,3714,642],{}," utility to do so.",[2153,3717,3719],{"className":2155,"code":3718,"language":2158,"meta":2159,"style":2159},"\u003Cscript setup lang=\"ts\">\nconst offersStore = useOffersStore()\n\n// you can't do this\nawait useAsyncData(() => offersStore.getOffer(route.params.slug))\n\u003C/script>\n",[2034,3720,3721,3741,3756,3760,3765,3799],{"__ignoreMap":2159},[2163,3722,3723,3725,3727,3729,3731,3733,3735,3737,3739],{"class":2165,"line":2166},[2163,3724,2170],{"class":2169},[2163,3726,2174],{"class":2173},[2163,3728,2178],{"class":2177},[2163,3730,2181],{"class":2177},[2163,3732,2184],{"class":2169},[2163,3734,2187],{"class":2169},[2163,3736,2191],{"class":2190},[2163,3738,2187],{"class":2169},[2163,3740,2196],{"class":2169},[2163,3742,3743,3745,3748,3750,3753],{"class":2165,"line":2199},[2163,3744,2202],{"class":2177},[2163,3746,3747],{"class":2208}," offersStore ",[2163,3749,2184],{"class":2169},[2163,3751,3752],{"class":2222}," useOffersStore",[2163,3754,3755],{"class":2208},"()\n",[2163,3757,3758],{"class":2165,"line":2240},[2163,3759,2243],{"emptyLinePlaceholder":1196},[2163,3761,3762],{"class":2165,"line":2246},[2163,3763,3764],{"class":2326},"// you can't do this\n",[2163,3766,3767,3770,3772,3774,3776,3778,3781,3783,3786,3789,3791,3794,3796],{"class":2165,"line":2263},[2163,3768,3769],{"class":2218},"await",[2163,3771,3217],{"class":2222},[2163,3773,2226],{"class":2208},[2163,3775,3280],{"class":2169},[2163,3777,2793],{"class":2177},[2163,3779,3780],{"class":2208}," offersStore",[2163,3782,2045],{"class":2169},[2163,3784,3785],{"class":2222},"getOffer",[2163,3787,3788],{"class":2208},"(route",[2163,3790,2045],{"class":2169},[2163,3792,3793],{"class":2208},"params",[2163,3795,2045],{"class":2169},[2163,3797,3798],{"class":2208},"slug))\n",[2163,3800,3801,3803,3805],{"class":2165,"line":2293},[2163,3802,2353],{"class":2169},[2163,3804,2174],{"class":2173},[2163,3806,2196],{"class":2169},[2677,3808,3809],{"to":1467},[2030,3810,2681,3811,2045],{},[2034,3812,515],{},[2093,3814,3816],{"id":3815},"return-values","Return Values",[2030,3818,3819,2042,3821,3823],{},[2034,3820,527],{},[2034,3822,515],{}," have the same return values listed below.",[2050,3825,3826,3832,3846,3876,3881],{},[2053,3827,3828,3831],{},[2034,3829,3830],{},"data",": the result of the asynchronous function that is passed in.",[2053,3833,3834,3837,3838,3841,3842,3845],{},[2034,3835,3836],{},"refresh","/",[2034,3839,3840],{},"execute",": a function that can be used to refresh the data returned by the ",[2034,3843,3844],{},"handler"," function.",[2053,3847,3848,3851,3852,3854,3855,3858,3859,3862,3863,3854,3866,3868,3869,3854,3872,3875],{},[2034,3849,3850],{},"clear",": a function that can be used to set ",[2034,3853,3830],{}," to ",[2034,3856,3857],{},"undefined"," (or the value of ",[2034,3860,3861],{},"options.default()"," if provided), set ",[2034,3864,3865],{},"error",[2034,3867,3857],{},", set ",[2034,3870,3871],{},"status",[2034,3873,3874],{},"idle",", and mark any currently pending requests as cancelled.",[2053,3877,3878,3880],{},[2034,3879,3865],{},": an error object if the data fetching failed.",[2053,3882,3883,3885,3886,2036,3889,2036,3892,2036,3895,2702],{},[2034,3884,3871],{},": a string indicating the status of the data request (",[2034,3887,3888],{},"\"idle\"",[2034,3890,3891],{},"\"pending\"",[2034,3893,3894],{},"\"success\"",[2034,3896,3897],{},"\"error\"",[2507,3899,3900],{},[2030,3901,3902,2036,3904,2042,3906,3908,3909,3912,3913],{},[2034,3903,3830],{},[2034,3905,3865],{},[2034,3907,3871],{}," are Vue refs accessible with ",[2034,3910,3911],{},".value"," in ",[2034,3914,3915],{},"\u003Cscript setup>",[2030,3917,3918,3919,3921],{},"By default, Nuxt waits until a ",[2034,3920,3836],{}," is finished before it can be executed again.",[2507,3923,3924],{},[2030,3925,3926,3927,3930,3931,3935,3936,3938,3939,3941,3942,2045],{},"If you have not fetched data on the server (for example, with ",[2034,3928,3929],{},"server: false","), then the data ",[3932,3933,3934],"em",{},"will not"," be fetched until hydration completes. This means even if you await ",[2034,3937,527],{}," on client-side, ",[2034,3940,3830],{}," will remain null within ",[2034,3943,3915],{},[2093,3945,3947],{"id":3946},"options","Options",[2030,3949,3950,2042,3954,3958],{},[2038,3951,3952],{"href":1467},[2034,3953,515],{},[2038,3955,3956],{"href":1476},[2034,3957,527],{}," return the same object type and accept a common set of options as their last argument. They can help you control the composables behavior, such as navigation blocking, caching or execution.",[2491,3960,3962],{"id":3961},"lazy","Lazy",[2030,3964,3965,3966,3968,3969,3971],{},"By default, data fetching composables will wait for the resolution of their asynchronous function before navigating to a new page by using Vue's Suspense. This feature can be ignored on client-side navigation with the ",[2034,3967,3961],{}," option. In that case, you will have to manually handle loading state using the ",[2034,3970,3871],{}," value.",[2153,3973,3975],{"className":2155,"code":3974,"filename":2157,"language":2158,"meta":2538,"style":2159},"\u003Cscript setup lang=\"ts\">\nconst { status, data: posts } = useFetch('/api/posts', {\n  lazy: true,\n})\n\u003C/script>\n\n\u003Ctemplate>\n  \u003C!-- you will need to handle a loading state -->\n  \u003Cdiv v-if=\"status === 'pending'\">\n    Loading ...\n  \u003C/div>\n  \u003Cdiv v-else>\n    \u003Cdiv v-for=\"post in posts\">\n      \u003C!-- do something -->\n    \u003C/div>\n  \u003C/div>\n\u003C/template>\n",[2034,3976,3977,3997,4034,4047,4053,4061,4065,4073,4078,4097,4102,4110,4120,4140,4145,4153,4161],{"__ignoreMap":2159},[2163,3978,3979,3981,3983,3985,3987,3989,3991,3993,3995],{"class":2165,"line":2166},[2163,3980,2170],{"class":2169},[2163,3982,2174],{"class":2173},[2163,3984,2178],{"class":2177},[2163,3986,2181],{"class":2177},[2163,3988,2184],{"class":2169},[2163,3990,2187],{"class":2169},[2163,3992,2191],{"class":2190},[2163,3994,2187],{"class":2169},[2163,3996,2196],{"class":2169},[2163,3998,3999,4001,4003,4006,4008,4010,4012,4015,4017,4019,4021,4023,4025,4028,4030,4032],{"class":2165,"line":2199},[2163,4000,2202],{"class":2177},[2163,4002,2205],{"class":2169},[2163,4004,4005],{"class":2208}," status",[2163,4007,2288],{"class":2169},[2163,4009,3028],{"class":2173},[2163,4011,2299],{"class":2169},[2163,4013,4014],{"class":2208}," posts ",[2163,4016,2212],{"class":2169},[2163,4018,2215],{"class":2169},[2163,4020,2223],{"class":2222},[2163,4022,2226],{"class":2208},[2163,4024,2229],{"class":2169},[2163,4026,4027],{"class":2190},"/api/posts",[2163,4029,2229],{"class":2169},[2163,4031,2288],{"class":2169},[2163,4033,2260],{"class":2169},[2163,4035,4036,4039,4041,4045],{"class":2165,"line":2240},[2163,4037,4038],{"class":2173},"  lazy",[2163,4040,2299],{"class":2169},[2163,4042,4044],{"class":4043},"sbKd-"," true",[2163,4046,2310],{"class":2169},[2163,4048,4049,4051],{"class":2165,"line":2246},[2163,4050,2212],{"class":2169},[2163,4052,2237],{"class":2208},[2163,4054,4055,4057,4059],{"class":2165,"line":2263},[2163,4056,2353],{"class":2169},[2163,4058,2174],{"class":2173},[2163,4060,2196],{"class":2169},[2163,4062,4063],{"class":2165,"line":2293},[2163,4064,2243],{"emptyLinePlaceholder":1196},[2163,4066,4067,4069,4071],{"class":2165,"line":2313},[2163,4068,2170],{"class":2169},[2163,4070,2370],{"class":2173},[2163,4072,2196],{"class":2169},[2163,4074,4075],{"class":2165,"line":2323},[2163,4076,4077],{"class":2326},"  \u003C!-- you will need to handle a loading state -->\n",[2163,4079,4080,4082,4084,4086,4088,4090,4093,4095],{"class":2165,"line":2330},[2163,4081,2378],{"class":2169},[2163,4083,2381],{"class":2173},[2163,4085,2384],{"class":2177},[2163,4087,2184],{"class":2169},[2163,4089,2187],{"class":2169},[2163,4091,4092],{"class":2190},"status === 'pending'",[2163,4094,2187],{"class":2169},[2163,4096,2196],{"class":2169},[2163,4098,4099],{"class":2165,"line":2336},[2163,4100,4101],{"class":2208},"    Loading ...\n",[2163,4103,4104,4106,4108],{"class":2165,"line":2344},[2163,4105,2407],{"class":2169},[2163,4107,2381],{"class":2173},[2163,4109,2196],{"class":2169},[2163,4111,4112,4114,4116,4118],{"class":2165,"line":2350},[2163,4113,2378],{"class":2169},[2163,4115,2381],{"class":2173},[2163,4117,2421],{"class":2177},[2163,4119,2196],{"class":2169},[2163,4121,4122,4124,4126,4129,4131,4133,4136,4138],{"class":2165,"line":2360},[2163,4123,2429],{"class":2169},[2163,4125,2381],{"class":2173},[2163,4127,4128],{"class":2177}," v-for",[2163,4130,2184],{"class":2169},[2163,4132,2187],{"class":2169},[2163,4134,4135],{"class":2190},"post in posts",[2163,4137,2187],{"class":2169},[2163,4139,2196],{"class":2169},[2163,4141,4142],{"class":2165,"line":2365},[2163,4143,4144],{"class":2326},"      \u003C!-- do something -->\n",[2163,4146,4147,4149,4151],{"class":2165,"line":2375},[2163,4148,2458],{"class":2169},[2163,4150,2381],{"class":2173},[2163,4152,2196],{"class":2169},[2163,4154,4155,4157,4159],{"class":2165,"line":2398},[2163,4156,2407],{"class":2169},[2163,4158,2381],{"class":2173},[2163,4160,2196],{"class":2169},[2163,4162,4163,4165,4167],{"class":2165,"line":2404},[2163,4164,2353],{"class":2169},[2163,4166,2370],{"class":2173},[2163,4168,2196],{"class":2169},[2030,4170,4171,4172,2042,4176,4178],{},"You can alternatively use ",[2038,4173,4174],{"href":1491},[2034,4175,547],{},[2034,4177,543],{}," as convenient methods to perform the same.",[2153,4180,4182],{"className":2155,"code":4181,"language":2158,"meta":2538,"style":2159},"\u003Cscript setup lang=\"ts\">\nconst { status, data: posts } = useLazyFetch('/api/posts')\n\u003C/script>\n",[2034,4183,4184,4204,4237],{"__ignoreMap":2159},[2163,4185,4186,4188,4190,4192,4194,4196,4198,4200,4202],{"class":2165,"line":2166},[2163,4187,2170],{"class":2169},[2163,4189,2174],{"class":2173},[2163,4191,2178],{"class":2177},[2163,4193,2181],{"class":2177},[2163,4195,2184],{"class":2169},[2163,4197,2187],{"class":2169},[2163,4199,2191],{"class":2190},[2163,4201,2187],{"class":2169},[2163,4203,2196],{"class":2169},[2163,4205,4206,4208,4210,4212,4214,4216,4218,4220,4222,4224,4227,4229,4231,4233,4235],{"class":2165,"line":2199},[2163,4207,2202],{"class":2177},[2163,4209,2205],{"class":2169},[2163,4211,4005],{"class":2208},[2163,4213,2288],{"class":2169},[2163,4215,3028],{"class":2173},[2163,4217,2299],{"class":2169},[2163,4219,4014],{"class":2208},[2163,4221,2212],{"class":2169},[2163,4223,2215],{"class":2169},[2163,4225,4226],{"class":2222}," useLazyFetch",[2163,4228,2226],{"class":2208},[2163,4230,2229],{"class":2169},[2163,4232,4027],{"class":2190},[2163,4234,2229],{"class":2169},[2163,4236,2237],{"class":2208},[2163,4238,4239,4241,4243],{"class":2165,"line":2240},[2163,4240,2353],{"class":2169},[2163,4242,2174],{"class":2173},[2163,4244,2196],{"class":2169},[2677,4246,4247],{"to":1491},[2030,4248,2681,4249,2045],{},[2034,4250,547],{},[2677,4252,4253],{"to":1488},[2030,4254,2681,4255,2045],{},[2034,4256,543],{},[3111,4258],{"title":4259,"video-id":4260,"platform":4261},"Watch a video from Vue School on blocking vs. non-blocking (lazy) requests","1022000555","vimeo",[2491,4263,4265],{"id":4264},"client-only-fetching","Client-only fetching",[2030,4267,4268,4269,4271,4272,4275],{},"By default, data fetching composables will perform their asynchronous function on both client and server environments. Set the ",[2034,4270,185],{}," option to ",[2034,4273,4274],{},"false"," to only perform the call on the client-side. On initial load, the data will not be fetched before hydration is complete so you have to handle a pending state, though on subsequent client-side navigation the data will be awaited before loading the page.",[2030,4277,4278,4279,4281],{},"Combined with the ",[2034,4280,3961],{}," option, this can be useful for data that is not needed on the first render (for example, non-SEO sensitive data).",[2153,4283,4285],{"className":2765,"code":4284,"language":2191,"meta":2538,"style":2159},"/* This call is performed before hydration */\nconst articles = await useFetch('/api/article')\n\n/* This call will only be performed on the client */\nconst { status, data: comments } = useFetch('/api/comments', {\n  lazy: true,\n  server: false,\n})\n",[2034,4286,4287,4292,4316,4320,4325,4361,4371,4383],{"__ignoreMap":2159},[2163,4288,4289],{"class":2165,"line":2166},[2163,4290,4291],{"class":2326},"/* This call is performed before hydration */\n",[2163,4293,4294,4296,4299,4301,4303,4305,4307,4309,4312,4314],{"class":2165,"line":2199},[2163,4295,2202],{"class":2177},[2163,4297,4298],{"class":2208}," articles ",[2163,4300,2184],{"class":2169},[2163,4302,2219],{"class":2218},[2163,4304,2223],{"class":2222},[2163,4306,2226],{"class":2208},[2163,4308,2229],{"class":2169},[2163,4310,4311],{"class":2190},"/api/article",[2163,4313,2229],{"class":2169},[2163,4315,2237],{"class":2208},[2163,4317,4318],{"class":2165,"line":2240},[2163,4319,2243],{"emptyLinePlaceholder":1196},[2163,4321,4322],{"class":2165,"line":2246},[2163,4323,4324],{"class":2326},"/* This call will only be performed on the client */\n",[2163,4326,4327,4329,4331,4333,4335,4337,4339,4342,4344,4346,4348,4350,4352,4355,4357,4359],{"class":2165,"line":2263},[2163,4328,2202],{"class":2177},[2163,4330,2205],{"class":2169},[2163,4332,4005],{"class":2208},[2163,4334,2288],{"class":2169},[2163,4336,3028],{"class":2173},[2163,4338,2299],{"class":2169},[2163,4340,4341],{"class":2208}," comments ",[2163,4343,2212],{"class":2169},[2163,4345,2215],{"class":2169},[2163,4347,2223],{"class":2222},[2163,4349,2226],{"class":2208},[2163,4351,2229],{"class":2169},[2163,4353,4354],{"class":2190},"/api/comments",[2163,4356,2229],{"class":2169},[2163,4358,2288],{"class":2169},[2163,4360,2260],{"class":2169},[2163,4362,4363,4365,4367,4369],{"class":2165,"line":2293},[2163,4364,4038],{"class":2173},[2163,4366,2299],{"class":2169},[2163,4368,4044],{"class":4043},[2163,4370,2310],{"class":2169},[2163,4372,4373,4376,4378,4381],{"class":2165,"line":2313},[2163,4374,4375],{"class":2173},"  server",[2163,4377,2299],{"class":2169},[2163,4379,4380],{"class":4043}," false",[2163,4382,2310],{"class":2169},[2163,4384,4385,4387],{"class":2165,"line":2323},[2163,4386,2212],{"class":2169},[2163,4388,2237],{"class":2208},[2030,4390,2112,4391,4393,4394,2045],{},[2034,4392,527],{}," composable is meant to be invoked in setup method or called directly at the top level of a function in lifecycle hooks, otherwise you should use ",[2038,4395,4397,4399],{"href":4396},"/docs/4.x/getting-started/data-fetching#fetch",[2034,4398,630],{}," method",[2491,4401,4403],{"id":4402},"minimize-payload-size","Minimize payload size",[2030,4405,2112,4406,4409],{},[2034,4407,4408],{},"pick"," option helps you to minimize the payload size stored in your HTML document by only selecting the fields that you want returned from the composables.",[2153,4411,4413],{"className":2155,"code":4412,"language":2158,"meta":2159,"style":2159},"\u003Cscript setup lang=\"ts\">\n/* only pick the fields used in your template */\nconst { data: mountain } = await useFetch('/api/mountains/everest', {\n  pick: ['title', 'description'],\n})\n\u003C/script>\n\n\u003Ctemplate>\n  \u003Ch1>{{ mountain.title }}\u003C/h1>\n  \u003Cp>{{ mountain.description }}\u003C/p>\n\u003C/template>\n",[2034,4414,4415,4435,4440,4474,4503,4509,4517,4521,4529,4547,4564],{"__ignoreMap":2159},[2163,4416,4417,4419,4421,4423,4425,4427,4429,4431,4433],{"class":2165,"line":2166},[2163,4418,2170],{"class":2169},[2163,4420,2174],{"class":2173},[2163,4422,2178],{"class":2177},[2163,4424,2181],{"class":2177},[2163,4426,2184],{"class":2169},[2163,4428,2187],{"class":2169},[2163,4430,2191],{"class":2190},[2163,4432,2187],{"class":2169},[2163,4434,2196],{"class":2169},[2163,4436,4437],{"class":2165,"line":2199},[2163,4438,4439],{"class":2326},"/* only pick the fields used in your template */\n",[2163,4441,4442,4444,4446,4448,4450,4453,4455,4457,4459,4461,4463,4465,4468,4470,4472],{"class":2165,"line":2240},[2163,4443,2202],{"class":2177},[2163,4445,2205],{"class":2169},[2163,4447,3028],{"class":2173},[2163,4449,2299],{"class":2169},[2163,4451,4452],{"class":2208}," mountain ",[2163,4454,2212],{"class":2169},[2163,4456,2215],{"class":2169},[2163,4458,2219],{"class":2218},[2163,4460,2223],{"class":2222},[2163,4462,2226],{"class":2208},[2163,4464,2229],{"class":2169},[2163,4466,4467],{"class":2190},"/api/mountains/everest",[2163,4469,2229],{"class":2169},[2163,4471,2288],{"class":2169},[2163,4473,2260],{"class":2169},[2163,4475,4476,4479,4481,4483,4485,4488,4490,4492,4494,4497,4499,4501],{"class":2165,"line":2246},[2163,4477,4478],{"class":2173},"  pick",[2163,4480,2299],{"class":2169},[2163,4482,3575],{"class":2208},[2163,4484,2229],{"class":2169},[2163,4486,4487],{"class":2190},"title",[2163,4489,2229],{"class":2169},[2163,4491,2288],{"class":2169},[2163,4493,2302],{"class":2169},[2163,4495,4496],{"class":2190},"description",[2163,4498,2229],{"class":2169},[2163,4500,3586],{"class":2208},[2163,4502,2310],{"class":2169},[2163,4504,4505,4507],{"class":2165,"line":2263},[2163,4506,2212],{"class":2169},[2163,4508,2237],{"class":2208},[2163,4510,4511,4513,4515],{"class":2165,"line":2293},[2163,4512,2353],{"class":2169},[2163,4514,2174],{"class":2173},[2163,4516,2196],{"class":2169},[2163,4518,4519],{"class":2165,"line":2313},[2163,4520,2243],{"emptyLinePlaceholder":1196},[2163,4522,4523,4525,4527],{"class":2165,"line":2323},[2163,4524,2170],{"class":2169},[2163,4526,2370],{"class":2173},[2163,4528,2196],{"class":2169},[2163,4530,4531,4533,4536,4538,4541,4543,4545],{"class":2165,"line":2330},[2163,4532,2378],{"class":2169},[2163,4534,4535],{"class":2173},"h1",[2163,4537,3081],{"class":2169},[2163,4539,4540],{"class":2208},"{{ mountain.title }}",[2163,4542,2353],{"class":2169},[2163,4544,4535],{"class":2173},[2163,4546,2196],{"class":2169},[2163,4548,4549,4551,4553,4555,4558,4560,4562],{"class":2165,"line":2336},[2163,4550,2378],{"class":2169},[2163,4552,2030],{"class":2173},[2163,4554,3081],{"class":2169},[2163,4556,4557],{"class":2208},"{{ mountain.description }}",[2163,4559,2353],{"class":2169},[2163,4561,2030],{"class":2173},[2163,4563,2196],{"class":2169},[2163,4565,4566,4568,4570],{"class":2165,"line":2344},[2163,4567,2353],{"class":2169},[2163,4569,2370],{"class":2173},[2163,4571,2196],{"class":2169},[2030,4573,4574,4575,4578],{},"If you need more control or map over several objects, you can use the ",[2034,4576,4577],{},"transform"," function to alter the result of the query.",[2153,4580,4582],{"className":2765,"code":4581,"language":2191,"meta":2159,"style":2159},"const { data: mountains } = await useFetch('/api/mountains', {\n  transform: (mountains) => {\n    return mountains.map(mountain => ({ title: mountain.title, description: mountain.description }))\n  },\n})\n",[2034,4583,4584,4618,4636,4690,4695],{"__ignoreMap":2159},[2163,4585,4586,4588,4590,4592,4594,4597,4599,4601,4603,4605,4607,4609,4612,4614,4616],{"class":2165,"line":2166},[2163,4587,2202],{"class":2177},[2163,4589,2205],{"class":2169},[2163,4591,3028],{"class":2173},[2163,4593,2299],{"class":2169},[2163,4595,4596],{"class":2208}," mountains ",[2163,4598,2212],{"class":2169},[2163,4600,2215],{"class":2169},[2163,4602,2219],{"class":2218},[2163,4604,2223],{"class":2222},[2163,4606,2226],{"class":2208},[2163,4608,2229],{"class":2169},[2163,4610,4611],{"class":2190},"/api/mountains",[2163,4613,2229],{"class":2169},[2163,4615,2288],{"class":2169},[2163,4617,2260],{"class":2169},[2163,4619,4620,4623,4625,4627,4630,4632,4634],{"class":2165,"line":2199},[2163,4621,4622],{"class":2222},"  transform",[2163,4624,2299],{"class":2169},[2163,4626,3551],{"class":2169},[2163,4628,4629],{"class":2789},"mountains",[2163,4631,3627],{"class":2169},[2163,4633,2793],{"class":2177},[2163,4635,2260],{"class":2169},[2163,4637,4638,4641,4644,4646,4649,4651,4654,4656,4658,4661,4664,4666,4669,4671,4673,4675,4678,4680,4682,4684,4686,4688],{"class":2165,"line":2240},[2163,4639,4640],{"class":2218},"    return",[2163,4642,4643],{"class":2208}," mountains",[2163,4645,2045],{"class":2169},[2163,4647,4648],{"class":2222},"map",[2163,4650,2226],{"class":2173},[2163,4652,4653],{"class":2789},"mountain",[2163,4655,2793],{"class":2177},[2163,4657,3551],{"class":2173},[2163,4659,4660],{"class":2169},"{",[2163,4662,4663],{"class":2173}," title",[2163,4665,2299],{"class":2169},[2163,4667,4668],{"class":2208}," mountain",[2163,4670,2045],{"class":2169},[2163,4672,4487],{"class":2208},[2163,4674,2288],{"class":2169},[2163,4676,4677],{"class":2173}," description",[2163,4679,2299],{"class":2169},[2163,4681,4668],{"class":2208},[2163,4683,2045],{"class":2169},[2163,4685,4496],{"class":2208},[2163,4687,2910],{"class":2169},[2163,4689,3246],{"class":2173},[2163,4691,4692],{"class":2165,"line":2246},[2163,4693,4694],{"class":2169},"  },\n",[2163,4696,4697,4699],{"class":2165,"line":2263},[2163,4698,2212],{"class":2169},[2163,4700,2237],{"class":2208},[2507,4702,4703],{},[2030,4704,2086,4705,2042,4707,4709],{},[2034,4706,4408],{},[2034,4708,4577],{}," don't prevent the unwanted data from being fetched initially. But they will prevent unwanted data from being added to the payload transferred from server to client.",[3111,4711],{"title":4712,"video-id":4713,"platform":4261},"Watch a video from Vue School on minimizing payload size","1026410430",[2491,4715,4717],{"id":4716},"caching-and-refetching","Caching and refetching",[4719,4720,4722],"h4",{"id":4721},"keys","Keys",[2030,4724,4725,2042,4729,4733],{},[2038,4726,4727],{"href":1476},[2034,4728,527],{},[2038,4730,4731],{"href":1467},[2034,4732,515],{}," use keys to prevent refetching the same data.",[2050,4735,4736,4750],{},[2053,4737,4738,4742,4743,4746,4747,4749],{},[2038,4739,4740],{"href":1476},[2034,4741,527],{}," uses the provided URL as a key. Alternatively, a ",[2034,4744,4745],{},"key"," value can be provided in the ",[2034,4748,3946],{}," object passed as a last argument.",[2053,4751,4752,4756,4757,4759],{},[2038,4753,4754],{"href":1467},[2034,4755,515],{}," uses its first argument as a key if it is a string. If the first argument is the handler function that performs the query, then a key that is unique to the file name and line number of the instance of ",[2034,4758,515],{}," will be generated for you.",[2136,4761,4762],{},[2030,4763,4764,4765],{},"To get the cached data by key, you can use ",[2038,4766,4767],{"href":1500},[2034,4768,559],{},[3111,4770],{"title":4771,"video-id":4772,"platform":4261},"Watch a video from Vue School on caching data with the key option","1026410044",[4719,4774,4776],{"id":4775},"shared-state-and-option-consistency","Shared State and Option Consistency",[2030,4778,4779,4780,4782,4783,4785,4786,2036,4788,2042,4790,4792],{},"When multiple components use the same key with ",[2034,4781,515],{}," or ",[2034,4784,527],{},", they will share the same ",[2034,4787,3830],{},[2034,4789,3865],{},[2034,4791,3871],{}," refs. This ensures consistency across components but requires some options to be consistent.",[2030,4794,4795,4796,4799],{},"The following options ",[2149,4797,4798],{},"must be consistent"," across all calls with the same key:",[2050,4801,4802,4806,4812,4816,4821,4826],{},[2053,4803,4804,2108],{},[2034,4805,3844],{},[2053,4807,4808,4811],{},[2034,4809,4810],{},"deep"," option",[2053,4813,4814,2108],{},[2034,4815,4577],{},[2053,4817,4818,4820],{},[2034,4819,4408],{}," array",[2053,4822,4823,2108],{},[2034,4824,4825],{},"getCachedData",[2053,4827,4828,4831],{},[2034,4829,4830],{},"default"," value",[2153,4833,4835],{"className":2765,"code":4834,"language":2191,"meta":2159,"style":2159},"// ❌ This will trigger a development warning\nconst { data: users1 } = useAsyncData('users', (_nuxtApp, { signal }) => $fetch('/api/users', { signal }), { deep: false })\nconst { data: users2 } = useAsyncData('users', (_nuxtApp, { signal }) => $fetch('/api/users', { signal }), { deep: true })\n",[2034,4836,4837,4842,4922],{"__ignoreMap":2159},[2163,4838,4839],{"class":2165,"line":2166},[2163,4840,4841],{"class":2326},"// ❌ This will trigger a development warning\n",[2163,4843,4844,4846,4848,4850,4852,4855,4857,4859,4861,4863,4865,4867,4869,4871,4873,4875,4877,4879,4881,4883,4885,4887,4889,4891,4894,4896,4898,4900,4903,4905,4907,4909,4911,4914,4916,4918,4920],{"class":2165,"line":2199},[2163,4845,2202],{"class":2177},[2163,4847,2205],{"class":2169},[2163,4849,3028],{"class":2173},[2163,4851,2299],{"class":2169},[2163,4853,4854],{"class":2208}," users1 ",[2163,4856,2212],{"class":2169},[2163,4858,2215],{"class":2169},[2163,4860,3217],{"class":2222},[2163,4862,2226],{"class":2208},[2163,4864,2229],{"class":2169},[2163,4866,3224],{"class":2190},[2163,4868,2229],{"class":2169},[2163,4870,2288],{"class":2169},[2163,4872,3551],{"class":2169},[2163,4874,3554],{"class":2789},[2163,4876,2288],{"class":2169},[2163,4878,2205],{"class":2169},[2163,4880,3561],{"class":2789},[2163,4882,3564],{"class":2169},[2163,4884,2793],{"class":2177},[2163,4886,2276],{"class":2222},[2163,4888,2226],{"class":2208},[2163,4890,2229],{"class":2169},[2163,4892,4893],{"class":2190},"/api/users",[2163,4895,2229],{"class":2169},[2163,4897,2288],{"class":2169},[2163,4899,2205],{"class":2169},[2163,4901,4902],{"class":2208}," signal ",[2163,4904,2212],{"class":2169},[2163,4906,3627],{"class":2208},[2163,4908,2288],{"class":2169},[2163,4910,2205],{"class":2169},[2163,4912,4913],{"class":2173}," deep",[2163,4915,2299],{"class":2169},[2163,4917,4380],{"class":4043},[2163,4919,2910],{"class":2169},[2163,4921,2237],{"class":2208},[2163,4923,4924,4926,4928,4930,4932,4935,4937,4939,4941,4943,4945,4947,4949,4951,4953,4955,4957,4959,4961,4963,4965,4967,4969,4971,4973,4975,4977,4979,4981,4983,4985,4987,4989,4991,4993,4995,4997],{"class":2165,"line":2240},[2163,4925,2202],{"class":2177},[2163,4927,2205],{"class":2169},[2163,4929,3028],{"class":2173},[2163,4931,2299],{"class":2169},[2163,4933,4934],{"class":2208}," users2 ",[2163,4936,2212],{"class":2169},[2163,4938,2215],{"class":2169},[2163,4940,3217],{"class":2222},[2163,4942,2226],{"class":2208},[2163,4944,2229],{"class":2169},[2163,4946,3224],{"class":2190},[2163,4948,2229],{"class":2169},[2163,4950,2288],{"class":2169},[2163,4952,3551],{"class":2169},[2163,4954,3554],{"class":2789},[2163,4956,2288],{"class":2169},[2163,4958,2205],{"class":2169},[2163,4960,3561],{"class":2789},[2163,4962,3564],{"class":2169},[2163,4964,2793],{"class":2177},[2163,4966,2276],{"class":2222},[2163,4968,2226],{"class":2208},[2163,4970,2229],{"class":2169},[2163,4972,4893],{"class":2190},[2163,4974,2229],{"class":2169},[2163,4976,2288],{"class":2169},[2163,4978,2205],{"class":2169},[2163,4980,4902],{"class":2208},[2163,4982,2212],{"class":2169},[2163,4984,3627],{"class":2208},[2163,4986,2288],{"class":2169},[2163,4988,2205],{"class":2169},[2163,4990,4913],{"class":2173},[2163,4992,2299],{"class":2169},[2163,4994,4044],{"class":4043},[2163,4996,2910],{"class":2169},[2163,4998,2237],{"class":2208},[2030,5000,4795,5001,5004],{},[2149,5002,5003],{},"can safely differ"," without triggering warnings:",[2050,5006,5007,5011,5015,5020,5025],{},[2053,5008,5009],{},[2034,5010,185],{},[2053,5012,5013],{},[2034,5014,3961],{},[2053,5016,5017],{},[2034,5018,5019],{},"immediate",[2053,5021,5022],{},[2034,5023,5024],{},"dedupe",[2053,5026,5027],{},[2034,5028,5029],{},"watch",[2153,5031,5033],{"className":2765,"code":5032,"language":2191,"meta":2159,"style":2159},"// ✅ This is allowed\nconst { data: users1 } = useAsyncData('users', (_nuxtApp, { signal }) => $fetch('/api/users', { signal }), { immediate: true })\nconst { data: users2 } = useAsyncData('users', (_nuxtApp, { signal }) => $fetch('/api/users', { signal }), { immediate: false })\n",[2034,5034,5035,5040,5117],{"__ignoreMap":2159},[2163,5036,5037],{"class":2165,"line":2166},[2163,5038,5039],{"class":2326},"// ✅ This is allowed\n",[2163,5041,5042,5044,5046,5048,5050,5052,5054,5056,5058,5060,5062,5064,5066,5068,5070,5072,5074,5076,5078,5080,5082,5084,5086,5088,5090,5092,5094,5096,5098,5100,5102,5104,5106,5109,5111,5113,5115],{"class":2165,"line":2199},[2163,5043,2202],{"class":2177},[2163,5045,2205],{"class":2169},[2163,5047,3028],{"class":2173},[2163,5049,2299],{"class":2169},[2163,5051,4854],{"class":2208},[2163,5053,2212],{"class":2169},[2163,5055,2215],{"class":2169},[2163,5057,3217],{"class":2222},[2163,5059,2226],{"class":2208},[2163,5061,2229],{"class":2169},[2163,5063,3224],{"class":2190},[2163,5065,2229],{"class":2169},[2163,5067,2288],{"class":2169},[2163,5069,3551],{"class":2169},[2163,5071,3554],{"class":2789},[2163,5073,2288],{"class":2169},[2163,5075,2205],{"class":2169},[2163,5077,3561],{"class":2789},[2163,5079,3564],{"class":2169},[2163,5081,2793],{"class":2177},[2163,5083,2276],{"class":2222},[2163,5085,2226],{"class":2208},[2163,5087,2229],{"class":2169},[2163,5089,4893],{"class":2190},[2163,5091,2229],{"class":2169},[2163,5093,2288],{"class":2169},[2163,5095,2205],{"class":2169},[2163,5097,4902],{"class":2208},[2163,5099,2212],{"class":2169},[2163,5101,3627],{"class":2208},[2163,5103,2288],{"class":2169},[2163,5105,2205],{"class":2169},[2163,5107,5108],{"class":2173}," immediate",[2163,5110,2299],{"class":2169},[2163,5112,4044],{"class":4043},[2163,5114,2910],{"class":2169},[2163,5116,2237],{"class":2208},[2163,5118,5119,5121,5123,5125,5127,5129,5131,5133,5135,5137,5139,5141,5143,5145,5147,5149,5151,5153,5155,5157,5159,5161,5163,5165,5167,5169,5171,5173,5175,5177,5179,5181,5183,5185,5187,5189,5191],{"class":2165,"line":2240},[2163,5120,2202],{"class":2177},[2163,5122,2205],{"class":2169},[2163,5124,3028],{"class":2173},[2163,5126,2299],{"class":2169},[2163,5128,4934],{"class":2208},[2163,5130,2212],{"class":2169},[2163,5132,2215],{"class":2169},[2163,5134,3217],{"class":2222},[2163,5136,2226],{"class":2208},[2163,5138,2229],{"class":2169},[2163,5140,3224],{"class":2190},[2163,5142,2229],{"class":2169},[2163,5144,2288],{"class":2169},[2163,5146,3551],{"class":2169},[2163,5148,3554],{"class":2789},[2163,5150,2288],{"class":2169},[2163,5152,2205],{"class":2169},[2163,5154,3561],{"class":2789},[2163,5156,3564],{"class":2169},[2163,5158,2793],{"class":2177},[2163,5160,2276],{"class":2222},[2163,5162,2226],{"class":2208},[2163,5164,2229],{"class":2169},[2163,5166,4893],{"class":2190},[2163,5168,2229],{"class":2169},[2163,5170,2288],{"class":2169},[2163,5172,2205],{"class":2169},[2163,5174,4902],{"class":2208},[2163,5176,2212],{"class":2169},[2163,5178,3627],{"class":2208},[2163,5180,2288],{"class":2169},[2163,5182,2205],{"class":2169},[2163,5184,5108],{"class":2173},[2163,5186,2299],{"class":2169},[2163,5188,4380],{"class":4043},[2163,5190,2910],{"class":2169},[2163,5192,2237],{"class":2208},[2030,5194,5195],{},"If you need independent instances, use different keys:",[2153,5197,5199],{"className":2765,"code":5198,"language":2191,"meta":2159,"style":2159},"// These are completely independent instances\nconst { data: users1 } = useAsyncData('users-1', (_nuxtApp, { signal }) => $fetch('/api/users', { signal }))\nconst { data: users2 } = useAsyncData('users-2', (_nuxtApp, { signal }) => $fetch('/api/users', { signal }))\n",[2034,5200,5201,5206,5269],{"__ignoreMap":2159},[2163,5202,5203],{"class":2165,"line":2166},[2163,5204,5205],{"class":2326},"// These are completely independent instances\n",[2163,5207,5208,5210,5212,5214,5216,5218,5220,5222,5224,5226,5228,5231,5233,5235,5237,5239,5241,5243,5245,5247,5249,5251,5253,5255,5257,5259,5261,5263,5265,5267],{"class":2165,"line":2199},[2163,5209,2202],{"class":2177},[2163,5211,2205],{"class":2169},[2163,5213,3028],{"class":2173},[2163,5215,2299],{"class":2169},[2163,5217,4854],{"class":2208},[2163,5219,2212],{"class":2169},[2163,5221,2215],{"class":2169},[2163,5223,3217],{"class":2222},[2163,5225,2226],{"class":2208},[2163,5227,2229],{"class":2169},[2163,5229,5230],{"class":2190},"users-1",[2163,5232,2229],{"class":2169},[2163,5234,2288],{"class":2169},[2163,5236,3551],{"class":2169},[2163,5238,3554],{"class":2789},[2163,5240,2288],{"class":2169},[2163,5242,2205],{"class":2169},[2163,5244,3561],{"class":2789},[2163,5246,3564],{"class":2169},[2163,5248,2793],{"class":2177},[2163,5250,2276],{"class":2222},[2163,5252,2226],{"class":2208},[2163,5254,2229],{"class":2169},[2163,5256,4893],{"class":2190},[2163,5258,2229],{"class":2169},[2163,5260,2288],{"class":2169},[2163,5262,2205],{"class":2169},[2163,5264,4902],{"class":2208},[2163,5266,2212],{"class":2169},[2163,5268,3246],{"class":2208},[2163,5270,5271,5273,5275,5277,5279,5281,5283,5285,5287,5289,5291,5294,5296,5298,5300,5302,5304,5306,5308,5310,5312,5314,5316,5318,5320,5322,5324,5326,5328,5330],{"class":2165,"line":2240},[2163,5272,2202],{"class":2177},[2163,5274,2205],{"class":2169},[2163,5276,3028],{"class":2173},[2163,5278,2299],{"class":2169},[2163,5280,4934],{"class":2208},[2163,5282,2212],{"class":2169},[2163,5284,2215],{"class":2169},[2163,5286,3217],{"class":2222},[2163,5288,2226],{"class":2208},[2163,5290,2229],{"class":2169},[2163,5292,5293],{"class":2190},"users-2",[2163,5295,2229],{"class":2169},[2163,5297,2288],{"class":2169},[2163,5299,3551],{"class":2169},[2163,5301,3554],{"class":2789},[2163,5303,2288],{"class":2169},[2163,5305,2205],{"class":2169},[2163,5307,3561],{"class":2789},[2163,5309,3564],{"class":2169},[2163,5311,2793],{"class":2177},[2163,5313,2276],{"class":2222},[2163,5315,2226],{"class":2208},[2163,5317,2229],{"class":2169},[2163,5319,4893],{"class":2190},[2163,5321,2229],{"class":2169},[2163,5323,2288],{"class":2169},[2163,5325,2205],{"class":2169},[2163,5327,4902],{"class":2208},[2163,5329,2212],{"class":2169},[2163,5331,3246],{"class":2208},[4719,5333,5335],{"id":5334},"reactive-keys","Reactive Keys",[2030,5337,5338],{},"You can use computed refs, plain refs or getter functions as keys, allowing for dynamic data fetching that automatically updates when dependencies change:",[2153,5340,5342],{"className":2765,"code":5341,"language":2191,"meta":2159,"style":2159},"// Using a computed property as a key\nconst userId = ref('123')\nconst { data: user } = useAsyncData(\n  computed(() => `user-${userId.value}`),\n  () => fetchUser(userId.value),\n)\n\n// When userId changes, the data will be automatically refetched\n// and the old data will be cleaned up if no other components use it\nuserId.value = '456'\n",[2034,5343,5344,5349,5372,5394,5427,5447,5451,5455,5460,5465],{"__ignoreMap":2159},[2163,5345,5346],{"class":2165,"line":2166},[2163,5347,5348],{"class":2326},"// Using a computed property as a key\n",[2163,5350,5351,5353,5356,5358,5361,5363,5365,5368,5370],{"class":2165,"line":2199},[2163,5352,2202],{"class":2177},[2163,5354,5355],{"class":2208}," userId ",[2163,5357,2184],{"class":2169},[2163,5359,5360],{"class":2222}," ref",[2163,5362,2226],{"class":2208},[2163,5364,2229],{"class":2169},[2163,5366,5367],{"class":2190},"123",[2163,5369,2229],{"class":2169},[2163,5371,2237],{"class":2208},[2163,5373,5374,5376,5378,5380,5382,5385,5387,5389,5391],{"class":2165,"line":2240},[2163,5375,2202],{"class":2177},[2163,5377,2205],{"class":2169},[2163,5379,3028],{"class":2173},[2163,5381,2299],{"class":2169},[2163,5383,5384],{"class":2208}," user ",[2163,5386,2212],{"class":2169},[2163,5388,2215],{"class":2169},[2163,5390,3217],{"class":2222},[2163,5392,5393],{"class":2208},"(\n",[2163,5395,5396,5399,5401,5403,5405,5408,5411,5413,5416,5418,5421,5423,5425],{"class":2165,"line":2246},[2163,5397,5398],{"class":2222},"  computed",[2163,5400,2226],{"class":2208},[2163,5402,3280],{"class":2169},[2163,5404,2793],{"class":2177},[2163,5406,5407],{"class":2169}," `",[2163,5409,5410],{"class":2190},"user-",[2163,5412,3422],{"class":2169},[2163,5414,5415],{"class":2208},"userId",[2163,5417,2045],{"class":2169},[2163,5419,5420],{"class":2208},"value",[2163,5422,3428],{"class":2169},[2163,5424,3627],{"class":2208},[2163,5426,2310],{"class":2169},[2163,5428,5429,5432,5434,5437,5440,5442,5445],{"class":2165,"line":2263},[2163,5430,5431],{"class":2169},"  ()",[2163,5433,2793],{"class":2177},[2163,5435,5436],{"class":2222}," fetchUser",[2163,5438,5439],{"class":2208},"(userId",[2163,5441,2045],{"class":2169},[2163,5443,5444],{"class":2208},"value)",[2163,5446,2310],{"class":2169},[2163,5448,5449],{"class":2165,"line":2293},[2163,5450,2237],{"class":2208},[2163,5452,5453],{"class":2165,"line":2313},[2163,5454,2243],{"emptyLinePlaceholder":1196},[2163,5456,5457],{"class":2165,"line":2323},[2163,5458,5459],{"class":2326},"// When userId changes, the data will be automatically refetched\n",[2163,5461,5462],{"class":2165,"line":2330},[2163,5463,5464],{"class":2326},"// and the old data will be cleaned up if no other components use it\n",[2163,5466,5467,5469,5471,5474,5476,5478,5481],{"class":2165,"line":2336},[2163,5468,5415],{"class":2208},[2163,5470,2045],{"class":2169},[2163,5472,5473],{"class":2208},"value ",[2163,5475,2184],{"class":2169},[2163,5477,2302],{"class":2169},[2163,5479,5480],{"class":2190},"456",[2163,5482,5483],{"class":2169},"'\n",[4719,5485,5487],{"id":5486},"refresh-and-execute","Refresh and execute",[2030,5489,5490,5491,4782,5493,5495],{},"If you want to fetch or refresh data manually, use the ",[2034,5492,3840],{},[2034,5494,3836],{}," function provided by the composables.",[2153,5497,5499],{"className":2155,"code":5498,"language":2158,"meta":2538,"style":2159},"\u003Cscript setup lang=\"ts\">\nconst { data, error, execute, refresh } = await useFetch('/api/users')\n\u003C/script>\n\n\u003Ctemplate>\n  \u003Cdiv>\n    \u003Cp>{{ data }}\u003C/p>\n    \u003Cbutton @click=\"() => refresh()\">\n      Refresh data\n    \u003C/button>\n  \u003C/div>\n\u003C/template>\n",[2034,5500,5501,5521,5562,5570,5574,5582,5590,5607,5628,5633,5641,5649],{"__ignoreMap":2159},[2163,5502,5503,5505,5507,5509,5511,5513,5515,5517,5519],{"class":2165,"line":2166},[2163,5504,2170],{"class":2169},[2163,5506,2174],{"class":2173},[2163,5508,2178],{"class":2177},[2163,5510,2181],{"class":2177},[2163,5512,2184],{"class":2169},[2163,5514,2187],{"class":2169},[2163,5516,2191],{"class":2190},[2163,5518,2187],{"class":2169},[2163,5520,2196],{"class":2169},[2163,5522,5523,5525,5527,5529,5531,5534,5536,5539,5541,5544,5546,5548,5550,5552,5554,5556,5558,5560],{"class":2165,"line":2199},[2163,5524,2202],{"class":2177},[2163,5526,2205],{"class":2169},[2163,5528,3028],{"class":2208},[2163,5530,2288],{"class":2169},[2163,5532,5533],{"class":2208}," error",[2163,5535,2288],{"class":2169},[2163,5537,5538],{"class":2208}," execute",[2163,5540,2288],{"class":2169},[2163,5542,5543],{"class":2208}," refresh ",[2163,5545,2212],{"class":2169},[2163,5547,2215],{"class":2169},[2163,5549,2219],{"class":2218},[2163,5551,2223],{"class":2222},[2163,5553,2226],{"class":2208},[2163,5555,2229],{"class":2169},[2163,5557,4893],{"class":2190},[2163,5559,2229],{"class":2169},[2163,5561,2237],{"class":2208},[2163,5563,5564,5566,5568],{"class":2165,"line":2240},[2163,5565,2353],{"class":2169},[2163,5567,2174],{"class":2173},[2163,5569,2196],{"class":2169},[2163,5571,5572],{"class":2165,"line":2246},[2163,5573,2243],{"emptyLinePlaceholder":1196},[2163,5575,5576,5578,5580],{"class":2165,"line":2263},[2163,5577,2170],{"class":2169},[2163,5579,2370],{"class":2173},[2163,5581,2196],{"class":2169},[2163,5583,5584,5586,5588],{"class":2165,"line":2293},[2163,5585,2378],{"class":2169},[2163,5587,2381],{"class":2173},[2163,5589,2196],{"class":2169},[2163,5591,5592,5594,5596,5598,5601,5603,5605],{"class":2165,"line":2313},[2163,5593,2429],{"class":2169},[2163,5595,2030],{"class":2173},[2163,5597,3081],{"class":2169},[2163,5599,5600],{"class":2208},"{{ data }}",[2163,5602,2353],{"class":2169},[2163,5604,2030],{"class":2173},[2163,5606,2196],{"class":2169},[2163,5608,5609,5611,5614,5617,5619,5621,5624,5626],{"class":2165,"line":2323},[2163,5610,2429],{"class":2169},[2163,5612,5613],{"class":2173},"button",[2163,5615,5616],{"class":2177}," @click",[2163,5618,2184],{"class":2169},[2163,5620,2187],{"class":2169},[2163,5622,5623],{"class":2190},"() => refresh()",[2163,5625,2187],{"class":2169},[2163,5627,2196],{"class":2169},[2163,5629,5630],{"class":2165,"line":2330},[2163,5631,5632],{"class":2208},"      Refresh data\n",[2163,5634,5635,5637,5639],{"class":2165,"line":2336},[2163,5636,2458],{"class":2169},[2163,5638,5613],{"class":2173},[2163,5640,2196],{"class":2169},[2163,5642,5643,5645,5647],{"class":2165,"line":2344},[2163,5644,2407],{"class":2169},[2163,5646,2381],{"class":2173},[2163,5648,2196],{"class":2169},[2163,5650,5651,5653,5655],{"class":2165,"line":2350},[2163,5652,2353],{"class":2169},[2163,5654,2370],{"class":2173},[2163,5656,2196],{"class":2169},[2030,5658,2112,5659,5661,5662,5664,5665,2045],{},[2034,5660,3840],{}," function is an alias for ",[2034,5663,3836],{}," that works in exactly the same way but is more semantic for cases when the fetch is ",[2038,5666,5668],{"href":5667},"/docs/4.x/getting-started/data-fetching#not-immediate","not immediate",[2136,5670,5671],{},[2030,5672,5673,5674,2042,5678,2045],{},"To globally refetch or invalidate cached data, see ",[2038,5675,5676],{"href":1567},[2034,5677,650],{},[2038,5679,5680],{"href":1621},[2034,5681,722],{},[4719,5683,5684],{"id":3850},"Clear",[2030,5686,5687,5688,5690,5691,5495],{},"If you want to clear the data provided, for whatever reason, without needing to know the specific key to pass to ",[2034,5689,650],{},", you can use the ",[2034,5692,3850],{},[2153,5694,5696],{"className":2155,"code":5695,"language":2158,"meta":2538,"style":2159},"\u003Cscript setup lang=\"ts\">\nconst { data, clear } = await useFetch('/api/users')\n\nconst route = useRoute()\nwatch(() => route.path, (path) => {\n  if (path === '/') {\n    clear()\n  }\n})\n\u003C/script>\n",[2034,5697,5698,5718,5749,5753,5766,5796,5820,5827,5832,5838],{"__ignoreMap":2159},[2163,5699,5700,5702,5704,5706,5708,5710,5712,5714,5716],{"class":2165,"line":2166},[2163,5701,2170],{"class":2169},[2163,5703,2174],{"class":2173},[2163,5705,2178],{"class":2177},[2163,5707,2181],{"class":2177},[2163,5709,2184],{"class":2169},[2163,5711,2187],{"class":2169},[2163,5713,2191],{"class":2190},[2163,5715,2187],{"class":2169},[2163,5717,2196],{"class":2169},[2163,5719,5720,5722,5724,5726,5728,5731,5733,5735,5737,5739,5741,5743,5745,5747],{"class":2165,"line":2199},[2163,5721,2202],{"class":2177},[2163,5723,2205],{"class":2169},[2163,5725,3028],{"class":2208},[2163,5727,2288],{"class":2169},[2163,5729,5730],{"class":2208}," clear ",[2163,5732,2212],{"class":2169},[2163,5734,2215],{"class":2169},[2163,5736,2219],{"class":2218},[2163,5738,2223],{"class":2222},[2163,5740,2226],{"class":2208},[2163,5742,2229],{"class":2169},[2163,5744,4893],{"class":2190},[2163,5746,2229],{"class":2169},[2163,5748,2237],{"class":2208},[2163,5750,5751],{"class":2165,"line":2240},[2163,5752,2243],{"emptyLinePlaceholder":1196},[2163,5754,5755,5757,5760,5762,5764],{"class":2165,"line":2246},[2163,5756,2202],{"class":2177},[2163,5758,5759],{"class":2208}," route ",[2163,5761,2184],{"class":2169},[2163,5763,3380],{"class":2222},[2163,5765,3755],{"class":2208},[2163,5767,5768,5770,5772,5774,5776,5779,5781,5784,5786,5788,5790,5792,5794],{"class":2165,"line":2263},[2163,5769,5029],{"class":2222},[2163,5771,2226],{"class":2208},[2163,5773,3280],{"class":2169},[2163,5775,2793],{"class":2177},[2163,5777,5778],{"class":2208}," route",[2163,5780,2045],{"class":2169},[2163,5782,5783],{"class":2208},"path",[2163,5785,2288],{"class":2169},[2163,5787,3551],{"class":2169},[2163,5789,5783],{"class":2789},[2163,5791,3627],{"class":2169},[2163,5793,2793],{"class":2177},[2163,5795,2260],{"class":2169},[2163,5797,5798,5801,5803,5805,5808,5810,5812,5814,5817],{"class":2165,"line":2293},[2163,5799,5800],{"class":2218},"  if",[2163,5802,3551],{"class":2173},[2163,5804,5783],{"class":2208},[2163,5806,5807],{"class":2169}," ===",[2163,5809,2302],{"class":2169},[2163,5811,3837],{"class":2190},[2163,5813,2229],{"class":2169},[2163,5815,5816],{"class":2173},") ",[2163,5818,5819],{"class":2169},"{\n",[2163,5821,5822,5825],{"class":2165,"line":2313},[2163,5823,5824],{"class":2222},"    clear",[2163,5826,3755],{"class":2173},[2163,5828,5829],{"class":2165,"line":2323},[2163,5830,5831],{"class":2169},"  }\n",[2163,5833,5834,5836],{"class":2165,"line":2330},[2163,5835,2212],{"class":2169},[2163,5837,2237],{"class":2208},[2163,5839,5840,5842,5844],{"class":2165,"line":2336},[2163,5841,2353],{"class":2169},[2163,5843,2174],{"class":2173},[2163,5845,2196],{"class":2169},[4719,5847,5848],{"id":5029},"Watch",[2030,5850,5851,5852,5854,5855,5858],{},"To re-run your fetching function each time other reactive values in your application change, use the ",[2034,5853,5029],{}," option. You can use it for one or multiple ",[3932,5856,5857],{},"watchable"," elements.",[2153,5860,5862],{"className":2155,"code":5861,"language":2158,"meta":2538,"style":2159},"\u003Cscript setup lang=\"ts\">\nconst id = ref(1)\n\nconst { data, error, refresh } = await useFetch('/api/users', {\n  /* Changing the id will trigger a refetch */\n  watch: [id],\n})\n\u003C/script>\n",[2034,5863,5864,5884,5902,5906,5942,5947,5959,5965],{"__ignoreMap":2159},[2163,5865,5866,5868,5870,5872,5874,5876,5878,5880,5882],{"class":2165,"line":2166},[2163,5867,2170],{"class":2169},[2163,5869,2174],{"class":2173},[2163,5871,2178],{"class":2177},[2163,5873,2181],{"class":2177},[2163,5875,2184],{"class":2169},[2163,5877,2187],{"class":2169},[2163,5879,2191],{"class":2190},[2163,5881,2187],{"class":2169},[2163,5883,2196],{"class":2169},[2163,5885,5886,5888,5890,5892,5894,5896,5900],{"class":2165,"line":2199},[2163,5887,2202],{"class":2177},[2163,5889,3373],{"class":2208},[2163,5891,2184],{"class":2169},[2163,5893,5360],{"class":2222},[2163,5895,2226],{"class":2208},[2163,5897,5899],{"class":5898},"sYRBq","1",[2163,5901,2237],{"class":2208},[2163,5903,5904],{"class":2165,"line":2240},[2163,5905,2243],{"emptyLinePlaceholder":1196},[2163,5907,5908,5910,5912,5914,5916,5918,5920,5922,5924,5926,5928,5930,5932,5934,5936,5938,5940],{"class":2165,"line":2246},[2163,5909,2202],{"class":2177},[2163,5911,2205],{"class":2169},[2163,5913,3028],{"class":2208},[2163,5915,2288],{"class":2169},[2163,5917,5533],{"class":2208},[2163,5919,2288],{"class":2169},[2163,5921,5543],{"class":2208},[2163,5923,2212],{"class":2169},[2163,5925,2215],{"class":2169},[2163,5927,2219],{"class":2218},[2163,5929,2223],{"class":2222},[2163,5931,2226],{"class":2208},[2163,5933,2229],{"class":2169},[2163,5935,4893],{"class":2190},[2163,5937,2229],{"class":2169},[2163,5939,2288],{"class":2169},[2163,5941,2260],{"class":2169},[2163,5943,5944],{"class":2165,"line":2263},[2163,5945,5946],{"class":2326},"  /* Changing the id will trigger a refetch */\n",[2163,5948,5949,5952,5954,5957],{"class":2165,"line":2293},[2163,5950,5951],{"class":2173},"  watch",[2163,5953,2299],{"class":2169},[2163,5955,5956],{"class":2208}," [id]",[2163,5958,2310],{"class":2169},[2163,5960,5961,5963],{"class":2165,"line":2313},[2163,5962,2212],{"class":2169},[2163,5964,2237],{"class":2208},[2163,5966,5967,5969,5971],{"class":2165,"line":2323},[2163,5968,2353],{"class":2169},[2163,5970,2174],{"class":2173},[2163,5972,2196],{"class":2169},[2030,5974,5975,5976,5979],{},"Note that ",[2149,5977,5978],{},"watching a reactive value won't change the URL fetched",". For example, this will keep fetching the same initial ID of the user because the URL is constructed at the moment the function is invoked.",[2153,5981,5983],{"className":2155,"code":5982,"language":2158,"meta":2159,"style":2159},"\u003Cscript setup lang=\"ts\">\nconst id = ref(1)\n\nconst { data, error, refresh } = await useFetch(`/api/users/${id.value}`, {\n  watch: [id],\n})\n\u003C/script>\n",[2034,5984,5985,6005,6021,6025,6070,6080,6086],{"__ignoreMap":2159},[2163,5986,5987,5989,5991,5993,5995,5997,5999,6001,6003],{"class":2165,"line":2166},[2163,5988,2170],{"class":2169},[2163,5990,2174],{"class":2173},[2163,5992,2178],{"class":2177},[2163,5994,2181],{"class":2177},[2163,5996,2184],{"class":2169},[2163,5998,2187],{"class":2169},[2163,6000,2191],{"class":2190},[2163,6002,2187],{"class":2169},[2163,6004,2196],{"class":2169},[2163,6006,6007,6009,6011,6013,6015,6017,6019],{"class":2165,"line":2199},[2163,6008,2202],{"class":2177},[2163,6010,3373],{"class":2208},[2163,6012,2184],{"class":2169},[2163,6014,5360],{"class":2222},[2163,6016,2226],{"class":2208},[2163,6018,5899],{"class":5898},[2163,6020,2237],{"class":2208},[2163,6022,6023],{"class":2165,"line":2240},[2163,6024,2243],{"emptyLinePlaceholder":1196},[2163,6026,6027,6029,6031,6033,6035,6037,6039,6041,6043,6045,6047,6049,6051,6053,6056,6058,6060,6062,6064,6066,6068],{"class":2165,"line":2246},[2163,6028,2202],{"class":2177},[2163,6030,2205],{"class":2169},[2163,6032,3028],{"class":2208},[2163,6034,2288],{"class":2169},[2163,6036,5533],{"class":2208},[2163,6038,2288],{"class":2169},[2163,6040,5543],{"class":2208},[2163,6042,2212],{"class":2169},[2163,6044,2215],{"class":2169},[2163,6046,2219],{"class":2218},[2163,6048,2223],{"class":2222},[2163,6050,2226],{"class":2208},[2163,6052,3416],{"class":2169},[2163,6054,6055],{"class":2190},"/api/users/",[2163,6057,3422],{"class":2169},[2163,6059,3425],{"class":2208},[2163,6061,2045],{"class":2169},[2163,6063,5420],{"class":2208},[2163,6065,3428],{"class":2169},[2163,6067,2288],{"class":2169},[2163,6069,2260],{"class":2169},[2163,6071,6072,6074,6076,6078],{"class":2165,"line":2263},[2163,6073,5951],{"class":2173},[2163,6075,2299],{"class":2169},[2163,6077,5956],{"class":2208},[2163,6079,2310],{"class":2169},[2163,6081,6082,6084],{"class":2165,"line":2293},[2163,6083,2212],{"class":2169},[2163,6085,2237],{"class":2208},[2163,6087,6088,6090,6092],{"class":2165,"line":2313},[2163,6089,2353],{"class":2169},[2163,6091,2174],{"class":2173},[2163,6093,2196],{"class":2169},[2030,6095,6096,6097,6101],{},"If you need to change the URL based on a reactive value, you may want to use a ",[2038,6098,6100],{"href":6099},"/docs/4.x/getting-started/data-fetching#computed-url","computed URL"," instead.",[2030,6103,6104,6105,2045],{},"When reactive fetch options are provided, they'll be automatically watched and trigger refetches. In some cases, it can be useful to opt-out of this behavior by specifying ",[2034,6106,6107],{},"watch: false",[2153,6109,6111],{"className":2765,"code":6110,"language":2191,"meta":2159,"style":2159},"const id = ref(1)\n\n// Won't automatically refetch when id changes\nconst { data, execute } = await useFetch('/api/users', {\n  query: { id }, // id is watched by default\n  watch: false, // disables automatic watching of id\n})\n\n// doesn't trigger refetch\nid.value = 2\n",[2034,6112,6113,6129,6133,6138,6171,6188,6201,6207,6211,6216],{"__ignoreMap":2159},[2163,6114,6115,6117,6119,6121,6123,6125,6127],{"class":2165,"line":2166},[2163,6116,2202],{"class":2177},[2163,6118,3373],{"class":2208},[2163,6120,2184],{"class":2169},[2163,6122,5360],{"class":2222},[2163,6124,2226],{"class":2208},[2163,6126,5899],{"class":5898},[2163,6128,2237],{"class":2208},[2163,6130,6131],{"class":2165,"line":2199},[2163,6132,2243],{"emptyLinePlaceholder":1196},[2163,6134,6135],{"class":2165,"line":2240},[2163,6136,6137],{"class":2326},"// Won't automatically refetch when id changes\n",[2163,6139,6140,6142,6144,6146,6148,6151,6153,6155,6157,6159,6161,6163,6165,6167,6169],{"class":2165,"line":2246},[2163,6141,2202],{"class":2177},[2163,6143,2205],{"class":2169},[2163,6145,3028],{"class":2208},[2163,6147,2288],{"class":2169},[2163,6149,6150],{"class":2208}," execute ",[2163,6152,2212],{"class":2169},[2163,6154,2215],{"class":2169},[2163,6156,2219],{"class":2218},[2163,6158,2223],{"class":2222},[2163,6160,2226],{"class":2208},[2163,6162,2229],{"class":2169},[2163,6164,4893],{"class":2190},[2163,6166,2229],{"class":2169},[2163,6168,2288],{"class":2169},[2163,6170,2260],{"class":2169},[2163,6172,6173,6176,6178,6180,6182,6185],{"class":2165,"line":2263},[2163,6174,6175],{"class":2173},"  query",[2163,6177,2299],{"class":2169},[2163,6179,2205],{"class":2169},[2163,6181,3373],{"class":2208},[2163,6183,6184],{"class":2169},"},",[2163,6186,6187],{"class":2326}," // id is watched by default\n",[2163,6189,6190,6192,6194,6196,6198],{"class":2165,"line":2293},[2163,6191,5951],{"class":2173},[2163,6193,2299],{"class":2169},[2163,6195,4380],{"class":4043},[2163,6197,2288],{"class":2169},[2163,6199,6200],{"class":2326}," // disables automatic watching of id\n",[2163,6202,6203,6205],{"class":2165,"line":2313},[2163,6204,2212],{"class":2169},[2163,6206,2237],{"class":2208},[2163,6208,6209],{"class":2165,"line":2323},[2163,6210,2243],{"emptyLinePlaceholder":1196},[2163,6212,6213],{"class":2165,"line":2330},[2163,6214,6215],{"class":2326},"// doesn't trigger refetch\n",[2163,6217,6218,6220,6222,6224,6226],{"class":2165,"line":2336},[2163,6219,3425],{"class":2208},[2163,6221,2045],{"class":2169},[2163,6223,5473],{"class":2208},[2163,6225,2184],{"class":2169},[2163,6227,6228],{"class":5898}," 2\n",[4719,6230,6232],{"id":6231},"computed-url","Computed URL",[2030,6234,6235],{},"Sometimes you may need to compute a URL from reactive values, and refresh the data each time these change. Instead of juggling your way around, you can attach each param as a reactive value. Nuxt will automatically use the reactive value and re-fetch each time it changes.",[2153,6237,6239],{"className":2155,"code":6238,"language":2158,"meta":2159,"style":2159},"\u003Cscript setup lang=\"ts\">\nconst id = ref(null)\n\nconst { data, status } = useLazyFetch('/api/user', {\n  query: {\n    user_id: id,\n  },\n})\n\u003C/script>\n",[2034,6240,6241,6261,6278,6282,6313,6321,6332,6336,6342],{"__ignoreMap":2159},[2163,6242,6243,6245,6247,6249,6251,6253,6255,6257,6259],{"class":2165,"line":2166},[2163,6244,2170],{"class":2169},[2163,6246,2174],{"class":2173},[2163,6248,2178],{"class":2177},[2163,6250,2181],{"class":2177},[2163,6252,2184],{"class":2169},[2163,6254,2187],{"class":2169},[2163,6256,2191],{"class":2190},[2163,6258,2187],{"class":2169},[2163,6260,2196],{"class":2169},[2163,6262,6263,6265,6267,6269,6271,6273,6276],{"class":2165,"line":2199},[2163,6264,2202],{"class":2177},[2163,6266,3373],{"class":2208},[2163,6268,2184],{"class":2169},[2163,6270,5360],{"class":2222},[2163,6272,2226],{"class":2208},[2163,6274,6275],{"class":2169},"null",[2163,6277,2237],{"class":2208},[2163,6279,6280],{"class":2165,"line":2240},[2163,6281,2243],{"emptyLinePlaceholder":1196},[2163,6283,6284,6286,6288,6290,6292,6294,6296,6298,6300,6302,6304,6307,6309,6311],{"class":2165,"line":2246},[2163,6285,2202],{"class":2177},[2163,6287,2205],{"class":2169},[2163,6289,3028],{"class":2208},[2163,6291,2288],{"class":2169},[2163,6293,3526],{"class":2208},[2163,6295,2212],{"class":2169},[2163,6297,2215],{"class":2169},[2163,6299,4226],{"class":2222},[2163,6301,2226],{"class":2208},[2163,6303,2229],{"class":2169},[2163,6305,6306],{"class":2190},"/api/user",[2163,6308,2229],{"class":2169},[2163,6310,2288],{"class":2169},[2163,6312,2260],{"class":2169},[2163,6314,6315,6317,6319],{"class":2165,"line":2263},[2163,6316,6175],{"class":2173},[2163,6318,2299],{"class":2169},[2163,6320,2260],{"class":2169},[2163,6322,6323,6326,6328,6330],{"class":2165,"line":2293},[2163,6324,6325],{"class":2173},"    user_id",[2163,6327,2299],{"class":2169},[2163,6329,3457],{"class":2208},[2163,6331,2310],{"class":2169},[2163,6333,6334],{"class":2165,"line":2313},[2163,6335,4694],{"class":2169},[2163,6337,6338,6340],{"class":2165,"line":2323},[2163,6339,2212],{"class":2169},[2163,6341,2237],{"class":2208},[2163,6343,6344,6346,6348],{"class":2165,"line":2330},[2163,6345,2353],{"class":2169},[2163,6347,2174],{"class":2173},[2163,6349,2196],{"class":2169},[2030,6351,6352,6353,6358],{},"In the case of more complex URL construction, you may use a callback as a ",[2038,6354,6357],{"href":6355,"rel":6356},"https://vuejs.org/guide/essentials/computed",[2145],"computed getter"," that returns the URL string.",[2030,6360,6361,6362,6365],{},"Every time a dependency changes, the data will be fetched using the newly constructed URL. Combine this with ",[2038,6363,6364],{"href":5667},"not-immediate",", and you can wait until the reactive element changes before fetching.",[2153,6367,6369],{"className":2155,"code":6368,"language":2158,"meta":2159,"style":2159},"\u003Cscript setup lang=\"ts\">\nconst id = ref(null)\n\nconst { data, status } = useLazyFetch(() => `/api/users/${id.value}`, {\n  immediate: false,\n})\n\nconst pending = computed(() => status.value === 'pending')\n\u003C/script>\n\n\u003Ctemplate>\n  \u003Cdiv>\n    \u003C!-- disable the input while fetching -->\n    \u003Cinput\n      v-model=\"id\"\n      type=\"number\"\n      :disabled=\"pending\"\n    >\n\n    \u003Cdiv v-if=\"status === 'idle'\">\n      Type an user ID\n    \u003C/div>\n\n    \u003Cdiv v-else-if=\"pending\">\n      Loading ...\n    \u003C/div>\n\n    \u003Cdiv v-else>\n      {{ data }}\n    \u003C/div>\n  \u003C/div>\n\u003C/template>\n",[2034,6370,6371,6391,6407,6411,6453,6464,6470,6474,6510,6518,6522,6530,6538,6543,6550,6564,6578,6591,6596,6600,6619,6624,6632,6636,6656,6662,6671,6676,6687,6693,6702,6711],{"__ignoreMap":2159},[2163,6372,6373,6375,6377,6379,6381,6383,6385,6387,6389],{"class":2165,"line":2166},[2163,6374,2170],{"class":2169},[2163,6376,2174],{"class":2173},[2163,6378,2178],{"class":2177},[2163,6380,2181],{"class":2177},[2163,6382,2184],{"class":2169},[2163,6384,2187],{"class":2169},[2163,6386,2191],{"class":2190},[2163,6388,2187],{"class":2169},[2163,6390,2196],{"class":2169},[2163,6392,6393,6395,6397,6399,6401,6403,6405],{"class":2165,"line":2199},[2163,6394,2202],{"class":2177},[2163,6396,3373],{"class":2208},[2163,6398,2184],{"class":2169},[2163,6400,5360],{"class":2222},[2163,6402,2226],{"class":2208},[2163,6404,6275],{"class":2169},[2163,6406,2237],{"class":2208},[2163,6408,6409],{"class":2165,"line":2240},[2163,6410,2243],{"emptyLinePlaceholder":1196},[2163,6412,6413,6415,6417,6419,6421,6423,6425,6427,6429,6431,6433,6435,6437,6439,6441,6443,6445,6447,6449,6451],{"class":2165,"line":2246},[2163,6414,2202],{"class":2177},[2163,6416,2205],{"class":2169},[2163,6418,3028],{"class":2208},[2163,6420,2288],{"class":2169},[2163,6422,3526],{"class":2208},[2163,6424,2212],{"class":2169},[2163,6426,2215],{"class":2169},[2163,6428,4226],{"class":2222},[2163,6430,2226],{"class":2208},[2163,6432,3280],{"class":2169},[2163,6434,2793],{"class":2177},[2163,6436,5407],{"class":2169},[2163,6438,6055],{"class":2190},[2163,6440,3422],{"class":2169},[2163,6442,3425],{"class":2208},[2163,6444,2045],{"class":2169},[2163,6446,5420],{"class":2208},[2163,6448,3428],{"class":2169},[2163,6450,2288],{"class":2169},[2163,6452,2260],{"class":2169},[2163,6454,6455,6458,6460,6462],{"class":2165,"line":2263},[2163,6456,6457],{"class":2173},"  immediate",[2163,6459,2299],{"class":2169},[2163,6461,4380],{"class":4043},[2163,6463,2310],{"class":2169},[2163,6465,6466,6468],{"class":2165,"line":2293},[2163,6467,2212],{"class":2169},[2163,6469,2237],{"class":2208},[2163,6471,6472],{"class":2165,"line":2313},[2163,6473,2243],{"emptyLinePlaceholder":1196},[2163,6475,6476,6478,6481,6483,6486,6488,6490,6492,6494,6496,6498,6501,6503,6506,6508],{"class":2165,"line":2323},[2163,6477,2202],{"class":2177},[2163,6479,6480],{"class":2208}," pending ",[2163,6482,2184],{"class":2169},[2163,6484,6485],{"class":2222}," computed",[2163,6487,2226],{"class":2208},[2163,6489,3280],{"class":2169},[2163,6491,2793],{"class":2177},[2163,6493,4005],{"class":2208},[2163,6495,2045],{"class":2169},[2163,6497,5473],{"class":2208},[2163,6499,6500],{"class":2169},"===",[2163,6502,2302],{"class":2169},[2163,6504,6505],{"class":2190},"pending",[2163,6507,2229],{"class":2169},[2163,6509,2237],{"class":2208},[2163,6511,6512,6514,6516],{"class":2165,"line":2330},[2163,6513,2353],{"class":2169},[2163,6515,2174],{"class":2173},[2163,6517,2196],{"class":2169},[2163,6519,6520],{"class":2165,"line":2336},[2163,6521,2243],{"emptyLinePlaceholder":1196},[2163,6523,6524,6526,6528],{"class":2165,"line":2344},[2163,6525,2170],{"class":2169},[2163,6527,2370],{"class":2173},[2163,6529,2196],{"class":2169},[2163,6531,6532,6534,6536],{"class":2165,"line":2350},[2163,6533,2378],{"class":2169},[2163,6535,2381],{"class":2173},[2163,6537,2196],{"class":2169},[2163,6539,6540],{"class":2165,"line":2360},[2163,6541,6542],{"class":2326},"    \u003C!-- disable the input while fetching -->\n",[2163,6544,6545,6547],{"class":2165,"line":2365},[2163,6546,2429],{"class":2169},[2163,6548,6549],{"class":2173},"input\n",[2163,6551,6552,6555,6557,6559,6561],{"class":2165,"line":2375},[2163,6553,6554],{"class":2177},"      v-model",[2163,6556,2184],{"class":2169},[2163,6558,2187],{"class":2169},[2163,6560,3425],{"class":2190},[2163,6562,6563],{"class":2169},"\"\n",[2163,6565,6566,6569,6571,6573,6576],{"class":2165,"line":2398},[2163,6567,6568],{"class":2177},"      type",[2163,6570,2184],{"class":2169},[2163,6572,2187],{"class":2169},[2163,6574,6575],{"class":2190},"number",[2163,6577,6563],{"class":2169},[2163,6579,6580,6583,6585,6587,6589],{"class":2165,"line":2404},[2163,6581,6582],{"class":2177},"      :disabled",[2163,6584,2184],{"class":2169},[2163,6586,2187],{"class":2169},[2163,6588,6505],{"class":2190},[2163,6590,6563],{"class":2169},[2163,6592,6593],{"class":2165,"line":2414},[2163,6594,6595],{"class":2169},"    >\n",[2163,6597,6598],{"class":2165,"line":2426},[2163,6599,2243],{"emptyLinePlaceholder":1196},[2163,6601,6602,6604,6606,6608,6610,6612,6615,6617],{"class":2165,"line":2449},[2163,6603,2429],{"class":2169},[2163,6605,2381],{"class":2173},[2163,6607,2384],{"class":2177},[2163,6609,2184],{"class":2169},[2163,6611,2187],{"class":2169},[2163,6613,6614],{"class":2190},"status === 'idle'",[2163,6616,2187],{"class":2169},[2163,6618,2196],{"class":2169},[2163,6620,6621],{"class":2165,"line":2455},[2163,6622,6623],{"class":2208},"      Type an user ID\n",[2163,6625,6626,6628,6630],{"class":2165,"line":2465},[2163,6627,2458],{"class":2169},[2163,6629,2381],{"class":2173},[2163,6631,2196],{"class":2169},[2163,6633,6634],{"class":2165,"line":2474},[2163,6635,2243],{"emptyLinePlaceholder":1196},[2163,6637,6639,6641,6643,6646,6648,6650,6652,6654],{"class":2165,"line":6638},24,[2163,6640,2429],{"class":2169},[2163,6642,2381],{"class":2173},[2163,6644,6645],{"class":2177}," v-else-if",[2163,6647,2184],{"class":2169},[2163,6649,2187],{"class":2169},[2163,6651,6505],{"class":2190},[2163,6653,2187],{"class":2169},[2163,6655,2196],{"class":2169},[2163,6657,6659],{"class":2165,"line":6658},25,[2163,6660,6661],{"class":2208},"      Loading ...\n",[2163,6663,6665,6667,6669],{"class":2165,"line":6664},26,[2163,6666,2458],{"class":2169},[2163,6668,2381],{"class":2173},[2163,6670,2196],{"class":2169},[2163,6672,6674],{"class":2165,"line":6673},27,[2163,6675,2243],{"emptyLinePlaceholder":1196},[2163,6677,6679,6681,6683,6685],{"class":2165,"line":6678},28,[2163,6680,2429],{"class":2169},[2163,6682,2381],{"class":2173},[2163,6684,2421],{"class":2177},[2163,6686,2196],{"class":2169},[2163,6688,6690],{"class":2165,"line":6689},29,[2163,6691,6692],{"class":2208},"      {{ data }}\n",[2163,6694,6696,6698,6700],{"class":2165,"line":6695},30,[2163,6697,2458],{"class":2169},[2163,6699,2381],{"class":2173},[2163,6701,2196],{"class":2169},[2163,6703,6705,6707,6709],{"class":2165,"line":6704},31,[2163,6706,2407],{"class":2169},[2163,6708,2381],{"class":2173},[2163,6710,2196],{"class":2169},[2163,6712,6714,6716,6718],{"class":2165,"line":6713},32,[2163,6715,2353],{"class":2169},[2163,6717,2370],{"class":2173},[2163,6719,2196],{"class":2169},[2030,6721,6722,6723,2045],{},"If you need to force a refresh when other reactive values change, you can also ",[2038,6724,6726],{"href":6725},"/docs/4.x/getting-started/data-fetching#watch","watch other values",[2491,6728,6729],{"id":6364},"Not immediate",[2030,6731,2112,6732,6734,6735,6738],{},[2034,6733,527],{}," composable will start fetching data the moment is invoked. You may prevent this by setting ",[2034,6736,6737],{},"immediate: false",", for example, to wait for user interaction.",[2030,6740,6741,6742,6744,6745,6747],{},"With that, you will need both the ",[2034,6743,3871],{}," to handle the fetch lifecycle, and ",[2034,6746,3840],{}," to start the data fetch.",[2153,6749,6751],{"className":2155,"code":6750,"language":2158,"meta":2159,"style":2159},"\u003Cscript setup lang=\"ts\">\nconst { data, error, execute, status } = await useLazyFetch('/api/comments', {\n  immediate: false,\n})\n\u003C/script>\n\n\u003Ctemplate>\n  \u003Cdiv v-if=\"status === 'idle'\">\n    \u003Cbutton @click=\"execute\">\n      Get data\n    \u003C/button>\n  \u003C/div>\n\n  \u003Cdiv v-else-if=\"status === 'pending'\">\n    Loading comments...\n  \u003C/div>\n\n  \u003Cdiv v-else>\n    {{ data }}\n  \u003C/div>\n\u003C/template>\n",[2034,6752,6753,6773,6813,6823,6829,6837,6841,6849,6867,6885,6890,6898,6906,6910,6928,6933,6941,6945,6955,6960,6968],{"__ignoreMap":2159},[2163,6754,6755,6757,6759,6761,6763,6765,6767,6769,6771],{"class":2165,"line":2166},[2163,6756,2170],{"class":2169},[2163,6758,2174],{"class":2173},[2163,6760,2178],{"class":2177},[2163,6762,2181],{"class":2177},[2163,6764,2184],{"class":2169},[2163,6766,2187],{"class":2169},[2163,6768,2191],{"class":2190},[2163,6770,2187],{"class":2169},[2163,6772,2196],{"class":2169},[2163,6774,6775,6777,6779,6781,6783,6785,6787,6789,6791,6793,6795,6797,6799,6801,6803,6805,6807,6809,6811],{"class":2165,"line":2199},[2163,6776,2202],{"class":2177},[2163,6778,2205],{"class":2169},[2163,6780,3028],{"class":2208},[2163,6782,2288],{"class":2169},[2163,6784,5533],{"class":2208},[2163,6786,2288],{"class":2169},[2163,6788,5538],{"class":2208},[2163,6790,2288],{"class":2169},[2163,6792,3526],{"class":2208},[2163,6794,2212],{"class":2169},[2163,6796,2215],{"class":2169},[2163,6798,2219],{"class":2218},[2163,6800,4226],{"class":2222},[2163,6802,2226],{"class":2208},[2163,6804,2229],{"class":2169},[2163,6806,4354],{"class":2190},[2163,6808,2229],{"class":2169},[2163,6810,2288],{"class":2169},[2163,6812,2260],{"class":2169},[2163,6814,6815,6817,6819,6821],{"class":2165,"line":2240},[2163,6816,6457],{"class":2173},[2163,6818,2299],{"class":2169},[2163,6820,4380],{"class":4043},[2163,6822,2310],{"class":2169},[2163,6824,6825,6827],{"class":2165,"line":2246},[2163,6826,2212],{"class":2169},[2163,6828,2237],{"class":2208},[2163,6830,6831,6833,6835],{"class":2165,"line":2263},[2163,6832,2353],{"class":2169},[2163,6834,2174],{"class":2173},[2163,6836,2196],{"class":2169},[2163,6838,6839],{"class":2165,"line":2293},[2163,6840,2243],{"emptyLinePlaceholder":1196},[2163,6842,6843,6845,6847],{"class":2165,"line":2313},[2163,6844,2170],{"class":2169},[2163,6846,2370],{"class":2173},[2163,6848,2196],{"class":2169},[2163,6850,6851,6853,6855,6857,6859,6861,6863,6865],{"class":2165,"line":2323},[2163,6852,2378],{"class":2169},[2163,6854,2381],{"class":2173},[2163,6856,2384],{"class":2177},[2163,6858,2184],{"class":2169},[2163,6860,2187],{"class":2169},[2163,6862,6614],{"class":2190},[2163,6864,2187],{"class":2169},[2163,6866,2196],{"class":2169},[2163,6868,6869,6871,6873,6875,6877,6879,6881,6883],{"class":2165,"line":2330},[2163,6870,2429],{"class":2169},[2163,6872,5613],{"class":2173},[2163,6874,5616],{"class":2177},[2163,6876,2184],{"class":2169},[2163,6878,2187],{"class":2169},[2163,6880,3840],{"class":2190},[2163,6882,2187],{"class":2169},[2163,6884,2196],{"class":2169},[2163,6886,6887],{"class":2165,"line":2336},[2163,6888,6889],{"class":2208},"      Get data\n",[2163,6891,6892,6894,6896],{"class":2165,"line":2344},[2163,6893,2458],{"class":2169},[2163,6895,5613],{"class":2173},[2163,6897,2196],{"class":2169},[2163,6899,6900,6902,6904],{"class":2165,"line":2350},[2163,6901,2407],{"class":2169},[2163,6903,2381],{"class":2173},[2163,6905,2196],{"class":2169},[2163,6907,6908],{"class":2165,"line":2360},[2163,6909,2243],{"emptyLinePlaceholder":1196},[2163,6911,6912,6914,6916,6918,6920,6922,6924,6926],{"class":2165,"line":2365},[2163,6913,2378],{"class":2169},[2163,6915,2381],{"class":2173},[2163,6917,6645],{"class":2177},[2163,6919,2184],{"class":2169},[2163,6921,2187],{"class":2169},[2163,6923,4092],{"class":2190},[2163,6925,2187],{"class":2169},[2163,6927,2196],{"class":2169},[2163,6929,6930],{"class":2165,"line":2375},[2163,6931,6932],{"class":2208},"    Loading comments...\n",[2163,6934,6935,6937,6939],{"class":2165,"line":2398},[2163,6936,2407],{"class":2169},[2163,6938,2381],{"class":2173},[2163,6940,2196],{"class":2169},[2163,6942,6943],{"class":2165,"line":2404},[2163,6944,2243],{"emptyLinePlaceholder":1196},[2163,6946,6947,6949,6951,6953],{"class":2165,"line":2414},[2163,6948,2378],{"class":2169},[2163,6950,2381],{"class":2173},[2163,6952,2421],{"class":2177},[2163,6954,2196],{"class":2169},[2163,6956,6957],{"class":2165,"line":2426},[2163,6958,6959],{"class":2208},"    {{ data }}\n",[2163,6961,6962,6964,6966],{"class":2165,"line":2449},[2163,6963,2407],{"class":2169},[2163,6965,2381],{"class":2173},[2163,6967,2196],{"class":2169},[2163,6969,6970,6972,6974],{"class":2165,"line":2455},[2163,6971,2353],{"class":2169},[2163,6973,2370],{"class":2173},[2163,6975,2196],{"class":2169},[2030,6977,6978,6979,6981],{},"For finer control, the ",[2034,6980,3871],{}," variable can be:",[2050,6983,6984,6989,6994,6999],{},[2053,6985,6986,6988],{},[2034,6987,3874],{}," when the fetch hasn't started",[2053,6990,6991,6993],{},[2034,6992,6505],{}," when a fetch has started but not yet completed",[2053,6995,6996,6998],{},[2034,6997,3865],{}," when the fetch fails",[2053,7000,7001,7004],{},[2034,7002,7003],{},"success"," when the fetch is completed successfully",[2093,7006,7008],{"id":7007},"passing-headers-and-cookies","Passing Headers and Cookies",[2030,7010,7011,7012,7014,7015,7017],{},"When we call ",[2034,7013,630],{}," in the browser, user headers like ",[2034,7016,2813],{}," will be directly sent to the API.",[2030,7019,7020,7021,7023],{},"Normally, during server-side-rendering, due to security considerations, the ",[2034,7022,630],{}," wouldn't include the user's browser cookies, nor pass on cookies from the fetch response.",[2030,7025,7026,7027,7029,7030,7034,7035,2702],{},"However, when calling ",[2034,7028,527],{}," with a relative URL on the server, Nuxt will use ",[2038,7031,7032],{"href":1509},[2034,7033,571],{}," to proxy headers and cookies (with the exception of headers not meant to be forwarded, like ",[2034,7036,2701],{},[2491,7038,7040],{"id":7039},"pass-cookies-from-server-side-api-calls-on-ssr-response","Pass Cookies From Server-side API Calls on SSR Response",[2030,7042,7043],{},"If you want to pass on/proxy cookies in the other direction, from an internal request back to the client, you will need to handle this yourself.",[2153,7045,7048],{"className":2765,"code":7046,"filename":7047,"language":2191,"meta":2159,"style":2159},"import { appendResponseHeader } from 'h3'\nimport type { H3Event } from 'h3'\n\nexport const fetchWithCookie = async (event: H3Event, url: string) => {\n  /* Get the response from the server endpoint */\n  const res = await $fetch.raw(url)\n  /* Get the cookies from the response */\n  const cookies = res.headers.getSetCookie()\n  /* Attach each cookie to our incoming Request */\n  for (const cookie of cookies) {\n    appendResponseHeader(event, 'set-cookie', cookie)\n  }\n  /* Return the data of the response */\n  return res._data\n}\n","app/composables/fetch.ts",[2034,7049,7050,7071,7093,7097,7135,7140,7164,7169,7192,7197,7218,7242,7246,7251,7262],{"__ignoreMap":2159},[2163,7051,7052,7055,7057,7060,7062,7065,7067,7069],{"class":2165,"line":2166},[2163,7053,7054],{"class":2218},"import",[2163,7056,2205],{"class":2169},[2163,7058,7059],{"class":2208}," appendResponseHeader",[2163,7061,2910],{"class":2169},[2163,7063,7064],{"class":2218}," from",[2163,7066,2302],{"class":2169},[2163,7068,2491],{"class":2190},[2163,7070,5483],{"class":2169},[2163,7072,7073,7075,7078,7080,7083,7085,7087,7089,7091],{"class":2165,"line":2199},[2163,7074,7054],{"class":2218},[2163,7076,7077],{"class":2218}," type",[2163,7079,2205],{"class":2169},[2163,7081,7082],{"class":2208}," H3Event",[2163,7084,2910],{"class":2169},[2163,7086,7064],{"class":2218},[2163,7088,2302],{"class":2169},[2163,7090,2491],{"class":2190},[2163,7092,5483],{"class":2169},[2163,7094,7095],{"class":2165,"line":2240},[2163,7096,2243],{"emptyLinePlaceholder":1196},[2163,7098,7099,7101,7104,7107,7109,7111,7113,7115,7117,7119,7121,7124,7126,7129,7131,7133],{"class":2165,"line":2246},[2163,7100,2778],{"class":2218},[2163,7102,7103],{"class":2177}," const",[2163,7105,7106],{"class":2208}," fetchWithCookie ",[2163,7108,2184],{"class":2169},[2163,7110,3548],{"class":2177},[2163,7112,3551],{"class":2169},[2163,7114,2790],{"class":2789},[2163,7116,2299],{"class":2169},[2163,7118,7082],{"class":3593},[2163,7120,2288],{"class":2169},[2163,7122,7123],{"class":2789}," url",[2163,7125,2299],{"class":2169},[2163,7127,7128],{"class":3593}," string",[2163,7130,3627],{"class":2169},[2163,7132,2793],{"class":2177},[2163,7134,2260],{"class":2169},[2163,7136,7137],{"class":2165,"line":2263},[2163,7138,7139],{"class":2326},"  /* Get the response from the server endpoint */\n",[2163,7141,7142,7144,7146,7148,7150,7152,7154,7157,7159,7162],{"class":2165,"line":2293},[2163,7143,2266],{"class":2177},[2163,7145,2269],{"class":2208},[2163,7147,2215],{"class":2169},[2163,7149,2219],{"class":2218},[2163,7151,2276],{"class":2208},[2163,7153,2045],{"class":2169},[2163,7155,7156],{"class":2222},"raw",[2163,7158,2226],{"class":2173},[2163,7160,7161],{"class":2208},"url",[2163,7163,2237],{"class":2173},[2163,7165,7166],{"class":2165,"line":2313},[2163,7167,7168],{"class":2326},"  /* Get the cookies from the response */\n",[2163,7170,7171,7173,7176,7178,7180,7182,7185,7187,7190],{"class":2165,"line":2323},[2163,7172,2266],{"class":2177},[2163,7174,7175],{"class":2208}," cookies",[2163,7177,2215],{"class":2169},[2163,7179,2269],{"class":2208},[2163,7181,2045],{"class":2169},[2163,7183,7184],{"class":2208},"headers",[2163,7186,2045],{"class":2169},[2163,7188,7189],{"class":2222},"getSetCookie",[2163,7191,3755],{"class":2173},[2163,7193,7194],{"class":2165,"line":2330},[2163,7195,7196],{"class":2326},"  /* Attach each cookie to our incoming Request */\n",[2163,7198,7199,7202,7204,7206,7209,7212,7214,7216],{"class":2165,"line":2336},[2163,7200,7201],{"class":2218},"  for",[2163,7203,3551],{"class":2173},[2163,7205,2202],{"class":2177},[2163,7207,7208],{"class":2208}," cookie",[2163,7210,7211],{"class":2169}," of",[2163,7213,7175],{"class":2208},[2163,7215,5816],{"class":2173},[2163,7217,5819],{"class":2169},[2163,7219,7220,7223,7225,7227,7229,7231,7234,7236,7238,7240],{"class":2165,"line":2344},[2163,7221,7222],{"class":2222},"    appendResponseHeader",[2163,7224,2226],{"class":2173},[2163,7226,2790],{"class":2208},[2163,7228,2288],{"class":2169},[2163,7230,2302],{"class":2169},[2163,7232,7233],{"class":2190},"set-cookie",[2163,7235,2229],{"class":2169},[2163,7237,2288],{"class":2169},[2163,7239,7208],{"class":2208},[2163,7241,2237],{"class":2173},[2163,7243,7244],{"class":2165,"line":2350},[2163,7245,5831],{"class":2169},[2163,7247,7248],{"class":2165,"line":2360},[2163,7249,7250],{"class":2326},"  /* Return the data of the response */\n",[2163,7252,7253,7255,7257,7259],{"class":2165,"line":2365},[2163,7254,2887],{"class":2218},[2163,7256,2269],{"class":2208},[2163,7258,2045],{"class":2169},[2163,7260,7261],{"class":2208},"_data\n",[2163,7263,7264],{"class":2165,"line":2375},[2163,7265,2347],{"class":2169},[2153,7267,7269],{"className":2155,"code":7268,"language":2158,"meta":2159,"style":2159},"\u003Cscript setup lang=\"ts\">\n// This composable will automatically pass cookies to the client\nconst event = useRequestEvent()\n\nconst { data: result } = await useAsyncData(() => fetchWithCookie(event!, '/api/with-cookie'))\n\nonMounted(() => console.log(document.cookie))\n\u003C/script>\n",[2034,7270,7271,7291,7296,7310,7314,7359,7363,7390],{"__ignoreMap":2159},[2163,7272,7273,7275,7277,7279,7281,7283,7285,7287,7289],{"class":2165,"line":2166},[2163,7274,2170],{"class":2169},[2163,7276,2174],{"class":2173},[2163,7278,2178],{"class":2177},[2163,7280,2181],{"class":2177},[2163,7282,2184],{"class":2169},[2163,7284,2187],{"class":2169},[2163,7286,2191],{"class":2190},[2163,7288,2187],{"class":2169},[2163,7290,2196],{"class":2169},[2163,7292,7293],{"class":2165,"line":2199},[2163,7294,7295],{"class":2326},"// This composable will automatically pass cookies to the client\n",[2163,7297,7298,7300,7303,7305,7308],{"class":2165,"line":2240},[2163,7299,2202],{"class":2177},[2163,7301,7302],{"class":2208}," event ",[2163,7304,2184],{"class":2169},[2163,7306,7307],{"class":2222}," useRequestEvent",[2163,7309,3755],{"class":2208},[2163,7311,7312],{"class":2165,"line":2246},[2163,7313,2243],{"emptyLinePlaceholder":1196},[2163,7315,7316,7318,7320,7322,7324,7327,7329,7331,7333,7335,7337,7339,7341,7344,7347,7350,7352,7355,7357],{"class":2165,"line":2263},[2163,7317,2202],{"class":2177},[2163,7319,2205],{"class":2169},[2163,7321,3028],{"class":2173},[2163,7323,2299],{"class":2169},[2163,7325,7326],{"class":2208}," result ",[2163,7328,2212],{"class":2169},[2163,7330,2215],{"class":2169},[2163,7332,2219],{"class":2218},[2163,7334,3217],{"class":2222},[2163,7336,2226],{"class":2208},[2163,7338,3280],{"class":2169},[2163,7340,2793],{"class":2177},[2163,7342,7343],{"class":2222}," fetchWithCookie",[2163,7345,7346],{"class":2208},"(event",[2163,7348,7349],{"class":2169},"!,",[2163,7351,2302],{"class":2169},[2163,7353,7354],{"class":2190},"/api/with-cookie",[2163,7356,2229],{"class":2169},[2163,7358,3246],{"class":2208},[2163,7360,7361],{"class":2165,"line":2293},[2163,7362,2243],{"emptyLinePlaceholder":1196},[2163,7364,7365,7368,7370,7372,7374,7377,7379,7382,7385,7387],{"class":2165,"line":2313},[2163,7366,7367],{"class":2222},"onMounted",[2163,7369,2226],{"class":2208},[2163,7371,3280],{"class":2169},[2163,7373,2793],{"class":2177},[2163,7375,7376],{"class":2208}," console",[2163,7378,2045],{"class":2169},[2163,7380,7381],{"class":2222},"log",[2163,7383,7384],{"class":2208},"(document",[2163,7386,2045],{"class":2169},[2163,7388,7389],{"class":2208},"cookie))\n",[2163,7391,7392,7394,7396],{"class":2165,"line":2323},[2163,7393,2353],{"class":2169},[2163,7395,2174],{"class":2173},[2163,7397,2196],{"class":2169},[2093,7399,7401],{"id":7400},"options-api-support","Options API Support",[2030,7403,7404,7405,7408,7409,7411],{},"Nuxt provides a way to perform ",[2034,7406,7407],{},"asyncData"," fetching within the Options API. You must wrap your component definition within ",[2034,7410,666],{}," for this to work.",[2153,7413,7415],{"className":2155,"code":7414,"language":2158,"meta":2159,"style":2159},"\u003Cscript>\nexport default defineNuxtComponent({\n  /* Use the fetchKey option to provide a unique key */\n  fetchKey: 'hello',\n  async asyncData () {\n    return {\n      hello: await $fetch('/api/hello'),\n    }\n  },\n})\n\u003C/script>\n",[2034,7416,7417,7425,7438,7443,7459,7471,7477,7501,7506,7510,7516],{"__ignoreMap":2159},[2163,7418,7419,7421,7423],{"class":2165,"line":2166},[2163,7420,2170],{"class":2169},[2163,7422,2174],{"class":2173},[2163,7424,2196],{"class":2169},[2163,7426,7427,7429,7431,7434,7436],{"class":2165,"line":2199},[2163,7428,2778],{"class":2218},[2163,7430,2781],{"class":2218},[2163,7432,7433],{"class":2222}," defineNuxtComponent",[2163,7435,2226],{"class":2208},[2163,7437,5819],{"class":2169},[2163,7439,7440],{"class":2165,"line":2240},[2163,7441,7442],{"class":2326},"  /* Use the fetchKey option to provide a unique key */\n",[2163,7444,7445,7448,7450,7452,7455,7457],{"class":2165,"line":2246},[2163,7446,7447],{"class":2173},"  fetchKey",[2163,7449,2299],{"class":2169},[2163,7451,2302],{"class":2169},[2163,7453,7454],{"class":2190},"hello",[2163,7456,2229],{"class":2169},[2163,7458,2310],{"class":2169},[2163,7460,7461,7464,7467,7469],{"class":2165,"line":2263},[2163,7462,7463],{"class":2177},"  async",[2163,7465,7466],{"class":2173}," asyncData",[2163,7468,2257],{"class":2169},[2163,7470,2260],{"class":2169},[2163,7472,7473,7475],{"class":2165,"line":2293},[2163,7474,4640],{"class":2218},[2163,7476,2260],{"class":2169},[2163,7478,7479,7482,7484,7486,7488,7490,7492,7495,7497,7499],{"class":2165,"line":2313},[2163,7480,7481],{"class":2173},"      hello",[2163,7483,2299],{"class":2169},[2163,7485,2219],{"class":2218},[2163,7487,2276],{"class":2222},[2163,7489,2226],{"class":2173},[2163,7491,2229],{"class":2169},[2163,7493,7494],{"class":2190},"/api/hello",[2163,7496,2229],{"class":2169},[2163,7498,3627],{"class":2173},[2163,7500,2310],{"class":2169},[2163,7502,7503],{"class":2165,"line":2323},[2163,7504,7505],{"class":2169},"    }\n",[2163,7507,7508],{"class":2165,"line":2330},[2163,7509,4694],{"class":2169},[2163,7511,7512,7514],{"class":2165,"line":2336},[2163,7513,2212],{"class":2169},[2163,7515,2237],{"class":2208},[2163,7517,7518,7520,7522],{"class":2165,"line":2344},[2163,7519,2353],{"class":2169},[2163,7521,2174],{"class":2173},[2163,7523,2196],{"class":2169},[2507,7525,7526],{},[2030,7527,7528,7529,4782,7531,7534],{},"Using ",[2034,7530,3915],{},[2034,7532,7533],{},"\u003Cscript setup lang=\"ts\">"," are the recommended way of declaring Vue components in Nuxt.",[2677,7536],{"to":1579},[2093,7538,7540],{"id":7539},"serializing-data-from-server-to-client","Serializing Data From Server to Client",[2030,7542,7543,7544,2042,7546,7548,7549,7552,7553,7560,7561,2036,7564,2036,7567,2036,7570,2042,7573,7576],{},"When using ",[2034,7545,515],{},[2034,7547,543],{}," to transfer data fetched on server to the client (as well as anything else that utilizes ",[2038,7550,7551],{"href":2127},"the Nuxt payload","), the payload is serialized with ",[2038,7554,7557],{"href":7555,"rel":7556},"https://github.com/sveltejs/devalue",[2145],[2034,7558,7559],{},"devalue",". This allows us to transfer not just basic JSON but also to serialize and revive/deserialize more advanced kinds of data, such as regular expressions, Dates, Map and Set, ",[2034,7562,7563],{},"ref",[2034,7565,7566],{},"reactive",[2034,7568,7569],{},"shallowRef",[2034,7571,7572],{},"shallowReactive",[2034,7574,7575],{},"NuxtError"," - and more.",[2030,7578,7579,7580,7584],{},"It is also possible to define your own serializer/deserializer for types that are not supported by Nuxt. You can read more in the ",[2038,7581,7582],{"href":2127},[2034,7583,555],{}," docs.",[2507,7586,7587],{},[2030,7588,7589,7590,7593,7594,4782,7596,7598],{},"Note that this ",[3932,7591,7592],{},"does not apply"," to data passed from your server routes when fetched with ",[2034,7595,630],{},[2034,7597,527],{}," - see the next section for more information.",[2093,7600,7602],{"id":7601},"serializing-data-from-api-routes","Serializing Data From API Routes",[2030,7604,7605,7606,7608,7609,7612,7613,2042,7615,7619],{},"When fetching data from the ",[2034,7607,185],{}," directory, the response is serialized using ",[2034,7610,7611],{},"JSON.stringify",". However, since serialization is limited to only JavaScript primitive types, Nuxt does its best to convert the return type of ",[2034,7614,630],{},[2038,7616,7617],{"href":1476},[2034,7618,527],{}," to match the actual value.",[2677,7621,7625],{"to":7622,"icon":7623,"target":7624},"https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#description","i-simple-icons-mdnwebdocs","_blank",[2030,7626,7627,7628,7630],{},"Learn more about ",[2034,7629,7611],{}," limitations.",[2491,7632,7634],{"id":7633},"example","Example",[2153,7636,7639],{"className":2765,"code":7637,"filename":7638,"language":2191,"meta":2159,"style":2159},"export default defineEventHandler(() => {\n  return new Date()\n})\n","server/api/foo.ts",[2034,7640,7641,7657,7669],{"__ignoreMap":2159},[2163,7642,7643,7645,7647,7649,7651,7653,7655],{"class":2165,"line":2166},[2163,7644,2778],{"class":2218},[2163,7646,2781],{"class":2218},[2163,7648,2784],{"class":2222},[2163,7650,2226],{"class":2208},[2163,7652,3280],{"class":2169},[2163,7654,2793],{"class":2177},[2163,7656,2260],{"class":2169},[2163,7658,7659,7661,7664,7667],{"class":2165,"line":2199},[2163,7660,2887],{"class":2218},[2163,7662,7663],{"class":2169}," new",[2163,7665,7666],{"class":2222}," Date",[2163,7668,3755],{"class":2173},[2163,7670,7671,7673],{"class":2165,"line":2240},[2163,7672,2212],{"class":2169},[2163,7674,2237],{"class":2208},[2153,7676,7678],{"className":2155,"code":7677,"filename":2157,"language":2158,"meta":2159,"style":2159},"\u003Cscript setup lang=\"ts\">\n// Type of `data` is inferred as string even though we returned a Date object\nconst { data } = await useFetch('/api/foo')\n\u003C/script>\n",[2034,7679,7680,7700,7705,7732],{"__ignoreMap":2159},[2163,7681,7682,7684,7686,7688,7690,7692,7694,7696,7698],{"class":2165,"line":2166},[2163,7683,2170],{"class":2169},[2163,7685,2174],{"class":2173},[2163,7687,2178],{"class":2177},[2163,7689,2181],{"class":2177},[2163,7691,2184],{"class":2169},[2163,7693,2187],{"class":2169},[2163,7695,2191],{"class":2190},[2163,7697,2187],{"class":2169},[2163,7699,2196],{"class":2169},[2163,7701,7702],{"class":2165,"line":2199},[2163,7703,7704],{"class":2326},"// Type of `data` is inferred as string even though we returned a Date object\n",[2163,7706,7707,7709,7711,7713,7715,7717,7719,7721,7723,7725,7728,7730],{"class":2165,"line":2240},[2163,7708,2202],{"class":2177},[2163,7710,2205],{"class":2169},[2163,7712,2209],{"class":2208},[2163,7714,2212],{"class":2169},[2163,7716,2215],{"class":2169},[2163,7718,2219],{"class":2218},[2163,7720,2223],{"class":2222},[2163,7722,2226],{"class":2208},[2163,7724,2229],{"class":2169},[2163,7726,7727],{"class":2190},"/api/foo",[2163,7729,2229],{"class":2169},[2163,7731,2237],{"class":2208},[2163,7733,7734,7736,7738],{"class":2165,"line":2246},[2163,7735,2353],{"class":2169},[2163,7737,2174],{"class":2173},[2163,7739,2196],{"class":2169},[2491,7741,7743],{"id":7742},"custom-serializer-function","Custom serializer function",[2030,7745,7746,7747,7750,7751,7753],{},"To customize the serialization behavior, you can define a ",[2034,7748,7749],{},"toJSON"," function on your returned object. If you define a ",[2034,7752,7749],{}," method, Nuxt will respect the return type of the function and will not try to convert the types.",[2153,7755,7758],{"className":2765,"code":7756,"filename":7757,"language":2191,"meta":2159,"style":2159},"export default defineEventHandler(() => {\n  const data = {\n    createdAt: new Date(),\n\n    toJSON () {\n      return {\n        createdAt: {\n          year: this.createdAt.getFullYear(),\n          month: this.createdAt.getMonth(),\n          day: this.createdAt.getDate(),\n        },\n      }\n    },\n  }\n  return data\n})\n","server/api/bar.ts",[2034,7759,7760,7776,7786,7801,7805,7814,7821,7830,7852,7872,7892,7897,7902,7906,7910,7917],{"__ignoreMap":2159},[2163,7761,7762,7764,7766,7768,7770,7772,7774],{"class":2165,"line":2166},[2163,7763,2778],{"class":2218},[2163,7765,2781],{"class":2218},[2163,7767,2784],{"class":2222},[2163,7769,2226],{"class":2208},[2163,7771,3280],{"class":2169},[2163,7773,2793],{"class":2177},[2163,7775,2260],{"class":2169},[2163,7777,7778,7780,7782,7784],{"class":2165,"line":2199},[2163,7779,2266],{"class":2177},[2163,7781,3028],{"class":2208},[2163,7783,2215],{"class":2169},[2163,7785,2260],{"class":2169},[2163,7787,7788,7791,7793,7795,7797,7799],{"class":2165,"line":2240},[2163,7789,7790],{"class":2173},"    createdAt",[2163,7792,2299],{"class":2169},[2163,7794,7663],{"class":2169},[2163,7796,7666],{"class":2222},[2163,7798,3280],{"class":2173},[2163,7800,2310],{"class":2169},[2163,7802,7803],{"class":2165,"line":2246},[2163,7804,2243],{"emptyLinePlaceholder":1196},[2163,7806,7807,7810,7812],{"class":2165,"line":2263},[2163,7808,7809],{"class":2173},"    toJSON ",[2163,7811,3280],{"class":2169},[2163,7813,2260],{"class":2169},[2163,7815,7816,7819],{"class":2165,"line":2293},[2163,7817,7818],{"class":2218},"      return",[2163,7820,2260],{"class":2169},[2163,7822,7823,7826,7828],{"class":2165,"line":2313},[2163,7824,7825],{"class":2173},"        createdAt",[2163,7827,2299],{"class":2169},[2163,7829,2260],{"class":2169},[2163,7831,7832,7835,7837,7840,7843,7845,7848,7850],{"class":2165,"line":2323},[2163,7833,7834],{"class":2173},"          year",[2163,7836,2299],{"class":2169},[2163,7838,7839],{"class":2169}," this.",[2163,7841,7842],{"class":2208},"createdAt",[2163,7844,2045],{"class":2169},[2163,7846,7847],{"class":2222},"getFullYear",[2163,7849,3280],{"class":2173},[2163,7851,2310],{"class":2169},[2163,7853,7854,7857,7859,7861,7863,7865,7868,7870],{"class":2165,"line":2330},[2163,7855,7856],{"class":2173},"          month",[2163,7858,2299],{"class":2169},[2163,7860,7839],{"class":2169},[2163,7862,7842],{"class":2208},[2163,7864,2045],{"class":2169},[2163,7866,7867],{"class":2222},"getMonth",[2163,7869,3280],{"class":2173},[2163,7871,2310],{"class":2169},[2163,7873,7874,7877,7879,7881,7883,7885,7888,7890],{"class":2165,"line":2336},[2163,7875,7876],{"class":2173},"          day",[2163,7878,2299],{"class":2169},[2163,7880,7839],{"class":2169},[2163,7882,7842],{"class":2208},[2163,7884,2045],{"class":2169},[2163,7886,7887],{"class":2222},"getDate",[2163,7889,3280],{"class":2173},[2163,7891,2310],{"class":2169},[2163,7893,7894],{"class":2165,"line":2344},[2163,7895,7896],{"class":2169},"        },\n",[2163,7898,7899],{"class":2165,"line":2350},[2163,7900,7901],{"class":2169},"      }\n",[2163,7903,7904],{"class":2165,"line":2360},[2163,7905,2333],{"class":2169},[2163,7907,7908],{"class":2165,"line":2365},[2163,7909,5831],{"class":2169},[2163,7911,7912,7914],{"class":2165,"line":2375},[2163,7913,2887],{"class":2218},[2163,7915,7916],{"class":2208}," data\n",[2163,7918,7919,7921],{"class":2165,"line":2398},[2163,7920,2212],{"class":2169},[2163,7922,2237],{"class":2208},[2153,7924,7926],{"className":2155,"code":7925,"filename":2157,"language":2158,"meta":2159,"style":2159},"\u003Cscript setup lang=\"ts\">\n// Type of `data` is inferred as\n// {\n//   createdAt: {\n//     year: number\n//     month: number\n//     day: number\n//   }\n// }\nconst { data } = await useFetch('/api/bar')\n\u003C/script>\n",[2034,7927,7928,7948,7953,7958,7963,7968,7973,7978,7983,7988,8015],{"__ignoreMap":2159},[2163,7929,7930,7932,7934,7936,7938,7940,7942,7944,7946],{"class":2165,"line":2166},[2163,7931,2170],{"class":2169},[2163,7933,2174],{"class":2173},[2163,7935,2178],{"class":2177},[2163,7937,2181],{"class":2177},[2163,7939,2184],{"class":2169},[2163,7941,2187],{"class":2169},[2163,7943,2191],{"class":2190},[2163,7945,2187],{"class":2169},[2163,7947,2196],{"class":2169},[2163,7949,7950],{"class":2165,"line":2199},[2163,7951,7952],{"class":2326},"// Type of `data` is inferred as\n",[2163,7954,7955],{"class":2165,"line":2240},[2163,7956,7957],{"class":2326},"// {\n",[2163,7959,7960],{"class":2165,"line":2246},[2163,7961,7962],{"class":2326},"//   createdAt: {\n",[2163,7964,7965],{"class":2165,"line":2263},[2163,7966,7967],{"class":2326},"//     year: number\n",[2163,7969,7970],{"class":2165,"line":2293},[2163,7971,7972],{"class":2326},"//     month: number\n",[2163,7974,7975],{"class":2165,"line":2313},[2163,7976,7977],{"class":2326},"//     day: number\n",[2163,7979,7980],{"class":2165,"line":2323},[2163,7981,7982],{"class":2326},"//   }\n",[2163,7984,7985],{"class":2165,"line":2330},[2163,7986,7987],{"class":2326},"// }\n",[2163,7989,7990,7992,7994,7996,7998,8000,8002,8004,8006,8008,8011,8013],{"class":2165,"line":2336},[2163,7991,2202],{"class":2177},[2163,7993,2205],{"class":2169},[2163,7995,2209],{"class":2208},[2163,7997,2212],{"class":2169},[2163,7999,2215],{"class":2169},[2163,8001,2219],{"class":2218},[2163,8003,2223],{"class":2222},[2163,8005,2226],{"class":2208},[2163,8007,2229],{"class":2169},[2163,8009,8010],{"class":2190},"/api/bar",[2163,8012,2229],{"class":2169},[2163,8014,2237],{"class":2208},[2163,8016,8017,8019,8021],{"class":2165,"line":2344},[2163,8018,2353],{"class":2169},[2163,8020,2174],{"class":2173},[2163,8022,2196],{"class":2169},[2491,8024,8026],{"id":8025},"using-an-alternative-serializer","Using an alternative serializer",[2030,8028,8029,8030,8032,8033,8035],{},"Nuxt does not currently support an alternative serializer to ",[2034,8031,7611],{},". However, you can return your payload as a normal string and utilize the ",[2034,8034,7749],{}," method to maintain type safety.",[2030,8037,8038,8039,8044],{},"In the example below, we use ",[2038,8040,8043],{"href":8041,"rel":8042},"https://github.com/flightcontrolhq/superjson",[2145],"superjson"," as our serializer.",[2153,8046,8049],{"className":2765,"code":8047,"filename":8048,"language":2191,"meta":2159,"style":2159},"import superjson from 'superjson'\n\nexport default defineEventHandler(() => {\n  const data = {\n    createdAt: new Date(),\n\n    // Workaround the type conversion\n    toJSON () {\n      return this\n    },\n  }\n\n  // Serialize the output to string, using superjson\n  return superjson.stringify(data) as unknown as typeof data\n})\n","server/api/superjson.ts",[2034,8050,8051,8067,8071,8087,8097,8111,8115,8120,8128,8135,8139,8143,8147,8152,8184],{"__ignoreMap":2159},[2163,8052,8053,8055,8058,8061,8063,8065],{"class":2165,"line":2166},[2163,8054,7054],{"class":2218},[2163,8056,8057],{"class":2208}," superjson ",[2163,8059,8060],{"class":2218},"from",[2163,8062,2302],{"class":2169},[2163,8064,8043],{"class":2190},[2163,8066,5483],{"class":2169},[2163,8068,8069],{"class":2165,"line":2199},[2163,8070,2243],{"emptyLinePlaceholder":1196},[2163,8072,8073,8075,8077,8079,8081,8083,8085],{"class":2165,"line":2240},[2163,8074,2778],{"class":2218},[2163,8076,2781],{"class":2218},[2163,8078,2784],{"class":2222},[2163,8080,2226],{"class":2208},[2163,8082,3280],{"class":2169},[2163,8084,2793],{"class":2177},[2163,8086,2260],{"class":2169},[2163,8088,8089,8091,8093,8095],{"class":2165,"line":2246},[2163,8090,2266],{"class":2177},[2163,8092,3028],{"class":2208},[2163,8094,2215],{"class":2169},[2163,8096,2260],{"class":2169},[2163,8098,8099,8101,8103,8105,8107,8109],{"class":2165,"line":2263},[2163,8100,7790],{"class":2173},[2163,8102,2299],{"class":2169},[2163,8104,7663],{"class":2169},[2163,8106,7666],{"class":2222},[2163,8108,3280],{"class":2173},[2163,8110,2310],{"class":2169},[2163,8112,8113],{"class":2165,"line":2293},[2163,8114,2243],{"emptyLinePlaceholder":1196},[2163,8116,8117],{"class":2165,"line":2313},[2163,8118,8119],{"class":2326},"    // Workaround the type conversion\n",[2163,8121,8122,8124,8126],{"class":2165,"line":2323},[2163,8123,7809],{"class":2173},[2163,8125,3280],{"class":2169},[2163,8127,2260],{"class":2169},[2163,8129,8130,8132],{"class":2165,"line":2330},[2163,8131,7818],{"class":2218},[2163,8133,8134],{"class":2169}," this\n",[2163,8136,8137],{"class":2165,"line":2336},[2163,8138,2333],{"class":2169},[2163,8140,8141],{"class":2165,"line":2344},[2163,8142,5831],{"class":2169},[2163,8144,8145],{"class":2165,"line":2350},[2163,8146,2243],{"emptyLinePlaceholder":1196},[2163,8148,8149],{"class":2165,"line":2360},[2163,8150,8151],{"class":2326},"  // Serialize the output to string, using superjson\n",[2163,8153,8154,8156,8159,8161,8164,8166,8168,8170,8173,8176,8179,8182],{"class":2165,"line":2365},[2163,8155,2887],{"class":2218},[2163,8157,8158],{"class":2208}," superjson",[2163,8160,2045],{"class":2169},[2163,8162,8163],{"class":2222},"stringify",[2163,8165,2226],{"class":2173},[2163,8167,3830],{"class":2208},[2163,8169,5816],{"class":2173},[2163,8171,8172],{"class":2218},"as",[2163,8174,8175],{"class":3593}," unknown",[2163,8177,8178],{"class":2218}," as",[2163,8180,8181],{"class":2169}," typeof",[2163,8183,7916],{"class":2208},[2163,8185,8186,8188],{"class":2165,"line":2375},[2163,8187,2212],{"class":2169},[2163,8189,2237],{"class":2208},[2153,8191,8193],{"className":2155,"code":8192,"filename":2157,"language":2158,"meta":2159,"style":2159},"\u003Cscript setup lang=\"ts\">\nimport superjson from 'superjson'\n\n// `date` is inferred as { createdAt: Date } and you can safely use the Date object methods\nconst { data } = await useFetch('/api/superjson', {\n  transform: (value) => {\n    return superjson.parse(value as unknown as string)\n  },\n})\n\u003C/script>\n",[2034,8194,8195,8215,8229,8233,8238,8267,8283,8308,8312,8318],{"__ignoreMap":2159},[2163,8196,8197,8199,8201,8203,8205,8207,8209,8211,8213],{"class":2165,"line":2166},[2163,8198,2170],{"class":2169},[2163,8200,2174],{"class":2173},[2163,8202,2178],{"class":2177},[2163,8204,2181],{"class":2177},[2163,8206,2184],{"class":2169},[2163,8208,2187],{"class":2169},[2163,8210,2191],{"class":2190},[2163,8212,2187],{"class":2169},[2163,8214,2196],{"class":2169},[2163,8216,8217,8219,8221,8223,8225,8227],{"class":2165,"line":2199},[2163,8218,7054],{"class":2218},[2163,8220,8057],{"class":2208},[2163,8222,8060],{"class":2218},[2163,8224,2302],{"class":2169},[2163,8226,8043],{"class":2190},[2163,8228,5483],{"class":2169},[2163,8230,8231],{"class":2165,"line":2240},[2163,8232,2243],{"emptyLinePlaceholder":1196},[2163,8234,8235],{"class":2165,"line":2246},[2163,8236,8237],{"class":2326},"// `date` is inferred as { createdAt: Date } and you can safely use the Date object methods\n",[2163,8239,8240,8242,8244,8246,8248,8250,8252,8254,8256,8258,8261,8263,8265],{"class":2165,"line":2263},[2163,8241,2202],{"class":2177},[2163,8243,2205],{"class":2169},[2163,8245,2209],{"class":2208},[2163,8247,2212],{"class":2169},[2163,8249,2215],{"class":2169},[2163,8251,2219],{"class":2218},[2163,8253,2223],{"class":2222},[2163,8255,2226],{"class":2208},[2163,8257,2229],{"class":2169},[2163,8259,8260],{"class":2190},"/api/superjson",[2163,8262,2229],{"class":2169},[2163,8264,2288],{"class":2169},[2163,8266,2260],{"class":2169},[2163,8268,8269,8271,8273,8275,8277,8279,8281],{"class":2165,"line":2293},[2163,8270,4622],{"class":2222},[2163,8272,2299],{"class":2169},[2163,8274,3551],{"class":2169},[2163,8276,5420],{"class":2789},[2163,8278,3627],{"class":2169},[2163,8280,2793],{"class":2177},[2163,8282,2260],{"class":2169},[2163,8284,8285,8287,8289,8291,8294,8296,8298,8300,8302,8304,8306],{"class":2165,"line":2313},[2163,8286,4640],{"class":2218},[2163,8288,8158],{"class":2208},[2163,8290,2045],{"class":2169},[2163,8292,8293],{"class":2222},"parse",[2163,8295,2226],{"class":2173},[2163,8297,5420],{"class":2208},[2163,8299,8178],{"class":2218},[2163,8301,8175],{"class":3593},[2163,8303,8178],{"class":2218},[2163,8305,7128],{"class":3593},[2163,8307,2237],{"class":2173},[2163,8309,8310],{"class":2165,"line":2323},[2163,8311,4694],{"class":2169},[2163,8313,8314,8316],{"class":2165,"line":2330},[2163,8315,2212],{"class":2169},[2163,8317,2237],{"class":2208},[2163,8319,8320,8322,8324],{"class":2165,"line":2336},[2163,8321,2353],{"class":2169},[2163,8323,2174],{"class":2173},[2163,8325,2196],{"class":2169},[2093,8327,357],{"id":8328},"recipes",[2491,8330,8332],{"id":8331},"consuming-sse-server-sent-events-via-post-request","Consuming SSE (Server-Sent Events) via POST request",[2136,8334,8335],{},[2030,8336,8337,8338,8345,8346,2045],{},"If you're consuming SSE via GET request, you can use ",[2038,8339,8342],{"href":8340,"rel":8341},"https://developer.mozilla.org/en-US/docs/Web/API/EventSource",[2145],[2034,8343,8344],{},"EventSource"," or VueUse composable ",[2038,8347,8350],{"href":8348,"rel":8349},"https://vueuse.org/core/useeventsource/",[2145],[2034,8351,8352],{},"useEventSource",[2030,8354,8355],{},"When consuming SSE via POST request, you need to handle the connection manually. Here's how you can do it:",[2153,8357,8359],{"className":2765,"code":8358,"language":2191,"meta":2159,"style":2159},"// Make a POST request to the SSE endpoint\nconst response = await $fetch\u003CReadableStream>('/chats/ask-ai', {\n  method: 'POST',\n  body: {\n    query: 'Hello AI, how are you?',\n  },\n  responseType: 'stream',\n})\n\n// Create a new ReadableStream from the response with TextDecoderStream to get the data as text\nconst reader = response.pipeThrough(new TextDecoderStream()).getReader()\n\n// Read the chunk of data as we get it\nwhile (true) {\n  const { value, done } = await reader.read()\n\n  if (done) { break }\n\n  console.log('Received:', value)\n}\n",[2034,8360,8361,8366,8399,8414,8423,8439,8443,8459,8465,8469,8474,8509,8513,8518,8532,8561,8565,8583,8587,8611],{"__ignoreMap":2159},[2163,8362,8363],{"class":2165,"line":2166},[2163,8364,8365],{"class":2326},"// Make a POST request to the SSE endpoint\n",[2163,8367,8368,8370,8373,8375,8377,8379,8381,8384,8386,8388,8390,8393,8395,8397],{"class":2165,"line":2199},[2163,8369,2202],{"class":2177},[2163,8371,8372],{"class":2208}," response ",[2163,8374,2184],{"class":2169},[2163,8376,2219],{"class":2218},[2163,8378,2276],{"class":2222},[2163,8380,2170],{"class":2169},[2163,8382,8383],{"class":3593},"ReadableStream",[2163,8385,3081],{"class":2169},[2163,8387,2226],{"class":2208},[2163,8389,2229],{"class":2169},[2163,8391,8392],{"class":2190},"/chats/ask-ai",[2163,8394,2229],{"class":2169},[2163,8396,2288],{"class":2169},[2163,8398,2260],{"class":2169},[2163,8400,8401,8404,8406,8408,8410,8412],{"class":2165,"line":2240},[2163,8402,8403],{"class":2173},"  method",[2163,8405,2299],{"class":2169},[2163,8407,2302],{"class":2169},[2163,8409,2305],{"class":2190},[2163,8411,2229],{"class":2169},[2163,8413,2310],{"class":2169},[2163,8415,8416,8419,8421],{"class":2165,"line":2246},[2163,8417,8418],{"class":2173},"  body",[2163,8420,2299],{"class":2169},[2163,8422,2260],{"class":2169},[2163,8424,8425,8428,8430,8432,8435,8437],{"class":2165,"line":2263},[2163,8426,8427],{"class":2173},"    query",[2163,8429,2299],{"class":2169},[2163,8431,2302],{"class":2169},[2163,8433,8434],{"class":2190},"Hello AI, how are you?",[2163,8436,2229],{"class":2169},[2163,8438,2310],{"class":2169},[2163,8440,8441],{"class":2165,"line":2293},[2163,8442,4694],{"class":2169},[2163,8444,8445,8448,8450,8452,8455,8457],{"class":2165,"line":2313},[2163,8446,8447],{"class":2173},"  responseType",[2163,8449,2299],{"class":2169},[2163,8451,2302],{"class":2169},[2163,8453,8454],{"class":2190},"stream",[2163,8456,2229],{"class":2169},[2163,8458,2310],{"class":2169},[2163,8460,8461,8463],{"class":2165,"line":2323},[2163,8462,2212],{"class":2169},[2163,8464,2237],{"class":2208},[2163,8466,8467],{"class":2165,"line":2330},[2163,8468,2243],{"emptyLinePlaceholder":1196},[2163,8470,8471],{"class":2165,"line":2336},[2163,8472,8473],{"class":2326},"// Create a new ReadableStream from the response with TextDecoderStream to get the data as text\n",[2163,8475,8476,8478,8481,8483,8486,8488,8491,8493,8496,8499,8502,8504,8507],{"class":2165,"line":2344},[2163,8477,2202],{"class":2177},[2163,8479,8480],{"class":2208}," reader ",[2163,8482,2184],{"class":2169},[2163,8484,8485],{"class":2208}," response",[2163,8487,2045],{"class":2169},[2163,8489,8490],{"class":2222},"pipeThrough",[2163,8492,2226],{"class":2208},[2163,8494,8495],{"class":2169},"new",[2163,8497,8498],{"class":2222}," TextDecoderStream",[2163,8500,8501],{"class":2208},"())",[2163,8503,2045],{"class":2169},[2163,8505,8506],{"class":2222},"getReader",[2163,8508,3755],{"class":2208},[2163,8510,8511],{"class":2165,"line":2350},[2163,8512,2243],{"emptyLinePlaceholder":1196},[2163,8514,8515],{"class":2165,"line":2360},[2163,8516,8517],{"class":2326},"// Read the chunk of data as we get it\n",[2163,8519,8520,8523,8525,8528,8530],{"class":2165,"line":2365},[2163,8521,8522],{"class":2218},"while",[2163,8524,3551],{"class":2208},[2163,8526,8527],{"class":4043},"true",[2163,8529,5816],{"class":2208},[2163,8531,5819],{"class":2169},[2163,8533,8534,8536,8538,8540,8542,8545,8547,8549,8551,8554,8556,8559],{"class":2165,"line":2375},[2163,8535,2266],{"class":2177},[2163,8537,2205],{"class":2169},[2163,8539,4831],{"class":2208},[2163,8541,2288],{"class":2169},[2163,8543,8544],{"class":2208}," done",[2163,8546,2910],{"class":2169},[2163,8548,2215],{"class":2169},[2163,8550,2219],{"class":2218},[2163,8552,8553],{"class":2208}," reader",[2163,8555,2045],{"class":2169},[2163,8557,8558],{"class":2222},"read",[2163,8560,3755],{"class":2173},[2163,8562,8563],{"class":2165,"line":2398},[2163,8564,2243],{"emptyLinePlaceholder":1196},[2163,8566,8567,8569,8571,8574,8576,8578,8581],{"class":2165,"line":2404},[2163,8568,5800],{"class":2218},[2163,8570,3551],{"class":2173},[2163,8572,8573],{"class":2208},"done",[2163,8575,5816],{"class":2173},[2163,8577,4660],{"class":2169},[2163,8579,8580],{"class":2218}," break",[2163,8582,3679],{"class":2169},[2163,8584,8585],{"class":2165,"line":2414},[2163,8586,2243],{"emptyLinePlaceholder":1196},[2163,8588,8589,8592,8594,8596,8598,8600,8603,8605,8607,8609],{"class":2165,"line":2426},[2163,8590,8591],{"class":2208},"  console",[2163,8593,2045],{"class":2169},[2163,8595,7381],{"class":2222},[2163,8597,2226],{"class":2173},[2163,8599,2229],{"class":2169},[2163,8601,8602],{"class":2190},"Received:",[2163,8604,2229],{"class":2169},[2163,8606,2288],{"class":2169},[2163,8608,4831],{"class":2208},[2163,8610,2237],{"class":2173},[2163,8612,8613],{"class":2165,"line":2449},[2163,8614,2347],{"class":2169},[2491,8616,8618],{"id":8617},"making-parallel-requests","Making parallel requests",[2030,8620,8621,8622,8625],{},"When requests don't rely on each other, you can make them in parallel with ",[2034,8623,8624],{},"Promise.all()"," to boost performance.",[2153,8627,8629],{"className":2765,"code":8628,"language":2191,"meta":2159,"style":2159},"const { data } = await useAsyncData((_nuxtApp, { signal }) => {\n  return Promise.all([\n    $fetch('/api/comments/', { signal }),\n    $fetch('/api/author/12', { signal }),\n  ])\n})\n\nconst comments = computed(() => data.value?.[0])\nconst author = computed(() => data.value?.[1])\n",[2034,8630,8631,8665,8677,8702,8727,8731,8737,8741,8774],{"__ignoreMap":2159},[2163,8632,8633,8635,8637,8639,8641,8643,8645,8647,8649,8651,8653,8655,8657,8659,8661,8663],{"class":2165,"line":2166},[2163,8634,2202],{"class":2177},[2163,8636,2205],{"class":2169},[2163,8638,2209],{"class":2208},[2163,8640,2212],{"class":2169},[2163,8642,2215],{"class":2169},[2163,8644,2219],{"class":2218},[2163,8646,3217],{"class":2222},[2163,8648,2226],{"class":2208},[2163,8650,2226],{"class":2169},[2163,8652,3554],{"class":2789},[2163,8654,2288],{"class":2169},[2163,8656,2205],{"class":2169},[2163,8658,3561],{"class":2789},[2163,8660,3564],{"class":2169},[2163,8662,2793],{"class":2177},[2163,8664,2260],{"class":2169},[2163,8666,8667,8669,8671,8673,8675],{"class":2165,"line":2199},[2163,8668,2887],{"class":2218},[2163,8670,3594],{"class":3593},[2163,8672,2045],{"class":2169},[2163,8674,3599],{"class":2222},[2163,8676,3602],{"class":2173},[2163,8678,8679,8681,8683,8685,8688,8690,8692,8694,8696,8698,8700],{"class":2165,"line":2240},[2163,8680,3607],{"class":2222},[2163,8682,2226],{"class":2173},[2163,8684,2229],{"class":2169},[2163,8686,8687],{"class":2190},"/api/comments/",[2163,8689,2229],{"class":2169},[2163,8691,2288],{"class":2169},[2163,8693,2205],{"class":2169},[2163,8695,3561],{"class":2208},[2163,8697,2910],{"class":2169},[2163,8699,3627],{"class":2173},[2163,8701,2310],{"class":2169},[2163,8703,8704,8706,8708,8710,8713,8715,8717,8719,8721,8723,8725],{"class":2165,"line":2246},[2163,8705,3607],{"class":2222},[2163,8707,2226],{"class":2173},[2163,8709,2229],{"class":2169},[2163,8711,8712],{"class":2190},"/api/author/12",[2163,8714,2229],{"class":2169},[2163,8716,2288],{"class":2169},[2163,8718,2205],{"class":2169},[2163,8720,3561],{"class":2208},[2163,8722,2910],{"class":2169},[2163,8724,3627],{"class":2173},[2163,8726,2310],{"class":2169},[2163,8728,8729],{"class":2165,"line":2263},[2163,8730,3659],{"class":2173},[2163,8732,8733,8735],{"class":2165,"line":2293},[2163,8734,2212],{"class":2169},[2163,8736,2237],{"class":2208},[2163,8738,8739],{"class":2165,"line":2313},[2163,8740,2243],{"emptyLinePlaceholder":1196},[2163,8742,8743,8745,8747,8749,8751,8753,8755,8757,8759,8761,8763,8766,8769,8772],{"class":2165,"line":2323},[2163,8744,2202],{"class":2177},[2163,8746,4341],{"class":2208},[2163,8748,2184],{"class":2169},[2163,8750,6485],{"class":2222},[2163,8752,2226],{"class":2208},[2163,8754,3280],{"class":2169},[2163,8756,2793],{"class":2177},[2163,8758,3028],{"class":2208},[2163,8760,2045],{"class":2169},[2163,8762,5420],{"class":2208},[2163,8764,8765],{"class":2169},"?.",[2163,8767,8768],{"class":2208},"[",[2163,8770,8771],{"class":5898},"0",[2163,8773,2865],{"class":2208},[2163,8775,8776,8778,8781,8783,8785,8787,8789,8791,8793,8795,8797,8799,8801,8803],{"class":2165,"line":2330},[2163,8777,2202],{"class":2177},[2163,8779,8780],{"class":2208}," author ",[2163,8782,2184],{"class":2169},[2163,8784,6485],{"class":2222},[2163,8786,2226],{"class":2208},[2163,8788,3280],{"class":2169},[2163,8790,2793],{"class":2177},[2163,8792,3028],{"class":2208},[2163,8794,2045],{"class":2169},[2163,8796,5420],{"class":2208},[2163,8798,8765],{"class":2169},[2163,8800,8768],{"class":2208},[2163,8802,5899],{"class":5898},[2163,8804,2865],{"class":2208},[3111,8806],{"title":8807,"video-id":8808,"platform":4261},"Watch a video from Vue School on parallel data fetching","1024262536",[8810,8811,8812],"style",{},"html pre.shiki code .sDfIl, html code.shiki .sDfIl{--shiki-light:#39ADB5;--shiki-default:#39ADB5;--shiki-dark:#89DDFF}html pre.shiki code .sRlkE, html code.shiki .sRlkE{--shiki-light:#E53935;--shiki-default:#E53935;--shiki-dark:#F07178}html pre.shiki code .smZ93, html code.shiki .smZ93{--shiki-light:#9C3EDA;--shiki-default:#9C3EDA;--shiki-dark:#C792EA}html pre.shiki code .sGFVr, html code.shiki .sGFVr{--shiki-light:#91B859;--shiki-default:#91B859;--shiki-dark:#C3E88D}html pre.shiki code .sZSNi, html code.shiki .sZSNi{--shiki-light:#90A4AE;--shiki-default:#90A4AE;--shiki-dark:#BABED8}html pre.shiki code .s8R28, html code.shiki .s8R28{--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 .s3cPz, html code.shiki .s3cPz{--shiki-light:#6182B8;--shiki-default:#6182B8;--shiki-dark:#82AAFF}html pre.shiki code .sWuyu, html code.shiki .sWuyu{--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 .s1nJG, html code.shiki .s1nJG{--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 .s52Pk, html code.shiki .s52Pk{--shiki-light:#E2931D;--shiki-default:#E2931D;--shiki-dark:#FFCB6B}html pre.shiki code .sbKd-, html code.shiki .sbKd-{--shiki-light:#FF5370;--shiki-default:#FF5370;--shiki-dark:#FF9CAC}html pre.shiki code .sYRBq, html code.shiki .sYRBq{--shiki-light:#F76D47;--shiki-default:#F76D47;--shiki-dark:#F78C6C}",{"title":2159,"searchDepth":2199,"depth":2199,"links":8814},[8815,8819,8822,8823,8824,8825,8832,8835,8836,8837,8842],{"id":2095,"depth":2199,"text":8816,"children":8817},"The need for useFetch and useAsyncData",[8818],{"id":2493,"depth":2240,"text":2494},{"id":2519,"depth":2199,"text":630,"children":8820},[8821],{"id":2686,"depth":2240,"text":2687},{"id":2982,"depth":2199,"text":527},{"id":3122,"depth":2199,"text":515},{"id":3815,"depth":2199,"text":3816},{"id":3946,"depth":2199,"text":3947,"children":8826},[8827,8828,8829,8830,8831],{"id":3961,"depth":2240,"text":3962},{"id":4264,"depth":2240,"text":4265},{"id":4402,"depth":2240,"text":4403},{"id":4716,"depth":2240,"text":4717},{"id":6364,"depth":2240,"text":6729},{"id":7007,"depth":2199,"text":7008,"children":8833},[8834],{"id":7039,"depth":2240,"text":7040},{"id":7400,"depth":2199,"text":7401},{"id":7539,"depth":2199,"text":7540},{"id":7601,"depth":2199,"text":7602,"children":8838},[8839,8840,8841],{"id":7633,"depth":2240,"text":7634},{"id":7742,"depth":2240,"text":7743},{"id":8025,"depth":2240,"text":8026},{"id":8328,"depth":2199,"text":357,"children":8843},[8844,8845],{"id":8331,"depth":2240,"text":8332},{"id":8617,"depth":2240,"text":8618},"Nuxt provides composables to handle data fetching within your application.","md",{},{"icon":67},{"title":64,"description":8846},"DlgrK0xWdFAl8Ub3qlMG3rPdG2MMhoKS-WTiQU5yPPs",[8853,8855],{"title":59,"path":1153,"stem":1154,"description":8854,"icon":62,"children":-1},"Apply transitions between pages and layouts with Vue or native browser View Transitions.",{"title":69,"path":1159,"stem":1160,"description":8856,"icon":72,"children":-1},"Nuxt provides powerful state management libraries and the useState composable to create a reactive and SSR-friendly shared state.",1771414187212]