[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fGCo9l1hMtNdUiA6QzdUX5X3kLqaWcC5t2kdz4LrvCvc":3,"versions":2856,"module-api-shield":2861},[4,1120,1948,2767],{"title":5,"titleTemplate":6,"icon":7,"path":8,"stem":9,"children":10,"page":108},"Docs",null,"i-lucide-book-marked","\u002Fdocs\u002F3.x","docs\u002F3.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","\u002Fdocs\u002F3.x\u002Fgetting-started","docs\u002F3.x\u002F1.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","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Fintroduction","docs\u002F3.x\u002F1.getting-started\u002F01.introduction","i-lucide-info",{"title":24,"path":25,"stem":26,"titleTemplate":6,"icon":27},"Installation","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Finstallation","docs\u002F3.x\u002F1.getting-started\u002F02.installation","i-lucide-play",{"title":29,"path":30,"stem":31,"titleTemplate":6,"icon":32},"Configuration","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Fconfiguration","docs\u002F3.x\u002F1.getting-started\u002F03.configuration","i-lucide-cog",{"title":34,"path":35,"stem":36,"titleTemplate":6,"icon":37},"Views","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Fviews","docs\u002F3.x\u002F1.getting-started\u002F04.views","i-lucide-panels-top-left",{"title":39,"path":40,"stem":41,"titleTemplate":6,"icon":42},"Assets","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Fassets","docs\u002F3.x\u002F1.getting-started\u002F05.assets","i-lucide-image",{"title":44,"path":45,"stem":46,"titleTemplate":6,"icon":47},"Styling","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Fstyling","docs\u002F3.x\u002F1.getting-started\u002F06.styling","i-lucide-palette",{"title":49,"path":50,"stem":51,"titleTemplate":6,"icon":52},"Routing","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Frouting","docs\u002F3.x\u002F1.getting-started\u002F07.routing","i-lucide-milestone",{"title":54,"path":55,"stem":56,"titleTemplate":6,"icon":57},"SEO and Meta","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Fseo-meta","docs\u002F3.x\u002F1.getting-started\u002F08.seo-meta","i-lucide-file-search",{"title":59,"path":60,"stem":61,"titleTemplate":6,"icon":62},"Transitions","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Ftransitions","docs\u002F3.x\u002F1.getting-started\u002F09.transitions","i-lucide-toggle-right",{"title":64,"path":65,"stem":66,"titleTemplate":6,"icon":67},"Data Fetching","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Fdata-fetching","docs\u002F3.x\u002F1.getting-started\u002F10.data-fetching","i-lucide-cable",{"title":69,"path":70,"stem":71,"titleTemplate":6,"icon":72},"State Management","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Fstate-management","docs\u002F3.x\u002F1.getting-started\u002F11.state-management","i-lucide-database",{"title":74,"path":75,"stem":76,"titleTemplate":6,"icon":77},"Error Handling","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Ferror-handling","docs\u002F3.x\u002F1.getting-started\u002F12.error-handling","i-lucide-bug-off",{"title":79,"path":80,"stem":81,"titleTemplate":6,"icon":82},"Server","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Fserver","docs\u002F3.x\u002F1.getting-started\u002F13.server","i-lucide-pc-case",{"title":84,"path":85,"stem":86,"titleTemplate":6,"icon":87},"Layers","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Flayers","docs\u002F3.x\u002F1.getting-started\u002F14.layers","i-lucide-layers",{"title":89,"path":90,"stem":91,"titleTemplate":6,"icon":92},"Prerendering","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Fprerendering","docs\u002F3.x\u002F1.getting-started\u002F15.prerendering","i-lucide-file-code-2",{"title":94,"path":95,"stem":96,"titleTemplate":6,"icon":97},"Deployment","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Fdeployment","docs\u002F3.x\u002F1.getting-started\u002F16.deployment","i-lucide-cloud",{"title":99,"path":100,"stem":101,"titleTemplate":6,"icon":102},"Testing","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Ftesting","docs\u002F3.x\u002F1.getting-started\u002F17.testing","i-lucide-circle-check",{"title":104,"path":105,"stem":106,"titleTemplate":6,"icon":107},"Upgrade Guide","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Fupgrade","docs\u002F3.x\u002F1.getting-started\u002F18.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","\u002Fdocs\u002F3.x\u002Fdirectory-structure","docs\u002F3.x\u002F2.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","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fnuxt","docs\u002F3.x\u002F2.directory-structure\u002F0.nuxt","i-vscode-icons-folder-type-temp",{"title":122,"path":123,"stem":124,"titleTemplate":6,"icon":125},".output","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Foutput","docs\u002F3.x\u002F2.directory-structure\u002F0.output","i-vscode-icons-folder-type-package",{"title":127,"path":128,"stem":129,"titleTemplate":6,"icon":130},"assets","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fassets","docs\u002F3.x\u002F2.directory-structure\u002F1.assets","i-vscode-icons-folder-type-asset",{"title":132,"path":133,"stem":134,"titleTemplate":6,"icon":135},"components","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fcomponents","docs\u002F3.x\u002F2.directory-structure\u002F1.components","i-vscode-icons-folder-type-component",{"title":137,"path":138,"stem":139,"titleTemplate":6,"icon":140},"composables","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fcomposables","docs\u002F3.x\u002F2.directory-structure\u002F1.composables","i-vscode-icons-folder-type-src",{"title":142,"path":143,"stem":144,"titleTemplate":6,"icon":145},"content","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fcontent","docs\u002F3.x\u002F2.directory-structure\u002F1.content","i-vscode-icons-folder-type-log",{"title":147,"path":148,"stem":149,"titleTemplate":6,"icon":150},"layers","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Flayers","docs\u002F3.x\u002F2.directory-structure\u002F1.layers","i-vscode-icons-folder-type-nuxt",{"title":152,"path":153,"stem":154,"titleTemplate":6,"icon":155},"layouts","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Flayouts","docs\u002F3.x\u002F2.directory-structure\u002F1.layouts","i-vscode-icons-folder-type-view",{"title":157,"path":158,"stem":159,"titleTemplate":6,"icon":160},"middleware","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fmiddleware","docs\u002F3.x\u002F2.directory-structure\u002F1.middleware","i-vscode-icons-folder-type-middleware",{"title":162,"path":163,"stem":164,"titleTemplate":6,"icon":150},"modules","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fmodules","docs\u002F3.x\u002F2.directory-structure\u002F1.modules",{"title":166,"path":167,"stem":168,"titleTemplate":6,"icon":169},"node_modules","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fnode_modules","docs\u002F3.x\u002F2.directory-structure\u002F1.node_modules","i-vscode-icons-folder-type-node",{"title":171,"path":172,"stem":173,"titleTemplate":6,"icon":155},"pages","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fpages","docs\u002F3.x\u002F2.directory-structure\u002F1.pages",{"title":175,"path":176,"stem":177,"titleTemplate":6,"icon":178},"plugins","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fplugins","docs\u002F3.x\u002F2.directory-structure\u002F1.plugins","i-vscode-icons-folder-type-plugin",{"title":180,"path":181,"stem":182,"titleTemplate":6,"icon":183},"public","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fpublic","docs\u002F3.x\u002F2.directory-structure\u002F1.public","i-vscode-icons-folder-type-public",{"title":185,"path":186,"stem":187,"titleTemplate":6,"icon":188},"server","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fserver","docs\u002F3.x\u002F2.directory-structure\u002F1.server","i-vscode-icons-folder-type-server",{"title":190,"path":191,"stem":192,"titleTemplate":6,"icon":193},"shared","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fshared","docs\u002F3.x\u002F2.directory-structure\u002F1.shared","i-vscode-icons-folder-type-shared",{"title":195,"path":196,"stem":197,"titleTemplate":6,"icon":198},"utils","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Futils","docs\u002F3.x\u002F2.directory-structure\u002F1.utils","i-vscode-icons-folder-type-tools",{"title":200,"path":201,"stem":202,"titleTemplate":6,"icon":203},".env","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fenv","docs\u002F3.x\u002F2.directory-structure\u002F2.env","i-vscode-icons-file-type-dotenv",{"title":205,"path":206,"stem":207,"titleTemplate":6,"icon":208},".gitignore","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fgitignore","docs\u002F3.x\u002F2.directory-structure\u002F2.gitignore","i-vscode-icons-file-type-git",{"title":210,"path":211,"stem":212,"titleTemplate":6,"icon":213},".nuxtignore","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fnuxtignore","docs\u002F3.x\u002F2.directory-structure\u002F2.nuxtignore","i-vscode-icons-file-type-nuxt",{"title":215,"path":216,"stem":217,"titleTemplate":6,"icon":213},".nuxtrc","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fnuxtrc","docs\u002F3.x\u002F2.directory-structure\u002F2.nuxtrc",{"title":219,"path":220,"stem":221,"titleTemplate":6,"icon":222},"app.vue","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fapp","docs\u002F3.x\u002F2.directory-structure\u002F3.app","i-vscode-icons-file-type-vue",{"title":224,"path":225,"stem":226,"titleTemplate":6,"icon":227},"app.config.ts","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fapp-config","docs\u002F3.x\u002F2.directory-structure\u002F3.app-config","i-vscode-icons-file-type-light-config",{"title":229,"path":230,"stem":231,"titleTemplate":6,"icon":222},"error.vue","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Ferror","docs\u002F3.x\u002F2.directory-structure\u002F3.error",{"title":233,"path":234,"stem":235,"titleTemplate":6,"icon":213},"nuxt.config.ts","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fnuxt-config","docs\u002F3.x\u002F2.directory-structure\u002F3.nuxt-config",{"title":237,"path":238,"stem":239,"titleTemplate":6,"icon":240},"package.json","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fpackage","docs\u002F3.x\u002F2.directory-structure\u002F3.package","i-vscode-icons-file-type-npm",{"title":242,"path":243,"stem":244,"titleTemplate":6,"icon":245},"tsconfig.json","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Ftsconfig","docs\u002F3.x\u002F2.directory-structure\u002F3.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","\u002Fdocs\u002F3.x\u002Fguide","docs\u002F3.x\u002F3.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","\u002Fdocs\u002F3.x\u002Fguide\u002Fconcepts","docs\u002F3.x\u002F3.guide\u002F1.concepts",[259,263,267,271,275,279,283],{"title":260,"path":261,"stem":262,"titleTemplate":6},"Rendering Modes","\u002Fdocs\u002F3.x\u002Fguide\u002Fconcepts\u002Frendering","docs\u002F3.x\u002F3.guide\u002F1.concepts\u002F1.rendering",{"title":264,"path":265,"stem":266,"titleTemplate":6},"Nuxt Lifecycle","\u002Fdocs\u002F3.x\u002Fguide\u002Fconcepts\u002Fnuxt-lifecycle","docs\u002F3.x\u002F3.guide\u002F1.concepts\u002F2.nuxt-lifecycle",{"title":268,"path":269,"stem":270,"titleTemplate":6},"Auto-imports","\u002Fdocs\u002F3.x\u002Fguide\u002Fconcepts\u002Fauto-imports","docs\u002F3.x\u002F3.guide\u002F1.concepts\u002F3.auto-imports",{"title":272,"path":273,"stem":274,"titleTemplate":6},"Server Engine","\u002Fdocs\u002F3.x\u002Fguide\u002Fconcepts\u002Fserver-engine","docs\u002F3.x\u002F3.guide\u002F1.concepts\u002F4.server-engine",{"title":276,"path":277,"stem":278,"titleTemplate":6},"Modules","\u002Fdocs\u002F3.x\u002Fguide\u002Fconcepts\u002Fmodules","docs\u002F3.x\u002F3.guide\u002F1.concepts\u002F5.modules",{"title":280,"path":281,"stem":282,"titleTemplate":6},"TypeScript","\u002Fdocs\u002F3.x\u002Fguide\u002Fconcepts\u002Ftypescript","docs\u002F3.x\u002F3.guide\u002F1.concepts\u002F8.typescript",{"title":284,"path":285,"stem":286,"titleTemplate":6},"Code Style","\u002Fdocs\u002F3.x\u002Fguide\u002Fconcepts\u002Fcode-style","docs\u002F3.x\u002F3.guide\u002F1.concepts\u002F9.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","\u002Fdocs\u002F3.x\u002Fguide\u002Fbest-practices","docs\u002F3.x\u002F3.guide\u002F2.best-practices",[294,298,302],{"title":295,"path":296,"stem":297,"titleTemplate":6},"Nuxt and hydration","\u002Fdocs\u002F3.x\u002Fguide\u002Fbest-practices\u002Fhydration","docs\u002F3.x\u002F3.guide\u002F2.best-practices\u002Fhydration",{"title":299,"path":300,"stem":301,"titleTemplate":6},"Nuxt Performance","\u002Fdocs\u002F3.x\u002Fguide\u002Fbest-practices\u002Fperformance","docs\u002F3.x\u002F3.guide\u002F2.best-practices\u002Fperformance",{"title":303,"path":304,"stem":305,"titleTemplate":6},"Nuxt Plugins","\u002Fdocs\u002F3.x\u002Fguide\u002Fbest-practices\u002Fplugins","docs\u002F3.x\u002F3.guide\u002F2.best-practices\u002Fplugins",{"title":307,"titleTemplate":308,"icon":309,"path":310,"stem":311,"children":312,"page":108},"Working with AI","Working with AI: %s","i-lucide-bot","\u002Fdocs\u002F3.x\u002Fguide\u002Fai","docs\u002F3.x\u002F3.guide\u002F3.ai",[313,317],{"title":314,"path":315,"stem":316,"titleTemplate":6},"MCP Server","\u002Fdocs\u002F3.x\u002Fguide\u002Fai\u002Fmcp","docs\u002F3.x\u002F3.guide\u002F3.ai\u002F1.mcp",{"title":318,"path":319,"stem":320,"titleTemplate":6},"LLMs.txt","\u002Fdocs\u002F3.x\u002Fguide\u002Fai\u002Fllms-txt","docs\u002F3.x\u002F3.guide\u002F3.ai\u002F2.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","\u002Fdocs\u002F3.x\u002Fguide\u002Fmodules","docs\u002F3.x\u002F3.guide\u002F4.modules",[328,332,336,340,344,348,352],{"title":329,"path":330,"stem":331,"titleTemplate":6},"Create Your First Module","\u002Fdocs\u002F3.x\u002Fguide\u002Fmodules\u002Fgetting-started","docs\u002F3.x\u002F3.guide\u002F4.modules\u002F1.getting-started",{"title":333,"path":334,"stem":335,"titleTemplate":6},"Understand Module Structure","\u002Fdocs\u002F3.x\u002Fguide\u002Fmodules\u002Fmodule-anatomy","docs\u002F3.x\u002F3.guide\u002F4.modules\u002F2.module-anatomy",{"title":337,"path":338,"stem":339,"titleTemplate":6},"Add Plugins, Components & More","\u002Fdocs\u002F3.x\u002Fguide\u002Fmodules\u002Frecipes-basics","docs\u002F3.x\u002F3.guide\u002F4.modules\u002F3.recipes-basics",{"title":341,"path":342,"stem":343,"titleTemplate":6},"Use Hooks & Extend Types","\u002Fdocs\u002F3.x\u002Fguide\u002Fmodules\u002Frecipes-advanced","docs\u002F3.x\u002F3.guide\u002F4.modules\u002F4.recipes-advanced",{"title":345,"path":346,"stem":347,"titleTemplate":6},"Test Your Module","\u002Fdocs\u002F3.x\u002Fguide\u002Fmodules\u002Ftesting","docs\u002F3.x\u002F3.guide\u002F4.modules\u002F5.testing",{"title":349,"path":350,"stem":351,"titleTemplate":6},"Follow Best Practices","\u002Fdocs\u002F3.x\u002Fguide\u002Fmodules\u002Fbest-practices","docs\u002F3.x\u002F3.guide\u002F4.modules\u002F6.best-practices",{"title":353,"path":354,"stem":355,"titleTemplate":6},"Publish & Share Your Module","\u002Fdocs\u002F3.x\u002Fguide\u002Fmodules\u002Fecosystem","docs\u002F3.x\u002F3.guide\u002F4.modules\u002F7.ecosystem",{"title":357,"titleTemplate":358,"icon":359,"path":360,"stem":361,"children":362,"page":108},"Recipes","%s · Recipes","i-lucide-cooking-pot","\u002Fdocs\u002F3.x\u002Fguide\u002Frecipes","docs\u002F3.x\u002F3.guide\u002F5.recipes",[363,367,371,375],{"title":364,"path":365,"stem":366,"titleTemplate":6},"Custom Routing","\u002Fdocs\u002F3.x\u002Fguide\u002Frecipes\u002Fcustom-routing","docs\u002F3.x\u002F3.guide\u002F5.recipes\u002F1.custom-routing",{"title":368,"path":369,"stem":370,"titleTemplate":6},"Vite Plugins","\u002Fdocs\u002F3.x\u002Fguide\u002Frecipes\u002Fvite-plugin","docs\u002F3.x\u002F3.guide\u002F5.recipes\u002F2.vite-plugin",{"title":372,"path":373,"stem":374,"titleTemplate":6},"Custom useFetch","\u002Fdocs\u002F3.x\u002Fguide\u002Frecipes\u002Fcustom-usefetch","docs\u002F3.x\u002F3.guide\u002F5.recipes\u002F3.custom-usefetch",{"title":376,"path":377,"stem":378,"titleTemplate":6},"Sessions and Authentication","\u002Fdocs\u002F3.x\u002Fguide\u002Frecipes\u002Fsessions-and-authentication","docs\u002F3.x\u002F3.guide\u002F5.recipes\u002F4.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","\u002Fdocs\u002F3.x\u002Fguide\u002Fgoing-further","docs\u002F3.x\u002F3.guide\u002F6.going-further",[386,390,394,398,402,406,410,414,418,422],{"title":387,"path":388,"stem":389,"titleTemplate":6},"Custom Events","\u002Fdocs\u002F3.x\u002Fguide\u002Fgoing-further\u002Fevents","docs\u002F3.x\u002F3.guide\u002F6.going-further\u002F1.events",{"title":391,"path":392,"stem":393,"titleTemplate":6},"Experimental Features","\u002Fdocs\u002F3.x\u002Fguide\u002Fgoing-further\u002Fexperimental-features","docs\u002F3.x\u002F3.guide\u002F6.going-further\u002F1.experimental-features",{"title":395,"path":396,"stem":397,"titleTemplate":6},"Features","\u002Fdocs\u002F3.x\u002Fguide\u002Fgoing-further\u002Ffeatures","docs\u002F3.x\u002F3.guide\u002F6.going-further\u002F1.features",{"title":399,"path":400,"stem":401,"titleTemplate":6},"Runtime Config","\u002Fdocs\u002F3.x\u002Fguide\u002Fgoing-further\u002Fruntime-config","docs\u002F3.x\u002F3.guide\u002F6.going-further\u002F10.runtime-config",{"title":403,"path":404,"stem":405,"titleTemplate":6},"Nightly Release Channel","\u002Fdocs\u002F3.x\u002Fguide\u002Fgoing-further\u002Fnightly-release-channel","docs\u002F3.x\u002F3.guide\u002F6.going-further\u002F11.nightly-release-channel",{"title":407,"path":408,"stem":409,"titleTemplate":6},"Lifecycle Hooks","\u002Fdocs\u002F3.x\u002Fguide\u002Fgoing-further\u002Fhooks","docs\u002F3.x\u002F3.guide\u002F6.going-further\u002F2.hooks",{"title":411,"path":412,"stem":413,"titleTemplate":6},"Nuxt Kit","\u002Fdocs\u002F3.x\u002Fguide\u002Fgoing-further\u002Fkit","docs\u002F3.x\u002F3.guide\u002F6.going-further\u002F4.kit",{"title":415,"path":416,"stem":417,"titleTemplate":6},"NuxtApp","\u002Fdocs\u002F3.x\u002Fguide\u002Fgoing-further\u002Fnuxt-app","docs\u002F3.x\u002F3.guide\u002F6.going-further\u002F6.nuxt-app",{"title":419,"path":420,"stem":421,"titleTemplate":6},"Authoring Nuxt Layers","\u002Fdocs\u002F3.x\u002Fguide\u002Fgoing-further\u002Flayers","docs\u002F3.x\u002F3.guide\u002F6.going-further\u002F7.layers",{"title":423,"path":424,"stem":425,"titleTemplate":6},"Debugging","\u002Fdocs\u002F3.x\u002Fguide\u002Fgoing-further\u002Fdebugging","docs\u002F3.x\u002F3.guide\u002F6.going-further\u002F9.debugging",{"title":427,"titleTemplate":428,"icon":429,"path":430,"stem":431,"children":432,"page":108},"API","%s · Nuxt API","i-lucide-code-xml","\u002Fdocs\u002F3.x\u002Fapi","docs\u002F3.x\u002F4.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","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents","docs\u002F3.x\u002F4.api\u002F1.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>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fclient-only","docs\u002F3.x\u002F4.api\u002F1.components\u002F1.client-only",{"title":444,"path":445,"stem":446,"titleTemplate":6},"\u003CDevOnly>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fdev-only","docs\u002F3.x\u002F4.api\u002F1.components\u002F1.dev-only",{"title":448,"path":449,"stem":450,"titleTemplate":6},"\u003CNuxtClientFallback>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fnuxt-client-fallback","docs\u002F3.x\u002F4.api\u002F1.components\u002F1.nuxt-client-fallback",{"title":452,"path":453,"stem":454,"titleTemplate":6},"\u003CNuxtPicture>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fnuxt-picture","docs\u002F3.x\u002F4.api\u002F1.components\u002F10.nuxt-picture",{"title":456,"path":457,"stem":458,"titleTemplate":6},"\u003CTeleport>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fteleports","docs\u002F3.x\u002F4.api\u002F1.components\u002F11.teleports",{"title":460,"path":461,"stem":462,"titleTemplate":6},"\u003CNuxtRouteAnnouncer>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fnuxt-route-announcer","docs\u002F3.x\u002F4.api\u002F1.components\u002F12.nuxt-route-announcer",{"title":464,"path":465,"stem":466,"titleTemplate":6},"\u003CNuxtTime>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fnuxt-time","docs\u002F3.x\u002F4.api\u002F1.components\u002F13.nuxt-time",{"title":468,"path":469,"stem":470,"titleTemplate":6},"\u003CNuxtPage>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fnuxt-page","docs\u002F3.x\u002F4.api\u002F1.components\u002F2.nuxt-page",{"title":472,"path":473,"stem":474,"titleTemplate":6},"\u003CNuxtLayout>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fnuxt-layout","docs\u002F3.x\u002F4.api\u002F1.components\u002F3.nuxt-layout",{"title":476,"path":477,"stem":478,"titleTemplate":6},"\u003CNuxtLink>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fnuxt-link","docs\u002F3.x\u002F4.api\u002F1.components\u002F4.nuxt-link",{"title":480,"path":481,"stem":482,"titleTemplate":6},"\u003CNuxtLoadingIndicator>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fnuxt-loading-indicator","docs\u002F3.x\u002F4.api\u002F1.components\u002F5.nuxt-loading-indicator",{"title":484,"path":485,"stem":486,"titleTemplate":6},"\u003CNuxtErrorBoundary>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fnuxt-error-boundary","docs\u002F3.x\u002F4.api\u002F1.components\u002F6.nuxt-error-boundary",{"title":488,"path":489,"stem":490,"titleTemplate":6},"\u003CNuxtWelcome>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fnuxt-welcome","docs\u002F3.x\u002F4.api\u002F1.components\u002F7.nuxt-welcome",{"title":492,"path":493,"stem":494,"titleTemplate":6},"\u003CNuxtIsland>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fnuxt-island","docs\u002F3.x\u002F4.api\u002F1.components\u002F8.nuxt-island",{"title":496,"path":497,"stem":498,"titleTemplate":6},"\u003CNuxtImg>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fnuxt-img","docs\u002F3.x\u002F4.api\u002F1.components\u002F9.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","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables","docs\u002F3.x\u002F4.api\u002F2.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","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fon-prehydrate","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fon-prehydrate",{"title":511,"path":512,"stem":513,"titleTemplate":6},"useAppConfig","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-app-config","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-app-config",{"title":515,"path":516,"stem":517,"titleTemplate":6},"useAsyncData","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-async-data","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-async-data",{"title":519,"path":520,"stem":521,"titleTemplate":6},"useCookie","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-cookie","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-cookie",{"title":523,"path":524,"stem":525,"titleTemplate":6},"useError","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-error","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-error",{"title":527,"path":528,"stem":529,"titleTemplate":6},"useFetch","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-fetch","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-fetch",{"title":531,"path":532,"stem":533,"titleTemplate":6},"useHead","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-head","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-head",{"title":535,"path":536,"stem":537,"titleTemplate":6},"useHeadSafe","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-head-safe","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-head-safe",{"title":539,"path":540,"stem":541,"titleTemplate":6},"useHydration","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-hydration","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-hydration",{"title":543,"path":544,"stem":545,"titleTemplate":6},"useLazyAsyncData","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-lazy-async-data","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-lazy-async-data",{"title":547,"path":548,"stem":549,"titleTemplate":6},"useLazyFetch","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-lazy-fetch","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-lazy-fetch",{"title":551,"path":552,"stem":553,"titleTemplate":6},"useLoadingIndicator","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-loading-indicator","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-loading-indicator",{"title":555,"path":556,"stem":557,"titleTemplate":6},"useNuxtApp","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-nuxt-app","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-nuxt-app",{"title":559,"path":560,"stem":561,"titleTemplate":6},"useNuxtData","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-nuxt-data","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-nuxt-data",{"title":563,"path":564,"stem":565,"titleTemplate":6},"usePreviewMode","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-preview-mode","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-preview-mode",{"title":567,"path":568,"stem":569,"titleTemplate":6},"useRequestEvent","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-request-event","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-request-event",{"title":571,"path":572,"stem":573,"titleTemplate":6},"useRequestFetch","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-request-fetch","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-request-fetch",{"title":575,"path":576,"stem":577,"titleTemplate":6},"useRequestHeader","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-request-header","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-request-header",{"title":579,"path":580,"stem":581,"titleTemplate":6},"useRequestHeaders","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-request-headers","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-request-headers",{"title":583,"path":584,"stem":585,"titleTemplate":6},"useRequestURL","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-request-url","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-request-url",{"title":587,"path":588,"stem":589,"titleTemplate":6},"useResponseHeader","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-response-header","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-response-header",{"title":591,"path":592,"stem":593,"titleTemplate":6},"useRoute","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-route","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-route",{"title":595,"path":596,"stem":597,"titleTemplate":6},"useRouteAnnouncer","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-route-announcer","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-route-announcer",{"title":599,"path":600,"stem":601,"titleTemplate":6},"useRouter","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-router","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-router",{"title":603,"path":604,"stem":605,"titleTemplate":6},"useRuntimeConfig","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-runtime-config","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-runtime-config",{"title":607,"path":608,"stem":609,"titleTemplate":6},"useRuntimeHook","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-runtime-hook","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-runtime-hook",{"title":611,"path":612,"stem":613,"titleTemplate":6},"useSeoMeta","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-seo-meta","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-seo-meta",{"title":615,"path":616,"stem":617,"titleTemplate":6},"useServerSeoMeta","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-server-seo-meta","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-server-seo-meta",{"title":619,"path":620,"stem":621,"titleTemplate":6},"useState","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-state","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-state",{"title":623,"titleTemplate":624,"icon":625,"path":626,"stem":627,"children":628,"page":108},"Utils","%s · Nuxt Utils","i-lucide-square-function","\u002Fdocs\u002F3.x\u002Fapi\u002Futils","docs\u002F3.x\u002F4.api\u002F3.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","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fdollarfetch","docs\u002F3.x\u002F4.api\u002F3.utils\u002F$fetch",{"title":634,"path":635,"stem":636,"titleTemplate":6},"abortNavigation","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fabort-navigation","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fabort-navigation",{"title":638,"path":639,"stem":640,"titleTemplate":6},"addRouteMiddleware","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fadd-route-middleware","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fadd-route-middleware",{"title":642,"path":643,"stem":644,"titleTemplate":6},"callOnce","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fcall-once","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fcall-once",{"title":646,"path":647,"stem":648,"titleTemplate":6},"clearError","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fclear-error","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fclear-error",{"title":650,"path":651,"stem":652,"titleTemplate":6},"clearNuxtData","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fclear-nuxt-data","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fclear-nuxt-data",{"title":654,"path":655,"stem":656,"titleTemplate":6},"clearNuxtState","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fclear-nuxt-state","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fclear-nuxt-state",{"title":658,"path":659,"stem":660,"titleTemplate":6},"createError","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fcreate-error","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fcreate-error",{"title":662,"path":663,"stem":664,"titleTemplate":6},"defineLazyHydrationComponent","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fdefine-lazy-hydration-component","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fdefine-lazy-hydration-component",{"title":666,"path":667,"stem":668,"titleTemplate":6},"defineNuxtComponent","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fdefine-nuxt-component","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fdefine-nuxt-component",{"title":670,"path":671,"stem":672,"titleTemplate":6},"defineNuxtPlugin","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fdefine-nuxt-plugin","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fdefine-nuxt-plugin",{"title":674,"path":675,"stem":676,"titleTemplate":6},"defineNuxtRouteMiddleware","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fdefine-nuxt-route-middleware","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fdefine-nuxt-route-middleware",{"title":678,"path":679,"stem":680,"titleTemplate":6},"definePageMeta","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fdefine-page-meta","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fdefine-page-meta",{"title":682,"path":683,"stem":684,"titleTemplate":6},"defineRouteRules","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fdefine-route-rules","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fdefine-route-rules",{"title":686,"path":687,"stem":688,"titleTemplate":6},"navigateTo","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fnavigate-to","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fnavigate-to",{"title":690,"path":691,"stem":692,"titleTemplate":6},"onBeforeRouteLeave","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fon-before-route-leave","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fon-before-route-leave",{"title":694,"path":695,"stem":696,"titleTemplate":6},"onBeforeRouteUpdate","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fon-before-route-update","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fon-before-route-update",{"title":698,"path":699,"stem":700,"titleTemplate":6},"onNuxtReady","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fon-nuxt-ready","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fon-nuxt-ready",{"title":702,"path":703,"stem":704,"titleTemplate":6},"prefetchComponents","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fprefetch-components","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fprefetch-components",{"title":706,"path":707,"stem":708,"titleTemplate":6},"preloadComponents","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fpreload-components","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fpreload-components",{"title":710,"path":711,"stem":712,"titleTemplate":6},"preloadRouteComponents","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fpreload-route-components","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fpreload-route-components",{"title":714,"path":715,"stem":716,"titleTemplate":6},"prerenderRoutes","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fprerender-routes","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fprerender-routes",{"title":718,"path":719,"stem":720,"titleTemplate":6},"refreshCookie","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Frefresh-cookie","docs\u002F3.x\u002F4.api\u002F3.utils\u002Frefresh-cookie",{"title":722,"path":723,"stem":724,"titleTemplate":6},"refreshNuxtData","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Frefresh-nuxt-data","docs\u002F3.x\u002F4.api\u002F3.utils\u002Frefresh-nuxt-data",{"title":726,"path":727,"stem":728,"titleTemplate":6},"reloadNuxtApp","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Freload-nuxt-app","docs\u002F3.x\u002F4.api\u002F3.utils\u002Freload-nuxt-app",{"title":730,"path":731,"stem":732,"titleTemplate":6},"setPageLayout","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fset-page-layout","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fset-page-layout",{"title":734,"path":735,"stem":736,"titleTemplate":6},"setResponseStatus","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fset-response-status","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fset-response-status",{"title":738,"path":739,"stem":740,"titleTemplate":6},"showError","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fshow-error","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fshow-error",{"title":742,"path":743,"stem":744,"titleTemplate":6},"updateAppConfig","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fupdate-app-config","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fupdate-app-config",{"title":746,"titleTemplate":747,"icon":748,"path":749,"stem":750,"children":751,"page":108},"Commands","%s · Nuxt Commands","i-lucide-square-terminal","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands","docs\u002F3.x\u002F4.api\u002F4.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","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fadd","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fadd",{"title":757,"path":758,"stem":759,"titleTemplate":6},"nuxt analyze","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fanalyze","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fanalyze",{"title":761,"path":762,"stem":763,"titleTemplate":6},"nuxt build","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fbuild","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fbuild",{"title":765,"path":766,"stem":767,"titleTemplate":6},"nuxt build-module","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fbuild-module","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fbuild-module",{"title":769,"path":770,"stem":771,"titleTemplate":6},"nuxt cleanup","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fcleanup","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fcleanup",{"title":773,"path":774,"stem":775,"titleTemplate":6},"nuxt dev","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fdev","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fdev",{"title":777,"path":778,"stem":779,"titleTemplate":6},"nuxt devtools","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fdevtools","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fdevtools",{"title":781,"path":782,"stem":783,"titleTemplate":6},"nuxt generate","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fgenerate","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fgenerate",{"title":785,"path":786,"stem":787,"titleTemplate":6},"nuxt info","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Finfo","docs\u002F3.x\u002F4.api\u002F4.commands\u002Finfo",{"title":789,"path":790,"stem":791,"titleTemplate":6},"create nuxt","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Finit","docs\u002F3.x\u002F4.api\u002F4.commands\u002Finit",{"title":793,"path":794,"stem":795,"titleTemplate":6},"nuxt module","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fmodule","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fmodule",{"title":797,"path":798,"stem":799,"titleTemplate":6},"nuxt prepare","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fprepare","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fprepare",{"title":801,"path":802,"stem":803,"titleTemplate":6},"nuxt preview","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fpreview","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fpreview",{"title":805,"path":806,"stem":807,"titleTemplate":6},"nuxt test","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Ftest","docs\u002F3.x\u002F4.api\u002F4.commands\u002Ftest",{"title":809,"path":810,"stem":811,"titleTemplate":6},"nuxt typecheck","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Ftypecheck","docs\u002F3.x\u002F4.api\u002F4.commands\u002Ftypecheck",{"title":813,"path":814,"stem":815,"titleTemplate":6},"nuxt upgrade","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fupgrade","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fupgrade",{"title":411,"titleTemplate":817,"icon":818,"path":819,"stem":820,"children":821,"page":108},"%s · Nuxt Kit","i-lucide-package","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit","docs\u002F3.x\u002F4.api\u002F5.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},"\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fmodules","docs\u002F3.x\u002F4.api\u002F5.kit\u002F1.modules",{"title":399,"path":826,"stem":827,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fruntime-config","docs\u002F3.x\u002F4.api\u002F5.kit\u002F10.runtime-config",{"title":829,"path":830,"stem":831,"titleTemplate":6},"Templates","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Ftemplates","docs\u002F3.x\u002F4.api\u002F5.kit\u002F10.templates",{"title":833,"path":834,"stem":835,"titleTemplate":6},"Nitro","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fnitro","docs\u002F3.x\u002F4.api\u002F5.kit\u002F11.nitro",{"title":837,"path":838,"stem":839,"titleTemplate":6},"Resolving","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fresolving","docs\u002F3.x\u002F4.api\u002F5.kit\u002F12.resolving",{"title":841,"path":842,"stem":843,"titleTemplate":6},"Logging","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Flogging","docs\u002F3.x\u002F4.api\u002F5.kit\u002F13.logging",{"title":845,"path":846,"stem":847,"titleTemplate":6},"Builder","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fbuilder","docs\u002F3.x\u002F4.api\u002F5.kit\u002F14.builder",{"title":849,"path":850,"stem":851,"titleTemplate":6},"Examples","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fexamples","docs\u002F3.x\u002F4.api\u002F5.kit\u002F15.examples",{"title":84,"path":853,"stem":854,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Flayers","docs\u002F3.x\u002F4.api\u002F5.kit\u002F16.layers",{"title":856,"path":857,"stem":858,"titleTemplate":6},"Programmatic Usage","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fprogrammatic","docs\u002F3.x\u002F4.api\u002F5.kit\u002F2.programmatic",{"title":860,"path":861,"stem":862,"titleTemplate":6},"Compatibility","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fcompatibility","docs\u002F3.x\u002F4.api\u002F5.kit\u002F3.compatibility",{"title":268,"path":864,"stem":865,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fautoimports","docs\u002F3.x\u002F4.api\u002F5.kit\u002F4.autoimports",{"title":434,"path":867,"stem":868,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fcomponents","docs\u002F3.x\u002F4.api\u002F5.kit\u002F5.components",{"title":870,"path":871,"stem":872,"titleTemplate":6},"Context","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fcontext","docs\u002F3.x\u002F4.api\u002F5.kit\u002F6.context",{"title":874,"path":875,"stem":876,"titleTemplate":6},"Pages","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fpages","docs\u002F3.x\u002F4.api\u002F5.kit\u002F7.pages",{"title":878,"path":879,"stem":880,"titleTemplate":6},"Layout","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Flayout","docs\u002F3.x\u002F4.api\u002F5.kit\u002F8.layout",{"title":882,"path":883,"stem":884,"titleTemplate":6},"Head","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fhead","docs\u002F3.x\u002F4.api\u002F5.kit\u002F9.head",{"title":886,"path":887,"stem":888,"titleTemplate":6},"Plugins","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fplugins","docs\u002F3.x\u002F4.api\u002F5.kit\u002F9.plugins",{"title":890,"titleTemplate":6,"icon":891,"path":892,"stem":893,"children":894,"page":108},"Advanced","i-lucide-brain","\u002Fdocs\u002F3.x\u002Fapi\u002Fadvanced","docs\u002F3.x\u002F4.api\u002F6.advanced",[895,898],{"title":407,"path":896,"stem":897,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fapi\u002Fadvanced\u002Fhooks","docs\u002F3.x\u002F4.api\u002F6.advanced\u002F1.hooks",{"title":899,"path":900,"stem":901,"titleTemplate":6},"Import meta","\u002Fdocs\u002F3.x\u002Fapi\u002Fadvanced\u002Fimport-meta","docs\u002F3.x\u002F4.api\u002F6.advanced\u002F2.import-meta",{"title":903,"path":904,"stem":905,"titleTemplate":906,"icon":32},"Nuxt Configuration","\u002Fdocs\u002F3.x\u002Fapi\u002Fnuxt-config","docs\u002F3.x\u002F4.api\u002F6.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","\u002Fdocs\u002F3.x\u002Fexamples","docs\u002F3.x\u002F4.examples",[913,917,939,954,990],{"title":914,"path":915,"stem":916,"titleTemplate":6},"Hello World","\u002Fdocs\u002F3.x\u002Fexamples\u002Fhello-world","docs\u002F3.x\u002F4.examples\u002F0.hello-world",{"title":395,"path":918,"stem":919,"children":920,"page":108},"\u002Fdocs\u002F3.x\u002Fexamples\u002Ffeatures","docs\u002F3.x\u002F4.examples\u002F1.features",[921,925,928,931,935],{"title":922,"path":923,"stem":924,"titleTemplate":6},"Auto Imports","\u002Fdocs\u002F3.x\u002Fexamples\u002Ffeatures\u002Fauto-imports","docs\u002F3.x\u002F4.examples\u002F1.features\u002F1.auto-imports",{"title":64,"path":926,"stem":927,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fexamples\u002Ffeatures\u002Fdata-fetching","docs\u002F3.x\u002F4.examples\u002F1.features\u002F2.data-fetching",{"title":69,"path":929,"stem":930,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fexamples\u002Ffeatures\u002Fstate-management","docs\u002F3.x\u002F4.examples\u002F1.features\u002F3.state-management",{"title":932,"path":933,"stem":934,"titleTemplate":6},"Meta Tags","\u002Fdocs\u002F3.x\u002Fexamples\u002Ffeatures\u002Fmeta-tags","docs\u002F3.x\u002F4.examples\u002F1.features\u002F4.meta-tags",{"title":936,"path":937,"stem":938,"titleTemplate":6},"Layouts","\u002Fdocs\u002F3.x\u002Fexamples\u002Ffeatures\u002Flayouts","docs\u002F3.x\u002F4.examples\u002F1.features\u002F5.layouts",{"title":49,"path":940,"stem":941,"children":942,"page":108},"\u002Fdocs\u002F3.x\u002Fexamples\u002Frouting","docs\u002F3.x\u002F4.examples\u002F2.routing",[943,947,950],{"title":944,"path":945,"stem":946,"titleTemplate":6},"Middleware","\u002Fdocs\u002F3.x\u002Fexamples\u002Frouting\u002Fmiddleware","docs\u002F3.x\u002F4.examples\u002F2.routing\u002Fmiddleware",{"title":874,"path":948,"stem":949,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fexamples\u002Frouting\u002Fpages","docs\u002F3.x\u002F4.examples\u002F2.routing\u002Fpages",{"title":951,"path":952,"stem":953,"titleTemplate":6},"Universal Router","\u002Fdocs\u002F3.x\u002Fexamples\u002Frouting\u002Funiversal-router","docs\u002F3.x\u002F4.examples\u002F2.routing\u002Funiversal-router",{"title":890,"path":955,"stem":956,"children":957,"page":108},"\u002Fdocs\u002F3.x\u002Fexamples\u002Fadvanced","docs\u002F3.x\u002F4.examples\u002F4.advanced",[958,961,964,968,972,976,980,983,986],{"title":84,"path":959,"stem":960,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fexamples\u002Fadvanced\u002Fconfig-extends","docs\u002F3.x\u002F4.examples\u002F4.advanced\u002Fconfig-extends",{"title":74,"path":962,"stem":963,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fexamples\u002Fadvanced\u002Ferror-handling","docs\u002F3.x\u002F4.examples\u002F4.advanced\u002Ferror-handling",{"title":965,"path":966,"stem":967,"titleTemplate":6},"JSX \u002F TSX","\u002Fdocs\u002F3.x\u002Fexamples\u002Fadvanced\u002Fjsx","docs\u002F3.x\u002F4.examples\u002F4.advanced\u002Fjsx",{"title":969,"path":970,"stem":971,"titleTemplate":6},"Locale","\u002Fdocs\u002F3.x\u002Fexamples\u002Fadvanced\u002Flocale","docs\u002F3.x\u002F4.examples\u002F4.advanced\u002Flocale",{"title":973,"path":974,"stem":975,"titleTemplate":6},"Module Extend Pages","\u002Fdocs\u002F3.x\u002Fexamples\u002Fadvanced\u002Fmodule-extend-pages","docs\u002F3.x\u002F4.examples\u002F4.advanced\u002Fmodule-extend-pages",{"title":977,"path":978,"stem":979,"titleTemplate":6},"Teleport","\u002Fdocs\u002F3.x\u002Fexamples\u002Fadvanced\u002Fteleport","docs\u002F3.x\u002F4.examples\u002F4.advanced\u002Fteleport",{"title":99,"path":981,"stem":982,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fexamples\u002Fadvanced\u002Ftesting","docs\u002F3.x\u002F4.examples\u002F4.advanced\u002Ftesting",{"title":519,"path":984,"stem":985,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fexamples\u002Fadvanced\u002Fuse-cookie","docs\u002F3.x\u002F4.examples\u002F4.advanced\u002Fuse-cookie",{"title":987,"path":988,"stem":989,"titleTemplate":6},"Use Custom Fetch Composable","\u002Fdocs\u002F3.x\u002Fexamples\u002Fadvanced\u002Fuse-custom-fetch-composable","docs\u002F3.x\u002F4.examples\u002F4.advanced\u002Fuse-custom-fetch-composable",{"title":991,"path":992,"stem":993,"children":994,"page":108},"Experimental","\u002Fdocs\u002F3.x\u002Fexamples\u002Fexperimental","docs\u002F3.x\u002F4.examples\u002F7.experimental",[995],{"title":996,"path":997,"stem":998,"titleTemplate":6},"WASM","\u002Fdocs\u002F3.x\u002Fexamples\u002Fexperimental\u002Fwasm","docs\u002F3.x\u002F4.examples\u002F7.experimental\u002Fwasm",{"title":1000,"titleTemplate":1001,"icon":1002,"path":1003,"stem":1004,"children":1005,"page":108},"Community","%s · Nuxt Community","i-lucide-messages-square","\u002Fdocs\u002F3.x\u002Fcommunity","docs\u002F3.x\u002F5.community",[1006,1011,1016,1021,1026,1031],{"title":1007,"path":1008,"stem":1009,"titleTemplate":6,"icon":1010},"Getting Help","\u002Fdocs\u002F3.x\u002Fcommunity\u002Fgetting-help","docs\u002F3.x\u002F5.community\u002F2.getting-help","i-lucide-life-buoy",{"title":1012,"path":1013,"stem":1014,"titleTemplate":6,"icon":1015},"Reporting Bugs","\u002Fdocs\u002F3.x\u002Fcommunity\u002Freporting-bugs","docs\u002F3.x\u002F5.community\u002F3.reporting-bugs","i-lucide-bug",{"title":1017,"path":1018,"stem":1019,"titleTemplate":6,"icon":1020},"Contribution","\u002Fdocs\u002F3.x\u002Fcommunity\u002Fcontribution","docs\u002F3.x\u002F5.community\u002F4.contribution","i-lucide-git-pull-request",{"title":1022,"path":1023,"stem":1024,"titleTemplate":6,"icon":1025},"Framework","\u002Fdocs\u002F3.x\u002Fcommunity\u002Fframework-contribution","docs\u002F3.x\u002F5.community\u002F5.framework-contribution","i-lucide-github",{"title":1027,"path":1028,"stem":1029,"titleTemplate":6,"icon":1030},"Roadmap","\u002Fdocs\u002F3.x\u002Fcommunity\u002Froadmap","docs\u002F3.x\u002F5.community\u002F6.roadmap","i-lucide-map",{"title":1032,"path":1033,"stem":1034,"titleTemplate":6,"icon":1035},"Releases","\u002Fdocs\u002F3.x\u002Fcommunity\u002Fchangelog","docs\u002F3.x\u002F5.community\u002F7.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","\u002Fdocs\u002F3.x\u002Fbridge","docs\u002F3.x\u002F6.bridge",[1043,1047,1050,1053,1057,1061,1065,1068,1071,1074],{"title":1044,"path":1045,"stem":1046,"titleTemplate":6},"Overview","\u002Fdocs\u002F3.x\u002Fbridge\u002Foverview","docs\u002F3.x\u002F6.bridge\u002F1.overview",{"title":29,"path":1048,"stem":1049,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fbridge\u002Fconfiguration","docs\u002F3.x\u002F6.bridge\u002F10.configuration",{"title":280,"path":1051,"stem":1052,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fbridge\u002Ftypescript","docs\u002F3.x\u002F6.bridge\u002F2.typescript",{"title":1054,"path":1055,"stem":1056,"titleTemplate":6},"Legacy Composition API","\u002Fdocs\u002F3.x\u002Fbridge\u002Fbridge-composition-api","docs\u002F3.x\u002F6.bridge\u002F3.bridge-composition-api",{"title":1058,"path":1059,"stem":1060,"titleTemplate":6},"Plugins and Middleware","\u002Fdocs\u002F3.x\u002Fbridge\u002Fplugins-and-middleware","docs\u002F3.x\u002F6.bridge\u002F4.plugins-and-middleware",{"title":1062,"path":1063,"stem":1064,"titleTemplate":6},"New Composition API","\u002Fdocs\u002F3.x\u002Fbridge\u002Fnuxt3-compatible-api","docs\u002F3.x\u002F6.bridge\u002F5.nuxt3-compatible-api",{"title":932,"path":1066,"stem":1067,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fbridge\u002Fmeta","docs\u002F3.x\u002F6.bridge\u002F6.meta",{"title":399,"path":1069,"stem":1070,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fbridge\u002Fruntime-config","docs\u002F3.x\u002F6.bridge\u002F7.runtime-config",{"title":833,"path":1072,"stem":1073,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fbridge\u002Fnitro","docs\u002F3.x\u002F6.bridge\u002F8.nitro",{"title":1075,"path":1076,"stem":1077,"titleTemplate":6},"Vite","\u002Fdocs\u002F3.x\u002Fbridge\u002Fvite","docs\u002F3.x\u002F6.bridge\u002F9.vite",{"title":1079,"titleTemplate":1080,"icon":107,"path":1081,"stem":1082,"children":1083,"page":108},"Migrate to Nuxt 3","Migrate to Nuxt 3: %s","\u002Fdocs\u002F3.x\u002Fmigration","docs\u002F3.x\u002F7.migration",[1084,1087,1091,1094,1097,1100,1103,1106,1109,1113,1117],{"title":1044,"path":1085,"stem":1086,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fmigration\u002Foverview","docs\u002F3.x\u002F7.migration\u002F1.overview",{"title":1088,"path":1089,"stem":1090,"titleTemplate":6},"Build Tooling","\u002Fdocs\u002F3.x\u002Fmigration\u002Fbundling","docs\u002F3.x\u002F7.migration\u002F10.bundling",{"title":79,"path":1092,"stem":1093,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fmigration\u002Fserver","docs\u002F3.x\u002F7.migration\u002F11.server",{"title":29,"path":1095,"stem":1096,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fmigration\u002Fconfiguration","docs\u002F3.x\u002F7.migration\u002F2.configuration",{"title":276,"path":1098,"stem":1099,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fmigration\u002Fmodule-authors","docs\u002F3.x\u002F7.migration\u002F20.module-authors",{"title":922,"path":1101,"stem":1102,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fmigration\u002Fauto-imports","docs\u002F3.x\u002F7.migration\u002F3.auto-imports",{"title":932,"path":1104,"stem":1105,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fmigration\u002Fmeta","docs\u002F3.x\u002F7.migration\u002F4.meta",{"title":1058,"path":1107,"stem":1108,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fmigration\u002Fplugins-and-middleware","docs\u002F3.x\u002F7.migration\u002F5.plugins-and-middleware",{"title":1110,"path":1111,"stem":1112,"titleTemplate":6},"Pages and Layouts","\u002Fdocs\u002F3.x\u002Fmigration\u002Fpages-and-layouts","docs\u002F3.x\u002F7.migration\u002F6.pages-and-layouts",{"title":1114,"path":1115,"stem":1116,"titleTemplate":6},"Component Options","\u002Fdocs\u002F3.x\u002Fmigration\u002Fcomponent-options","docs\u002F3.x\u002F7.migration\u002F7.component-options",{"title":399,"path":1118,"stem":1119,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fmigration\u002Fruntime-config","docs\u002F3.x\u002F7.migration\u002F8.runtime-config",{"title":5,"titleTemplate":6,"icon":7,"path":1121,"stem":1122,"children":1123,"page":108},"\u002Fdocs\u002F4.x","docs\u002F4.x",[1124,1182,1276,1404,1778,1855,1877,1911],{"title":12,"titleTemplate":13,"icon":14,"path":1125,"stem":1126,"children":1127,"page":108},"\u002Fdocs\u002F4.x\u002Fgetting-started","docs\u002F4.x\u002F1.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},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fintroduction","docs\u002F4.x\u002F1.getting-started\u002F01.introduction",{"title":24,"path":1132,"stem":1133,"titleTemplate":6,"icon":27},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Finstallation","docs\u002F4.x\u002F1.getting-started\u002F02.installation",{"title":29,"path":1135,"stem":1136,"titleTemplate":6,"icon":32},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fconfiguration","docs\u002F4.x\u002F1.getting-started\u002F03.configuration",{"title":34,"path":1138,"stem":1139,"titleTemplate":6,"icon":37},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fviews","docs\u002F4.x\u002F1.getting-started\u002F04.views",{"title":39,"path":1141,"stem":1142,"titleTemplate":6,"icon":42},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fassets","docs\u002F4.x\u002F1.getting-started\u002F05.assets",{"title":44,"path":1144,"stem":1145,"titleTemplate":6,"icon":47},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fstyling","docs\u002F4.x\u002F1.getting-started\u002F06.styling",{"title":49,"path":1147,"stem":1148,"titleTemplate":6,"icon":52},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Frouting","docs\u002F4.x\u002F1.getting-started\u002F07.routing",{"title":54,"path":1150,"stem":1151,"titleTemplate":6,"icon":57},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fseo-meta","docs\u002F4.x\u002F1.getting-started\u002F08.seo-meta",{"title":59,"path":1153,"stem":1154,"titleTemplate":6,"icon":62},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Ftransitions","docs\u002F4.x\u002F1.getting-started\u002F09.transitions",{"title":64,"path":1156,"stem":1157,"titleTemplate":6,"icon":67},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fdata-fetching","docs\u002F4.x\u002F1.getting-started\u002F10.data-fetching",{"title":69,"path":1159,"stem":1160,"titleTemplate":6,"icon":72},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fstate-management","docs\u002F4.x\u002F1.getting-started\u002F11.state-management",{"title":74,"path":1162,"stem":1163,"titleTemplate":6,"icon":77},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Ferror-handling","docs\u002F4.x\u002F1.getting-started\u002F12.error-handling",{"title":79,"path":1165,"stem":1166,"titleTemplate":6,"icon":82},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fserver","docs\u002F4.x\u002F1.getting-started\u002F13.server",{"title":84,"path":1168,"stem":1169,"titleTemplate":6,"icon":87},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Flayers","docs\u002F4.x\u002F1.getting-started\u002F14.layers",{"title":89,"path":1171,"stem":1172,"titleTemplate":6,"icon":92},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fprerendering","docs\u002F4.x\u002F1.getting-started\u002F15.prerendering",{"title":94,"path":1174,"stem":1175,"titleTemplate":6,"icon":97},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fdeployment","docs\u002F4.x\u002F1.getting-started\u002F16.deployment",{"title":99,"path":1177,"stem":1178,"titleTemplate":6,"icon":102},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Ftesting","docs\u002F4.x\u002F1.getting-started\u002F17.testing",{"title":104,"path":1180,"stem":1181,"titleTemplate":6,"icon":107},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fupgrade","docs\u002F4.x\u002F1.getting-started\u002F18.upgrade",{"title":110,"titleTemplate":111,"icon":112,"path":1183,"stem":1184,"children":1185,"page":108},"\u002Fdocs\u002F4.x\u002Fdirectory-structure","docs\u002F4.x\u002F2.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},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fnuxt","docs\u002F4.x\u002F2.directory-structure\u002F0.nuxt",{"title":122,"path":1190,"stem":1191,"titleTemplate":6,"icon":125},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Foutput","docs\u002F4.x\u002F2.directory-structure\u002F0.output",{"title":1193,"titleTemplate":111,"head":1194,"defaultOpen":1196,"icon":1197,"path":1198,"stem":1199,"children":1200,"page":108},"app",{"title":1195},"app\u002F",true,"i-vscode-icons-folder-type-app","\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp","docs\u002F4.x\u002F2.directory-structure\u002F1.app",[1201,1204,1207,1210,1213,1216,1219,1222,1225,1228,1231],{"title":127,"path":1202,"stem":1203,"titleTemplate":6,"icon":130},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Fassets","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F1.assets",{"title":132,"path":1205,"stem":1206,"titleTemplate":6,"icon":135},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Fcomponents","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F1.components",{"title":137,"path":1208,"stem":1209,"titleTemplate":6,"icon":140},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Fcomposables","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F1.composables",{"title":152,"path":1211,"stem":1212,"titleTemplate":6,"icon":155},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Flayouts","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F1.layouts",{"title":157,"path":1214,"stem":1215,"titleTemplate":6,"icon":160},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Fmiddleware","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F1.middleware",{"title":171,"path":1217,"stem":1218,"titleTemplate":6,"icon":155},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Fpages","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F1.pages",{"title":175,"path":1220,"stem":1221,"titleTemplate":6,"icon":178},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Fplugins","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F1.plugins",{"title":195,"path":1223,"stem":1224,"titleTemplate":6,"icon":198},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Futils","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F1.utils",{"title":219,"path":1226,"stem":1227,"titleTemplate":6,"icon":222},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Fapp","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F3.app",{"title":224,"path":1229,"stem":1230,"titleTemplate":6,"icon":227},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Fapp-config","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F3.app-config",{"title":229,"path":1232,"stem":1233,"titleTemplate":6,"icon":222},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Ferror","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F3.error",{"title":142,"path":1235,"stem":1236,"titleTemplate":6,"icon":145},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fcontent","docs\u002F4.x\u002F2.directory-structure\u002F1.content",{"title":147,"path":1238,"stem":1239,"titleTemplate":6,"icon":150},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Flayers","docs\u002F4.x\u002F2.directory-structure\u002F1.layers",{"title":162,"path":1241,"stem":1242,"titleTemplate":6,"icon":150},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fmodules","docs\u002F4.x\u002F2.directory-structure\u002F1.modules",{"title":166,"path":1244,"stem":1245,"titleTemplate":6,"icon":169},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fnode_modules","docs\u002F4.x\u002F2.directory-structure\u002F1.node_modules",{"title":180,"path":1247,"stem":1248,"titleTemplate":6,"icon":183},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fpublic","docs\u002F4.x\u002F2.directory-structure\u002F1.public",{"title":185,"path":1250,"stem":1251,"titleTemplate":6,"icon":188},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fserver","docs\u002F4.x\u002F2.directory-structure\u002F1.server",{"title":190,"path":1253,"stem":1254,"titleTemplate":6,"icon":193},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fshared","docs\u002F4.x\u002F2.directory-structure\u002F1.shared",{"title":200,"path":1256,"stem":1257,"titleTemplate":6,"icon":203},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fenv","docs\u002F4.x\u002F2.directory-structure\u002F2.env",{"title":205,"path":1259,"stem":1260,"titleTemplate":6,"icon":208},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fgitignore","docs\u002F4.x\u002F2.directory-structure\u002F2.gitignore",{"title":210,"path":1262,"stem":1263,"titleTemplate":6,"icon":213},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fnuxtignore","docs\u002F4.x\u002F2.directory-structure\u002F2.nuxtignore",{"title":215,"path":1265,"stem":1266,"titleTemplate":6,"icon":213},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fnuxtrc","docs\u002F4.x\u002F2.directory-structure\u002F2.nuxtrc",{"title":233,"path":1268,"stem":1269,"titleTemplate":6,"icon":213},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fnuxt-config","docs\u002F4.x\u002F2.directory-structure\u002F3.nuxt-config",{"title":237,"path":1271,"stem":1272,"titleTemplate":6,"icon":240},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fpackage","docs\u002F4.x\u002F2.directory-structure\u002F3.package",{"title":242,"path":1274,"stem":1275,"titleTemplate":6,"icon":245},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Ftsconfig","docs\u002F4.x\u002F2.directory-structure\u002F3.tsconfig",{"title":247,"titleTemplate":6,"icon":248,"path":1277,"stem":1278,"children":1279,"page":108},"\u002Fdocs\u002F4.x\u002Fguide","docs\u002F4.x\u002F3.guide",[1280,1305,1319,1329,1354,1370],{"title":253,"titleTemplate":254,"icon":255,"path":1281,"stem":1282,"children":1283,"page":108},"\u002Fdocs\u002F4.x\u002Fguide\u002Fconcepts","docs\u002F4.x\u002F3.guide\u002F1.concepts",[1284,1287,1290,1293,1296,1299,1302],{"title":260,"path":1285,"stem":1286,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fconcepts\u002Frendering","docs\u002F4.x\u002F3.guide\u002F1.concepts\u002F1.rendering",{"title":264,"path":1288,"stem":1289,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fconcepts\u002Fnuxt-lifecycle","docs\u002F4.x\u002F3.guide\u002F1.concepts\u002F2.nuxt-lifecycle",{"title":268,"path":1291,"stem":1292,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fconcepts\u002Fauto-imports","docs\u002F4.x\u002F3.guide\u002F1.concepts\u002F3.auto-imports",{"title":272,"path":1294,"stem":1295,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fconcepts\u002Fserver-engine","docs\u002F4.x\u002F3.guide\u002F1.concepts\u002F4.server-engine",{"title":276,"path":1297,"stem":1298,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fconcepts\u002Fmodules","docs\u002F4.x\u002F3.guide\u002F1.concepts\u002F5.modules",{"title":280,"path":1300,"stem":1301,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fconcepts\u002Ftypescript","docs\u002F4.x\u002F3.guide\u002F1.concepts\u002F8.typescript",{"title":284,"path":1303,"stem":1304,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fconcepts\u002Fcode-style","docs\u002F4.x\u002F3.guide\u002F1.concepts\u002F9.code-style",{"title":288,"titleTemplate":289,"icon":290,"path":1306,"stem":1307,"children":1308,"page":108},"\u002Fdocs\u002F4.x\u002Fguide\u002Fbest-practices","docs\u002F4.x\u002F3.guide\u002F2.best-practices",[1309,1313,1316],{"title":1310,"path":1311,"stem":1312,"titleTemplate":6},"Nuxt and Hydration","\u002Fdocs\u002F4.x\u002Fguide\u002Fbest-practices\u002Fhydration","docs\u002F4.x\u002F3.guide\u002F2.best-practices\u002Fhydration",{"title":299,"path":1314,"stem":1315,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fbest-practices\u002Fperformance","docs\u002F4.x\u002F3.guide\u002F2.best-practices\u002Fperformance",{"title":303,"path":1317,"stem":1318,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fbest-practices\u002Fplugins","docs\u002F4.x\u002F3.guide\u002F2.best-practices\u002Fplugins",{"title":307,"titleTemplate":308,"icon":309,"path":1320,"stem":1321,"children":1322,"page":108},"\u002Fdocs\u002F4.x\u002Fguide\u002Fai","docs\u002F4.x\u002F3.guide\u002F3.ai",[1323,1326],{"title":314,"path":1324,"stem":1325,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fai\u002Fmcp","docs\u002F4.x\u002F3.guide\u002F3.ai\u002F1.mcp",{"title":318,"path":1327,"stem":1328,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fai\u002Fllms-txt","docs\u002F4.x\u002F3.guide\u002F3.ai\u002F2.llms-txt",{"title":322,"titleTemplate":323,"icon":324,"path":1330,"stem":1331,"children":1332,"page":108},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules","docs\u002F4.x\u002F3.guide\u002F4.modules",[1333,1336,1339,1342,1345,1348,1351],{"title":329,"path":1334,"stem":1335,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Fgetting-started","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F1.getting-started",{"title":333,"path":1337,"stem":1338,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Fmodule-anatomy","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F2.module-anatomy",{"title":337,"path":1340,"stem":1341,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Frecipes-basics","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F3.recipes-basics",{"title":341,"path":1343,"stem":1344,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Frecipes-advanced","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F4.recipes-advanced",{"title":345,"path":1346,"stem":1347,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Ftesting","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F5.testing",{"title":349,"path":1349,"stem":1350,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Fbest-practices","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F6.best-practices",{"title":353,"path":1352,"stem":1353,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Fecosystem","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F7.ecosystem",{"title":357,"titleTemplate":358,"icon":359,"path":1355,"stem":1356,"children":1357,"page":108},"\u002Fdocs\u002F4.x\u002Fguide\u002Frecipes","docs\u002F4.x\u002F3.guide\u002F5.recipes",[1358,1361,1364,1367],{"title":364,"path":1359,"stem":1360,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Frecipes\u002Fcustom-routing","docs\u002F4.x\u002F3.guide\u002F5.recipes\u002F1.custom-routing",{"title":368,"path":1362,"stem":1363,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Frecipes\u002Fvite-plugin","docs\u002F4.x\u002F3.guide\u002F5.recipes\u002F2.vite-plugin",{"title":372,"path":1365,"stem":1366,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Frecipes\u002Fcustom-usefetch","docs\u002F4.x\u002F3.guide\u002F5.recipes\u002F3.custom-usefetch",{"title":376,"path":1368,"stem":1369,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Frecipes\u002Fsessions-and-authentication","docs\u002F4.x\u002F3.guide\u002F5.recipes\u002F4.sessions-and-authentication",{"title":380,"titleTemplate":381,"icon":382,"path":1371,"stem":1372,"children":1373,"page":108},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further","docs\u002F4.x\u002F3.guide\u002F6.going-further",[1374,1377,1380,1383,1386,1389,1392,1395,1398,1401],{"title":387,"path":1375,"stem":1376,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fevents","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F1.events",{"title":391,"path":1378,"stem":1379,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fexperimental-features","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F1.experimental-features",{"title":395,"path":1381,"stem":1382,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Ffeatures","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F1.features",{"title":399,"path":1384,"stem":1385,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fruntime-config","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F10.runtime-config",{"title":403,"path":1387,"stem":1388,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fnightly-release-channel","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F11.nightly-release-channel",{"title":407,"path":1390,"stem":1391,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fhooks","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F2.hooks",{"title":411,"path":1393,"stem":1394,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fkit","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F4.kit",{"title":415,"path":1396,"stem":1397,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fnuxt-app","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F6.nuxt-app",{"title":419,"path":1399,"stem":1400,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Flayers","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F7.layers",{"title":423,"path":1402,"stem":1403,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fdebugging","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F9.debugging",{"title":427,"titleTemplate":428,"icon":429,"path":1405,"stem":1406,"children":1407,"page":108},"\u002Fdocs\u002F4.x\u002Fapi","docs\u002F4.x\u002F4.api",[1408,1461,1564,1655,1707,1765,1775],{"title":434,"titleTemplate":435,"icon":324,"path":1409,"stem":1410,"children":1411,"page":108},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents","docs\u002F4.x\u002F4.api\u002F1.components",[1412,1415,1418,1421,1424,1427,1430,1433,1437,1440,1443,1446,1449,1452,1455,1458],{"title":440,"path":1413,"stem":1414,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fclient-only","docs\u002F4.x\u002F4.api\u002F1.components\u002F1.client-only",{"title":444,"path":1416,"stem":1417,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fdev-only","docs\u002F4.x\u002F4.api\u002F1.components\u002F1.dev-only",{"title":448,"path":1419,"stem":1420,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-client-fallback","docs\u002F4.x\u002F4.api\u002F1.components\u002F1.nuxt-client-fallback",{"title":452,"path":1422,"stem":1423,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-picture","docs\u002F4.x\u002F4.api\u002F1.components\u002F10.nuxt-picture",{"title":456,"path":1425,"stem":1426,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fteleports","docs\u002F4.x\u002F4.api\u002F1.components\u002F11.teleports",{"title":460,"path":1428,"stem":1429,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-route-announcer","docs\u002F4.x\u002F4.api\u002F1.components\u002F12.nuxt-route-announcer",{"title":464,"path":1431,"stem":1432,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-time","docs\u002F4.x\u002F4.api\u002F1.components\u002F13.nuxt-time",{"title":1434,"path":1435,"stem":1436,"titleTemplate":6},"\u003CNuxtAnnouncer>","\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-announcer","docs\u002F4.x\u002F4.api\u002F1.components\u002F14.nuxt-announcer",{"title":468,"path":1438,"stem":1439,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-page","docs\u002F4.x\u002F4.api\u002F1.components\u002F2.nuxt-page",{"title":472,"path":1441,"stem":1442,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-layout","docs\u002F4.x\u002F4.api\u002F1.components\u002F3.nuxt-layout",{"title":476,"path":1444,"stem":1445,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-link","docs\u002F4.x\u002F4.api\u002F1.components\u002F4.nuxt-link",{"title":480,"path":1447,"stem":1448,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-loading-indicator","docs\u002F4.x\u002F4.api\u002F1.components\u002F5.nuxt-loading-indicator",{"title":484,"path":1450,"stem":1451,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-error-boundary","docs\u002F4.x\u002F4.api\u002F1.components\u002F6.nuxt-error-boundary",{"title":488,"path":1453,"stem":1454,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-welcome","docs\u002F4.x\u002F4.api\u002F1.components\u002F7.nuxt-welcome",{"title":492,"path":1456,"stem":1457,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-island","docs\u002F4.x\u002F4.api\u002F1.components\u002F8.nuxt-island",{"title":496,"path":1459,"stem":1460,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-img","docs\u002F4.x\u002F4.api\u002F1.components\u002F9.nuxt-img",{"title":500,"titleTemplate":501,"icon":502,"path":1462,"stem":1463,"children":1464,"page":108},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables","docs\u002F4.x\u002F4.api\u002F2.composables",[1465,1469,1473,1476,1480,1483,1486,1489,1492,1495,1498,1501,1504,1507,1510,1513,1516,1519,1522,1525,1528,1531,1534,1537,1540,1543,1546,1549,1552,1555,1558,1561],{"title":1466,"path":1467,"stem":1468,"titleTemplate":6},"createUseAsyncData","\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fcreate-use-async-data","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fcreate-use-async-data",{"title":1470,"path":1471,"stem":1472,"titleTemplate":6},"createUseFetch","\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fcreate-use-fetch","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fcreate-use-fetch",{"title":507,"path":1474,"stem":1475,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fon-prehydrate","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fon-prehydrate",{"title":1477,"path":1478,"stem":1479,"titleTemplate":6},"useAnnouncer","\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-announcer","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-announcer",{"title":511,"path":1481,"stem":1482,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-app-config","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-app-config",{"title":515,"path":1484,"stem":1485,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-async-data","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-async-data",{"title":519,"path":1487,"stem":1488,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-cookie","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-cookie",{"title":523,"path":1490,"stem":1491,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-error","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-error",{"title":527,"path":1493,"stem":1494,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-fetch","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-fetch",{"title":531,"path":1496,"stem":1497,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-head","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-head",{"title":535,"path":1499,"stem":1500,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-head-safe","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-head-safe",{"title":539,"path":1502,"stem":1503,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-hydration","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-hydration",{"title":543,"path":1505,"stem":1506,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-lazy-async-data","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-lazy-async-data",{"title":547,"path":1508,"stem":1509,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-lazy-fetch","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-lazy-fetch",{"title":551,"path":1511,"stem":1512,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-loading-indicator","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-loading-indicator",{"title":555,"path":1514,"stem":1515,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-nuxt-app","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-nuxt-app",{"title":559,"path":1517,"stem":1518,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-nuxt-data","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-nuxt-data",{"title":563,"path":1520,"stem":1521,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-preview-mode","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-preview-mode",{"title":567,"path":1523,"stem":1524,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-request-event","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-request-event",{"title":571,"path":1526,"stem":1527,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-request-fetch","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-request-fetch",{"title":575,"path":1529,"stem":1530,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-request-header","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-request-header",{"title":579,"path":1532,"stem":1533,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-request-headers","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-request-headers",{"title":583,"path":1535,"stem":1536,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-request-url","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-request-url",{"title":587,"path":1538,"stem":1539,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-response-header","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-response-header",{"title":591,"path":1541,"stem":1542,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-route","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-route",{"title":595,"path":1544,"stem":1545,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-route-announcer","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-route-announcer",{"title":599,"path":1547,"stem":1548,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-router","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-router",{"title":603,"path":1550,"stem":1551,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-runtime-config","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-runtime-config",{"title":607,"path":1553,"stem":1554,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-runtime-hook","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-runtime-hook",{"title":611,"path":1556,"stem":1557,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-seo-meta","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-seo-meta",{"title":615,"path":1559,"stem":1560,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-server-seo-meta","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-server-seo-meta",{"title":619,"path":1562,"stem":1563,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-state","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-state",{"title":623,"titleTemplate":624,"icon":625,"path":1565,"stem":1566,"children":1567,"page":108},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils","docs\u002F4.x\u002F4.api\u002F3.utils",[1568,1571,1574,1577,1580,1583,1586,1589,1592,1595,1598,1601,1604,1607,1610,1613,1616,1619,1622,1625,1628,1631,1634,1637,1640,1643,1646,1649,1652],{"title":630,"path":1569,"stem":1570,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fdollarfetch","docs\u002F4.x\u002F4.api\u002F3.utils\u002F$fetch",{"title":634,"path":1572,"stem":1573,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fabort-navigation","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fabort-navigation",{"title":638,"path":1575,"stem":1576,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fadd-route-middleware","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fadd-route-middleware",{"title":642,"path":1578,"stem":1579,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fcall-once","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fcall-once",{"title":646,"path":1581,"stem":1582,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fclear-error","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fclear-error",{"title":650,"path":1584,"stem":1585,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fclear-nuxt-data","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fclear-nuxt-data",{"title":654,"path":1587,"stem":1588,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fclear-nuxt-state","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fclear-nuxt-state",{"title":658,"path":1590,"stem":1591,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fcreate-error","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fcreate-error",{"title":662,"path":1593,"stem":1594,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fdefine-lazy-hydration-component","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fdefine-lazy-hydration-component",{"title":666,"path":1596,"stem":1597,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fdefine-nuxt-component","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fdefine-nuxt-component",{"title":670,"path":1599,"stem":1600,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fdefine-nuxt-plugin","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fdefine-nuxt-plugin",{"title":674,"path":1602,"stem":1603,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fdefine-nuxt-route-middleware","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fdefine-nuxt-route-middleware",{"title":678,"path":1605,"stem":1606,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fdefine-page-meta","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fdefine-page-meta",{"title":682,"path":1608,"stem":1609,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fdefine-route-rules","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fdefine-route-rules",{"title":686,"path":1611,"stem":1612,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fnavigate-to","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fnavigate-to",{"title":690,"path":1614,"stem":1615,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fon-before-route-leave","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fon-before-route-leave",{"title":694,"path":1617,"stem":1618,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fon-before-route-update","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fon-before-route-update",{"title":698,"path":1620,"stem":1621,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fon-nuxt-ready","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fon-nuxt-ready",{"title":702,"path":1623,"stem":1624,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fprefetch-components","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fprefetch-components",{"title":706,"path":1626,"stem":1627,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fpreload-components","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fpreload-components",{"title":710,"path":1629,"stem":1630,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fpreload-route-components","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fpreload-route-components",{"title":714,"path":1632,"stem":1633,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fprerender-routes","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fprerender-routes",{"title":718,"path":1635,"stem":1636,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Frefresh-cookie","docs\u002F4.x\u002F4.api\u002F3.utils\u002Frefresh-cookie",{"title":722,"path":1638,"stem":1639,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Frefresh-nuxt-data","docs\u002F4.x\u002F4.api\u002F3.utils\u002Frefresh-nuxt-data",{"title":726,"path":1641,"stem":1642,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Freload-nuxt-app","docs\u002F4.x\u002F4.api\u002F3.utils\u002Freload-nuxt-app",{"title":730,"path":1644,"stem":1645,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fset-page-layout","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fset-page-layout",{"title":734,"path":1647,"stem":1648,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fset-response-status","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fset-response-status",{"title":738,"path":1650,"stem":1651,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fshow-error","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fshow-error",{"title":742,"path":1653,"stem":1654,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fupdate-app-config","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fupdate-app-config",{"title":746,"titleTemplate":747,"icon":748,"path":1656,"stem":1657,"children":1658,"page":108},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands","docs\u002F4.x\u002F4.api\u002F4.commands",[1659,1662,1665,1668,1671,1674,1677,1680,1683,1686,1689,1692,1695,1698,1701,1704],{"title":753,"path":1660,"stem":1661,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fadd","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fadd",{"title":757,"path":1663,"stem":1664,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fanalyze","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fanalyze",{"title":761,"path":1666,"stem":1667,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fbuild","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fbuild",{"title":765,"path":1669,"stem":1670,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fbuild-module","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fbuild-module",{"title":769,"path":1672,"stem":1673,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fcleanup","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fcleanup",{"title":773,"path":1675,"stem":1676,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fdev","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fdev",{"title":777,"path":1678,"stem":1679,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fdevtools","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fdevtools",{"title":781,"path":1681,"stem":1682,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fgenerate","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fgenerate",{"title":785,"path":1684,"stem":1685,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Finfo","docs\u002F4.x\u002F4.api\u002F4.commands\u002Finfo",{"title":789,"path":1687,"stem":1688,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Finit","docs\u002F4.x\u002F4.api\u002F4.commands\u002Finit",{"title":793,"path":1690,"stem":1691,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fmodule","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fmodule",{"title":797,"path":1693,"stem":1694,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fprepare","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fprepare",{"title":801,"path":1696,"stem":1697,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fpreview","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fpreview",{"title":805,"path":1699,"stem":1700,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Ftest","docs\u002F4.x\u002F4.api\u002F4.commands\u002Ftest",{"title":809,"path":1702,"stem":1703,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Ftypecheck","docs\u002F4.x\u002F4.api\u002F4.commands\u002Ftypecheck",{"title":813,"path":1705,"stem":1706,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fupgrade","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fupgrade",{"title":411,"titleTemplate":817,"icon":818,"path":1708,"stem":1709,"children":1710,"page":108},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit","docs\u002F4.x\u002F4.api\u002F5.kit",[1711,1714,1717,1720,1723,1726,1729,1732,1735,1738,1741,1744,1747,1750,1753,1756,1759,1762],{"title":276,"path":1712,"stem":1713,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fmodules","docs\u002F4.x\u002F4.api\u002F5.kit\u002F1.modules",{"title":399,"path":1715,"stem":1716,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fruntime-config","docs\u002F4.x\u002F4.api\u002F5.kit\u002F10.runtime-config",{"title":829,"path":1718,"stem":1719,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Ftemplates","docs\u002F4.x\u002F4.api\u002F5.kit\u002F10.templates",{"title":833,"path":1721,"stem":1722,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fnitro","docs\u002F4.x\u002F4.api\u002F5.kit\u002F11.nitro",{"title":837,"path":1724,"stem":1725,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fresolving","docs\u002F4.x\u002F4.api\u002F5.kit\u002F12.resolving",{"title":841,"path":1727,"stem":1728,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Flogging","docs\u002F4.x\u002F4.api\u002F5.kit\u002F13.logging",{"title":845,"path":1730,"stem":1731,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fbuilder","docs\u002F4.x\u002F4.api\u002F5.kit\u002F14.builder",{"title":849,"path":1733,"stem":1734,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fexamples","docs\u002F4.x\u002F4.api\u002F5.kit\u002F15.examples",{"title":84,"path":1736,"stem":1737,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Flayers","docs\u002F4.x\u002F4.api\u002F5.kit\u002F16.layers",{"title":856,"path":1739,"stem":1740,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fprogrammatic","docs\u002F4.x\u002F4.api\u002F5.kit\u002F2.programmatic",{"title":860,"path":1742,"stem":1743,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fcompatibility","docs\u002F4.x\u002F4.api\u002F5.kit\u002F3.compatibility",{"title":268,"path":1745,"stem":1746,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fautoimports","docs\u002F4.x\u002F4.api\u002F5.kit\u002F4.autoimports",{"title":434,"path":1748,"stem":1749,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fcomponents","docs\u002F4.x\u002F4.api\u002F5.kit\u002F5.components",{"title":870,"path":1751,"stem":1752,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fcontext","docs\u002F4.x\u002F4.api\u002F5.kit\u002F6.context",{"title":874,"path":1754,"stem":1755,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fpages","docs\u002F4.x\u002F4.api\u002F5.kit\u002F7.pages",{"title":878,"path":1757,"stem":1758,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Flayout","docs\u002F4.x\u002F4.api\u002F5.kit\u002F8.layout",{"title":882,"path":1760,"stem":1761,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fhead","docs\u002F4.x\u002F4.api\u002F5.kit\u002F9.head",{"title":886,"path":1763,"stem":1764,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fplugins","docs\u002F4.x\u002F4.api\u002F5.kit\u002F9.plugins",{"title":890,"titleTemplate":6,"icon":891,"path":1766,"stem":1767,"children":1768,"page":108},"\u002Fdocs\u002F4.x\u002Fapi\u002Fadvanced","docs\u002F4.x\u002F4.api\u002F6.advanced",[1769,1772],{"title":407,"path":1770,"stem":1771,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fadvanced\u002Fhooks","docs\u002F4.x\u002F4.api\u002F6.advanced\u002F1.hooks",{"title":899,"path":1773,"stem":1774,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fadvanced\u002Fimport-meta","docs\u002F4.x\u002F4.api\u002F6.advanced\u002F2.import-meta",{"title":903,"path":1776,"stem":1777,"titleTemplate":906,"icon":32},"\u002Fdocs\u002F4.x\u002Fapi\u002Fnuxt-config","docs\u002F4.x\u002F4.api\u002F6.nuxt-config",{"title":849,"titleTemplate":908,"icon":909,"path":1779,"stem":1780,"children":1781,"page":108},"\u002Fdocs\u002F4.x\u002Fexamples","docs\u002F4.x\u002F4.examples",[1782,1785,1804,1817,1848],{"title":914,"path":1783,"stem":1784,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fhello-world","docs\u002F4.x\u002F4.examples\u002F0.hello-world",{"title":395,"path":1786,"stem":1787,"children":1788,"page":108},"\u002Fdocs\u002F4.x\u002Fexamples\u002Ffeatures","docs\u002F4.x\u002F4.examples\u002F1.features",[1789,1792,1795,1798,1801],{"title":922,"path":1790,"stem":1791,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Ffeatures\u002Fauto-imports","docs\u002F4.x\u002F4.examples\u002F1.features\u002F1.auto-imports",{"title":64,"path":1793,"stem":1794,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Ffeatures\u002Fdata-fetching","docs\u002F4.x\u002F4.examples\u002F1.features\u002F2.data-fetching",{"title":69,"path":1796,"stem":1797,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Ffeatures\u002Fstate-management","docs\u002F4.x\u002F4.examples\u002F1.features\u002F3.state-management",{"title":932,"path":1799,"stem":1800,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Ffeatures\u002Fmeta-tags","docs\u002F4.x\u002F4.examples\u002F1.features\u002F4.meta-tags",{"title":936,"path":1802,"stem":1803,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Ffeatures\u002Flayouts","docs\u002F4.x\u002F4.examples\u002F1.features\u002F5.layouts",{"title":49,"path":1805,"stem":1806,"children":1807,"page":108},"\u002Fdocs\u002F4.x\u002Fexamples\u002Frouting","docs\u002F4.x\u002F4.examples\u002F2.routing",[1808,1811,1814],{"title":944,"path":1809,"stem":1810,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Frouting\u002Fmiddleware","docs\u002F4.x\u002F4.examples\u002F2.routing\u002Fmiddleware",{"title":874,"path":1812,"stem":1813,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Frouting\u002Fpages","docs\u002F4.x\u002F4.examples\u002F2.routing\u002Fpages",{"title":951,"path":1815,"stem":1816,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Frouting\u002Funiversal-router","docs\u002F4.x\u002F4.examples\u002F2.routing\u002Funiversal-router",{"title":890,"path":1818,"stem":1819,"children":1820,"page":108},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced","docs\u002F4.x\u002F4.examples\u002F4.advanced",[1821,1824,1827,1830,1833,1836,1839,1842,1845],{"title":84,"path":1822,"stem":1823,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Fconfig-extends","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Fconfig-extends",{"title":74,"path":1825,"stem":1826,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Ferror-handling","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Ferror-handling",{"title":965,"path":1828,"stem":1829,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Fjsx","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Fjsx",{"title":969,"path":1831,"stem":1832,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Flocale","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Flocale",{"title":973,"path":1834,"stem":1835,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Fmodule-extend-pages","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Fmodule-extend-pages",{"title":977,"path":1837,"stem":1838,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Fteleport","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Fteleport",{"title":99,"path":1840,"stem":1841,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Ftesting","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Ftesting",{"title":519,"path":1843,"stem":1844,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Fuse-cookie","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Fuse-cookie",{"title":987,"path":1846,"stem":1847,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Fuse-custom-fetch-composable","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Fuse-custom-fetch-composable",{"title":991,"path":1849,"stem":1850,"children":1851,"page":108},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fexperimental","docs\u002F4.x\u002F4.examples\u002F7.experimental",[1852],{"title":996,"path":1853,"stem":1854,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fexperimental\u002Fwasm","docs\u002F4.x\u002F4.examples\u002F7.experimental\u002Fwasm",{"title":1000,"titleTemplate":1001,"icon":1002,"path":1856,"stem":1857,"children":1858,"page":108},"\u002Fdocs\u002F4.x\u002Fcommunity","docs\u002F4.x\u002F5.community",[1859,1862,1865,1868,1871,1874],{"title":1007,"path":1860,"stem":1861,"titleTemplate":6,"icon":1010},"\u002Fdocs\u002F4.x\u002Fcommunity\u002Fgetting-help","docs\u002F4.x\u002F5.community\u002F2.getting-help",{"title":1012,"path":1863,"stem":1864,"titleTemplate":6,"icon":1015},"\u002Fdocs\u002F4.x\u002Fcommunity\u002Freporting-bugs","docs\u002F4.x\u002F5.community\u002F3.reporting-bugs",{"title":1017,"path":1866,"stem":1867,"titleTemplate":6,"icon":1020},"\u002Fdocs\u002F4.x\u002Fcommunity\u002Fcontribution","docs\u002F4.x\u002F5.community\u002F4.contribution",{"title":1022,"path":1869,"stem":1870,"titleTemplate":6,"icon":1025},"\u002Fdocs\u002F4.x\u002Fcommunity\u002Fframework-contribution","docs\u002F4.x\u002F5.community\u002F5.framework-contribution",{"title":1027,"path":1872,"stem":1873,"titleTemplate":6,"icon":1030},"\u002Fdocs\u002F4.x\u002Fcommunity\u002Froadmap","docs\u002F4.x\u002F5.community\u002F6.roadmap",{"title":1032,"path":1875,"stem":1876,"titleTemplate":6,"icon":1035},"\u002Fdocs\u002F4.x\u002Fcommunity\u002Fchangelog","docs\u002F4.x\u002F5.community\u002F7.changelog",{"title":1037,"titleTemplate":1038,"icon":1039,"path":1878,"stem":1879,"children":1880,"page":108},"\u002Fdocs\u002F4.x\u002Fbridge","docs\u002F4.x\u002F6.bridge",[1881,1884,1887,1890,1893,1896,1899,1902,1905,1908],{"title":1044,"path":1882,"stem":1883,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Foverview","docs\u002F4.x\u002F6.bridge\u002F1.overview",{"title":29,"path":1885,"stem":1886,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fconfiguration","docs\u002F4.x\u002F6.bridge\u002F10.configuration",{"title":280,"path":1888,"stem":1889,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Ftypescript","docs\u002F4.x\u002F6.bridge\u002F2.typescript",{"title":1054,"path":1891,"stem":1892,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fbridge-composition-api","docs\u002F4.x\u002F6.bridge\u002F3.bridge-composition-api",{"title":1058,"path":1894,"stem":1895,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fplugins-and-middleware","docs\u002F4.x\u002F6.bridge\u002F4.plugins-and-middleware",{"title":1062,"path":1897,"stem":1898,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fnuxt3-compatible-api","docs\u002F4.x\u002F6.bridge\u002F5.nuxt3-compatible-api",{"title":932,"path":1900,"stem":1901,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fmeta","docs\u002F4.x\u002F6.bridge\u002F6.meta",{"title":399,"path":1903,"stem":1904,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fruntime-config","docs\u002F4.x\u002F6.bridge\u002F7.runtime-config",{"title":833,"path":1906,"stem":1907,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fnitro","docs\u002F4.x\u002F6.bridge\u002F8.nitro",{"title":1075,"path":1909,"stem":1910,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fvite","docs\u002F4.x\u002F6.bridge\u002F9.vite",{"title":1079,"titleTemplate":1080,"icon":107,"path":1912,"stem":1913,"children":1914,"page":108},"\u002Fdocs\u002F4.x\u002Fmigration","docs\u002F4.x\u002F7.migration",[1915,1918,1921,1924,1927,1930,1933,1936,1939,1942,1945],{"title":1044,"path":1916,"stem":1917,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Foverview","docs\u002F4.x\u002F7.migration\u002F1.overview",{"title":1088,"path":1919,"stem":1920,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fbundling","docs\u002F4.x\u002F7.migration\u002F10.bundling",{"title":79,"path":1922,"stem":1923,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fserver","docs\u002F4.x\u002F7.migration\u002F11.server",{"title":29,"path":1925,"stem":1926,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fconfiguration","docs\u002F4.x\u002F7.migration\u002F2.configuration",{"title":276,"path":1928,"stem":1929,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fmodule-authors","docs\u002F4.x\u002F7.migration\u002F20.module-authors",{"title":922,"path":1931,"stem":1932,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fauto-imports","docs\u002F4.x\u002F7.migration\u002F3.auto-imports",{"title":932,"path":1934,"stem":1935,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fmeta","docs\u002F4.x\u002F7.migration\u002F4.meta",{"title":1058,"path":1937,"stem":1938,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fplugins-and-middleware","docs\u002F4.x\u002F7.migration\u002F5.plugins-and-middleware",{"title":1110,"path":1940,"stem":1941,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fpages-and-layouts","docs\u002F4.x\u002F7.migration\u002F6.pages-and-layouts",{"title":1114,"path":1943,"stem":1944,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fcomponent-options","docs\u002F4.x\u002F7.migration\u002F7.component-options",{"title":399,"path":1946,"stem":1947,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fruntime-config","docs\u002F4.x\u002F7.migration\u002F8.runtime-config",{"title":5,"titleTemplate":6,"icon":7,"path":1949,"stem":1950,"children":1951,"page":108},"\u002Fdocs\u002F5.x","docs\u002F5.x",[1952,2010,2100,2227,2597,2674,2696,2730],{"title":12,"titleTemplate":13,"icon":14,"path":1953,"stem":1954,"children":1955,"page":108},"\u002Fdocs\u002F5.x\u002Fgetting-started","docs\u002F5.x\u002F1.getting-started",[1956,1959,1962,1965,1968,1971,1974,1977,1980,1983,1986,1989,1992,1995,1998,2001,2004,2007],{"title":19,"path":1957,"stem":1958,"titleTemplate":6,"icon":22},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fintroduction","docs\u002F5.x\u002F1.getting-started\u002F01.introduction",{"title":24,"path":1960,"stem":1961,"titleTemplate":6,"icon":27},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Finstallation","docs\u002F5.x\u002F1.getting-started\u002F02.installation",{"title":29,"path":1963,"stem":1964,"titleTemplate":6,"icon":32},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fconfiguration","docs\u002F5.x\u002F1.getting-started\u002F03.configuration",{"title":34,"path":1966,"stem":1967,"titleTemplate":6,"icon":37},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fviews","docs\u002F5.x\u002F1.getting-started\u002F04.views",{"title":39,"path":1969,"stem":1970,"titleTemplate":6,"icon":42},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fassets","docs\u002F5.x\u002F1.getting-started\u002F05.assets",{"title":44,"path":1972,"stem":1973,"titleTemplate":6,"icon":47},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fstyling","docs\u002F5.x\u002F1.getting-started\u002F06.styling",{"title":49,"path":1975,"stem":1976,"titleTemplate":6,"icon":52},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Frouting","docs\u002F5.x\u002F1.getting-started\u002F07.routing",{"title":54,"path":1978,"stem":1979,"titleTemplate":6,"icon":57},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fseo-meta","docs\u002F5.x\u002F1.getting-started\u002F08.seo-meta",{"title":59,"path":1981,"stem":1982,"titleTemplate":6,"icon":62},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Ftransitions","docs\u002F5.x\u002F1.getting-started\u002F09.transitions",{"title":64,"path":1984,"stem":1985,"titleTemplate":6,"icon":67},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fdata-fetching","docs\u002F5.x\u002F1.getting-started\u002F10.data-fetching",{"title":69,"path":1987,"stem":1988,"titleTemplate":6,"icon":72},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fstate-management","docs\u002F5.x\u002F1.getting-started\u002F11.state-management",{"title":74,"path":1990,"stem":1991,"titleTemplate":6,"icon":77},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Ferror-handling","docs\u002F5.x\u002F1.getting-started\u002F12.error-handling",{"title":79,"path":1993,"stem":1994,"titleTemplate":6,"icon":82},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fserver","docs\u002F5.x\u002F1.getting-started\u002F13.server",{"title":84,"path":1996,"stem":1997,"titleTemplate":6,"icon":87},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Flayers","docs\u002F5.x\u002F1.getting-started\u002F14.layers",{"title":89,"path":1999,"stem":2000,"titleTemplate":6,"icon":92},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fprerendering","docs\u002F5.x\u002F1.getting-started\u002F15.prerendering",{"title":94,"path":2002,"stem":2003,"titleTemplate":6,"icon":97},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fdeployment","docs\u002F5.x\u002F1.getting-started\u002F16.deployment",{"title":99,"path":2005,"stem":2006,"titleTemplate":6,"icon":102},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Ftesting","docs\u002F5.x\u002F1.getting-started\u002F17.testing",{"title":104,"path":2008,"stem":2009,"titleTemplate":6,"icon":107},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fupgrade","docs\u002F5.x\u002F1.getting-started\u002F18.upgrade",{"title":110,"titleTemplate":111,"icon":112,"path":2011,"stem":2012,"children":2013,"page":108},"\u002Fdocs\u002F5.x\u002Fdirectory-structure","docs\u002F5.x\u002F2.directory-structure",[2014,2017,2020,2058,2061,2064,2067,2070,2073,2076,2079,2082,2085,2088,2091,2094,2097],{"title":117,"path":2015,"stem":2016,"titleTemplate":6,"icon":120},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fnuxt","docs\u002F5.x\u002F2.directory-structure\u002F0.nuxt",{"title":122,"path":2018,"stem":2019,"titleTemplate":6,"icon":125},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Foutput","docs\u002F5.x\u002F2.directory-structure\u002F0.output",{"title":1193,"titleTemplate":111,"head":2021,"defaultOpen":1196,"icon":1197,"path":2022,"stem":2023,"children":2024,"page":108},{"title":1195},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp","docs\u002F5.x\u002F2.directory-structure\u002F1.app",[2025,2028,2031,2034,2037,2040,2043,2046,2049,2052,2055],{"title":127,"path":2026,"stem":2027,"titleTemplate":6,"icon":130},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fassets","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.assets",{"title":132,"path":2029,"stem":2030,"titleTemplate":6,"icon":135},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fcomponents","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.components",{"title":137,"path":2032,"stem":2033,"titleTemplate":6,"icon":140},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fcomposables","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.composables",{"title":152,"path":2035,"stem":2036,"titleTemplate":6,"icon":155},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Flayouts","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.layouts",{"title":157,"path":2038,"stem":2039,"titleTemplate":6,"icon":160},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fmiddleware","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.middleware",{"title":171,"path":2041,"stem":2042,"titleTemplate":6,"icon":155},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fpages","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.pages",{"title":175,"path":2044,"stem":2045,"titleTemplate":6,"icon":178},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fplugins","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.plugins",{"title":195,"path":2047,"stem":2048,"titleTemplate":6,"icon":198},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Futils","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.utils",{"title":219,"path":2050,"stem":2051,"titleTemplate":6,"icon":222},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fapp","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F3.app",{"title":224,"path":2053,"stem":2054,"titleTemplate":6,"icon":227},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fapp-config","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F3.app-config",{"title":229,"path":2056,"stem":2057,"titleTemplate":6,"icon":222},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Ferror","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F3.error",{"title":142,"path":2059,"stem":2060,"titleTemplate":6,"icon":145},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fcontent","docs\u002F5.x\u002F2.directory-structure\u002F1.content",{"title":147,"path":2062,"stem":2063,"titleTemplate":6,"icon":150},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Flayers","docs\u002F5.x\u002F2.directory-structure\u002F1.layers",{"title":162,"path":2065,"stem":2066,"titleTemplate":6,"icon":150},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fmodules","docs\u002F5.x\u002F2.directory-structure\u002F1.modules",{"title":166,"path":2068,"stem":2069,"titleTemplate":6,"icon":169},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fnode_modules","docs\u002F5.x\u002F2.directory-structure\u002F1.node_modules",{"title":180,"path":2071,"stem":2072,"titleTemplate":6,"icon":183},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fpublic","docs\u002F5.x\u002F2.directory-structure\u002F1.public",{"title":185,"path":2074,"stem":2075,"titleTemplate":6,"icon":188},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fserver","docs\u002F5.x\u002F2.directory-structure\u002F1.server",{"title":190,"path":2077,"stem":2078,"titleTemplate":6,"icon":193},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fshared","docs\u002F5.x\u002F2.directory-structure\u002F1.shared",{"title":200,"path":2080,"stem":2081,"titleTemplate":6,"icon":203},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fenv","docs\u002F5.x\u002F2.directory-structure\u002F2.env",{"title":205,"path":2083,"stem":2084,"titleTemplate":6,"icon":208},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fgitignore","docs\u002F5.x\u002F2.directory-structure\u002F2.gitignore",{"title":210,"path":2086,"stem":2087,"titleTemplate":6,"icon":213},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fnuxtignore","docs\u002F5.x\u002F2.directory-structure\u002F2.nuxtignore",{"title":215,"path":2089,"stem":2090,"titleTemplate":6,"icon":213},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fnuxtrc","docs\u002F5.x\u002F2.directory-structure\u002F2.nuxtrc",{"title":233,"path":2092,"stem":2093,"titleTemplate":6,"icon":213},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fnuxt-config","docs\u002F5.x\u002F2.directory-structure\u002F3.nuxt-config",{"title":237,"path":2095,"stem":2096,"titleTemplate":6,"icon":240},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fpackage","docs\u002F5.x\u002F2.directory-structure\u002F3.package",{"title":242,"path":2098,"stem":2099,"titleTemplate":6,"icon":245},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Ftsconfig","docs\u002F5.x\u002F2.directory-structure\u002F3.tsconfig",{"title":247,"titleTemplate":6,"icon":248,"path":2101,"stem":2102,"children":2103,"page":108},"\u002Fdocs\u002F5.x\u002Fguide","docs\u002F5.x\u002F3.guide",[2104,2129,2142,2152,2177,2193],{"title":253,"titleTemplate":254,"icon":255,"path":2105,"stem":2106,"children":2107,"page":108},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts","docs\u002F5.x\u002F3.guide\u002F1.concepts",[2108,2111,2114,2117,2120,2123,2126],{"title":260,"path":2109,"stem":2110,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts\u002Frendering","docs\u002F5.x\u002F3.guide\u002F1.concepts\u002F1.rendering",{"title":264,"path":2112,"stem":2113,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts\u002Fnuxt-lifecycle","docs\u002F5.x\u002F3.guide\u002F1.concepts\u002F2.nuxt-lifecycle",{"title":268,"path":2115,"stem":2116,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts\u002Fauto-imports","docs\u002F5.x\u002F3.guide\u002F1.concepts\u002F3.auto-imports",{"title":272,"path":2118,"stem":2119,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts\u002Fserver-engine","docs\u002F5.x\u002F3.guide\u002F1.concepts\u002F4.server-engine",{"title":276,"path":2121,"stem":2122,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts\u002Fmodules","docs\u002F5.x\u002F3.guide\u002F1.concepts\u002F5.modules",{"title":280,"path":2124,"stem":2125,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts\u002Ftypescript","docs\u002F5.x\u002F3.guide\u002F1.concepts\u002F8.typescript",{"title":284,"path":2127,"stem":2128,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts\u002Fcode-style","docs\u002F5.x\u002F3.guide\u002F1.concepts\u002F9.code-style",{"title":288,"titleTemplate":289,"icon":290,"path":2130,"stem":2131,"children":2132,"page":108},"\u002Fdocs\u002F5.x\u002Fguide\u002Fbest-practices","docs\u002F5.x\u002F3.guide\u002F2.best-practices",[2133,2136,2139],{"title":1310,"path":2134,"stem":2135,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fbest-practices\u002Fhydration","docs\u002F5.x\u002F3.guide\u002F2.best-practices\u002Fhydration",{"title":299,"path":2137,"stem":2138,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fbest-practices\u002Fperformance","docs\u002F5.x\u002F3.guide\u002F2.best-practices\u002Fperformance",{"title":303,"path":2140,"stem":2141,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fbest-practices\u002Fplugins","docs\u002F5.x\u002F3.guide\u002F2.best-practices\u002Fplugins",{"title":307,"titleTemplate":308,"icon":309,"path":2143,"stem":2144,"children":2145,"page":108},"\u002Fdocs\u002F5.x\u002Fguide\u002Fai","docs\u002F5.x\u002F3.guide\u002F3.ai",[2146,2149],{"title":314,"path":2147,"stem":2148,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fai\u002Fmcp","docs\u002F5.x\u002F3.guide\u002F3.ai\u002F1.mcp",{"title":318,"path":2150,"stem":2151,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fai\u002Fllms-txt","docs\u002F5.x\u002F3.guide\u002F3.ai\u002F2.llms-txt",{"title":322,"titleTemplate":323,"icon":324,"path":2153,"stem":2154,"children":2155,"page":108},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules","docs\u002F5.x\u002F3.guide\u002F4.modules",[2156,2159,2162,2165,2168,2171,2174],{"title":329,"path":2157,"stem":2158,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Fgetting-started","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F1.getting-started",{"title":333,"path":2160,"stem":2161,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Fmodule-anatomy","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F2.module-anatomy",{"title":337,"path":2163,"stem":2164,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Frecipes-basics","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F3.recipes-basics",{"title":341,"path":2166,"stem":2167,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Frecipes-advanced","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F4.recipes-advanced",{"title":345,"path":2169,"stem":2170,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Ftesting","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F5.testing",{"title":349,"path":2172,"stem":2173,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Fbest-practices","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F6.best-practices",{"title":353,"path":2175,"stem":2176,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Fecosystem","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F7.ecosystem",{"title":357,"titleTemplate":358,"icon":359,"path":2178,"stem":2179,"children":2180,"page":108},"\u002Fdocs\u002F5.x\u002Fguide\u002Frecipes","docs\u002F5.x\u002F3.guide\u002F5.recipes",[2181,2184,2187,2190],{"title":364,"path":2182,"stem":2183,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Frecipes\u002Fcustom-routing","docs\u002F5.x\u002F3.guide\u002F5.recipes\u002F1.custom-routing",{"title":368,"path":2185,"stem":2186,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Frecipes\u002Fvite-plugin","docs\u002F5.x\u002F3.guide\u002F5.recipes\u002F2.vite-plugin",{"title":372,"path":2188,"stem":2189,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Frecipes\u002Fcustom-usefetch","docs\u002F5.x\u002F3.guide\u002F5.recipes\u002F3.custom-usefetch",{"title":376,"path":2191,"stem":2192,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Frecipes\u002Fsessions-and-authentication","docs\u002F5.x\u002F3.guide\u002F5.recipes\u002F4.sessions-and-authentication",{"title":380,"titleTemplate":381,"icon":382,"path":2194,"stem":2195,"children":2196,"page":108},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further","docs\u002F5.x\u002F3.guide\u002F6.going-further",[2197,2200,2203,2206,2209,2212,2215,2218,2221,2224],{"title":387,"path":2198,"stem":2199,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fevents","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F1.events",{"title":391,"path":2201,"stem":2202,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fexperimental-features","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F1.experimental-features",{"title":395,"path":2204,"stem":2205,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Ffeatures","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F1.features",{"title":399,"path":2207,"stem":2208,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fruntime-config","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F10.runtime-config",{"title":403,"path":2210,"stem":2211,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fnightly-release-channel","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F11.nightly-release-channel",{"title":407,"path":2213,"stem":2214,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fhooks","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F2.hooks",{"title":411,"path":2216,"stem":2217,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fkit","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F4.kit",{"title":415,"path":2219,"stem":2220,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fnuxt-app","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F6.nuxt-app",{"title":419,"path":2222,"stem":2223,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Flayers","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F7.layers",{"title":423,"path":2225,"stem":2226,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fdebugging","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F9.debugging",{"title":427,"titleTemplate":428,"icon":429,"path":2228,"stem":2229,"children":2230,"page":108},"\u002Fdocs\u002F5.x\u002Fapi","docs\u002F5.x\u002F4.api",[2231,2283,2383,2474,2526,2584,2594],{"title":434,"titleTemplate":435,"icon":324,"path":2232,"stem":2233,"children":2234,"page":108},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents","docs\u002F5.x\u002F4.api\u002F1.components",[2235,2238,2241,2244,2247,2250,2253,2256,2259,2262,2265,2268,2271,2274,2277,2280],{"title":440,"path":2236,"stem":2237,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fclient-only","docs\u002F5.x\u002F4.api\u002F1.components\u002F1.client-only",{"title":444,"path":2239,"stem":2240,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fdev-only","docs\u002F5.x\u002F4.api\u002F1.components\u002F1.dev-only",{"title":448,"path":2242,"stem":2243,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-client-fallback","docs\u002F5.x\u002F4.api\u002F1.components\u002F1.nuxt-client-fallback",{"title":452,"path":2245,"stem":2246,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-picture","docs\u002F5.x\u002F4.api\u002F1.components\u002F10.nuxt-picture",{"title":456,"path":2248,"stem":2249,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fteleports","docs\u002F5.x\u002F4.api\u002F1.components\u002F11.teleports",{"title":460,"path":2251,"stem":2252,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-route-announcer","docs\u002F5.x\u002F4.api\u002F1.components\u002F12.nuxt-route-announcer",{"title":464,"path":2254,"stem":2255,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-time","docs\u002F5.x\u002F4.api\u002F1.components\u002F13.nuxt-time",{"title":1434,"path":2257,"stem":2258,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-announcer","docs\u002F5.x\u002F4.api\u002F1.components\u002F14.nuxt-announcer",{"title":468,"path":2260,"stem":2261,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-page","docs\u002F5.x\u002F4.api\u002F1.components\u002F2.nuxt-page",{"title":472,"path":2263,"stem":2264,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-layout","docs\u002F5.x\u002F4.api\u002F1.components\u002F3.nuxt-layout",{"title":476,"path":2266,"stem":2267,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-link","docs\u002F5.x\u002F4.api\u002F1.components\u002F4.nuxt-link",{"title":480,"path":2269,"stem":2270,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-loading-indicator","docs\u002F5.x\u002F4.api\u002F1.components\u002F5.nuxt-loading-indicator",{"title":484,"path":2272,"stem":2273,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-error-boundary","docs\u002F5.x\u002F4.api\u002F1.components\u002F6.nuxt-error-boundary",{"title":488,"path":2275,"stem":2276,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-welcome","docs\u002F5.x\u002F4.api\u002F1.components\u002F7.nuxt-welcome",{"title":492,"path":2278,"stem":2279,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-island","docs\u002F5.x\u002F4.api\u002F1.components\u002F8.nuxt-island",{"title":496,"path":2281,"stem":2282,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-img","docs\u002F5.x\u002F4.api\u002F1.components\u002F9.nuxt-img",{"title":500,"titleTemplate":501,"icon":502,"path":2284,"stem":2285,"children":2286,"page":108},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables","docs\u002F5.x\u002F4.api\u002F2.composables",[2287,2290,2293,2296,2299,2302,2305,2308,2311,2314,2317,2320,2323,2326,2329,2332,2335,2338,2341,2344,2347,2350,2353,2356,2359,2362,2365,2368,2371,2374,2377,2380],{"title":1466,"path":2288,"stem":2289,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fcreate-use-async-data","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fcreate-use-async-data",{"title":1470,"path":2291,"stem":2292,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fcreate-use-fetch","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fcreate-use-fetch",{"title":507,"path":2294,"stem":2295,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fon-prehydrate","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fon-prehydrate",{"title":1477,"path":2297,"stem":2298,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-announcer","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-announcer",{"title":511,"path":2300,"stem":2301,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-app-config","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-app-config",{"title":515,"path":2303,"stem":2304,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-async-data","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-async-data",{"title":519,"path":2306,"stem":2307,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-cookie","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-cookie",{"title":523,"path":2309,"stem":2310,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-error","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-error",{"title":527,"path":2312,"stem":2313,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-fetch","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-fetch",{"title":531,"path":2315,"stem":2316,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-head","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-head",{"title":535,"path":2318,"stem":2319,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-head-safe","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-head-safe",{"title":539,"path":2321,"stem":2322,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-hydration","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-hydration",{"title":543,"path":2324,"stem":2325,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-lazy-async-data","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-lazy-async-data",{"title":547,"path":2327,"stem":2328,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-lazy-fetch","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-lazy-fetch",{"title":551,"path":2330,"stem":2331,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-loading-indicator","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-loading-indicator",{"title":555,"path":2333,"stem":2334,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-nuxt-app","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-nuxt-app",{"title":559,"path":2336,"stem":2337,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-nuxt-data","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-nuxt-data",{"title":563,"path":2339,"stem":2340,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-preview-mode","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-preview-mode",{"title":567,"path":2342,"stem":2343,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-request-event","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-request-event",{"title":571,"path":2345,"stem":2346,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-request-fetch","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-request-fetch",{"title":575,"path":2348,"stem":2349,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-request-header","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-request-header",{"title":579,"path":2351,"stem":2352,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-request-headers","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-request-headers",{"title":583,"path":2354,"stem":2355,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-request-url","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-request-url",{"title":587,"path":2357,"stem":2358,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-response-header","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-response-header",{"title":591,"path":2360,"stem":2361,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-route","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-route",{"title":595,"path":2363,"stem":2364,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-route-announcer","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-route-announcer",{"title":599,"path":2366,"stem":2367,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-router","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-router",{"title":603,"path":2369,"stem":2370,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-runtime-config","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-runtime-config",{"title":607,"path":2372,"stem":2373,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-runtime-hook","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-runtime-hook",{"title":611,"path":2375,"stem":2376,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-seo-meta","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-seo-meta",{"title":615,"path":2378,"stem":2379,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-server-seo-meta","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-server-seo-meta",{"title":619,"path":2381,"stem":2382,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-state","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-state",{"title":623,"titleTemplate":624,"icon":625,"path":2384,"stem":2385,"children":2386,"page":108},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils","docs\u002F5.x\u002F4.api\u002F3.utils",[2387,2390,2393,2396,2399,2402,2405,2408,2411,2414,2417,2420,2423,2426,2429,2432,2435,2438,2441,2444,2447,2450,2453,2456,2459,2462,2465,2468,2471],{"title":630,"path":2388,"stem":2389,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fdollarfetch","docs\u002F5.x\u002F4.api\u002F3.utils\u002F$fetch",{"title":634,"path":2391,"stem":2392,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fabort-navigation","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fabort-navigation",{"title":638,"path":2394,"stem":2395,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fadd-route-middleware","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fadd-route-middleware",{"title":642,"path":2397,"stem":2398,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fcall-once","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fcall-once",{"title":646,"path":2400,"stem":2401,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fclear-error","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fclear-error",{"title":650,"path":2403,"stem":2404,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fclear-nuxt-data","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fclear-nuxt-data",{"title":654,"path":2406,"stem":2407,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fclear-nuxt-state","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fclear-nuxt-state",{"title":658,"path":2409,"stem":2410,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fcreate-error","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fcreate-error",{"title":662,"path":2412,"stem":2413,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fdefine-lazy-hydration-component","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fdefine-lazy-hydration-component",{"title":666,"path":2415,"stem":2416,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fdefine-nuxt-component","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fdefine-nuxt-component",{"title":670,"path":2418,"stem":2419,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fdefine-nuxt-plugin","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fdefine-nuxt-plugin",{"title":674,"path":2421,"stem":2422,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fdefine-nuxt-route-middleware","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fdefine-nuxt-route-middleware",{"title":678,"path":2424,"stem":2425,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fdefine-page-meta","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fdefine-page-meta",{"title":682,"path":2427,"stem":2428,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fdefine-route-rules","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fdefine-route-rules",{"title":686,"path":2430,"stem":2431,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fnavigate-to","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fnavigate-to",{"title":690,"path":2433,"stem":2434,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fon-before-route-leave","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fon-before-route-leave",{"title":694,"path":2436,"stem":2437,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fon-before-route-update","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fon-before-route-update",{"title":698,"path":2439,"stem":2440,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fon-nuxt-ready","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fon-nuxt-ready",{"title":702,"path":2442,"stem":2443,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fprefetch-components","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fprefetch-components",{"title":706,"path":2445,"stem":2446,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fpreload-components","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fpreload-components",{"title":710,"path":2448,"stem":2449,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fpreload-route-components","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fpreload-route-components",{"title":714,"path":2451,"stem":2452,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fprerender-routes","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fprerender-routes",{"title":718,"path":2454,"stem":2455,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Frefresh-cookie","docs\u002F5.x\u002F4.api\u002F3.utils\u002Frefresh-cookie",{"title":722,"path":2457,"stem":2458,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Frefresh-nuxt-data","docs\u002F5.x\u002F4.api\u002F3.utils\u002Frefresh-nuxt-data",{"title":726,"path":2460,"stem":2461,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Freload-nuxt-app","docs\u002F5.x\u002F4.api\u002F3.utils\u002Freload-nuxt-app",{"title":730,"path":2463,"stem":2464,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fset-page-layout","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fset-page-layout",{"title":734,"path":2466,"stem":2467,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fset-response-status","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fset-response-status",{"title":738,"path":2469,"stem":2470,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fshow-error","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fshow-error",{"title":742,"path":2472,"stem":2473,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fupdate-app-config","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fupdate-app-config",{"title":746,"titleTemplate":747,"icon":748,"path":2475,"stem":2476,"children":2477,"page":108},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands","docs\u002F5.x\u002F4.api\u002F4.commands",[2478,2481,2484,2487,2490,2493,2496,2499,2502,2505,2508,2511,2514,2517,2520,2523],{"title":753,"path":2479,"stem":2480,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fadd","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fadd",{"title":757,"path":2482,"stem":2483,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fanalyze","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fanalyze",{"title":761,"path":2485,"stem":2486,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fbuild","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fbuild",{"title":765,"path":2488,"stem":2489,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fbuild-module","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fbuild-module",{"title":769,"path":2491,"stem":2492,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fcleanup","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fcleanup",{"title":773,"path":2494,"stem":2495,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fdev","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fdev",{"title":777,"path":2497,"stem":2498,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fdevtools","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fdevtools",{"title":781,"path":2500,"stem":2501,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fgenerate","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fgenerate",{"title":785,"path":2503,"stem":2504,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Finfo","docs\u002F5.x\u002F4.api\u002F4.commands\u002Finfo",{"title":789,"path":2506,"stem":2507,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Finit","docs\u002F5.x\u002F4.api\u002F4.commands\u002Finit",{"title":793,"path":2509,"stem":2510,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fmodule","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fmodule",{"title":797,"path":2512,"stem":2513,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fprepare","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fprepare",{"title":801,"path":2515,"stem":2516,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fpreview","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fpreview",{"title":805,"path":2518,"stem":2519,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Ftest","docs\u002F5.x\u002F4.api\u002F4.commands\u002Ftest",{"title":809,"path":2521,"stem":2522,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Ftypecheck","docs\u002F5.x\u002F4.api\u002F4.commands\u002Ftypecheck",{"title":813,"path":2524,"stem":2525,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fupgrade","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fupgrade",{"title":411,"titleTemplate":817,"icon":818,"path":2527,"stem":2528,"children":2529,"page":108},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit","docs\u002F5.x\u002F4.api\u002F5.kit",[2530,2533,2536,2539,2542,2545,2548,2551,2554,2557,2560,2563,2566,2569,2572,2575,2578,2581],{"title":276,"path":2531,"stem":2532,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fmodules","docs\u002F5.x\u002F4.api\u002F5.kit\u002F1.modules",{"title":399,"path":2534,"stem":2535,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fruntime-config","docs\u002F5.x\u002F4.api\u002F5.kit\u002F10.runtime-config",{"title":829,"path":2537,"stem":2538,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Ftemplates","docs\u002F5.x\u002F4.api\u002F5.kit\u002F10.templates",{"title":833,"path":2540,"stem":2541,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fnitro","docs\u002F5.x\u002F4.api\u002F5.kit\u002F11.nitro",{"title":837,"path":2543,"stem":2544,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fresolving","docs\u002F5.x\u002F4.api\u002F5.kit\u002F12.resolving",{"title":841,"path":2546,"stem":2547,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Flogging","docs\u002F5.x\u002F4.api\u002F5.kit\u002F13.logging",{"title":845,"path":2549,"stem":2550,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fbuilder","docs\u002F5.x\u002F4.api\u002F5.kit\u002F14.builder",{"title":849,"path":2552,"stem":2553,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fexamples","docs\u002F5.x\u002F4.api\u002F5.kit\u002F15.examples",{"title":84,"path":2555,"stem":2556,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Flayers","docs\u002F5.x\u002F4.api\u002F5.kit\u002F16.layers",{"title":856,"path":2558,"stem":2559,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fprogrammatic","docs\u002F5.x\u002F4.api\u002F5.kit\u002F2.programmatic",{"title":860,"path":2561,"stem":2562,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fcompatibility","docs\u002F5.x\u002F4.api\u002F5.kit\u002F3.compatibility",{"title":268,"path":2564,"stem":2565,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fautoimports","docs\u002F5.x\u002F4.api\u002F5.kit\u002F4.autoimports",{"title":434,"path":2567,"stem":2568,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fcomponents","docs\u002F5.x\u002F4.api\u002F5.kit\u002F5.components",{"title":870,"path":2570,"stem":2571,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fcontext","docs\u002F5.x\u002F4.api\u002F5.kit\u002F6.context",{"title":874,"path":2573,"stem":2574,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fpages","docs\u002F5.x\u002F4.api\u002F5.kit\u002F7.pages",{"title":878,"path":2576,"stem":2577,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Flayout","docs\u002F5.x\u002F4.api\u002F5.kit\u002F8.layout",{"title":882,"path":2579,"stem":2580,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fhead","docs\u002F5.x\u002F4.api\u002F5.kit\u002F9.head",{"title":886,"path":2582,"stem":2583,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fplugins","docs\u002F5.x\u002F4.api\u002F5.kit\u002F9.plugins",{"title":890,"titleTemplate":6,"icon":891,"path":2585,"stem":2586,"children":2587,"page":108},"\u002Fdocs\u002F5.x\u002Fapi\u002Fadvanced","docs\u002F5.x\u002F4.api\u002F6.advanced",[2588,2591],{"title":407,"path":2589,"stem":2590,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fadvanced\u002Fhooks","docs\u002F5.x\u002F4.api\u002F6.advanced\u002F1.hooks",{"title":899,"path":2592,"stem":2593,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fadvanced\u002Fimport-meta","docs\u002F5.x\u002F4.api\u002F6.advanced\u002F2.import-meta",{"title":903,"path":2595,"stem":2596,"titleTemplate":906,"icon":32},"\u002Fdocs\u002F5.x\u002Fapi\u002Fnuxt-config","docs\u002F5.x\u002F4.api\u002F6.nuxt-config",{"title":849,"titleTemplate":908,"icon":909,"path":2598,"stem":2599,"children":2600,"page":108},"\u002Fdocs\u002F5.x\u002Fexamples","docs\u002F5.x\u002F4.examples",[2601,2604,2623,2636,2667],{"title":914,"path":2602,"stem":2603,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fhello-world","docs\u002F5.x\u002F4.examples\u002F0.hello-world",{"title":395,"path":2605,"stem":2606,"children":2607,"page":108},"\u002Fdocs\u002F5.x\u002Fexamples\u002Ffeatures","docs\u002F5.x\u002F4.examples\u002F1.features",[2608,2611,2614,2617,2620],{"title":922,"path":2609,"stem":2610,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Ffeatures\u002Fauto-imports","docs\u002F5.x\u002F4.examples\u002F1.features\u002F1.auto-imports",{"title":64,"path":2612,"stem":2613,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Ffeatures\u002Fdata-fetching","docs\u002F5.x\u002F4.examples\u002F1.features\u002F2.data-fetching",{"title":69,"path":2615,"stem":2616,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Ffeatures\u002Fstate-management","docs\u002F5.x\u002F4.examples\u002F1.features\u002F3.state-management",{"title":932,"path":2618,"stem":2619,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Ffeatures\u002Fmeta-tags","docs\u002F5.x\u002F4.examples\u002F1.features\u002F4.meta-tags",{"title":936,"path":2621,"stem":2622,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Ffeatures\u002Flayouts","docs\u002F5.x\u002F4.examples\u002F1.features\u002F5.layouts",{"title":49,"path":2624,"stem":2625,"children":2626,"page":108},"\u002Fdocs\u002F5.x\u002Fexamples\u002Frouting","docs\u002F5.x\u002F4.examples\u002F2.routing",[2627,2630,2633],{"title":944,"path":2628,"stem":2629,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Frouting\u002Fmiddleware","docs\u002F5.x\u002F4.examples\u002F2.routing\u002Fmiddleware",{"title":874,"path":2631,"stem":2632,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Frouting\u002Fpages","docs\u002F5.x\u002F4.examples\u002F2.routing\u002Fpages",{"title":951,"path":2634,"stem":2635,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Frouting\u002Funiversal-router","docs\u002F5.x\u002F4.examples\u002F2.routing\u002Funiversal-router",{"title":890,"path":2637,"stem":2638,"children":2639,"page":108},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced","docs\u002F5.x\u002F4.examples\u002F4.advanced",[2640,2643,2646,2649,2652,2655,2658,2661,2664],{"title":84,"path":2641,"stem":2642,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Fconfig-extends","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Fconfig-extends",{"title":74,"path":2644,"stem":2645,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Ferror-handling","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Ferror-handling",{"title":965,"path":2647,"stem":2648,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Fjsx","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Fjsx",{"title":969,"path":2650,"stem":2651,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Flocale","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Flocale",{"title":973,"path":2653,"stem":2654,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Fmodule-extend-pages","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Fmodule-extend-pages",{"title":977,"path":2656,"stem":2657,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Fteleport","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Fteleport",{"title":99,"path":2659,"stem":2660,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Ftesting","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Ftesting",{"title":519,"path":2662,"stem":2663,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Fuse-cookie","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Fuse-cookie",{"title":987,"path":2665,"stem":2666,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Fuse-custom-fetch-composable","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Fuse-custom-fetch-composable",{"title":991,"path":2668,"stem":2669,"children":2670,"page":108},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fexperimental","docs\u002F5.x\u002F4.examples\u002F7.experimental",[2671],{"title":996,"path":2672,"stem":2673,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fexperimental\u002Fwasm","docs\u002F5.x\u002F4.examples\u002F7.experimental\u002Fwasm",{"title":1000,"titleTemplate":1001,"icon":1002,"path":2675,"stem":2676,"children":2677,"page":108},"\u002Fdocs\u002F5.x\u002Fcommunity","docs\u002F5.x\u002F5.community",[2678,2681,2684,2687,2690,2693],{"title":1007,"path":2679,"stem":2680,"titleTemplate":6,"icon":1010},"\u002Fdocs\u002F5.x\u002Fcommunity\u002Fgetting-help","docs\u002F5.x\u002F5.community\u002F2.getting-help",{"title":1012,"path":2682,"stem":2683,"titleTemplate":6,"icon":1015},"\u002Fdocs\u002F5.x\u002Fcommunity\u002Freporting-bugs","docs\u002F5.x\u002F5.community\u002F3.reporting-bugs",{"title":1017,"path":2685,"stem":2686,"titleTemplate":6,"icon":1020},"\u002Fdocs\u002F5.x\u002Fcommunity\u002Fcontribution","docs\u002F5.x\u002F5.community\u002F4.contribution",{"title":1022,"path":2688,"stem":2689,"titleTemplate":6,"icon":1025},"\u002Fdocs\u002F5.x\u002Fcommunity\u002Fframework-contribution","docs\u002F5.x\u002F5.community\u002F5.framework-contribution",{"title":1027,"path":2691,"stem":2692,"titleTemplate":6,"icon":1030},"\u002Fdocs\u002F5.x\u002Fcommunity\u002Froadmap","docs\u002F5.x\u002F5.community\u002F6.roadmap",{"title":1032,"path":2694,"stem":2695,"titleTemplate":6,"icon":1035},"\u002Fdocs\u002F5.x\u002Fcommunity\u002Fchangelog","docs\u002F5.x\u002F5.community\u002F7.changelog",{"title":1037,"titleTemplate":1038,"icon":1039,"path":2697,"stem":2698,"children":2699,"page":108},"\u002Fdocs\u002F5.x\u002Fbridge","docs\u002F5.x\u002F6.bridge",[2700,2703,2706,2709,2712,2715,2718,2721,2724,2727],{"title":1044,"path":2701,"stem":2702,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Foverview","docs\u002F5.x\u002F6.bridge\u002F1.overview",{"title":29,"path":2704,"stem":2705,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fconfiguration","docs\u002F5.x\u002F6.bridge\u002F10.configuration",{"title":280,"path":2707,"stem":2708,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Ftypescript","docs\u002F5.x\u002F6.bridge\u002F2.typescript",{"title":1054,"path":2710,"stem":2711,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fbridge-composition-api","docs\u002F5.x\u002F6.bridge\u002F3.bridge-composition-api",{"title":1058,"path":2713,"stem":2714,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fplugins-and-middleware","docs\u002F5.x\u002F6.bridge\u002F4.plugins-and-middleware",{"title":1062,"path":2716,"stem":2717,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fnuxt3-compatible-api","docs\u002F5.x\u002F6.bridge\u002F5.nuxt3-compatible-api",{"title":932,"path":2719,"stem":2720,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fmeta","docs\u002F5.x\u002F6.bridge\u002F6.meta",{"title":399,"path":2722,"stem":2723,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fruntime-config","docs\u002F5.x\u002F6.bridge\u002F7.runtime-config",{"title":833,"path":2725,"stem":2726,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fnitro","docs\u002F5.x\u002F6.bridge\u002F8.nitro",{"title":1075,"path":2728,"stem":2729,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fvite","docs\u002F5.x\u002F6.bridge\u002F9.vite",{"title":1079,"titleTemplate":1080,"icon":107,"path":2731,"stem":2732,"children":2733,"page":108},"\u002Fdocs\u002F5.x\u002Fmigration","docs\u002F5.x\u002F7.migration",[2734,2737,2740,2743,2746,2749,2752,2755,2758,2761,2764],{"title":1044,"path":2735,"stem":2736,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Foverview","docs\u002F5.x\u002F7.migration\u002F1.overview",{"title":1088,"path":2738,"stem":2739,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fbundling","docs\u002F5.x\u002F7.migration\u002F10.bundling",{"title":79,"path":2741,"stem":2742,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fserver","docs\u002F5.x\u002F7.migration\u002F11.server",{"title":29,"path":2744,"stem":2745,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fconfiguration","docs\u002F5.x\u002F7.migration\u002F2.configuration",{"title":276,"path":2747,"stem":2748,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fmodule-authors","docs\u002F5.x\u002F7.migration\u002F20.module-authors",{"title":922,"path":2750,"stem":2751,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fauto-imports","docs\u002F5.x\u002F7.migration\u002F3.auto-imports",{"title":932,"path":2753,"stem":2754,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fmeta","docs\u002F5.x\u002F7.migration\u002F4.meta",{"title":1058,"path":2756,"stem":2757,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fplugins-and-middleware","docs\u002F5.x\u002F7.migration\u002F5.plugins-and-middleware",{"title":1110,"path":2759,"stem":2760,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fpages-and-layouts","docs\u002F5.x\u002F7.migration\u002F6.pages-and-layouts",{"title":1114,"path":2762,"stem":2763,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fcomponent-options","docs\u002F5.x\u002F7.migration\u002F7.component-options",{"title":399,"path":2765,"stem":2766,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fruntime-config","docs\u002F5.x\u002F7.migration\u002F8.runtime-config",{"title":2768,"path":2769,"stem":2770,"children":2771,"page":108},"Blog","\u002Fblog","blog",[2772,2776,2780,2784,2788,2792,2796,2800,2804,2808,2812,2816,2820,2824,2828,2832,2836,2840,2844,2848,2852],{"title":2773,"path":2774,"stem":2775},"Announcing 3.0","\u002Fblog\u002Fv3","blog\u002F1.v3",{"title":2777,"path":2778,"stem":2779},"Nuxt 3.3","\u002Fblog\u002Fv3-3","blog\u002F10.v3-3",{"title":2781,"path":2782,"stem":2783},"Nuxt 3.4","\u002Fblog\u002Fv3-4","blog\u002F11.v3-4",{"title":2785,"path":2786,"stem":2787},"Nuxt 3.5","\u002Fblog\u002Fv3-5","blog\u002F12.v3-5",{"title":2789,"path":2790,"stem":2791},"Nuxt 3.6","\u002Fblog\u002Fv3-6","blog\u002F13.v3-6",{"title":2793,"path":2794,"stem":2795},"Nuxt on the Edge","\u002Fblog\u002Fnuxt-on-the-edge","blog\u002F14.nuxt-on-the-edge",{"title":2797,"path":2798,"stem":2799},"Nuxt DevTools v1.0","\u002Fblog\u002Fnuxt-devtools-v1-0","blog\u002F18.nuxt-devtools-v1-0",{"title":2801,"path":2802,"stem":2803},"Nuxt: A vision for 2023","\u002Fblog\u002Fvision-2023","blog\u002F2.vision-2023",{"title":2805,"path":2806,"stem":2807},"The Evolution of Shiki v1.0","\u002Fblog\u002Fshiki-v1","blog\u002F21.shiki-v1",{"title":2809,"path":2810,"stem":2811},"Refreshed Nuxt ESLint Integrations","\u002Fblog\u002Feslint-module","blog\u002F24.eslint-module",{"title":2813,"path":2814,"stem":2815},"Introducing Nuxt Scripts","\u002Fblog\u002Fnuxt-scripts","blog\u002F26.nuxt-scripts",{"title":2817,"path":2818,"stem":2819},"Introducing Nuxt Icon v1","\u002Fblog\u002Fnuxt-icon-v1-0","blog\u002F29.nuxt-icon-v1-0",{"title":2821,"path":2822,"stem":2823},"Introducing Nuxt DevTools","\u002Fblog\u002Fintroducing-nuxt-devtools","blog\u002F3.introducing-nuxt-devtools",{"title":2825,"path":2826,"stem":2827},"Announcing Nuxt 3 Release Candidate","\u002Fblog\u002Fnuxt3-rc","blog\u002F3.nuxt3-rc",{"title":2829,"path":2830,"stem":2831},"Nuxt 2 End-of-Life (EOL)","\u002Fblog\u002Fnuxt2-eol","blog\u002F4.nuxt2-eol",{"title":2833,"path":2834,"stem":2835},"Introducing Nuxt 3 Beta","\u002Fblog\u002Fnuxt3-beta","blog\u002F4.nuxt3-beta",{"title":2837,"path":2838,"stem":2839},"Going Full Static","\u002Fblog\u002Fgoing-full-static","blog\u002F5.going-full-static",{"title":2841,"path":2842,"stem":2843},"Introducing Smart Prefetching","\u002Fblog\u002Fintroducing-smart-prefetching","blog\u002F6.introducing-smart-prefetching",{"title":2845,"path":2846,"stem":2847},"Understanding how fetch works in Nuxt 2.12","\u002Fblog\u002Funderstanding-how-fetch-works-in-nuxt-2-12","blog\u002F7.understanding-how-fetch-works-in-nuxt-2-12",{"title":2849,"path":2850,"stem":2851},"Nuxt 2 Static Improvements","\u002Fblog\u002Fnuxt-static-improvements","blog\u002F8.nuxt-static-improvements",{"title":2853,"path":2854,"stem":2855},"Nuxt 2: From Terminal to Browser","\u002Fblog\u002Fnuxtjs-from-terminal-to-browser","blog\u002F9.nuxtjs-from-terminal-to-browser",{"v5":2857,"v4":2858,"v3":2859,"v2":2860},"5 (nightly)","4.4.2","3.21.2","2.18.1",{"name":2862,"description":2863,"repo":2864,"npm":2865,"icon":2866,"github":2867,"website":2867,"learn_more":2868,"category":2869,"type":2870,"maintainers":2871,"compatibility":2877,"generatedAt":2880,"contributors":2881,"stats":2909,"readme":2917},"api-shield","Nuxt API Shield - Rate Limiting","rrd108\u002Fnuxt-api-shield","nuxt-api-shield","api-shield.png","https:\u002F\u002Fgithub.com\u002Frrd108\u002Fnuxt-api-shield","","Security","3rd-party",[2872],{"name":2873,"github":2874,"twitter":2875,"bluesky":2876},"rrd","rrd108","radharadhya","rrd108.bsky.social",{"nuxt":2878,"requires":2879},">=3.0.0",{},"2026-04-10T09:23:02.945Z",[2882,2885,2889,2893,2897,2900,2903,2906],{"id":2883,"username":2874,"contributions":2884},3147489,260,{"id":2886,"username":2887,"contributions":2888},31929574,"ravesandstorm",5,{"id":2890,"username":2891,"contributions":2892},28706372,"danielroe",2,{"id":2894,"username":2895,"contributions":2896},20068593,"kschnekenburger",1,{"id":2898,"username":2899,"contributions":2896},32599710,"simonmaass",{"id":2901,"username":2902,"contributions":2896},125942725,"nd2024",{"id":2904,"username":2905,"contributions":2896},10197526,"chachew",{"id":2907,"username":2908,"contributions":2896},55457896,"LeeKrane",{"version":2910,"downloads":2911,"stars":2912,"watchers":2912,"forks":2913,"defaultBranch":2914,"publishedAt":2915,"createdAt":2916},"0.10.2",3679,52,9,"main",1774886807236,1711731542236,{"data":2918,"body":2920,"toc":8948},{"title":2919,"description":2868},"Nuxt API Shield",{"type":2921,"children":2922},"root",[2923,2930,2975,2980,3006,3012,3210,3216,3230,3340,3365,3370,3731,3749,4139,4153,4182,4287,4306,4318,4482,4487,4696,4707,4773,4992,4997,5003,5022,5029,5042,5055,5725,5749,5755,5784,5795,7024,7064,7091,7097,7102,7114,7125,7232,7240,7654,7665,7670,7721,7727,7744,7773,7777,7783,7795,8273,8279,8292,8298,8389,8395,8424,8430,8468,8474,8480,8490,8586,8592,8683,8696,8707,8727,8733,8942],{"type":2924,"tag":2925,"props":2926,"children":2927},"element","h1",{"id":2865},[2928],{"type":2929,"value":2919},"text",{"type":2924,"tag":2931,"props":2932,"children":2933},"p",{},[2934,2947,2956,2965],{"type":2924,"tag":2935,"props":2936,"children":2940},"a",{"href":2937,"rel":2938},"https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fnuxt-api-shield",[2939],"nofollow",[2941],{"type":2924,"tag":2942,"props":2943,"children":2946},"img",{"alt":2944,"src":2945},"npm version","https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002Fnuxt-api-shield\u002Flatest.svg?style=flat&colorA=020420&colorB=00DC82",[],{"type":2924,"tag":2935,"props":2948,"children":2950},{"href":2937,"rel":2949},[2939],[2951],{"type":2924,"tag":2942,"props":2952,"children":2955},{"alt":2953,"src":2954},"npm downloads","https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fdm\u002Fnuxt-api-shield.svg?style=flat&colorA=020420&colorB=00DC82",[],{"type":2924,"tag":2935,"props":2957,"children":2959},{"href":2937,"rel":2958},[2939],[2960],{"type":2924,"tag":2942,"props":2961,"children":2964},{"alt":2962,"src":2963},"License","https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fl\u002Fnuxt-api-shield.svg?style=flat&colorA=020420&colorB=00DC82",[],{"type":2924,"tag":2935,"props":2966,"children":2969},{"href":2967,"rel":2968},"https:\u002F\u002Fnuxt.com",[2939],[2970],{"type":2924,"tag":2942,"props":2971,"children":2974},{"alt":2972,"src":2973},"Nuxt","https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FNuxt-020420?logo=nuxt.js",[],{"type":2924,"tag":2931,"props":2976,"children":2977},{},[2978],{"type":2929,"value":2979},"This Nuxt module implements a rate limiting middleware to protect your API endpoints from excessive requests.",{"type":2924,"tag":2981,"props":2982,"children":2983},"ul",{},[2984],{"type":2924,"tag":2985,"props":2986,"children":2987},"li",{},[2988,2994],{"type":2924,"tag":2935,"props":2989,"children":2991},{"href":2990},"\u002FCHANGELOG.md",[2992],{"type":2929,"value":2993},"✨  Release Notes",{"type":2924,"tag":2981,"props":2995,"children":2996},{},[2997],{"type":2924,"tag":2985,"props":2998,"children":2999},{},[3000],{"type":2924,"tag":2935,"props":3001,"children":3003},{"href":2867,"rel":3002},[2939],[3004],{"type":2929,"value":3005},"📖  Documentation",{"type":2924,"tag":3007,"props":3008,"children":3010},"h2",{"id":3009},"features",[3011],{"type":2929,"value":395},{"type":2924,"tag":2981,"props":3013,"children":3014},{},[3015,3037,3094,3115,3136,3157,3189],{"type":2924,"tag":2985,"props":3016,"children":3017},{},[3018,3024],{"type":2924,"tag":3019,"props":3020,"children":3021},"strong",{},[3022],{"type":2929,"value":3023},"IP-Based Rate limiting and Brute Force Protection",{"type":2924,"tag":2981,"props":3025,"children":3026},{},[3027,3032],{"type":2924,"tag":2985,"props":3028,"children":3029},{},[3030],{"type":2929,"value":3031},"Tracks and enforces rate limits for individual IP addresses.",{"type":2924,"tag":2985,"props":3033,"children":3034},{},[3035],{"type":2929,"value":3036},"Prevents malicious actors or excessive requests from a single source from overwhelming your API.",{"type":2924,"tag":2985,"props":3038,"children":3039},{},[3040,3045],{"type":2924,"tag":3019,"props":3041,"children":3042},{},[3043],{"type":2929,"value":3044},"Customizable Rate Limits",{"type":2924,"tag":2981,"props":3046,"children":3047},{},[3048,3053,3065,3070,3075,3089],{"type":2924,"tag":2985,"props":3049,"children":3050},{},[3051],{"type":2929,"value":3052},"Configure maximum request count, duration within which the limit applies, and a ban period for exceeding the limit.",{"type":2924,"tag":2985,"props":3054,"children":3055},{},[3056,3058,3063],{"type":2929,"value":3057},"If the request limit is exceeded, the user is banned for the configured ban period. During the ban period, ",{"type":2924,"tag":3019,"props":3059,"children":3060},{},[3061],{"type":2929,"value":3062},"all requests are blocked with a 429 error",{"type":2929,"value":3064},", regardless of the rate limit window.",{"type":2924,"tag":2985,"props":3066,"children":3067},{},[3068],{"type":2929,"value":3069},"Add a delay to responses when a user is banned to discourage further abuse (optional).",{"type":2924,"tag":2985,"props":3071,"children":3072},{},[3073],{"type":2929,"value":3074},"Customize the error message for banned users.",{"type":2924,"tag":2985,"props":3076,"children":3077},{},[3078,3080,3087],{"type":2929,"value":3079},"Optionally include the ",{"type":2924,"tag":3081,"props":3082,"children":3084},"code",{"className":3083},[],[3085],{"type":2929,"value":3086},"Retry-After",{"type":2929,"value":3088}," header in responses when a user is banned.",{"type":2924,"tag":2985,"props":3090,"children":3091},{},[3092],{"type":2929,"value":3093},"Tailor the rate-limiting behavior to align with your API's specific needs and usage patterns.",{"type":2924,"tag":2985,"props":3095,"children":3096},{},[3097,3102],{"type":2924,"tag":3019,"props":3098,"children":3099},{},[3100],{"type":2929,"value":3101},"Event-Driven Handling",{"type":2924,"tag":2981,"props":3103,"children":3104},{},[3105,3110],{"type":2924,"tag":2985,"props":3106,"children":3107},{},[3108],{"type":2929,"value":3109},"Intercepts incoming API requests efficiently using Nuxt's event system.",{"type":2924,"tag":2985,"props":3111,"children":3112},{},[3113],{"type":2929,"value":3114},"Ensures seamless integration with your Nuxt application's request lifecycle.",{"type":2924,"tag":2985,"props":3116,"children":3117},{},[3118,3123],{"type":2924,"tag":3019,"props":3119,"children":3120},{},[3121],{"type":2929,"value":3122},"Flexible Storage",{"type":2924,"tag":2981,"props":3124,"children":3125},{},[3126,3131],{"type":2924,"tag":2985,"props":3127,"children":3128},{},[3129],{"type":2929,"value":3130},"Utilizes Nuxt's unstorage abstraction for versatile storage options.",{"type":2924,"tag":2985,"props":3132,"children":3133},{},[3134],{"type":2929,"value":3135},"Store rate-limiting data in various storage providers (filesystem, memory, databases, etc.) based on your project's requirements.",{"type":2924,"tag":2985,"props":3137,"children":3138},{},[3139,3144],{"type":2924,"tag":3019,"props":3140,"children":3141},{},[3142],{"type":2929,"value":3143},"Configurable with Runtime Config",{"type":2924,"tag":2981,"props":3145,"children":3146},{},[3147,3152],{"type":2924,"tag":2985,"props":3148,"children":3149},{},[3150],{"type":2929,"value":3151},"Easily adjust rate-limiting parameters without code changes.",{"type":2924,"tag":2985,"props":3153,"children":3154},{},[3155],{"type":2929,"value":3156},"Adapt to dynamic needs and maintain control over rate-limiting behavior through Nuxt's runtime configuration.",{"type":2924,"tag":2985,"props":3158,"children":3159},{},[3160,3165],{"type":2924,"tag":3019,"props":3161,"children":3162},{},[3163],{"type":2929,"value":3164},"Bundled cleanup tasks",{"type":2924,"tag":2981,"props":3166,"children":3167},{},[3168],{"type":2924,"tag":2985,"props":3169,"children":3170},{},[3171,3173,3179,3181,3187],{"type":2929,"value":3172},"Registers Nitro tasks ",{"type":2924,"tag":3081,"props":3174,"children":3176},{"className":3175},[],[3177],{"type":2929,"value":3178},"shield:cleanBans",{"type":2929,"value":3180}," and ",{"type":2924,"tag":3081,"props":3182,"children":3184},{"className":3183},[],[3185],{"type":2929,"value":3186},"shield:cleanIpData",{"type":2929,"value":3188}," so you can schedule maintenance without adding task files (see setup step 4).",{"type":2924,"tag":2985,"props":3190,"children":3191},{},[3192,3197],{"type":2924,"tag":3019,"props":3193,"children":3194},{},[3195],{"type":2929,"value":3196},"Clear Error Handling",{"type":2924,"tag":2981,"props":3198,"children":3199},{},[3200,3205],{"type":2924,"tag":2985,"props":3201,"children":3202},{},[3203],{"type":2929,"value":3204},"Returns a standardized 429 \"Too Many Requests\" error response when rate limits are exceeded or when a user is banned.",{"type":2924,"tag":2985,"props":3206,"children":3207},{},[3208],{"type":2929,"value":3209},"Facilitates proper error handling in client-side applications for a smooth user experience.",{"type":2924,"tag":3007,"props":3211,"children":3213},{"id":3212},"quick-setup",[3214],{"type":2929,"value":3215},"Quick Setup",{"type":2924,"tag":3217,"props":3218,"children":3220},"h3",{"id":3219},"_1-add-nuxt-api-shield-dependency-to-your-project",[3221,3223,3228],{"type":2929,"value":3222},"1. Add ",{"type":2924,"tag":3081,"props":3224,"children":3226},{"className":3225},[],[3227],{"type":2929,"value":2865},{"type":2929,"value":3229}," dependency to your project",{"type":2924,"tag":3231,"props":3232,"children":3236},"pre",{"className":3233,"code":3234,"language":3235,"meta":2868,"style":2868},"language-bash shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","# Using pnpm\npnpm add nuxt-api-shield\n\n# Using yarn\nyarn add nuxt-api-shield\n\n# Using npm\nnpm install nuxt-api-shield\n","bash",[3237],{"type":2924,"tag":3081,"props":3238,"children":3239},{"__ignoreMap":2868},[3240,3251,3271,3280,3289,3305,3313,3322],{"type":2924,"tag":3241,"props":3242,"children":3244},"span",{"class":3243,"line":2896},"line",[3245],{"type":2924,"tag":3241,"props":3246,"children":3248},{"style":3247},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#90A4AE;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[3249],{"type":2929,"value":3250},"# Using pnpm\n",{"type":2924,"tag":3241,"props":3252,"children":3253},{"class":3243,"line":2892},[3254,3260,3266],{"type":2924,"tag":3241,"props":3255,"children":3257},{"style":3256},"--shiki-light:#E2931D;--shiki-default:#E2931D;--shiki-dark:#FFCB6B",[3258],{"type":2929,"value":3259},"pnpm",{"type":2924,"tag":3241,"props":3261,"children":3263},{"style":3262},"--shiki-light:#91B859;--shiki-default:#91B859;--shiki-dark:#C3E88D",[3264],{"type":2929,"value":3265}," add",{"type":2924,"tag":3241,"props":3267,"children":3268},{"style":3262},[3269],{"type":2929,"value":3270}," nuxt-api-shield\n",{"type":2924,"tag":3241,"props":3272,"children":3274},{"class":3243,"line":3273},3,[3275],{"type":2924,"tag":3241,"props":3276,"children":3277},{"emptyLinePlaceholder":1196},[3278],{"type":2929,"value":3279},"\n",{"type":2924,"tag":3241,"props":3281,"children":3283},{"class":3243,"line":3282},4,[3284],{"type":2924,"tag":3241,"props":3285,"children":3286},{"style":3247},[3287],{"type":2929,"value":3288},"# Using yarn\n",{"type":2924,"tag":3241,"props":3290,"children":3291},{"class":3243,"line":2888},[3292,3297,3301],{"type":2924,"tag":3241,"props":3293,"children":3294},{"style":3256},[3295],{"type":2929,"value":3296},"yarn",{"type":2924,"tag":3241,"props":3298,"children":3299},{"style":3262},[3300],{"type":2929,"value":3265},{"type":2924,"tag":3241,"props":3302,"children":3303},{"style":3262},[3304],{"type":2929,"value":3270},{"type":2924,"tag":3241,"props":3306,"children":3308},{"class":3243,"line":3307},6,[3309],{"type":2924,"tag":3241,"props":3310,"children":3311},{"emptyLinePlaceholder":1196},[3312],{"type":2929,"value":3279},{"type":2924,"tag":3241,"props":3314,"children":3316},{"class":3243,"line":3315},7,[3317],{"type":2924,"tag":3241,"props":3318,"children":3319},{"style":3247},[3320],{"type":2929,"value":3321},"# Using npm\n",{"type":2924,"tag":3241,"props":3323,"children":3325},{"class":3243,"line":3324},8,[3326,3331,3336],{"type":2924,"tag":3241,"props":3327,"children":3328},{"style":3256},[3329],{"type":2929,"value":3330},"npm",{"type":2924,"tag":3241,"props":3332,"children":3333},{"style":3262},[3334],{"type":2929,"value":3335}," install",{"type":2924,"tag":3241,"props":3337,"children":3338},{"style":3262},[3339],{"type":2929,"value":3270},{"type":2924,"tag":3217,"props":3341,"children":3343},{"id":3342},"_2-add-nuxt-api-shield-to-the-modules-section-of-nuxtconfigts",[3344,3346,3351,3353,3358,3360],{"type":2929,"value":3345},"2. Add ",{"type":2924,"tag":3081,"props":3347,"children":3349},{"className":3348},[],[3350],{"type":2929,"value":2865},{"type":2929,"value":3352}," to the ",{"type":2924,"tag":3081,"props":3354,"children":3356},{"className":3355},[],[3357],{"type":2929,"value":162},{"type":2929,"value":3359}," section of ",{"type":2924,"tag":3081,"props":3361,"children":3363},{"className":3362},[],[3364],{"type":2929,"value":233},{"type":2924,"tag":2931,"props":3366,"children":3367},{},[3368],{"type":2929,"value":3369},"You should add only the values you want to use differently from the default values.",{"type":2924,"tag":3231,"props":3371,"children":3375},{"className":3372,"code":3373,"language":3374,"meta":2868,"style":2868},"language-js shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","export default defineNuxtConfig({\n  modules: [\"nuxt-api-shield\"],\n  nuxtApiShield: {\n    \u002F*limit: {\n      max: 12,        \u002F\u002F maximum requests per duration time, default is 12\u002Fduration\n      duration: 108,   \u002F\u002F duration time in seconds, default is 108 seconds\n      ban: 3600,      \u002F\u002F ban time in seconds, default is 3600 seconds = 1 hour\n      \u002F\u002F If the request limit is exceeded, the user is banned for this period. During the ban, all requests are blocked with 429.\n    },\n    delayOnBan: true  \u002F\u002F delay every response with +1sec when the user is banned, default is true\n    errorMessage: \"Too Many Requests\",  \u002F\u002F error message when the user is banned, default is \"Too Many Requests\"\n    retryAfterHeader: false, \u002F\u002F when the user is banned add the Retry-After header to the response, default is false\n    log: {\n      path: \"logs\", \u002F\u002F path to the log file, every day a new log file will be created, use \"\" to disable logging\n      attempts: 100,    \u002F\u002F if an IP reach 100 requests, all the requests will be logged, can be used for further analysis or blocking for example with fail2ban, use 0 to disable logging\n    },\n    routes: [], \u002F\u002F specify routes to apply rate limiting to, default is an empty array meaning all routes are protected.\n    \u002F\u002F Example:\n    \u002F\u002F routes: [\"\u002Fapi\u002Fv2\u002F\", \"\u002Fapi\u002Fv3\u002F\"], \u002F\u002F \u002Fapi\u002Fv1 will not be protected, \u002Fapi\u002Fv2\u002F and \u002Fapi\u002Fv3\u002F will be protected *\u002F\n    ipTTL: 604800, \u002F\u002F Optional: Time-to-live in seconds for IP tracking entries (default: 7 days). Set to 0 or negative to disable this specific cleanup.\n    security: {\n      \u002F\u002F Optional: Security-related configurations\n      trustXForwardedFor: true, \u002F\u002F Default: true. Whether to trust X-Forwarded-For headers. See warning below.\n    },\n  },\n});\n","js",[3376],{"type":2924,"tag":3081,"props":3377,"children":3378},{"__ignoreMap":2868},[3379,3411,3453,3470,3478,3486,3494,3502,3510,3518,3527,3536,3545,3554,3563,3572,3580,3589,3598,3612,3641,3658,3667,3695,3703,3712],{"type":2924,"tag":3241,"props":3380,"children":3381},{"class":3243,"line":2896},[3382,3388,3393,3399,3405],{"type":2924,"tag":3241,"props":3383,"children":3385},{"style":3384},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#39ADB5;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[3386],{"type":2929,"value":3387},"export",{"type":2924,"tag":3241,"props":3389,"children":3390},{"style":3384},[3391],{"type":2929,"value":3392}," default",{"type":2924,"tag":3241,"props":3394,"children":3396},{"style":3395},"--shiki-light:#6182B8;--shiki-default:#6182B8;--shiki-dark:#82AAFF",[3397],{"type":2929,"value":3398}," defineNuxtConfig",{"type":2924,"tag":3241,"props":3400,"children":3402},{"style":3401},"--shiki-light:#90A4AE;--shiki-default:#90A4AE;--shiki-dark:#BABED8",[3403],{"type":2929,"value":3404},"(",{"type":2924,"tag":3241,"props":3406,"children":3408},{"style":3407},"--shiki-light:#39ADB5;--shiki-default:#39ADB5;--shiki-dark:#89DDFF",[3409],{"type":2929,"value":3410},"{\n",{"type":2924,"tag":3241,"props":3412,"children":3413},{"class":3243,"line":2892},[3414,3420,3425,3430,3435,3439,3443,3448],{"type":2924,"tag":3241,"props":3415,"children":3417},{"style":3416},"--shiki-light:#E53935;--shiki-default:#E53935;--shiki-dark:#F07178",[3418],{"type":2929,"value":3419},"  modules",{"type":2924,"tag":3241,"props":3421,"children":3422},{"style":3407},[3423],{"type":2929,"value":3424},":",{"type":2924,"tag":3241,"props":3426,"children":3427},{"style":3401},[3428],{"type":2929,"value":3429}," [",{"type":2924,"tag":3241,"props":3431,"children":3432},{"style":3407},[3433],{"type":2929,"value":3434},"\"",{"type":2924,"tag":3241,"props":3436,"children":3437},{"style":3262},[3438],{"type":2929,"value":2865},{"type":2924,"tag":3241,"props":3440,"children":3441},{"style":3407},[3442],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":3444,"children":3445},{"style":3401},[3446],{"type":2929,"value":3447},"]",{"type":2924,"tag":3241,"props":3449,"children":3450},{"style":3407},[3451],{"type":2929,"value":3452},",\n",{"type":2924,"tag":3241,"props":3454,"children":3455},{"class":3243,"line":3273},[3456,3461,3465],{"type":2924,"tag":3241,"props":3457,"children":3458},{"style":3416},[3459],{"type":2929,"value":3460},"  nuxtApiShield",{"type":2924,"tag":3241,"props":3462,"children":3463},{"style":3407},[3464],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":3466,"children":3467},{"style":3407},[3468],{"type":2929,"value":3469}," {\n",{"type":2924,"tag":3241,"props":3471,"children":3472},{"class":3243,"line":3282},[3473],{"type":2924,"tag":3241,"props":3474,"children":3475},{"style":3247},[3476],{"type":2929,"value":3477},"    \u002F*limit: {\n",{"type":2924,"tag":3241,"props":3479,"children":3480},{"class":3243,"line":2888},[3481],{"type":2924,"tag":3241,"props":3482,"children":3483},{"style":3247},[3484],{"type":2929,"value":3485},"      max: 12,        \u002F\u002F maximum requests per duration time, default is 12\u002Fduration\n",{"type":2924,"tag":3241,"props":3487,"children":3488},{"class":3243,"line":3307},[3489],{"type":2924,"tag":3241,"props":3490,"children":3491},{"style":3247},[3492],{"type":2929,"value":3493},"      duration: 108,   \u002F\u002F duration time in seconds, default is 108 seconds\n",{"type":2924,"tag":3241,"props":3495,"children":3496},{"class":3243,"line":3315},[3497],{"type":2924,"tag":3241,"props":3498,"children":3499},{"style":3247},[3500],{"type":2929,"value":3501},"      ban: 3600,      \u002F\u002F ban time in seconds, default is 3600 seconds = 1 hour\n",{"type":2924,"tag":3241,"props":3503,"children":3504},{"class":3243,"line":3324},[3505],{"type":2924,"tag":3241,"props":3506,"children":3507},{"style":3247},[3508],{"type":2929,"value":3509},"      \u002F\u002F If the request limit is exceeded, the user is banned for this period. During the ban, all requests are blocked with 429.\n",{"type":2924,"tag":3241,"props":3511,"children":3512},{"class":3243,"line":2913},[3513],{"type":2924,"tag":3241,"props":3514,"children":3515},{"style":3247},[3516],{"type":2929,"value":3517},"    },\n",{"type":2924,"tag":3241,"props":3519,"children":3521},{"class":3243,"line":3520},10,[3522],{"type":2924,"tag":3241,"props":3523,"children":3524},{"style":3247},[3525],{"type":2929,"value":3526},"    delayOnBan: true  \u002F\u002F delay every response with +1sec when the user is banned, default is true\n",{"type":2924,"tag":3241,"props":3528,"children":3530},{"class":3243,"line":3529},11,[3531],{"type":2924,"tag":3241,"props":3532,"children":3533},{"style":3247},[3534],{"type":2929,"value":3535},"    errorMessage: \"Too Many Requests\",  \u002F\u002F error message when the user is banned, default is \"Too Many Requests\"\n",{"type":2924,"tag":3241,"props":3537,"children":3539},{"class":3243,"line":3538},12,[3540],{"type":2924,"tag":3241,"props":3541,"children":3542},{"style":3247},[3543],{"type":2929,"value":3544},"    retryAfterHeader: false, \u002F\u002F when the user is banned add the Retry-After header to the response, default is false\n",{"type":2924,"tag":3241,"props":3546,"children":3548},{"class":3243,"line":3547},13,[3549],{"type":2924,"tag":3241,"props":3550,"children":3551},{"style":3247},[3552],{"type":2929,"value":3553},"    log: {\n",{"type":2924,"tag":3241,"props":3555,"children":3557},{"class":3243,"line":3556},14,[3558],{"type":2924,"tag":3241,"props":3559,"children":3560},{"style":3247},[3561],{"type":2929,"value":3562},"      path: \"logs\", \u002F\u002F path to the log file, every day a new log file will be created, use \"\" to disable logging\n",{"type":2924,"tag":3241,"props":3564,"children":3566},{"class":3243,"line":3565},15,[3567],{"type":2924,"tag":3241,"props":3568,"children":3569},{"style":3247},[3570],{"type":2929,"value":3571},"      attempts: 100,    \u002F\u002F if an IP reach 100 requests, all the requests will be logged, can be used for further analysis or blocking for example with fail2ban, use 0 to disable logging\n",{"type":2924,"tag":3241,"props":3573,"children":3575},{"class":3243,"line":3574},16,[3576],{"type":2924,"tag":3241,"props":3577,"children":3578},{"style":3247},[3579],{"type":2929,"value":3517},{"type":2924,"tag":3241,"props":3581,"children":3583},{"class":3243,"line":3582},17,[3584],{"type":2924,"tag":3241,"props":3585,"children":3586},{"style":3247},[3587],{"type":2929,"value":3588},"    routes: [], \u002F\u002F specify routes to apply rate limiting to, default is an empty array meaning all routes are protected.\n",{"type":2924,"tag":3241,"props":3590,"children":3592},{"class":3243,"line":3591},18,[3593],{"type":2924,"tag":3241,"props":3594,"children":3595},{"style":3247},[3596],{"type":2929,"value":3597},"    \u002F\u002F Example:\n",{"type":2924,"tag":3241,"props":3599,"children":3601},{"class":3243,"line":3600},19,[3602,3607],{"type":2924,"tag":3241,"props":3603,"children":3604},{"style":3247},[3605],{"type":2929,"value":3606},"    \u002F\u002F routes: [\"\u002Fapi\u002Fv2\u002F\", \"\u002Fapi\u002Fv3\u002F\"],",{"type":2924,"tag":3241,"props":3608,"children":3609},{"style":3247},[3610],{"type":2929,"value":3611}," \u002F\u002F \u002Fapi\u002Fv1 will not be protected, \u002Fapi\u002Fv2\u002F and \u002Fapi\u002Fv3\u002F will be protected *\u002F\n",{"type":2924,"tag":3241,"props":3613,"children":3615},{"class":3243,"line":3614},20,[3616,3621,3625,3631,3636],{"type":2924,"tag":3241,"props":3617,"children":3618},{"style":3416},[3619],{"type":2929,"value":3620},"    ipTTL",{"type":2924,"tag":3241,"props":3622,"children":3623},{"style":3407},[3624],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":3626,"children":3628},{"style":3627},"--shiki-light:#F76D47;--shiki-default:#F76D47;--shiki-dark:#F78C6C",[3629],{"type":2929,"value":3630}," 604800",{"type":2924,"tag":3241,"props":3632,"children":3633},{"style":3407},[3634],{"type":2929,"value":3635},",",{"type":2924,"tag":3241,"props":3637,"children":3638},{"style":3247},[3639],{"type":2929,"value":3640}," \u002F\u002F Optional: Time-to-live in seconds for IP tracking entries (default: 7 days). Set to 0 or negative to disable this specific cleanup.\n",{"type":2924,"tag":3241,"props":3642,"children":3644},{"class":3243,"line":3643},21,[3645,3650,3654],{"type":2924,"tag":3241,"props":3646,"children":3647},{"style":3416},[3648],{"type":2929,"value":3649},"    security",{"type":2924,"tag":3241,"props":3651,"children":3652},{"style":3407},[3653],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":3655,"children":3656},{"style":3407},[3657],{"type":2929,"value":3469},{"type":2924,"tag":3241,"props":3659,"children":3661},{"class":3243,"line":3660},22,[3662],{"type":2924,"tag":3241,"props":3663,"children":3664},{"style":3247},[3665],{"type":2929,"value":3666},"      \u002F\u002F Optional: Security-related configurations\n",{"type":2924,"tag":3241,"props":3668,"children":3670},{"class":3243,"line":3669},23,[3671,3676,3680,3686,3690],{"type":2924,"tag":3241,"props":3672,"children":3673},{"style":3416},[3674],{"type":2929,"value":3675},"      trustXForwardedFor",{"type":2924,"tag":3241,"props":3677,"children":3678},{"style":3407},[3679],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":3681,"children":3683},{"style":3682},"--shiki-light:#FF5370;--shiki-default:#FF5370;--shiki-dark:#FF9CAC",[3684],{"type":2929,"value":3685}," true",{"type":2924,"tag":3241,"props":3687,"children":3688},{"style":3407},[3689],{"type":2929,"value":3635},{"type":2924,"tag":3241,"props":3691,"children":3692},{"style":3247},[3693],{"type":2929,"value":3694}," \u002F\u002F Default: true. Whether to trust X-Forwarded-For headers. See warning below.\n",{"type":2924,"tag":3241,"props":3696,"children":3698},{"class":3243,"line":3697},24,[3699],{"type":2924,"tag":3241,"props":3700,"children":3701},{"style":3407},[3702],{"type":2929,"value":3517},{"type":2924,"tag":3241,"props":3704,"children":3706},{"class":3243,"line":3705},25,[3707],{"type":2924,"tag":3241,"props":3708,"children":3709},{"style":3407},[3710],{"type":2929,"value":3711},"  },\n",{"type":2924,"tag":3241,"props":3713,"children":3715},{"class":3243,"line":3714},26,[3716,3721,3726],{"type":2924,"tag":3241,"props":3717,"children":3718},{"style":3407},[3719],{"type":2929,"value":3720},"}",{"type":2924,"tag":3241,"props":3722,"children":3723},{"style":3401},[3724],{"type":2929,"value":3725},")",{"type":2924,"tag":3241,"props":3727,"children":3728},{"style":3407},[3729],{"type":2929,"value":3730},";\n",{"type":2924,"tag":2931,"props":3732,"children":3733},{},[3734,3739,3741,3747],{"type":2924,"tag":3019,"props":3735,"children":3736},{},[3737],{"type":2929,"value":3738},"Default Configuration Values:",{"type":2929,"value":3740},"\n(These are applied by the module if not specified in your ",{"type":2924,"tag":3081,"props":3742,"children":3744},{"className":3743},[],[3745],{"type":2929,"value":3746},"nuxtApiShield",{"type":2929,"value":3748}," config)",{"type":2924,"tag":3231,"props":3750,"children":3752},{"className":3372,"code":3751,"language":3374,"meta":2868,"style":2868},"{\n  limit: {\n    max: 12,\n    duration: 108, \u002F\u002F seconds\n    ban: 3600,     \u002F\u002F seconds\n  },\n  delayOnBan: true,\n  errorMessage: \"Too Many Requests\",\n  retryAfterHeader: false,\n  log: {\n    path: \"logs\", \u002F\u002F Logging is disabled if path is empty\n    attempts: 100, \u002F\u002F Logging per IP is disabled if attempts is 0\n  },\n  routes: [],\n  ipTTL: 7 * 24 * 60 * 60, \u002F\u002F 7 days in seconds\n  security: {\n    trustXForwardedFor: true,\n  }\n}\n",[3753],{"type":2924,"tag":3081,"props":3754,"children":3755},{"__ignoreMap":2868},[3756,3763,3779,3800,3826,3852,3859,3879,3909,3930,3946,3980,4006,4013,4034,4087,4103,4123,4131],{"type":2924,"tag":3241,"props":3757,"children":3758},{"class":3243,"line":2896},[3759],{"type":2924,"tag":3241,"props":3760,"children":3761},{"style":3407},[3762],{"type":2929,"value":3410},{"type":2924,"tag":3241,"props":3764,"children":3765},{"class":3243,"line":2892},[3766,3771,3775],{"type":2924,"tag":3241,"props":3767,"children":3768},{"style":3256},[3769],{"type":2929,"value":3770},"  limit",{"type":2924,"tag":3241,"props":3772,"children":3773},{"style":3407},[3774],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":3776,"children":3777},{"style":3407},[3778],{"type":2929,"value":3469},{"type":2924,"tag":3241,"props":3780,"children":3781},{"class":3243,"line":3273},[3782,3787,3791,3796],{"type":2924,"tag":3241,"props":3783,"children":3784},{"style":3256},[3785],{"type":2929,"value":3786},"    max",{"type":2924,"tag":3241,"props":3788,"children":3789},{"style":3407},[3790],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":3792,"children":3793},{"style":3627},[3794],{"type":2929,"value":3795}," 12",{"type":2924,"tag":3241,"props":3797,"children":3798},{"style":3407},[3799],{"type":2929,"value":3452},{"type":2924,"tag":3241,"props":3801,"children":3802},{"class":3243,"line":3282},[3803,3808,3812,3817,3821],{"type":2924,"tag":3241,"props":3804,"children":3805},{"style":3256},[3806],{"type":2929,"value":3807},"    duration",{"type":2924,"tag":3241,"props":3809,"children":3810},{"style":3407},[3811],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":3813,"children":3814},{"style":3627},[3815],{"type":2929,"value":3816}," 108",{"type":2924,"tag":3241,"props":3818,"children":3819},{"style":3407},[3820],{"type":2929,"value":3635},{"type":2924,"tag":3241,"props":3822,"children":3823},{"style":3247},[3824],{"type":2929,"value":3825}," \u002F\u002F seconds\n",{"type":2924,"tag":3241,"props":3827,"children":3828},{"class":3243,"line":2888},[3829,3834,3838,3843,3847],{"type":2924,"tag":3241,"props":3830,"children":3831},{"style":3256},[3832],{"type":2929,"value":3833},"    ban",{"type":2924,"tag":3241,"props":3835,"children":3836},{"style":3407},[3837],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":3839,"children":3840},{"style":3627},[3841],{"type":2929,"value":3842}," 3600",{"type":2924,"tag":3241,"props":3844,"children":3845},{"style":3407},[3846],{"type":2929,"value":3635},{"type":2924,"tag":3241,"props":3848,"children":3849},{"style":3247},[3850],{"type":2929,"value":3851},"     \u002F\u002F seconds\n",{"type":2924,"tag":3241,"props":3853,"children":3854},{"class":3243,"line":3307},[3855],{"type":2924,"tag":3241,"props":3856,"children":3857},{"style":3407},[3858],{"type":2929,"value":3711},{"type":2924,"tag":3241,"props":3860,"children":3861},{"class":3243,"line":3315},[3862,3867,3871,3875],{"type":2924,"tag":3241,"props":3863,"children":3864},{"style":3256},[3865],{"type":2929,"value":3866},"  delayOnBan",{"type":2924,"tag":3241,"props":3868,"children":3869},{"style":3407},[3870],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":3872,"children":3873},{"style":3682},[3874],{"type":2929,"value":3685},{"type":2924,"tag":3241,"props":3876,"children":3877},{"style":3407},[3878],{"type":2929,"value":3452},{"type":2924,"tag":3241,"props":3880,"children":3881},{"class":3243,"line":3324},[3882,3887,3891,3896,3901,3905],{"type":2924,"tag":3241,"props":3883,"children":3884},{"style":3256},[3885],{"type":2929,"value":3886},"  errorMessage",{"type":2924,"tag":3241,"props":3888,"children":3889},{"style":3407},[3890],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":3892,"children":3893},{"style":3407},[3894],{"type":2929,"value":3895}," \"",{"type":2924,"tag":3241,"props":3897,"children":3898},{"style":3262},[3899],{"type":2929,"value":3900},"Too Many Requests",{"type":2924,"tag":3241,"props":3902,"children":3903},{"style":3407},[3904],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":3906,"children":3907},{"style":3407},[3908],{"type":2929,"value":3452},{"type":2924,"tag":3241,"props":3910,"children":3911},{"class":3243,"line":2913},[3912,3917,3921,3926],{"type":2924,"tag":3241,"props":3913,"children":3914},{"style":3256},[3915],{"type":2929,"value":3916},"  retryAfterHeader",{"type":2924,"tag":3241,"props":3918,"children":3919},{"style":3407},[3920],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":3922,"children":3923},{"style":3682},[3924],{"type":2929,"value":3925}," false",{"type":2924,"tag":3241,"props":3927,"children":3928},{"style":3407},[3929],{"type":2929,"value":3452},{"type":2924,"tag":3241,"props":3931,"children":3932},{"class":3243,"line":3520},[3933,3938,3942],{"type":2924,"tag":3241,"props":3934,"children":3935},{"style":3256},[3936],{"type":2929,"value":3937},"  log",{"type":2924,"tag":3241,"props":3939,"children":3940},{"style":3407},[3941],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":3943,"children":3944},{"style":3407},[3945],{"type":2929,"value":3469},{"type":2924,"tag":3241,"props":3947,"children":3948},{"class":3243,"line":3529},[3949,3954,3958,3962,3967,3971,3975],{"type":2924,"tag":3241,"props":3950,"children":3951},{"style":3256},[3952],{"type":2929,"value":3953},"    path",{"type":2924,"tag":3241,"props":3955,"children":3956},{"style":3407},[3957],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":3959,"children":3960},{"style":3407},[3961],{"type":2929,"value":3895},{"type":2924,"tag":3241,"props":3963,"children":3964},{"style":3262},[3965],{"type":2929,"value":3966},"logs",{"type":2924,"tag":3241,"props":3968,"children":3969},{"style":3407},[3970],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":3972,"children":3973},{"style":3407},[3974],{"type":2929,"value":3635},{"type":2924,"tag":3241,"props":3976,"children":3977},{"style":3247},[3978],{"type":2929,"value":3979}," \u002F\u002F Logging is disabled if path is empty\n",{"type":2924,"tag":3241,"props":3981,"children":3982},{"class":3243,"line":3538},[3983,3988,3992,3997,4001],{"type":2924,"tag":3241,"props":3984,"children":3985},{"style":3256},[3986],{"type":2929,"value":3987},"    attempts",{"type":2924,"tag":3241,"props":3989,"children":3990},{"style":3407},[3991],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":3993,"children":3994},{"style":3627},[3995],{"type":2929,"value":3996}," 100",{"type":2924,"tag":3241,"props":3998,"children":3999},{"style":3407},[4000],{"type":2929,"value":3635},{"type":2924,"tag":3241,"props":4002,"children":4003},{"style":3247},[4004],{"type":2929,"value":4005}," \u002F\u002F Logging per IP is disabled if attempts is 0\n",{"type":2924,"tag":3241,"props":4007,"children":4008},{"class":3243,"line":3547},[4009],{"type":2924,"tag":3241,"props":4010,"children":4011},{"style":3407},[4012],{"type":2929,"value":3711},{"type":2924,"tag":3241,"props":4014,"children":4015},{"class":3243,"line":3556},[4016,4021,4025,4030],{"type":2924,"tag":3241,"props":4017,"children":4018},{"style":3256},[4019],{"type":2929,"value":4020},"  routes",{"type":2924,"tag":3241,"props":4022,"children":4023},{"style":3407},[4024],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":4026,"children":4027},{"style":3416},[4028],{"type":2929,"value":4029}," []",{"type":2924,"tag":3241,"props":4031,"children":4032},{"style":3407},[4033],{"type":2929,"value":3452},{"type":2924,"tag":3241,"props":4035,"children":4036},{"class":3243,"line":3565},[4037,4042,4046,4051,4056,4061,4065,4070,4074,4078,4082],{"type":2924,"tag":3241,"props":4038,"children":4039},{"style":3256},[4040],{"type":2929,"value":4041},"  ipTTL",{"type":2924,"tag":3241,"props":4043,"children":4044},{"style":3407},[4045],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":4047,"children":4048},{"style":3627},[4049],{"type":2929,"value":4050}," 7",{"type":2924,"tag":3241,"props":4052,"children":4053},{"style":3407},[4054],{"type":2929,"value":4055}," *",{"type":2924,"tag":3241,"props":4057,"children":4058},{"style":3627},[4059],{"type":2929,"value":4060}," 24",{"type":2924,"tag":3241,"props":4062,"children":4063},{"style":3407},[4064],{"type":2929,"value":4055},{"type":2924,"tag":3241,"props":4066,"children":4067},{"style":3627},[4068],{"type":2929,"value":4069}," 60",{"type":2924,"tag":3241,"props":4071,"children":4072},{"style":3407},[4073],{"type":2929,"value":4055},{"type":2924,"tag":3241,"props":4075,"children":4076},{"style":3627},[4077],{"type":2929,"value":4069},{"type":2924,"tag":3241,"props":4079,"children":4080},{"style":3407},[4081],{"type":2929,"value":3635},{"type":2924,"tag":3241,"props":4083,"children":4084},{"style":3247},[4085],{"type":2929,"value":4086}," \u002F\u002F 7 days in seconds\n",{"type":2924,"tag":3241,"props":4088,"children":4089},{"class":3243,"line":3574},[4090,4095,4099],{"type":2924,"tag":3241,"props":4091,"children":4092},{"style":3256},[4093],{"type":2929,"value":4094},"  security",{"type":2924,"tag":3241,"props":4096,"children":4097},{"style":3407},[4098],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":4100,"children":4101},{"style":3407},[4102],{"type":2929,"value":3469},{"type":2924,"tag":3241,"props":4104,"children":4105},{"class":3243,"line":3582},[4106,4111,4115,4119],{"type":2924,"tag":3241,"props":4107,"children":4108},{"style":3256},[4109],{"type":2929,"value":4110},"    trustXForwardedFor",{"type":2924,"tag":3241,"props":4112,"children":4113},{"style":3407},[4114],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":4116,"children":4117},{"style":3682},[4118],{"type":2929,"value":3685},{"type":2924,"tag":3241,"props":4120,"children":4121},{"style":3407},[4122],{"type":2929,"value":3452},{"type":2924,"tag":3241,"props":4124,"children":4125},{"class":3243,"line":3591},[4126],{"type":2924,"tag":3241,"props":4127,"children":4128},{"style":3407},[4129],{"type":2929,"value":4130},"  }\n",{"type":2924,"tag":3241,"props":4132,"children":4133},{"class":3243,"line":3600},[4134],{"type":2924,"tag":3241,"props":4135,"children":4136},{"style":3407},[4137],{"type":2929,"value":4138},"}\n",{"type":2924,"tag":2931,"props":4140,"children":4141},{},[4142],{"type":2924,"tag":3019,"props":4143,"children":4144},{},[4145,4147],{"type":2929,"value":4146},"Security Warning: ",{"type":2924,"tag":3081,"props":4148,"children":4150},{"className":4149},[],[4151],{"type":2929,"value":4152},"trustXForwardedFor",{"type":2924,"tag":2931,"props":4154,"children":4155},{},[4156,4158,4164,4166,4172,4174,4180],{"type":2929,"value":4157},"The ",{"type":2924,"tag":3081,"props":4159,"children":4161},{"className":4160},[],[4162],{"type":2929,"value":4163},"security.trustXForwardedFor",{"type":2929,"value":4165}," option (default is ",{"type":2924,"tag":3081,"props":4167,"children":4169},{"className":4168},[],[4170],{"type":2929,"value":4171},"true",{"type":2929,"value":4173},", set by the module) determines if the module uses the ",{"type":2924,"tag":3081,"props":4175,"children":4177},{"className":4176},[],[4178],{"type":2929,"value":4179},"X-Forwarded-For",{"type":2929,"value":4181}," HTTP header to identify the client's IP address.",{"type":2924,"tag":2981,"props":4183,"children":4184},{},[4185,4204,4242,4262],{"type":2924,"tag":2985,"props":4186,"children":4187},{},[4188,4190,4195,4197,4202],{"type":2929,"value":4189},"If set to ",{"type":2924,"tag":3081,"props":4191,"children":4193},{"className":4192},[],[4194],{"type":2929,"value":4171},{"type":2929,"value":4196},": The module will use the IP address provided in the ",{"type":2924,"tag":3081,"props":4198,"children":4200},{"className":4199},[],[4201],{"type":2929,"value":4179},{"type":2929,"value":4203}," header. This is common when your Nuxt application is behind a trusted reverse proxy, load balancer, or CDN (like Nginx, Cloudflare, AWS ELB\u002FALB) that correctly sets this header with the real client IP.",{"type":2924,"tag":2985,"props":4205,"children":4206},{},[4207,4212,4214,4219,4221,4226,4228,4233,4235,4240],{"type":2924,"tag":3019,"props":4208,"children":4209},{},[4210],{"type":2929,"value":4211},"WARNING:",{"type":2929,"value":4213}," If ",{"type":2924,"tag":3081,"props":4215,"children":4217},{"className":4216},[],[4218],{"type":2929,"value":4152},{"type":2929,"value":4220}," is ",{"type":2924,"tag":3081,"props":4222,"children":4224},{"className":4223},[],[4225],{"type":2929,"value":4171},{"type":2929,"value":4227}," and your application is directly internet-facing OR your proxy is not configured to strip incoming ",{"type":2924,"tag":3081,"props":4229,"children":4231},{"className":4230},[],[4232],{"type":2929,"value":4179},{"type":2929,"value":4234}," headers from clients, malicious users can spoof their IP address by sending a fake ",{"type":2924,"tag":3081,"props":4236,"children":4238},{"className":4237},[],[4239],{"type":2929,"value":4179},{"type":2929,"value":4241}," header. This would allow them to bypass rate limits or cause other users to be incorrectly rate-limited.",{"type":2924,"tag":2985,"props":4243,"children":4244},{},[4245,4246,4252,4254,4260],{"type":2929,"value":4189},{"type":2924,"tag":3081,"props":4247,"children":4249},{"className":4248},[],[4250],{"type":2929,"value":4251},"false",{"type":2929,"value":4253},": The module will use the direct IP address of the incoming connection (i.e., ",{"type":2924,"tag":3081,"props":4255,"children":4257},{"className":4256},[],[4258],{"type":2929,"value":4259},"event.node.req.socket.remoteAddress",{"type":2929,"value":4261},"). Use this setting if your application is directly internet-facing or if you are unsure about your proxy's configuration.",{"type":2924,"tag":2985,"props":4263,"children":4264},{},[4265,4270,4272,4278,4280,4285],{"type":2924,"tag":3019,"props":4266,"children":4267},{},[4268],{"type":2929,"value":4269},"Recommendation:",{"type":2929,"value":4271}," Only enable ",{"type":2924,"tag":3081,"props":4273,"children":4275},{"className":4274},[],[4276],{"type":2929,"value":4277},"trustXForwardedFor: true",{"type":2929,"value":4279}," if you are certain your reverse proxy is correctly configured to set this header and strip any client-sent versions of it. Otherwise, set it to ",{"type":2924,"tag":3081,"props":4281,"children":4283},{"className":4282},[],[4284],{"type":2929,"value":4251},{"type":2929,"value":4286},".",{"type":2924,"tag":3217,"props":4288,"children":4290},{"id":4289},"_3-add-nitrostorage-to-nuxtconfigts",[4291,4293,4299,4301],{"type":2929,"value":4292},"3. Add ",{"type":2924,"tag":3081,"props":4294,"children":4296},{"className":4295},[],[4297],{"type":2929,"value":4298},"nitro\u002Fstorage",{"type":2929,"value":4300}," to ",{"type":2924,"tag":3081,"props":4302,"children":4304},{"className":4303},[],[4305],{"type":2929,"value":233},{"type":2924,"tag":2931,"props":4307,"children":4308},{},[4309,4311,4316],{"type":2929,"value":4310},"You can use any storage you want, but you have to use ",{"type":2924,"tag":3019,"props":4312,"children":4313},{},[4314],{"type":2929,"value":4315},"shield",{"type":2929,"value":4317}," as the name of the storage.",{"type":2924,"tag":3231,"props":4319,"children":4323},{"className":4320,"code":4321,"language":4322,"meta":2868,"style":2868},"language-json shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","{\n  \"nitro\": {\n    \"storage\": {\n      \"shield\": {\n        \u002F\u002F storage name, you **must** use \"shield\" as the name\n        \"driver\": \"memory\"\n      }\n    }\n  }\n}\n","json",[4324],{"type":2924,"tag":3081,"props":4325,"children":4326},{"__ignoreMap":2868},[4327,4334,4360,4385,4409,4417,4452,4460,4468,4475],{"type":2924,"tag":3241,"props":4328,"children":4329},{"class":3243,"line":2896},[4330],{"type":2924,"tag":3241,"props":4331,"children":4332},{"style":3407},[4333],{"type":2929,"value":3410},{"type":2924,"tag":3241,"props":4335,"children":4336},{"class":3243,"line":2892},[4337,4342,4348,4352,4356],{"type":2924,"tag":3241,"props":4338,"children":4339},{"style":3407},[4340],{"type":2929,"value":4341},"  \"",{"type":2924,"tag":3241,"props":4343,"children":4345},{"style":4344},"--shiki-light:#9C3EDA;--shiki-default:#9C3EDA;--shiki-dark:#C792EA",[4346],{"type":2929,"value":4347},"nitro",{"type":2924,"tag":3241,"props":4349,"children":4350},{"style":3407},[4351],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":4353,"children":4354},{"style":3407},[4355],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":4357,"children":4358},{"style":3407},[4359],{"type":2929,"value":3469},{"type":2924,"tag":3241,"props":4361,"children":4362},{"class":3243,"line":3273},[4363,4368,4373,4377,4381],{"type":2924,"tag":3241,"props":4364,"children":4365},{"style":3407},[4366],{"type":2929,"value":4367},"    \"",{"type":2924,"tag":3241,"props":4369,"children":4370},{"style":3256},[4371],{"type":2929,"value":4372},"storage",{"type":2924,"tag":3241,"props":4374,"children":4375},{"style":3407},[4376],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":4378,"children":4379},{"style":3407},[4380],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":4382,"children":4383},{"style":3407},[4384],{"type":2929,"value":3469},{"type":2924,"tag":3241,"props":4386,"children":4387},{"class":3243,"line":3282},[4388,4393,4397,4401,4405],{"type":2924,"tag":3241,"props":4389,"children":4390},{"style":3407},[4391],{"type":2929,"value":4392},"      \"",{"type":2924,"tag":3241,"props":4394,"children":4395},{"style":3627},[4396],{"type":2929,"value":4315},{"type":2924,"tag":3241,"props":4398,"children":4399},{"style":3407},[4400],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":4402,"children":4403},{"style":3407},[4404],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":4406,"children":4407},{"style":3407},[4408],{"type":2929,"value":3469},{"type":2924,"tag":3241,"props":4410,"children":4411},{"class":3243,"line":2888},[4412],{"type":2924,"tag":3241,"props":4413,"children":4414},{"style":3247},[4415],{"type":2929,"value":4416},"        \u002F\u002F storage name, you **must** use \"shield\" as the name\n",{"type":2924,"tag":3241,"props":4418,"children":4419},{"class":3243,"line":3307},[4420,4425,4430,4434,4438,4442,4447],{"type":2924,"tag":3241,"props":4421,"children":4422},{"style":3407},[4423],{"type":2929,"value":4424},"        \"",{"type":2924,"tag":3241,"props":4426,"children":4427},{"style":3416},[4428],{"type":2929,"value":4429},"driver",{"type":2924,"tag":3241,"props":4431,"children":4432},{"style":3407},[4433],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":4435,"children":4436},{"style":3407},[4437],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":4439,"children":4440},{"style":3407},[4441],{"type":2929,"value":3895},{"type":2924,"tag":3241,"props":4443,"children":4444},{"style":3262},[4445],{"type":2929,"value":4446},"memory",{"type":2924,"tag":3241,"props":4448,"children":4449},{"style":3407},[4450],{"type":2929,"value":4451},"\"\n",{"type":2924,"tag":3241,"props":4453,"children":4454},{"class":3243,"line":3315},[4455],{"type":2924,"tag":3241,"props":4456,"children":4457},{"style":3407},[4458],{"type":2929,"value":4459},"      }\n",{"type":2924,"tag":3241,"props":4461,"children":4462},{"class":3243,"line":3324},[4463],{"type":2924,"tag":3241,"props":4464,"children":4465},{"style":3407},[4466],{"type":2929,"value":4467},"    }\n",{"type":2924,"tag":3241,"props":4469,"children":4470},{"class":3243,"line":2913},[4471],{"type":2924,"tag":3241,"props":4472,"children":4473},{"style":3407},[4474],{"type":2929,"value":4130},{"type":2924,"tag":3241,"props":4476,"children":4477},{"class":3243,"line":3520},[4478],{"type":2924,"tag":3241,"props":4479,"children":4480},{"style":3407},[4481],{"type":2929,"value":4138},{"type":2924,"tag":2931,"props":4483,"children":4484},{},[4485],{"type":2929,"value":4486},"If you use for example redis, you can use the following configuration, define the host and port.",{"type":2924,"tag":3231,"props":4488,"children":4490},{"className":4320,"code":4489,"language":4322,"meta":2868,"style":2868},"{\n  \"nitro\": {\n    \"storage\": {\n      \"shield\": {\n        \"driver\": \"redis\",\n        \"host\": \"localhost\",\n        \"port\": 6379\n      }\n    }\n  }\n}\n",[4491],{"type":2924,"tag":3081,"props":4492,"children":4493},{"__ignoreMap":2868},[4494,4501,4524,4547,4570,4606,4643,4668,4675,4682,4689],{"type":2924,"tag":3241,"props":4495,"children":4496},{"class":3243,"line":2896},[4497],{"type":2924,"tag":3241,"props":4498,"children":4499},{"style":3407},[4500],{"type":2929,"value":3410},{"type":2924,"tag":3241,"props":4502,"children":4503},{"class":3243,"line":2892},[4504,4508,4512,4516,4520],{"type":2924,"tag":3241,"props":4505,"children":4506},{"style":3407},[4507],{"type":2929,"value":4341},{"type":2924,"tag":3241,"props":4509,"children":4510},{"style":4344},[4511],{"type":2929,"value":4347},{"type":2924,"tag":3241,"props":4513,"children":4514},{"style":3407},[4515],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":4517,"children":4518},{"style":3407},[4519],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":4521,"children":4522},{"style":3407},[4523],{"type":2929,"value":3469},{"type":2924,"tag":3241,"props":4525,"children":4526},{"class":3243,"line":3273},[4527,4531,4535,4539,4543],{"type":2924,"tag":3241,"props":4528,"children":4529},{"style":3407},[4530],{"type":2929,"value":4367},{"type":2924,"tag":3241,"props":4532,"children":4533},{"style":3256},[4534],{"type":2929,"value":4372},{"type":2924,"tag":3241,"props":4536,"children":4537},{"style":3407},[4538],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":4540,"children":4541},{"style":3407},[4542],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":4544,"children":4545},{"style":3407},[4546],{"type":2929,"value":3469},{"type":2924,"tag":3241,"props":4548,"children":4549},{"class":3243,"line":3282},[4550,4554,4558,4562,4566],{"type":2924,"tag":3241,"props":4551,"children":4552},{"style":3407},[4553],{"type":2929,"value":4392},{"type":2924,"tag":3241,"props":4555,"children":4556},{"style":3627},[4557],{"type":2929,"value":4315},{"type":2924,"tag":3241,"props":4559,"children":4560},{"style":3407},[4561],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":4563,"children":4564},{"style":3407},[4565],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":4567,"children":4568},{"style":3407},[4569],{"type":2929,"value":3469},{"type":2924,"tag":3241,"props":4571,"children":4572},{"class":3243,"line":2888},[4573,4577,4581,4585,4589,4593,4598,4602],{"type":2924,"tag":3241,"props":4574,"children":4575},{"style":3407},[4576],{"type":2929,"value":4424},{"type":2924,"tag":3241,"props":4578,"children":4579},{"style":3416},[4580],{"type":2929,"value":4429},{"type":2924,"tag":3241,"props":4582,"children":4583},{"style":3407},[4584],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":4586,"children":4587},{"style":3407},[4588],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":4590,"children":4591},{"style":3407},[4592],{"type":2929,"value":3895},{"type":2924,"tag":3241,"props":4594,"children":4595},{"style":3262},[4596],{"type":2929,"value":4597},"redis",{"type":2924,"tag":3241,"props":4599,"children":4600},{"style":3407},[4601],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":4603,"children":4604},{"style":3407},[4605],{"type":2929,"value":3452},{"type":2924,"tag":3241,"props":4607,"children":4608},{"class":3243,"line":3307},[4609,4613,4618,4622,4626,4630,4635,4639],{"type":2924,"tag":3241,"props":4610,"children":4611},{"style":3407},[4612],{"type":2929,"value":4424},{"type":2924,"tag":3241,"props":4614,"children":4615},{"style":3416},[4616],{"type":2929,"value":4617},"host",{"type":2924,"tag":3241,"props":4619,"children":4620},{"style":3407},[4621],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":4623,"children":4624},{"style":3407},[4625],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":4627,"children":4628},{"style":3407},[4629],{"type":2929,"value":3895},{"type":2924,"tag":3241,"props":4631,"children":4632},{"style":3262},[4633],{"type":2929,"value":4634},"localhost",{"type":2924,"tag":3241,"props":4636,"children":4637},{"style":3407},[4638],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":4640,"children":4641},{"style":3407},[4642],{"type":2929,"value":3452},{"type":2924,"tag":3241,"props":4644,"children":4645},{"class":3243,"line":3315},[4646,4650,4655,4659,4663],{"type":2924,"tag":3241,"props":4647,"children":4648},{"style":3407},[4649],{"type":2929,"value":4424},{"type":2924,"tag":3241,"props":4651,"children":4652},{"style":3416},[4653],{"type":2929,"value":4654},"port",{"type":2924,"tag":3241,"props":4656,"children":4657},{"style":3407},[4658],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":4660,"children":4661},{"style":3407},[4662],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":4664,"children":4665},{"style":3627},[4666],{"type":2929,"value":4667}," 6379\n",{"type":2924,"tag":3241,"props":4669,"children":4670},{"class":3243,"line":3324},[4671],{"type":2924,"tag":3241,"props":4672,"children":4673},{"style":3407},[4674],{"type":2929,"value":4459},{"type":2924,"tag":3241,"props":4676,"children":4677},{"class":3243,"line":2913},[4678],{"type":2924,"tag":3241,"props":4679,"children":4680},{"style":3407},[4681],{"type":2929,"value":4467},{"type":2924,"tag":3241,"props":4683,"children":4684},{"class":3243,"line":3520},[4685],{"type":2924,"tag":3241,"props":4686,"children":4687},{"style":3407},[4688],{"type":2929,"value":4130},{"type":2924,"tag":3241,"props":4690,"children":4691},{"class":3243,"line":3529},[4692],{"type":2924,"tag":3241,"props":4693,"children":4694},{"style":3407},[4695],{"type":2929,"value":4138},{"type":2924,"tag":3217,"props":4697,"children":4699},{"id":4698},"_4-schedule-bundled-cleanup-tasks-in-nuxtconfigts",[4700,4702],{"type":2929,"value":4701},"4. Schedule bundled cleanup tasks in ",{"type":2924,"tag":3081,"props":4703,"children":4705},{"className":4704},[],[4706],{"type":2929,"value":233},{"type":2924,"tag":2931,"props":4708,"children":4709},{},[4710,4712,4717,4719,4725,4727,4732,4734,4740,4742,4748,4750,4756,4758,4763,4765,4771],{"type":2929,"value":4711},"The module registers two Nitro tasks for you: ",{"type":2924,"tag":3081,"props":4713,"children":4715},{"className":4714},[],[4716],{"type":2929,"value":3178},{"type":2929,"value":4718}," (removes expired ",{"type":2924,"tag":3081,"props":4720,"children":4722},{"className":4721},[],[4723],{"type":2929,"value":4724},"ban:*",{"type":2929,"value":4726}," keys) and ",{"type":2924,"tag":3081,"props":4728,"children":4730},{"className":4729},[],[4731],{"type":2929,"value":3186},{"type":2929,"value":4733}," (removes stale ",{"type":2924,"tag":3081,"props":4735,"children":4737},{"className":4736},[],[4738],{"type":2929,"value":4739},"ip:*",{"type":2929,"value":4741}," keys using ",{"type":2924,"tag":3081,"props":4743,"children":4745},{"className":4744},[],[4746],{"type":2929,"value":4747},"ipTTL",{"type":2929,"value":4749},"). Turn on Nitro tasks and add ",{"type":2924,"tag":3081,"props":4751,"children":4753},{"className":4752},[],[4754],{"type":2929,"value":4755},"scheduledTasks",{"type":2929,"value":4757}," so they run on a cadence you choose. You do ",{"type":2924,"tag":3019,"props":4759,"children":4760},{},[4761],{"type":2929,"value":4762},"not",{"type":2929,"value":4764}," need files under ",{"type":2924,"tag":3081,"props":4766,"children":4768},{"className":4767},[],[4769],{"type":2929,"value":4770},"server\u002Ftasks\u002F",{"type":2929,"value":4772}," for this default setup.",{"type":2924,"tag":3231,"props":4774,"children":4776},{"className":4320,"code":4775,"language":4322,"meta":2868,"style":2868},"{\n  \"nitro\": {\n    \"experimental\": {\n      \"tasks\": true\n    },\n    \"scheduledTasks\": {\n      \"*\u002F15 * * * *\": [\"shield:cleanBans\"],\n      \"0 0 * * *\": [\"shield:cleanIpData\"]\n    }\n  }\n}\n",[4777],{"type":2924,"tag":3081,"props":4778,"children":4779},{"__ignoreMap":2868},[4780,4787,4810,4834,4859,4866,4889,4930,4971,4978,4985],{"type":2924,"tag":3241,"props":4781,"children":4782},{"class":3243,"line":2896},[4783],{"type":2924,"tag":3241,"props":4784,"children":4785},{"style":3407},[4786],{"type":2929,"value":3410},{"type":2924,"tag":3241,"props":4788,"children":4789},{"class":3243,"line":2892},[4790,4794,4798,4802,4806],{"type":2924,"tag":3241,"props":4791,"children":4792},{"style":3407},[4793],{"type":2929,"value":4341},{"type":2924,"tag":3241,"props":4795,"children":4796},{"style":4344},[4797],{"type":2929,"value":4347},{"type":2924,"tag":3241,"props":4799,"children":4800},{"style":3407},[4801],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":4803,"children":4804},{"style":3407},[4805],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":4807,"children":4808},{"style":3407},[4809],{"type":2929,"value":3469},{"type":2924,"tag":3241,"props":4811,"children":4812},{"class":3243,"line":3273},[4813,4817,4822,4826,4830],{"type":2924,"tag":3241,"props":4814,"children":4815},{"style":3407},[4816],{"type":2929,"value":4367},{"type":2924,"tag":3241,"props":4818,"children":4819},{"style":3256},[4820],{"type":2929,"value":4821},"experimental",{"type":2924,"tag":3241,"props":4823,"children":4824},{"style":3407},[4825],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":4827,"children":4828},{"style":3407},[4829],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":4831,"children":4832},{"style":3407},[4833],{"type":2929,"value":3469},{"type":2924,"tag":3241,"props":4835,"children":4836},{"class":3243,"line":3282},[4837,4841,4846,4850,4854],{"type":2924,"tag":3241,"props":4838,"children":4839},{"style":3407},[4840],{"type":2929,"value":4392},{"type":2924,"tag":3241,"props":4842,"children":4843},{"style":3627},[4844],{"type":2929,"value":4845},"tasks",{"type":2924,"tag":3241,"props":4847,"children":4848},{"style":3407},[4849],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":4851,"children":4852},{"style":3407},[4853],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":4855,"children":4856},{"style":3407},[4857],{"type":2929,"value":4858}," true\n",{"type":2924,"tag":3241,"props":4860,"children":4861},{"class":3243,"line":2888},[4862],{"type":2924,"tag":3241,"props":4863,"children":4864},{"style":3407},[4865],{"type":2929,"value":3517},{"type":2924,"tag":3241,"props":4867,"children":4868},{"class":3243,"line":3307},[4869,4873,4877,4881,4885],{"type":2924,"tag":3241,"props":4870,"children":4871},{"style":3407},[4872],{"type":2929,"value":4367},{"type":2924,"tag":3241,"props":4874,"children":4875},{"style":3256},[4876],{"type":2929,"value":4755},{"type":2924,"tag":3241,"props":4878,"children":4879},{"style":3407},[4880],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":4882,"children":4883},{"style":3407},[4884],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":4886,"children":4887},{"style":3407},[4888],{"type":2929,"value":3469},{"type":2924,"tag":3241,"props":4890,"children":4891},{"class":3243,"line":3315},[4892,4896,4901,4905,4909,4913,4917,4921,4925],{"type":2924,"tag":3241,"props":4893,"children":4894},{"style":3407},[4895],{"type":2929,"value":4392},{"type":2924,"tag":3241,"props":4897,"children":4898},{"style":3627},[4899],{"type":2929,"value":4900},"*\u002F15 * * * *",{"type":2924,"tag":3241,"props":4902,"children":4903},{"style":3407},[4904],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":4906,"children":4907},{"style":3407},[4908],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":4910,"children":4911},{"style":3407},[4912],{"type":2929,"value":3429},{"type":2924,"tag":3241,"props":4914,"children":4915},{"style":3407},[4916],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":4918,"children":4919},{"style":3262},[4920],{"type":2929,"value":3178},{"type":2924,"tag":3241,"props":4922,"children":4923},{"style":3407},[4924],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":4926,"children":4927},{"style":3407},[4928],{"type":2929,"value":4929},"],\n",{"type":2924,"tag":3241,"props":4931,"children":4932},{"class":3243,"line":3324},[4933,4937,4942,4946,4950,4954,4958,4962,4966],{"type":2924,"tag":3241,"props":4934,"children":4935},{"style":3407},[4936],{"type":2929,"value":4392},{"type":2924,"tag":3241,"props":4938,"children":4939},{"style":3627},[4940],{"type":2929,"value":4941},"0 0 * * *",{"type":2924,"tag":3241,"props":4943,"children":4944},{"style":3407},[4945],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":4947,"children":4948},{"style":3407},[4949],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":4951,"children":4952},{"style":3407},[4953],{"type":2929,"value":3429},{"type":2924,"tag":3241,"props":4955,"children":4956},{"style":3407},[4957],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":4959,"children":4960},{"style":3262},[4961],{"type":2929,"value":3186},{"type":2924,"tag":3241,"props":4963,"children":4964},{"style":3407},[4965],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":4967,"children":4968},{"style":3407},[4969],{"type":2929,"value":4970},"]\n",{"type":2924,"tag":3241,"props":4972,"children":4973},{"class":3243,"line":2913},[4974],{"type":2924,"tag":3241,"props":4975,"children":4976},{"style":3407},[4977],{"type":2929,"value":4467},{"type":2924,"tag":3241,"props":4979,"children":4980},{"class":3243,"line":3520},[4981],{"type":2924,"tag":3241,"props":4982,"children":4983},{"style":3407},[4984],{"type":2929,"value":4130},{"type":2924,"tag":3241,"props":4986,"children":4987},{"class":3243,"line":3529},[4988],{"type":2924,"tag":3241,"props":4989,"children":4990},{"style":3407},[4991],{"type":2929,"value":4138},{"type":2924,"tag":2931,"props":4993,"children":4994},{},[4995],{"type":2929,"value":4996},"Cron expressions are examples only: for instance, clean expired bans every 15 minutes and IP tracking data daily at midnight.",{"type":2924,"tag":3217,"props":4998,"children":5000},{"id":4999},"_5-optional-custom-cleanup-task-implementations",[5001],{"type":2929,"value":5002},"5. Optional: custom cleanup task implementations",{"type":2924,"tag":2931,"props":5004,"children":5005},{},[5006,5008,5013,5015,5020],{"type":2929,"value":5007},"Skip this unless you need behavior different from the bundled handlers (for example extra logging, metrics, or storage layout). The snippets below mirror what the module already ships; they are useful as a reference or if you define ",{"type":2924,"tag":3019,"props":5009,"children":5010},{},[5011],{"type":2929,"value":5012},"another",{"type":2929,"value":5014}," task name and point ",{"type":2924,"tag":3081,"props":5016,"children":5018},{"className":5017},[],[5019],{"type":2929,"value":4755},{"type":2929,"value":5021}," at that name instead.",{"type":2924,"tag":5023,"props":5024,"children":5026},"h4",{"id":5025},"a-task-for-cleaning-expired-bans",[5027],{"type":2929,"value":5028},"a) Task for cleaning expired bans",{"type":2924,"tag":2931,"props":5030,"children":5031},{},[5032,5034,5040],{"type":2929,"value":5033},"Removes ban entries (",{"type":2924,"tag":3081,"props":5035,"children":5037},{"className":5036},[],[5038],{"type":2929,"value":5039},"ban:xxx.xxx.xxx.xxx",{"type":2929,"value":5041},") after the ban timestamp has passed.",{"type":2924,"tag":2931,"props":5043,"children":5044},{},[5045,5047,5053],{"type":2929,"value":5046},"Example ",{"type":2924,"tag":3081,"props":5048,"children":5050},{"className":5049},[],[5051],{"type":2929,"value":5052},"server\u002Ftasks\u002Fshield\u002FcleanBans.ts",{"type":2929,"value":5054}," (task name must match what you schedule):",{"type":2924,"tag":3231,"props":5056,"children":5060},{"className":5057,"code":5058,"language":5059,"meta":2868,"style":2868},"language-ts shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","import { isActualBanTimestampExpired } from \"#imports\"; \u002F\u002F Auto-imported utility from nuxt-api-shield\n\nexport default defineTask({\n  meta: {\n    name: \"shield:cleanBans\", \u002F\u002F Match the name in scheduledTasks\n    description: \"Clean expired bans from nuxt-api-shield storage.\",\n  },\n  async run() {\n    const shieldStorage = useStorage(\"shield\"); \u002F\u002F Use your configured storage name\n\n    \u002F\u002F Only fetch keys that start with the 'ban:' prefix\n    const banKeys = await shieldStorage.getKeys(\"ban:\");\n\n    let cleanedCount = 0;\n    for (const key of banKeys) {\n      const bannedUntilRaw = await shieldStorage.getItem(key);\n      if (isActualBanTimestampExpired(bannedUntilRaw)) {\n        await shieldStorage.removeItem(key);\n        cleanedCount++;\n      }\n    }\n    console.log(`[nuxt-api-shield] Cleaned ${cleanedCount} expired ban(s).`);\n    return { result: { cleanedCount } };\n  },\n});\n","ts",[5061],{"type":2924,"tag":3081,"props":5062,"children":5063},{"__ignoreMap":2868},[5064,5115,5122,5146,5162,5195,5224,5231,5253,5305,5312,5320,5379,5386,5412,5453,5504,5539,5576,5589,5596,5603,5665,5703,5710],{"type":2924,"tag":3241,"props":5065,"children":5066},{"class":3243,"line":2896},[5067,5072,5077,5082,5087,5092,5096,5101,5105,5110],{"type":2924,"tag":3241,"props":5068,"children":5069},{"style":3384},[5070],{"type":2929,"value":5071},"import",{"type":2924,"tag":3241,"props":5073,"children":5074},{"style":3407},[5075],{"type":2929,"value":5076}," {",{"type":2924,"tag":3241,"props":5078,"children":5079},{"style":3401},[5080],{"type":2929,"value":5081}," isActualBanTimestampExpired",{"type":2924,"tag":3241,"props":5083,"children":5084},{"style":3407},[5085],{"type":2929,"value":5086}," }",{"type":2924,"tag":3241,"props":5088,"children":5089},{"style":3384},[5090],{"type":2929,"value":5091}," from",{"type":2924,"tag":3241,"props":5093,"children":5094},{"style":3407},[5095],{"type":2929,"value":3895},{"type":2924,"tag":3241,"props":5097,"children":5098},{"style":3262},[5099],{"type":2929,"value":5100},"#imports",{"type":2924,"tag":3241,"props":5102,"children":5103},{"style":3407},[5104],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":5106,"children":5107},{"style":3407},[5108],{"type":2929,"value":5109},";",{"type":2924,"tag":3241,"props":5111,"children":5112},{"style":3247},[5113],{"type":2929,"value":5114}," \u002F\u002F Auto-imported utility from nuxt-api-shield\n",{"type":2924,"tag":3241,"props":5116,"children":5117},{"class":3243,"line":2892},[5118],{"type":2924,"tag":3241,"props":5119,"children":5120},{"emptyLinePlaceholder":1196},[5121],{"type":2929,"value":3279},{"type":2924,"tag":3241,"props":5123,"children":5124},{"class":3243,"line":3273},[5125,5129,5133,5138,5142],{"type":2924,"tag":3241,"props":5126,"children":5127},{"style":3384},[5128],{"type":2929,"value":3387},{"type":2924,"tag":3241,"props":5130,"children":5131},{"style":3384},[5132],{"type":2929,"value":3392},{"type":2924,"tag":3241,"props":5134,"children":5135},{"style":3395},[5136],{"type":2929,"value":5137}," defineTask",{"type":2924,"tag":3241,"props":5139,"children":5140},{"style":3401},[5141],{"type":2929,"value":3404},{"type":2924,"tag":3241,"props":5143,"children":5144},{"style":3407},[5145],{"type":2929,"value":3410},{"type":2924,"tag":3241,"props":5147,"children":5148},{"class":3243,"line":3282},[5149,5154,5158],{"type":2924,"tag":3241,"props":5150,"children":5151},{"style":3416},[5152],{"type":2929,"value":5153},"  meta",{"type":2924,"tag":3241,"props":5155,"children":5156},{"style":3407},[5157],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":5159,"children":5160},{"style":3407},[5161],{"type":2929,"value":3469},{"type":2924,"tag":3241,"props":5163,"children":5164},{"class":3243,"line":2888},[5165,5170,5174,5178,5182,5186,5190],{"type":2924,"tag":3241,"props":5166,"children":5167},{"style":3416},[5168],{"type":2929,"value":5169},"    name",{"type":2924,"tag":3241,"props":5171,"children":5172},{"style":3407},[5173],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":5175,"children":5176},{"style":3407},[5177],{"type":2929,"value":3895},{"type":2924,"tag":3241,"props":5179,"children":5180},{"style":3262},[5181],{"type":2929,"value":3178},{"type":2924,"tag":3241,"props":5183,"children":5184},{"style":3407},[5185],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":5187,"children":5188},{"style":3407},[5189],{"type":2929,"value":3635},{"type":2924,"tag":3241,"props":5191,"children":5192},{"style":3247},[5193],{"type":2929,"value":5194}," \u002F\u002F Match the name in scheduledTasks\n",{"type":2924,"tag":3241,"props":5196,"children":5197},{"class":3243,"line":3307},[5198,5203,5207,5211,5216,5220],{"type":2924,"tag":3241,"props":5199,"children":5200},{"style":3416},[5201],{"type":2929,"value":5202},"    description",{"type":2924,"tag":3241,"props":5204,"children":5205},{"style":3407},[5206],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":5208,"children":5209},{"style":3407},[5210],{"type":2929,"value":3895},{"type":2924,"tag":3241,"props":5212,"children":5213},{"style":3262},[5214],{"type":2929,"value":5215},"Clean expired bans from nuxt-api-shield storage.",{"type":2924,"tag":3241,"props":5217,"children":5218},{"style":3407},[5219],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":5221,"children":5222},{"style":3407},[5223],{"type":2929,"value":3452},{"type":2924,"tag":3241,"props":5225,"children":5226},{"class":3243,"line":3315},[5227],{"type":2924,"tag":3241,"props":5228,"children":5229},{"style":3407},[5230],{"type":2929,"value":3711},{"type":2924,"tag":3241,"props":5232,"children":5233},{"class":3243,"line":3324},[5234,5239,5244,5249],{"type":2924,"tag":3241,"props":5235,"children":5236},{"style":4344},[5237],{"type":2929,"value":5238},"  async",{"type":2924,"tag":3241,"props":5240,"children":5241},{"style":3416},[5242],{"type":2929,"value":5243}," run",{"type":2924,"tag":3241,"props":5245,"children":5246},{"style":3407},[5247],{"type":2929,"value":5248},"()",{"type":2924,"tag":3241,"props":5250,"children":5251},{"style":3407},[5252],{"type":2929,"value":3469},{"type":2924,"tag":3241,"props":5254,"children":5255},{"class":3243,"line":2913},[5256,5261,5266,5271,5276,5280,5284,5288,5292,5296,5300],{"type":2924,"tag":3241,"props":5257,"children":5258},{"style":4344},[5259],{"type":2929,"value":5260},"    const",{"type":2924,"tag":3241,"props":5262,"children":5263},{"style":3401},[5264],{"type":2929,"value":5265}," shieldStorage",{"type":2924,"tag":3241,"props":5267,"children":5268},{"style":3407},[5269],{"type":2929,"value":5270}," =",{"type":2924,"tag":3241,"props":5272,"children":5273},{"style":3395},[5274],{"type":2929,"value":5275}," useStorage",{"type":2924,"tag":3241,"props":5277,"children":5278},{"style":3416},[5279],{"type":2929,"value":3404},{"type":2924,"tag":3241,"props":5281,"children":5282},{"style":3407},[5283],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":5285,"children":5286},{"style":3262},[5287],{"type":2929,"value":4315},{"type":2924,"tag":3241,"props":5289,"children":5290},{"style":3407},[5291],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":5293,"children":5294},{"style":3416},[5295],{"type":2929,"value":3725},{"type":2924,"tag":3241,"props":5297,"children":5298},{"style":3407},[5299],{"type":2929,"value":5109},{"type":2924,"tag":3241,"props":5301,"children":5302},{"style":3247},[5303],{"type":2929,"value":5304}," \u002F\u002F Use your configured storage name\n",{"type":2924,"tag":3241,"props":5306,"children":5307},{"class":3243,"line":3520},[5308],{"type":2924,"tag":3241,"props":5309,"children":5310},{"emptyLinePlaceholder":1196},[5311],{"type":2929,"value":3279},{"type":2924,"tag":3241,"props":5313,"children":5314},{"class":3243,"line":3529},[5315],{"type":2924,"tag":3241,"props":5316,"children":5317},{"style":3247},[5318],{"type":2929,"value":5319},"    \u002F\u002F Only fetch keys that start with the 'ban:' prefix\n",{"type":2924,"tag":3241,"props":5321,"children":5322},{"class":3243,"line":3538},[5323,5327,5332,5336,5341,5345,5349,5354,5358,5362,5367,5371,5375],{"type":2924,"tag":3241,"props":5324,"children":5325},{"style":4344},[5326],{"type":2929,"value":5260},{"type":2924,"tag":3241,"props":5328,"children":5329},{"style":3401},[5330],{"type":2929,"value":5331}," banKeys",{"type":2924,"tag":3241,"props":5333,"children":5334},{"style":3407},[5335],{"type":2929,"value":5270},{"type":2924,"tag":3241,"props":5337,"children":5338},{"style":3384},[5339],{"type":2929,"value":5340}," await",{"type":2924,"tag":3241,"props":5342,"children":5343},{"style":3401},[5344],{"type":2929,"value":5265},{"type":2924,"tag":3241,"props":5346,"children":5347},{"style":3407},[5348],{"type":2929,"value":4286},{"type":2924,"tag":3241,"props":5350,"children":5351},{"style":3395},[5352],{"type":2929,"value":5353},"getKeys",{"type":2924,"tag":3241,"props":5355,"children":5356},{"style":3416},[5357],{"type":2929,"value":3404},{"type":2924,"tag":3241,"props":5359,"children":5360},{"style":3407},[5361],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":5363,"children":5364},{"style":3262},[5365],{"type":2929,"value":5366},"ban:",{"type":2924,"tag":3241,"props":5368,"children":5369},{"style":3407},[5370],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":5372,"children":5373},{"style":3416},[5374],{"type":2929,"value":3725},{"type":2924,"tag":3241,"props":5376,"children":5377},{"style":3407},[5378],{"type":2929,"value":3730},{"type":2924,"tag":3241,"props":5380,"children":5381},{"class":3243,"line":3547},[5382],{"type":2924,"tag":3241,"props":5383,"children":5384},{"emptyLinePlaceholder":1196},[5385],{"type":2929,"value":3279},{"type":2924,"tag":3241,"props":5387,"children":5388},{"class":3243,"line":3556},[5389,5394,5399,5403,5408],{"type":2924,"tag":3241,"props":5390,"children":5391},{"style":4344},[5392],{"type":2929,"value":5393},"    let",{"type":2924,"tag":3241,"props":5395,"children":5396},{"style":3401},[5397],{"type":2929,"value":5398}," cleanedCount",{"type":2924,"tag":3241,"props":5400,"children":5401},{"style":3407},[5402],{"type":2929,"value":5270},{"type":2924,"tag":3241,"props":5404,"children":5405},{"style":3627},[5406],{"type":2929,"value":5407}," 0",{"type":2924,"tag":3241,"props":5409,"children":5410},{"style":3407},[5411],{"type":2929,"value":3730},{"type":2924,"tag":3241,"props":5413,"children":5414},{"class":3243,"line":3565},[5415,5420,5425,5430,5435,5440,5444,5449],{"type":2924,"tag":3241,"props":5416,"children":5417},{"style":3384},[5418],{"type":2929,"value":5419},"    for",{"type":2924,"tag":3241,"props":5421,"children":5422},{"style":3416},[5423],{"type":2929,"value":5424}," (",{"type":2924,"tag":3241,"props":5426,"children":5427},{"style":4344},[5428],{"type":2929,"value":5429},"const",{"type":2924,"tag":3241,"props":5431,"children":5432},{"style":3401},[5433],{"type":2929,"value":5434}," key",{"type":2924,"tag":3241,"props":5436,"children":5437},{"style":3407},[5438],{"type":2929,"value":5439}," of",{"type":2924,"tag":3241,"props":5441,"children":5442},{"style":3401},[5443],{"type":2929,"value":5331},{"type":2924,"tag":3241,"props":5445,"children":5446},{"style":3416},[5447],{"type":2929,"value":5448},") ",{"type":2924,"tag":3241,"props":5450,"children":5451},{"style":3407},[5452],{"type":2929,"value":3410},{"type":2924,"tag":3241,"props":5454,"children":5455},{"class":3243,"line":3574},[5456,5461,5466,5470,5474,5478,5482,5487,5491,5496,5500],{"type":2924,"tag":3241,"props":5457,"children":5458},{"style":4344},[5459],{"type":2929,"value":5460},"      const",{"type":2924,"tag":3241,"props":5462,"children":5463},{"style":3401},[5464],{"type":2929,"value":5465}," bannedUntilRaw",{"type":2924,"tag":3241,"props":5467,"children":5468},{"style":3407},[5469],{"type":2929,"value":5270},{"type":2924,"tag":3241,"props":5471,"children":5472},{"style":3384},[5473],{"type":2929,"value":5340},{"type":2924,"tag":3241,"props":5475,"children":5476},{"style":3401},[5477],{"type":2929,"value":5265},{"type":2924,"tag":3241,"props":5479,"children":5480},{"style":3407},[5481],{"type":2929,"value":4286},{"type":2924,"tag":3241,"props":5483,"children":5484},{"style":3395},[5485],{"type":2929,"value":5486},"getItem",{"type":2924,"tag":3241,"props":5488,"children":5489},{"style":3416},[5490],{"type":2929,"value":3404},{"type":2924,"tag":3241,"props":5492,"children":5493},{"style":3401},[5494],{"type":2929,"value":5495},"key",{"type":2924,"tag":3241,"props":5497,"children":5498},{"style":3416},[5499],{"type":2929,"value":3725},{"type":2924,"tag":3241,"props":5501,"children":5502},{"style":3407},[5503],{"type":2929,"value":3730},{"type":2924,"tag":3241,"props":5505,"children":5506},{"class":3243,"line":3582},[5507,5512,5516,5521,5525,5530,5535],{"type":2924,"tag":3241,"props":5508,"children":5509},{"style":3384},[5510],{"type":2929,"value":5511},"      if",{"type":2924,"tag":3241,"props":5513,"children":5514},{"style":3416},[5515],{"type":2929,"value":5424},{"type":2924,"tag":3241,"props":5517,"children":5518},{"style":3395},[5519],{"type":2929,"value":5520},"isActualBanTimestampExpired",{"type":2924,"tag":3241,"props":5522,"children":5523},{"style":3416},[5524],{"type":2929,"value":3404},{"type":2924,"tag":3241,"props":5526,"children":5527},{"style":3401},[5528],{"type":2929,"value":5529},"bannedUntilRaw",{"type":2924,"tag":3241,"props":5531,"children":5532},{"style":3416},[5533],{"type":2929,"value":5534},")) ",{"type":2924,"tag":3241,"props":5536,"children":5537},{"style":3407},[5538],{"type":2929,"value":3410},{"type":2924,"tag":3241,"props":5540,"children":5541},{"class":3243,"line":3591},[5542,5547,5551,5555,5560,5564,5568,5572],{"type":2924,"tag":3241,"props":5543,"children":5544},{"style":3384},[5545],{"type":2929,"value":5546},"        await",{"type":2924,"tag":3241,"props":5548,"children":5549},{"style":3401},[5550],{"type":2929,"value":5265},{"type":2924,"tag":3241,"props":5552,"children":5553},{"style":3407},[5554],{"type":2929,"value":4286},{"type":2924,"tag":3241,"props":5556,"children":5557},{"style":3395},[5558],{"type":2929,"value":5559},"removeItem",{"type":2924,"tag":3241,"props":5561,"children":5562},{"style":3416},[5563],{"type":2929,"value":3404},{"type":2924,"tag":3241,"props":5565,"children":5566},{"style":3401},[5567],{"type":2929,"value":5495},{"type":2924,"tag":3241,"props":5569,"children":5570},{"style":3416},[5571],{"type":2929,"value":3725},{"type":2924,"tag":3241,"props":5573,"children":5574},{"style":3407},[5575],{"type":2929,"value":3730},{"type":2924,"tag":3241,"props":5577,"children":5578},{"class":3243,"line":3600},[5579,5584],{"type":2924,"tag":3241,"props":5580,"children":5581},{"style":3401},[5582],{"type":2929,"value":5583},"        cleanedCount",{"type":2924,"tag":3241,"props":5585,"children":5586},{"style":3407},[5587],{"type":2929,"value":5588},"++;\n",{"type":2924,"tag":3241,"props":5590,"children":5591},{"class":3243,"line":3614},[5592],{"type":2924,"tag":3241,"props":5593,"children":5594},{"style":3407},[5595],{"type":2929,"value":4459},{"type":2924,"tag":3241,"props":5597,"children":5598},{"class":3243,"line":3643},[5599],{"type":2924,"tag":3241,"props":5600,"children":5601},{"style":3407},[5602],{"type":2929,"value":4467},{"type":2924,"tag":3241,"props":5604,"children":5605},{"class":3243,"line":3660},[5606,5611,5615,5620,5624,5629,5634,5639,5644,5648,5653,5657,5661],{"type":2924,"tag":3241,"props":5607,"children":5608},{"style":3401},[5609],{"type":2929,"value":5610},"    console",{"type":2924,"tag":3241,"props":5612,"children":5613},{"style":3407},[5614],{"type":2929,"value":4286},{"type":2924,"tag":3241,"props":5616,"children":5617},{"style":3395},[5618],{"type":2929,"value":5619},"log",{"type":2924,"tag":3241,"props":5621,"children":5622},{"style":3416},[5623],{"type":2929,"value":3404},{"type":2924,"tag":3241,"props":5625,"children":5626},{"style":3407},[5627],{"type":2929,"value":5628},"`",{"type":2924,"tag":3241,"props":5630,"children":5631},{"style":3262},[5632],{"type":2929,"value":5633},"[nuxt-api-shield] Cleaned ",{"type":2924,"tag":3241,"props":5635,"children":5636},{"style":3407},[5637],{"type":2929,"value":5638},"${",{"type":2924,"tag":3241,"props":5640,"children":5641},{"style":3401},[5642],{"type":2929,"value":5643},"cleanedCount",{"type":2924,"tag":3241,"props":5645,"children":5646},{"style":3407},[5647],{"type":2929,"value":3720},{"type":2924,"tag":3241,"props":5649,"children":5650},{"style":3262},[5651],{"type":2929,"value":5652}," expired ban(s).",{"type":2924,"tag":3241,"props":5654,"children":5655},{"style":3407},[5656],{"type":2929,"value":5628},{"type":2924,"tag":3241,"props":5658,"children":5659},{"style":3416},[5660],{"type":2929,"value":3725},{"type":2924,"tag":3241,"props":5662,"children":5663},{"style":3407},[5664],{"type":2929,"value":3730},{"type":2924,"tag":3241,"props":5666,"children":5667},{"class":3243,"line":3669},[5668,5673,5677,5682,5686,5690,5694,5698],{"type":2924,"tag":3241,"props":5669,"children":5670},{"style":3384},[5671],{"type":2929,"value":5672},"    return",{"type":2924,"tag":3241,"props":5674,"children":5675},{"style":3407},[5676],{"type":2929,"value":5076},{"type":2924,"tag":3241,"props":5678,"children":5679},{"style":3416},[5680],{"type":2929,"value":5681}," result",{"type":2924,"tag":3241,"props":5683,"children":5684},{"style":3407},[5685],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":5687,"children":5688},{"style":3407},[5689],{"type":2929,"value":5076},{"type":2924,"tag":3241,"props":5691,"children":5692},{"style":3401},[5693],{"type":2929,"value":5398},{"type":2924,"tag":3241,"props":5695,"children":5696},{"style":3407},[5697],{"type":2929,"value":5086},{"type":2924,"tag":3241,"props":5699,"children":5700},{"style":3407},[5701],{"type":2929,"value":5702}," };\n",{"type":2924,"tag":3241,"props":5704,"children":5705},{"class":3243,"line":3697},[5706],{"type":2924,"tag":3241,"props":5707,"children":5708},{"style":3407},[5709],{"type":2929,"value":3711},{"type":2924,"tag":3241,"props":5711,"children":5712},{"class":3243,"line":3705},[5713,5717,5721],{"type":2924,"tag":3241,"props":5714,"children":5715},{"style":3407},[5716],{"type":2929,"value":3720},{"type":2924,"tag":3241,"props":5718,"children":5719},{"style":3401},[5720],{"type":2929,"value":3725},{"type":2924,"tag":3241,"props":5722,"children":5723},{"style":3407},[5724],{"type":2929,"value":3730},{"type":2924,"tag":2931,"props":5726,"children":5727},{},[5728,5729,5734,5736,5741,5743,5748],{"type":2929,"value":4157},{"type":2924,"tag":3081,"props":5730,"children":5732},{"className":5731},[],[5733],{"type":2929,"value":5520},{"type":2929,"value":5735}," utility is provided by ",{"type":2924,"tag":3081,"props":5737,"children":5739},{"className":5738},[],[5740],{"type":2929,"value":2865},{"type":2929,"value":5742}," and should be available via ",{"type":2924,"tag":3081,"props":5744,"children":5746},{"className":5745},[],[5747],{"type":2929,"value":5100},{"type":2929,"value":4286},{"type":2924,"tag":5023,"props":5750,"children":5752},{"id":5751},"b-task-for-cleaning-old-ip-tracking-data",[5753],{"type":2929,"value":5754},"b) Task for cleaning old IP tracking data",{"type":2924,"tag":2931,"props":5756,"children":5757},{},[5758,5760,5766,5768,5774,5776,5782],{"type":2929,"value":5759},"Cleans IP tracking entries (",{"type":2924,"tag":3081,"props":5761,"children":5763},{"className":5762},[],[5764],{"type":2929,"value":5765},"ip:xxx.xxx.xxx.xxx",{"type":2929,"value":5767},") whose ",{"type":2924,"tag":3081,"props":5769,"children":5771},{"className":5770},[],[5772],{"type":2929,"value":5773},"time",{"type":2929,"value":5775}," is older than ",{"type":2924,"tag":3081,"props":5777,"children":5779},{"className":5778},[],[5780],{"type":2929,"value":5781},"nuxtApiShield.ipTTL",{"type":2929,"value":5783}," (default 7 days), and drops malformed entries. That keeps storage from growing with one-off IPs that were never banned.",{"type":2924,"tag":2931,"props":5785,"children":5786},{},[5787,5788,5794],{"type":2929,"value":5046},{"type":2924,"tag":3081,"props":5789,"children":5791},{"className":5790},[],[5792],{"type":2929,"value":5793},"server\u002Ftasks\u002Fshield\u002FcleanIpData.ts",{"type":2929,"value":3424},{"type":2924,"tag":3231,"props":5796,"children":5798},{"className":5057,"code":5797,"language":5059,"meta":2868,"style":2868},"import type { RateLimit } from \"nuxt-api-shield\";\nimport { useRuntimeConfig } from \"#imports\";\n\nexport default defineTask({\n  meta: {\n    name: \"shield:cleanIpData\", \u002F\u002F Match the name in scheduledTasks\n    description: \"Clean old IP tracking data from nuxt-api-shield storage.\",\n  },\n  async run() {\n    const shieldStorage = useStorage(\"shield\");\n    const config = useRuntimeConfig().public.nuxtApiShield;\n\n    \u002F\u002F ipTTL is expected to be in seconds from config (module applies default if not set by user)\n    const ipTTLseconds = config.ipTTL;\n\n    if (!ipTTLseconds || ipTTLseconds \u003C= 0) {\n      console.log(\n        \"[nuxt-api-shield] IP data cleanup (ipTTL) is disabled or invalid.\"\n      );\n      return { result: { cleanedCount: 0 }, status: \"disabled_or_invalid_ttl\" };\n    }\n    const ipTTLms = ipTTLseconds * 1000;\n\n    const ipKeys = await shieldStorage.getKeys(\"ip:\");\n    const currentTime = Date.now();\n    let cleanedCount = 0;\n\n    for (const key of ipKeys) {\n      const entry = (await shieldStorage.getItem(key)) as RateLimit | null;\n\n      \u002F\u002F Check if entry exists and has a numeric 'time' property\n      if (entry && typeof entry.time === \"number\") {\n        if (currentTime - entry.time > ipTTLms) {\n          await shieldStorage.removeItem(key);\n          cleanedCount++;\n        }\n      } else {\n        \u002F\u002F Clean up entries that are null, not an object, or missing a numeric 'time'\n        await shieldStorage.removeItem(key);\n        cleanedCount++;\n      }\n    }\n\n    console.log(\n      `[nuxt-api-shield] Cleaned ${cleanedCount} old\u002Fmalformed IP data entries.`\n    );\n    return { result: { cleanedCount } };\n  },\n});\n",[5799],{"type":2924,"tag":3081,"props":5800,"children":5801},{"__ignoreMap":2868},[5802,5847,5887,5894,5917,5932,5963,5991,5998,6017,6060,6104,6111,6119,6151,6158,6206,6227,6243,6255,6322,6329,6362,6369,6426,6464,6487,6495,6531,6604,6612,6621,6686,6738,6775,6788,6797,6815,6824,6860,6872,6880,6888,6896,6916,6951,6964,7000,7008],{"type":2924,"tag":3241,"props":5803,"children":5804},{"class":3243,"line":2896},[5805,5809,5814,5818,5823,5827,5831,5835,5839,5843],{"type":2924,"tag":3241,"props":5806,"children":5807},{"style":3384},[5808],{"type":2929,"value":5071},{"type":2924,"tag":3241,"props":5810,"children":5811},{"style":3384},[5812],{"type":2929,"value":5813}," type",{"type":2924,"tag":3241,"props":5815,"children":5816},{"style":3407},[5817],{"type":2929,"value":5076},{"type":2924,"tag":3241,"props":5819,"children":5820},{"style":3401},[5821],{"type":2929,"value":5822}," RateLimit",{"type":2924,"tag":3241,"props":5824,"children":5825},{"style":3407},[5826],{"type":2929,"value":5086},{"type":2924,"tag":3241,"props":5828,"children":5829},{"style":3384},[5830],{"type":2929,"value":5091},{"type":2924,"tag":3241,"props":5832,"children":5833},{"style":3407},[5834],{"type":2929,"value":3895},{"type":2924,"tag":3241,"props":5836,"children":5837},{"style":3262},[5838],{"type":2929,"value":2865},{"type":2924,"tag":3241,"props":5840,"children":5841},{"style":3407},[5842],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":5844,"children":5845},{"style":3407},[5846],{"type":2929,"value":3730},{"type":2924,"tag":3241,"props":5848,"children":5849},{"class":3243,"line":2892},[5850,5854,5858,5863,5867,5871,5875,5879,5883],{"type":2924,"tag":3241,"props":5851,"children":5852},{"style":3384},[5853],{"type":2929,"value":5071},{"type":2924,"tag":3241,"props":5855,"children":5856},{"style":3407},[5857],{"type":2929,"value":5076},{"type":2924,"tag":3241,"props":5859,"children":5860},{"style":3401},[5861],{"type":2929,"value":5862}," useRuntimeConfig",{"type":2924,"tag":3241,"props":5864,"children":5865},{"style":3407},[5866],{"type":2929,"value":5086},{"type":2924,"tag":3241,"props":5868,"children":5869},{"style":3384},[5870],{"type":2929,"value":5091},{"type":2924,"tag":3241,"props":5872,"children":5873},{"style":3407},[5874],{"type":2929,"value":3895},{"type":2924,"tag":3241,"props":5876,"children":5877},{"style":3262},[5878],{"type":2929,"value":5100},{"type":2924,"tag":3241,"props":5880,"children":5881},{"style":3407},[5882],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":5884,"children":5885},{"style":3407},[5886],{"type":2929,"value":3730},{"type":2924,"tag":3241,"props":5888,"children":5889},{"class":3243,"line":3273},[5890],{"type":2924,"tag":3241,"props":5891,"children":5892},{"emptyLinePlaceholder":1196},[5893],{"type":2929,"value":3279},{"type":2924,"tag":3241,"props":5895,"children":5896},{"class":3243,"line":3282},[5897,5901,5905,5909,5913],{"type":2924,"tag":3241,"props":5898,"children":5899},{"style":3384},[5900],{"type":2929,"value":3387},{"type":2924,"tag":3241,"props":5902,"children":5903},{"style":3384},[5904],{"type":2929,"value":3392},{"type":2924,"tag":3241,"props":5906,"children":5907},{"style":3395},[5908],{"type":2929,"value":5137},{"type":2924,"tag":3241,"props":5910,"children":5911},{"style":3401},[5912],{"type":2929,"value":3404},{"type":2924,"tag":3241,"props":5914,"children":5915},{"style":3407},[5916],{"type":2929,"value":3410},{"type":2924,"tag":3241,"props":5918,"children":5919},{"class":3243,"line":2888},[5920,5924,5928],{"type":2924,"tag":3241,"props":5921,"children":5922},{"style":3416},[5923],{"type":2929,"value":5153},{"type":2924,"tag":3241,"props":5925,"children":5926},{"style":3407},[5927],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":5929,"children":5930},{"style":3407},[5931],{"type":2929,"value":3469},{"type":2924,"tag":3241,"props":5933,"children":5934},{"class":3243,"line":3307},[5935,5939,5943,5947,5951,5955,5959],{"type":2924,"tag":3241,"props":5936,"children":5937},{"style":3416},[5938],{"type":2929,"value":5169},{"type":2924,"tag":3241,"props":5940,"children":5941},{"style":3407},[5942],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":5944,"children":5945},{"style":3407},[5946],{"type":2929,"value":3895},{"type":2924,"tag":3241,"props":5948,"children":5949},{"style":3262},[5950],{"type":2929,"value":3186},{"type":2924,"tag":3241,"props":5952,"children":5953},{"style":3407},[5954],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":5956,"children":5957},{"style":3407},[5958],{"type":2929,"value":3635},{"type":2924,"tag":3241,"props":5960,"children":5961},{"style":3247},[5962],{"type":2929,"value":5194},{"type":2924,"tag":3241,"props":5964,"children":5965},{"class":3243,"line":3315},[5966,5970,5974,5978,5983,5987],{"type":2924,"tag":3241,"props":5967,"children":5968},{"style":3416},[5969],{"type":2929,"value":5202},{"type":2924,"tag":3241,"props":5971,"children":5972},{"style":3407},[5973],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":5975,"children":5976},{"style":3407},[5977],{"type":2929,"value":3895},{"type":2924,"tag":3241,"props":5979,"children":5980},{"style":3262},[5981],{"type":2929,"value":5982},"Clean old IP tracking data from nuxt-api-shield storage.",{"type":2924,"tag":3241,"props":5984,"children":5985},{"style":3407},[5986],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":5988,"children":5989},{"style":3407},[5990],{"type":2929,"value":3452},{"type":2924,"tag":3241,"props":5992,"children":5993},{"class":3243,"line":3324},[5994],{"type":2924,"tag":3241,"props":5995,"children":5996},{"style":3407},[5997],{"type":2929,"value":3711},{"type":2924,"tag":3241,"props":5999,"children":6000},{"class":3243,"line":2913},[6001,6005,6009,6013],{"type":2924,"tag":3241,"props":6002,"children":6003},{"style":4344},[6004],{"type":2929,"value":5238},{"type":2924,"tag":3241,"props":6006,"children":6007},{"style":3416},[6008],{"type":2929,"value":5243},{"type":2924,"tag":3241,"props":6010,"children":6011},{"style":3407},[6012],{"type":2929,"value":5248},{"type":2924,"tag":3241,"props":6014,"children":6015},{"style":3407},[6016],{"type":2929,"value":3469},{"type":2924,"tag":3241,"props":6018,"children":6019},{"class":3243,"line":3520},[6020,6024,6028,6032,6036,6040,6044,6048,6052,6056],{"type":2924,"tag":3241,"props":6021,"children":6022},{"style":4344},[6023],{"type":2929,"value":5260},{"type":2924,"tag":3241,"props":6025,"children":6026},{"style":3401},[6027],{"type":2929,"value":5265},{"type":2924,"tag":3241,"props":6029,"children":6030},{"style":3407},[6031],{"type":2929,"value":5270},{"type":2924,"tag":3241,"props":6033,"children":6034},{"style":3395},[6035],{"type":2929,"value":5275},{"type":2924,"tag":3241,"props":6037,"children":6038},{"style":3416},[6039],{"type":2929,"value":3404},{"type":2924,"tag":3241,"props":6041,"children":6042},{"style":3407},[6043],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":6045,"children":6046},{"style":3262},[6047],{"type":2929,"value":4315},{"type":2924,"tag":3241,"props":6049,"children":6050},{"style":3407},[6051],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":6053,"children":6054},{"style":3416},[6055],{"type":2929,"value":3725},{"type":2924,"tag":3241,"props":6057,"children":6058},{"style":3407},[6059],{"type":2929,"value":3730},{"type":2924,"tag":3241,"props":6061,"children":6062},{"class":3243,"line":3529},[6063,6067,6072,6076,6080,6084,6088,6092,6096,6100],{"type":2924,"tag":3241,"props":6064,"children":6065},{"style":4344},[6066],{"type":2929,"value":5260},{"type":2924,"tag":3241,"props":6068,"children":6069},{"style":3401},[6070],{"type":2929,"value":6071}," config",{"type":2924,"tag":3241,"props":6073,"children":6074},{"style":3407},[6075],{"type":2929,"value":5270},{"type":2924,"tag":3241,"props":6077,"children":6078},{"style":3395},[6079],{"type":2929,"value":5862},{"type":2924,"tag":3241,"props":6081,"children":6082},{"style":3416},[6083],{"type":2929,"value":5248},{"type":2924,"tag":3241,"props":6085,"children":6086},{"style":3407},[6087],{"type":2929,"value":4286},{"type":2924,"tag":3241,"props":6089,"children":6090},{"style":3401},[6091],{"type":2929,"value":180},{"type":2924,"tag":3241,"props":6093,"children":6094},{"style":3407},[6095],{"type":2929,"value":4286},{"type":2924,"tag":3241,"props":6097,"children":6098},{"style":3401},[6099],{"type":2929,"value":3746},{"type":2924,"tag":3241,"props":6101,"children":6102},{"style":3407},[6103],{"type":2929,"value":3730},{"type":2924,"tag":3241,"props":6105,"children":6106},{"class":3243,"line":3538},[6107],{"type":2924,"tag":3241,"props":6108,"children":6109},{"emptyLinePlaceholder":1196},[6110],{"type":2929,"value":3279},{"type":2924,"tag":3241,"props":6112,"children":6113},{"class":3243,"line":3547},[6114],{"type":2924,"tag":3241,"props":6115,"children":6116},{"style":3247},[6117],{"type":2929,"value":6118},"    \u002F\u002F ipTTL is expected to be in seconds from config (module applies default if not set by user)\n",{"type":2924,"tag":3241,"props":6120,"children":6121},{"class":3243,"line":3556},[6122,6126,6131,6135,6139,6143,6147],{"type":2924,"tag":3241,"props":6123,"children":6124},{"style":4344},[6125],{"type":2929,"value":5260},{"type":2924,"tag":3241,"props":6127,"children":6128},{"style":3401},[6129],{"type":2929,"value":6130}," ipTTLseconds",{"type":2924,"tag":3241,"props":6132,"children":6133},{"style":3407},[6134],{"type":2929,"value":5270},{"type":2924,"tag":3241,"props":6136,"children":6137},{"style":3401},[6138],{"type":2929,"value":6071},{"type":2924,"tag":3241,"props":6140,"children":6141},{"style":3407},[6142],{"type":2929,"value":4286},{"type":2924,"tag":3241,"props":6144,"children":6145},{"style":3401},[6146],{"type":2929,"value":4747},{"type":2924,"tag":3241,"props":6148,"children":6149},{"style":3407},[6150],{"type":2929,"value":3730},{"type":2924,"tag":3241,"props":6152,"children":6153},{"class":3243,"line":3565},[6154],{"type":2924,"tag":3241,"props":6155,"children":6156},{"emptyLinePlaceholder":1196},[6157],{"type":2929,"value":3279},{"type":2924,"tag":3241,"props":6159,"children":6160},{"class":3243,"line":3574},[6161,6166,6170,6175,6180,6185,6189,6194,6198,6202],{"type":2924,"tag":3241,"props":6162,"children":6163},{"style":3384},[6164],{"type":2929,"value":6165},"    if",{"type":2924,"tag":3241,"props":6167,"children":6168},{"style":3416},[6169],{"type":2929,"value":5424},{"type":2924,"tag":3241,"props":6171,"children":6172},{"style":3407},[6173],{"type":2929,"value":6174},"!",{"type":2924,"tag":3241,"props":6176,"children":6177},{"style":3401},[6178],{"type":2929,"value":6179},"ipTTLseconds",{"type":2924,"tag":3241,"props":6181,"children":6182},{"style":3407},[6183],{"type":2929,"value":6184}," ||",{"type":2924,"tag":3241,"props":6186,"children":6187},{"style":3401},[6188],{"type":2929,"value":6130},{"type":2924,"tag":3241,"props":6190,"children":6191},{"style":3407},[6192],{"type":2929,"value":6193}," \u003C=",{"type":2924,"tag":3241,"props":6195,"children":6196},{"style":3627},[6197],{"type":2929,"value":5407},{"type":2924,"tag":3241,"props":6199,"children":6200},{"style":3416},[6201],{"type":2929,"value":5448},{"type":2924,"tag":3241,"props":6203,"children":6204},{"style":3407},[6205],{"type":2929,"value":3410},{"type":2924,"tag":3241,"props":6207,"children":6208},{"class":3243,"line":3582},[6209,6214,6218,6222],{"type":2924,"tag":3241,"props":6210,"children":6211},{"style":3401},[6212],{"type":2929,"value":6213},"      console",{"type":2924,"tag":3241,"props":6215,"children":6216},{"style":3407},[6217],{"type":2929,"value":4286},{"type":2924,"tag":3241,"props":6219,"children":6220},{"style":3395},[6221],{"type":2929,"value":5619},{"type":2924,"tag":3241,"props":6223,"children":6224},{"style":3416},[6225],{"type":2929,"value":6226},"(\n",{"type":2924,"tag":3241,"props":6228,"children":6229},{"class":3243,"line":3591},[6230,6234,6239],{"type":2924,"tag":3241,"props":6231,"children":6232},{"style":3407},[6233],{"type":2929,"value":4424},{"type":2924,"tag":3241,"props":6235,"children":6236},{"style":3262},[6237],{"type":2929,"value":6238},"[nuxt-api-shield] IP data cleanup (ipTTL) is disabled or invalid.",{"type":2924,"tag":3241,"props":6240,"children":6241},{"style":3407},[6242],{"type":2929,"value":4451},{"type":2924,"tag":3241,"props":6244,"children":6245},{"class":3243,"line":3600},[6246,6251],{"type":2924,"tag":3241,"props":6247,"children":6248},{"style":3416},[6249],{"type":2929,"value":6250},"      )",{"type":2924,"tag":3241,"props":6252,"children":6253},{"style":3407},[6254],{"type":2929,"value":3730},{"type":2924,"tag":3241,"props":6256,"children":6257},{"class":3243,"line":3614},[6258,6263,6267,6271,6275,6279,6283,6287,6291,6296,6301,6305,6309,6314,6318],{"type":2924,"tag":3241,"props":6259,"children":6260},{"style":3384},[6261],{"type":2929,"value":6262},"      return",{"type":2924,"tag":3241,"props":6264,"children":6265},{"style":3407},[6266],{"type":2929,"value":5076},{"type":2924,"tag":3241,"props":6268,"children":6269},{"style":3416},[6270],{"type":2929,"value":5681},{"type":2924,"tag":3241,"props":6272,"children":6273},{"style":3407},[6274],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":6276,"children":6277},{"style":3407},[6278],{"type":2929,"value":5076},{"type":2924,"tag":3241,"props":6280,"children":6281},{"style":3416},[6282],{"type":2929,"value":5398},{"type":2924,"tag":3241,"props":6284,"children":6285},{"style":3407},[6286],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":6288,"children":6289},{"style":3627},[6290],{"type":2929,"value":5407},{"type":2924,"tag":3241,"props":6292,"children":6293},{"style":3407},[6294],{"type":2929,"value":6295}," },",{"type":2924,"tag":3241,"props":6297,"children":6298},{"style":3416},[6299],{"type":2929,"value":6300}," status",{"type":2924,"tag":3241,"props":6302,"children":6303},{"style":3407},[6304],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":6306,"children":6307},{"style":3407},[6308],{"type":2929,"value":3895},{"type":2924,"tag":3241,"props":6310,"children":6311},{"style":3262},[6312],{"type":2929,"value":6313},"disabled_or_invalid_ttl",{"type":2924,"tag":3241,"props":6315,"children":6316},{"style":3407},[6317],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":6319,"children":6320},{"style":3407},[6321],{"type":2929,"value":5702},{"type":2924,"tag":3241,"props":6323,"children":6324},{"class":3243,"line":3643},[6325],{"type":2924,"tag":3241,"props":6326,"children":6327},{"style":3407},[6328],{"type":2929,"value":4467},{"type":2924,"tag":3241,"props":6330,"children":6331},{"class":3243,"line":3660},[6332,6336,6341,6345,6349,6353,6358],{"type":2924,"tag":3241,"props":6333,"children":6334},{"style":4344},[6335],{"type":2929,"value":5260},{"type":2924,"tag":3241,"props":6337,"children":6338},{"style":3401},[6339],{"type":2929,"value":6340}," ipTTLms",{"type":2924,"tag":3241,"props":6342,"children":6343},{"style":3407},[6344],{"type":2929,"value":5270},{"type":2924,"tag":3241,"props":6346,"children":6347},{"style":3401},[6348],{"type":2929,"value":6130},{"type":2924,"tag":3241,"props":6350,"children":6351},{"style":3407},[6352],{"type":2929,"value":4055},{"type":2924,"tag":3241,"props":6354,"children":6355},{"style":3627},[6356],{"type":2929,"value":6357}," 1000",{"type":2924,"tag":3241,"props":6359,"children":6360},{"style":3407},[6361],{"type":2929,"value":3730},{"type":2924,"tag":3241,"props":6363,"children":6364},{"class":3243,"line":3669},[6365],{"type":2924,"tag":3241,"props":6366,"children":6367},{"emptyLinePlaceholder":1196},[6368],{"type":2929,"value":3279},{"type":2924,"tag":3241,"props":6370,"children":6371},{"class":3243,"line":3697},[6372,6376,6381,6385,6389,6393,6397,6401,6405,6409,6414,6418,6422],{"type":2924,"tag":3241,"props":6373,"children":6374},{"style":4344},[6375],{"type":2929,"value":5260},{"type":2924,"tag":3241,"props":6377,"children":6378},{"style":3401},[6379],{"type":2929,"value":6380}," ipKeys",{"type":2924,"tag":3241,"props":6382,"children":6383},{"style":3407},[6384],{"type":2929,"value":5270},{"type":2924,"tag":3241,"props":6386,"children":6387},{"style":3384},[6388],{"type":2929,"value":5340},{"type":2924,"tag":3241,"props":6390,"children":6391},{"style":3401},[6392],{"type":2929,"value":5265},{"type":2924,"tag":3241,"props":6394,"children":6395},{"style":3407},[6396],{"type":2929,"value":4286},{"type":2924,"tag":3241,"props":6398,"children":6399},{"style":3395},[6400],{"type":2929,"value":5353},{"type":2924,"tag":3241,"props":6402,"children":6403},{"style":3416},[6404],{"type":2929,"value":3404},{"type":2924,"tag":3241,"props":6406,"children":6407},{"style":3407},[6408],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":6410,"children":6411},{"style":3262},[6412],{"type":2929,"value":6413},"ip:",{"type":2924,"tag":3241,"props":6415,"children":6416},{"style":3407},[6417],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":6419,"children":6420},{"style":3416},[6421],{"type":2929,"value":3725},{"type":2924,"tag":3241,"props":6423,"children":6424},{"style":3407},[6425],{"type":2929,"value":3730},{"type":2924,"tag":3241,"props":6427,"children":6428},{"class":3243,"line":3705},[6429,6433,6438,6442,6447,6451,6456,6460],{"type":2924,"tag":3241,"props":6430,"children":6431},{"style":4344},[6432],{"type":2929,"value":5260},{"type":2924,"tag":3241,"props":6434,"children":6435},{"style":3401},[6436],{"type":2929,"value":6437}," currentTime",{"type":2924,"tag":3241,"props":6439,"children":6440},{"style":3407},[6441],{"type":2929,"value":5270},{"type":2924,"tag":3241,"props":6443,"children":6444},{"style":3401},[6445],{"type":2929,"value":6446}," Date",{"type":2924,"tag":3241,"props":6448,"children":6449},{"style":3407},[6450],{"type":2929,"value":4286},{"type":2924,"tag":3241,"props":6452,"children":6453},{"style":3395},[6454],{"type":2929,"value":6455},"now",{"type":2924,"tag":3241,"props":6457,"children":6458},{"style":3416},[6459],{"type":2929,"value":5248},{"type":2924,"tag":3241,"props":6461,"children":6462},{"style":3407},[6463],{"type":2929,"value":3730},{"type":2924,"tag":3241,"props":6465,"children":6466},{"class":3243,"line":3714},[6467,6471,6475,6479,6483],{"type":2924,"tag":3241,"props":6468,"children":6469},{"style":4344},[6470],{"type":2929,"value":5393},{"type":2924,"tag":3241,"props":6472,"children":6473},{"style":3401},[6474],{"type":2929,"value":5398},{"type":2924,"tag":3241,"props":6476,"children":6477},{"style":3407},[6478],{"type":2929,"value":5270},{"type":2924,"tag":3241,"props":6480,"children":6481},{"style":3627},[6482],{"type":2929,"value":5407},{"type":2924,"tag":3241,"props":6484,"children":6485},{"style":3407},[6486],{"type":2929,"value":3730},{"type":2924,"tag":3241,"props":6488,"children":6490},{"class":3243,"line":6489},27,[6491],{"type":2924,"tag":3241,"props":6492,"children":6493},{"emptyLinePlaceholder":1196},[6494],{"type":2929,"value":3279},{"type":2924,"tag":3241,"props":6496,"children":6498},{"class":3243,"line":6497},28,[6499,6503,6507,6511,6515,6519,6523,6527],{"type":2924,"tag":3241,"props":6500,"children":6501},{"style":3384},[6502],{"type":2929,"value":5419},{"type":2924,"tag":3241,"props":6504,"children":6505},{"style":3416},[6506],{"type":2929,"value":5424},{"type":2924,"tag":3241,"props":6508,"children":6509},{"style":4344},[6510],{"type":2929,"value":5429},{"type":2924,"tag":3241,"props":6512,"children":6513},{"style":3401},[6514],{"type":2929,"value":5434},{"type":2924,"tag":3241,"props":6516,"children":6517},{"style":3407},[6518],{"type":2929,"value":5439},{"type":2924,"tag":3241,"props":6520,"children":6521},{"style":3401},[6522],{"type":2929,"value":6380},{"type":2924,"tag":3241,"props":6524,"children":6525},{"style":3416},[6526],{"type":2929,"value":5448},{"type":2924,"tag":3241,"props":6528,"children":6529},{"style":3407},[6530],{"type":2929,"value":3410},{"type":2924,"tag":3241,"props":6532,"children":6534},{"class":3243,"line":6533},29,[6535,6539,6544,6548,6552,6557,6561,6565,6569,6573,6577,6581,6586,6590,6595,6600],{"type":2924,"tag":3241,"props":6536,"children":6537},{"style":4344},[6538],{"type":2929,"value":5460},{"type":2924,"tag":3241,"props":6540,"children":6541},{"style":3401},[6542],{"type":2929,"value":6543}," entry",{"type":2924,"tag":3241,"props":6545,"children":6546},{"style":3407},[6547],{"type":2929,"value":5270},{"type":2924,"tag":3241,"props":6549,"children":6550},{"style":3416},[6551],{"type":2929,"value":5424},{"type":2924,"tag":3241,"props":6553,"children":6554},{"style":3384},[6555],{"type":2929,"value":6556},"await",{"type":2924,"tag":3241,"props":6558,"children":6559},{"style":3401},[6560],{"type":2929,"value":5265},{"type":2924,"tag":3241,"props":6562,"children":6563},{"style":3407},[6564],{"type":2929,"value":4286},{"type":2924,"tag":3241,"props":6566,"children":6567},{"style":3395},[6568],{"type":2929,"value":5486},{"type":2924,"tag":3241,"props":6570,"children":6571},{"style":3416},[6572],{"type":2929,"value":3404},{"type":2924,"tag":3241,"props":6574,"children":6575},{"style":3401},[6576],{"type":2929,"value":5495},{"type":2924,"tag":3241,"props":6578,"children":6579},{"style":3416},[6580],{"type":2929,"value":5534},{"type":2924,"tag":3241,"props":6582,"children":6583},{"style":3384},[6584],{"type":2929,"value":6585},"as",{"type":2924,"tag":3241,"props":6587,"children":6588},{"style":3256},[6589],{"type":2929,"value":5822},{"type":2924,"tag":3241,"props":6591,"children":6592},{"style":3407},[6593],{"type":2929,"value":6594}," |",{"type":2924,"tag":3241,"props":6596,"children":6597},{"style":3256},[6598],{"type":2929,"value":6599}," null",{"type":2924,"tag":3241,"props":6601,"children":6602},{"style":3407},[6603],{"type":2929,"value":3730},{"type":2924,"tag":3241,"props":6605,"children":6607},{"class":3243,"line":6606},30,[6608],{"type":2924,"tag":3241,"props":6609,"children":6610},{"emptyLinePlaceholder":1196},[6611],{"type":2929,"value":3279},{"type":2924,"tag":3241,"props":6613,"children":6615},{"class":3243,"line":6614},31,[6616],{"type":2924,"tag":3241,"props":6617,"children":6618},{"style":3247},[6619],{"type":2929,"value":6620},"      \u002F\u002F Check if entry exists and has a numeric 'time' property\n",{"type":2924,"tag":3241,"props":6622,"children":6624},{"class":3243,"line":6623},32,[6625,6629,6633,6638,6643,6648,6652,6656,6660,6665,6669,6674,6678,6682],{"type":2924,"tag":3241,"props":6626,"children":6627},{"style":3384},[6628],{"type":2929,"value":5511},{"type":2924,"tag":3241,"props":6630,"children":6631},{"style":3416},[6632],{"type":2929,"value":5424},{"type":2924,"tag":3241,"props":6634,"children":6635},{"style":3401},[6636],{"type":2929,"value":6637},"entry",{"type":2924,"tag":3241,"props":6639,"children":6640},{"style":3407},[6641],{"type":2929,"value":6642}," &&",{"type":2924,"tag":3241,"props":6644,"children":6645},{"style":3407},[6646],{"type":2929,"value":6647}," typeof",{"type":2924,"tag":3241,"props":6649,"children":6650},{"style":3401},[6651],{"type":2929,"value":6543},{"type":2924,"tag":3241,"props":6653,"children":6654},{"style":3407},[6655],{"type":2929,"value":4286},{"type":2924,"tag":3241,"props":6657,"children":6658},{"style":3401},[6659],{"type":2929,"value":5773},{"type":2924,"tag":3241,"props":6661,"children":6662},{"style":3407},[6663],{"type":2929,"value":6664}," ===",{"type":2924,"tag":3241,"props":6666,"children":6667},{"style":3407},[6668],{"type":2929,"value":3895},{"type":2924,"tag":3241,"props":6670,"children":6671},{"style":3262},[6672],{"type":2929,"value":6673},"number",{"type":2924,"tag":3241,"props":6675,"children":6676},{"style":3407},[6677],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":6679,"children":6680},{"style":3416},[6681],{"type":2929,"value":5448},{"type":2924,"tag":3241,"props":6683,"children":6684},{"style":3407},[6685],{"type":2929,"value":3410},{"type":2924,"tag":3241,"props":6687,"children":6689},{"class":3243,"line":6688},33,[6690,6695,6699,6704,6709,6713,6717,6721,6726,6730,6734],{"type":2924,"tag":3241,"props":6691,"children":6692},{"style":3384},[6693],{"type":2929,"value":6694},"        if",{"type":2924,"tag":3241,"props":6696,"children":6697},{"style":3416},[6698],{"type":2929,"value":5424},{"type":2924,"tag":3241,"props":6700,"children":6701},{"style":3401},[6702],{"type":2929,"value":6703},"currentTime",{"type":2924,"tag":3241,"props":6705,"children":6706},{"style":3407},[6707],{"type":2929,"value":6708}," -",{"type":2924,"tag":3241,"props":6710,"children":6711},{"style":3401},[6712],{"type":2929,"value":6543},{"type":2924,"tag":3241,"props":6714,"children":6715},{"style":3407},[6716],{"type":2929,"value":4286},{"type":2924,"tag":3241,"props":6718,"children":6719},{"style":3401},[6720],{"type":2929,"value":5773},{"type":2924,"tag":3241,"props":6722,"children":6723},{"style":3407},[6724],{"type":2929,"value":6725}," >",{"type":2924,"tag":3241,"props":6727,"children":6728},{"style":3401},[6729],{"type":2929,"value":6340},{"type":2924,"tag":3241,"props":6731,"children":6732},{"style":3416},[6733],{"type":2929,"value":5448},{"type":2924,"tag":3241,"props":6735,"children":6736},{"style":3407},[6737],{"type":2929,"value":3410},{"type":2924,"tag":3241,"props":6739,"children":6741},{"class":3243,"line":6740},34,[6742,6747,6751,6755,6759,6763,6767,6771],{"type":2924,"tag":3241,"props":6743,"children":6744},{"style":3384},[6745],{"type":2929,"value":6746},"          await",{"type":2924,"tag":3241,"props":6748,"children":6749},{"style":3401},[6750],{"type":2929,"value":5265},{"type":2924,"tag":3241,"props":6752,"children":6753},{"style":3407},[6754],{"type":2929,"value":4286},{"type":2924,"tag":3241,"props":6756,"children":6757},{"style":3395},[6758],{"type":2929,"value":5559},{"type":2924,"tag":3241,"props":6760,"children":6761},{"style":3416},[6762],{"type":2929,"value":3404},{"type":2924,"tag":3241,"props":6764,"children":6765},{"style":3401},[6766],{"type":2929,"value":5495},{"type":2924,"tag":3241,"props":6768,"children":6769},{"style":3416},[6770],{"type":2929,"value":3725},{"type":2924,"tag":3241,"props":6772,"children":6773},{"style":3407},[6774],{"type":2929,"value":3730},{"type":2924,"tag":3241,"props":6776,"children":6778},{"class":3243,"line":6777},35,[6779,6784],{"type":2924,"tag":3241,"props":6780,"children":6781},{"style":3401},[6782],{"type":2929,"value":6783},"          cleanedCount",{"type":2924,"tag":3241,"props":6785,"children":6786},{"style":3407},[6787],{"type":2929,"value":5588},{"type":2924,"tag":3241,"props":6789,"children":6791},{"class":3243,"line":6790},36,[6792],{"type":2924,"tag":3241,"props":6793,"children":6794},{"style":3407},[6795],{"type":2929,"value":6796},"        }\n",{"type":2924,"tag":3241,"props":6798,"children":6800},{"class":3243,"line":6799},37,[6801,6806,6811],{"type":2924,"tag":3241,"props":6802,"children":6803},{"style":3407},[6804],{"type":2929,"value":6805},"      }",{"type":2924,"tag":3241,"props":6807,"children":6808},{"style":3384},[6809],{"type":2929,"value":6810}," else",{"type":2924,"tag":3241,"props":6812,"children":6813},{"style":3407},[6814],{"type":2929,"value":3469},{"type":2924,"tag":3241,"props":6816,"children":6818},{"class":3243,"line":6817},38,[6819],{"type":2924,"tag":3241,"props":6820,"children":6821},{"style":3247},[6822],{"type":2929,"value":6823},"        \u002F\u002F Clean up entries that are null, not an object, or missing a numeric 'time'\n",{"type":2924,"tag":3241,"props":6825,"children":6827},{"class":3243,"line":6826},39,[6828,6832,6836,6840,6844,6848,6852,6856],{"type":2924,"tag":3241,"props":6829,"children":6830},{"style":3384},[6831],{"type":2929,"value":5546},{"type":2924,"tag":3241,"props":6833,"children":6834},{"style":3401},[6835],{"type":2929,"value":5265},{"type":2924,"tag":3241,"props":6837,"children":6838},{"style":3407},[6839],{"type":2929,"value":4286},{"type":2924,"tag":3241,"props":6841,"children":6842},{"style":3395},[6843],{"type":2929,"value":5559},{"type":2924,"tag":3241,"props":6845,"children":6846},{"style":3416},[6847],{"type":2929,"value":3404},{"type":2924,"tag":3241,"props":6849,"children":6850},{"style":3401},[6851],{"type":2929,"value":5495},{"type":2924,"tag":3241,"props":6853,"children":6854},{"style":3416},[6855],{"type":2929,"value":3725},{"type":2924,"tag":3241,"props":6857,"children":6858},{"style":3407},[6859],{"type":2929,"value":3730},{"type":2924,"tag":3241,"props":6861,"children":6863},{"class":3243,"line":6862},40,[6864,6868],{"type":2924,"tag":3241,"props":6865,"children":6866},{"style":3401},[6867],{"type":2929,"value":5583},{"type":2924,"tag":3241,"props":6869,"children":6870},{"style":3407},[6871],{"type":2929,"value":5588},{"type":2924,"tag":3241,"props":6873,"children":6875},{"class":3243,"line":6874},41,[6876],{"type":2924,"tag":3241,"props":6877,"children":6878},{"style":3407},[6879],{"type":2929,"value":4459},{"type":2924,"tag":3241,"props":6881,"children":6883},{"class":3243,"line":6882},42,[6884],{"type":2924,"tag":3241,"props":6885,"children":6886},{"style":3407},[6887],{"type":2929,"value":4467},{"type":2924,"tag":3241,"props":6889,"children":6891},{"class":3243,"line":6890},43,[6892],{"type":2924,"tag":3241,"props":6893,"children":6894},{"emptyLinePlaceholder":1196},[6895],{"type":2929,"value":3279},{"type":2924,"tag":3241,"props":6897,"children":6899},{"class":3243,"line":6898},44,[6900,6904,6908,6912],{"type":2924,"tag":3241,"props":6901,"children":6902},{"style":3401},[6903],{"type":2929,"value":5610},{"type":2924,"tag":3241,"props":6905,"children":6906},{"style":3407},[6907],{"type":2929,"value":4286},{"type":2924,"tag":3241,"props":6909,"children":6910},{"style":3395},[6911],{"type":2929,"value":5619},{"type":2924,"tag":3241,"props":6913,"children":6914},{"style":3416},[6915],{"type":2929,"value":6226},{"type":2924,"tag":3241,"props":6917,"children":6919},{"class":3243,"line":6918},45,[6920,6925,6929,6933,6937,6941,6946],{"type":2924,"tag":3241,"props":6921,"children":6922},{"style":3407},[6923],{"type":2929,"value":6924},"      `",{"type":2924,"tag":3241,"props":6926,"children":6927},{"style":3262},[6928],{"type":2929,"value":5633},{"type":2924,"tag":3241,"props":6930,"children":6931},{"style":3407},[6932],{"type":2929,"value":5638},{"type":2924,"tag":3241,"props":6934,"children":6935},{"style":3401},[6936],{"type":2929,"value":5643},{"type":2924,"tag":3241,"props":6938,"children":6939},{"style":3407},[6940],{"type":2929,"value":3720},{"type":2924,"tag":3241,"props":6942,"children":6943},{"style":3262},[6944],{"type":2929,"value":6945}," old\u002Fmalformed IP data entries.",{"type":2924,"tag":3241,"props":6947,"children":6948},{"style":3407},[6949],{"type":2929,"value":6950},"`\n",{"type":2924,"tag":3241,"props":6952,"children":6954},{"class":3243,"line":6953},46,[6955,6960],{"type":2924,"tag":3241,"props":6956,"children":6957},{"style":3416},[6958],{"type":2929,"value":6959},"    )",{"type":2924,"tag":3241,"props":6961,"children":6962},{"style":3407},[6963],{"type":2929,"value":3730},{"type":2924,"tag":3241,"props":6965,"children":6967},{"class":3243,"line":6966},47,[6968,6972,6976,6980,6984,6988,6992,6996],{"type":2924,"tag":3241,"props":6969,"children":6970},{"style":3384},[6971],{"type":2929,"value":5672},{"type":2924,"tag":3241,"props":6973,"children":6974},{"style":3407},[6975],{"type":2929,"value":5076},{"type":2924,"tag":3241,"props":6977,"children":6978},{"style":3416},[6979],{"type":2929,"value":5681},{"type":2924,"tag":3241,"props":6981,"children":6982},{"style":3407},[6983],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":6985,"children":6986},{"style":3407},[6987],{"type":2929,"value":5076},{"type":2924,"tag":3241,"props":6989,"children":6990},{"style":3401},[6991],{"type":2929,"value":5398},{"type":2924,"tag":3241,"props":6993,"children":6994},{"style":3407},[6995],{"type":2929,"value":5086},{"type":2924,"tag":3241,"props":6997,"children":6998},{"style":3407},[6999],{"type":2929,"value":5702},{"type":2924,"tag":3241,"props":7001,"children":7003},{"class":3243,"line":7002},48,[7004],{"type":2924,"tag":3241,"props":7005,"children":7006},{"style":3407},[7007],{"type":2929,"value":3711},{"type":2924,"tag":3241,"props":7009,"children":7011},{"class":3243,"line":7010},49,[7012,7016,7020],{"type":2924,"tag":3241,"props":7013,"children":7014},{"style":3407},[7015],{"type":2929,"value":3720},{"type":2924,"tag":3241,"props":7017,"children":7018},{"style":3401},[7019],{"type":2929,"value":3725},{"type":2924,"tag":3241,"props":7021,"children":7022},{"style":3407},[7023],{"type":2929,"value":3730},{"type":2924,"tag":2931,"props":7025,"children":7026},{},[7027,7029,7034,7036,7041,7043,7048,7049,7055,7057,7062],{"type":2929,"value":7028},"Configure ",{"type":2924,"tag":3081,"props":7030,"children":7032},{"className":7031},[],[7033],{"type":2929,"value":4747},{"type":2929,"value":7035}," under ",{"type":2924,"tag":3081,"props":7037,"children":7039},{"className":7038},[],[7040],{"type":2929,"value":3746},{"type":2929,"value":7042}," if you want a TTL other than the default. Setting ",{"type":2924,"tag":3081,"props":7044,"children":7046},{"className":7045},[],[7047],{"type":2929,"value":4747},{"type":2929,"value":4300},{"type":2924,"tag":3081,"props":7050,"children":7052},{"className":7051},[],[7053],{"type":2929,"value":7054},"0",{"type":2929,"value":7056}," (or any non-positive value) makes the bundled ",{"type":2924,"tag":3081,"props":7058,"children":7060},{"className":7059},[],[7061],{"type":2929,"value":3186},{"type":2929,"value":7063}," task skip IP cleanup (it logs and exits).",{"type":2924,"tag":2931,"props":7065,"children":7066},{},[7067,7069,7075,7077,7082,7084,7089],{"type":2929,"value":7068},"If you add your own task file with the same ",{"type":2924,"tag":3081,"props":7070,"children":7072},{"className":7071},[],[7073],{"type":2929,"value":7074},"meta.name",{"type":2929,"value":7076}," as a bundled task (",{"type":2924,"tag":3081,"props":7078,"children":7080},{"className":7079},[],[7081],{"type":2929,"value":3178},{"type":2929,"value":7083}," or ",{"type":2924,"tag":3081,"props":7085,"children":7087},{"className":7086},[],[7088],{"type":2929,"value":3186},{"type":2929,"value":7090},"), Nitro may prefer your project file over the module—avoid duplicate names unless you intend to override.",{"type":2924,"tag":3007,"props":7092,"children":7094},{"id":7093},"typescript-types",[7095],{"type":2929,"value":7096},"TypeScript Types",{"type":2924,"tag":2931,"props":7098,"children":7099},{},[7100],{"type":2929,"value":7101},"The module exports TypeScript types that you can use in your application:",{"type":2924,"tag":3217,"props":7103,"children":7105},{"id":7104},"ratelimit-type",[7106,7112],{"type":2924,"tag":3081,"props":7107,"children":7109},{"className":7108},[],[7110],{"type":2929,"value":7111},"RateLimit",{"type":2929,"value":7113}," Type",{"type":2924,"tag":2931,"props":7115,"children":7116},{},[7117,7118,7123],{"type":2929,"value":4157},{"type":2924,"tag":3081,"props":7119,"children":7121},{"className":7120},[],[7122],{"type":2929,"value":7111},{"type":2929,"value":7124}," type represents the structure of rate limit data stored for each IP address:",{"type":2924,"tag":3231,"props":7126,"children":7128},{"className":5057,"code":7127,"language":5059,"meta":2868,"style":2868},"import type { RateLimit } from \"nuxt-api-shield\";\n\n\u002F\u002F RateLimit structure:\n\u002F\u002F {\n\u002F\u002F   count: number  \u002F\u002F Number of requests made\n\u002F\u002F   time: number   \u002F\u002F Timestamp of the last request\n\u002F\u002F }\n",[7129],{"type":2924,"tag":3081,"props":7130,"children":7131},{"__ignoreMap":2868},[7132,7175,7182,7190,7198,7211,7224],{"type":2924,"tag":3241,"props":7133,"children":7134},{"class":3243,"line":2896},[7135,7139,7143,7147,7151,7155,7159,7163,7167,7171],{"type":2924,"tag":3241,"props":7136,"children":7137},{"style":3384},[7138],{"type":2929,"value":5071},{"type":2924,"tag":3241,"props":7140,"children":7141},{"style":3384},[7142],{"type":2929,"value":5813},{"type":2924,"tag":3241,"props":7144,"children":7145},{"style":3407},[7146],{"type":2929,"value":5076},{"type":2924,"tag":3241,"props":7148,"children":7149},{"style":3401},[7150],{"type":2929,"value":5822},{"type":2924,"tag":3241,"props":7152,"children":7153},{"style":3407},[7154],{"type":2929,"value":5086},{"type":2924,"tag":3241,"props":7156,"children":7157},{"style":3384},[7158],{"type":2929,"value":5091},{"type":2924,"tag":3241,"props":7160,"children":7161},{"style":3407},[7162],{"type":2929,"value":3895},{"type":2924,"tag":3241,"props":7164,"children":7165},{"style":3262},[7166],{"type":2929,"value":2865},{"type":2924,"tag":3241,"props":7168,"children":7169},{"style":3407},[7170],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":7172,"children":7173},{"style":3407},[7174],{"type":2929,"value":3730},{"type":2924,"tag":3241,"props":7176,"children":7177},{"class":3243,"line":2892},[7178],{"type":2924,"tag":3241,"props":7179,"children":7180},{"emptyLinePlaceholder":1196},[7181],{"type":2929,"value":3279},{"type":2924,"tag":3241,"props":7183,"children":7184},{"class":3243,"line":3273},[7185],{"type":2924,"tag":3241,"props":7186,"children":7187},{"style":3247},[7188],{"type":2929,"value":7189},"\u002F\u002F RateLimit structure:\n",{"type":2924,"tag":3241,"props":7191,"children":7192},{"class":3243,"line":3282},[7193],{"type":2924,"tag":3241,"props":7194,"children":7195},{"style":3247},[7196],{"type":2929,"value":7197},"\u002F\u002F {\n",{"type":2924,"tag":3241,"props":7199,"children":7200},{"class":3243,"line":2888},[7201,7206],{"type":2924,"tag":3241,"props":7202,"children":7203},{"style":3247},[7204],{"type":2929,"value":7205},"\u002F\u002F   count: number",{"type":2924,"tag":3241,"props":7207,"children":7208},{"style":3247},[7209],{"type":2929,"value":7210},"  \u002F\u002F Number of requests made\n",{"type":2924,"tag":3241,"props":7212,"children":7213},{"class":3243,"line":3307},[7214,7219],{"type":2924,"tag":3241,"props":7215,"children":7216},{"style":3247},[7217],{"type":2929,"value":7218},"\u002F\u002F   time: number",{"type":2924,"tag":3241,"props":7220,"children":7221},{"style":3247},[7222],{"type":2929,"value":7223},"   \u002F\u002F Timestamp of the last request\n",{"type":2924,"tag":3241,"props":7225,"children":7226},{"class":3243,"line":3315},[7227],{"type":2924,"tag":3241,"props":7228,"children":7229},{"style":3247},[7230],{"type":2929,"value":7231},"\u002F\u002F }\n",{"type":2924,"tag":2931,"props":7233,"children":7234},{},[7235],{"type":2924,"tag":3019,"props":7236,"children":7237},{},[7238],{"type":2929,"value":7239},"Usage Example:",{"type":2924,"tag":3231,"props":7241,"children":7243},{"className":5057,"code":7242,"language":5059,"meta":2868,"style":2868},"import type { RateLimit } from \"nuxt-api-shield\";\nimport { useStorage } from \"#imports\";\n\nconst shieldStorage = useStorage(\"shield\");\nconst ipKey = \"ip:192.168.1.1\";\nconst entry = (await shieldStorage.getItem(ipKey)) as RateLimit | null;\n\nif (entry) {\n  console.log(`IP has made ${entry.count} requests`);\n  console.log(`Last request at: ${new Date(entry.time).toISOString()}`);\n}\n",[7244],{"type":2924,"tag":3081,"props":7245,"children":7246},{"__ignoreMap":2868},[7247,7290,7329,7336,7381,7414,7475,7482,7499,7566,7647],{"type":2924,"tag":3241,"props":7248,"children":7249},{"class":3243,"line":2896},[7250,7254,7258,7262,7266,7270,7274,7278,7282,7286],{"type":2924,"tag":3241,"props":7251,"children":7252},{"style":3384},[7253],{"type":2929,"value":5071},{"type":2924,"tag":3241,"props":7255,"children":7256},{"style":3384},[7257],{"type":2929,"value":5813},{"type":2924,"tag":3241,"props":7259,"children":7260},{"style":3407},[7261],{"type":2929,"value":5076},{"type":2924,"tag":3241,"props":7263,"children":7264},{"style":3401},[7265],{"type":2929,"value":5822},{"type":2924,"tag":3241,"props":7267,"children":7268},{"style":3407},[7269],{"type":2929,"value":5086},{"type":2924,"tag":3241,"props":7271,"children":7272},{"style":3384},[7273],{"type":2929,"value":5091},{"type":2924,"tag":3241,"props":7275,"children":7276},{"style":3407},[7277],{"type":2929,"value":3895},{"type":2924,"tag":3241,"props":7279,"children":7280},{"style":3262},[7281],{"type":2929,"value":2865},{"type":2924,"tag":3241,"props":7283,"children":7284},{"style":3407},[7285],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":7287,"children":7288},{"style":3407},[7289],{"type":2929,"value":3730},{"type":2924,"tag":3241,"props":7291,"children":7292},{"class":3243,"line":2892},[7293,7297,7301,7305,7309,7313,7317,7321,7325],{"type":2924,"tag":3241,"props":7294,"children":7295},{"style":3384},[7296],{"type":2929,"value":5071},{"type":2924,"tag":3241,"props":7298,"children":7299},{"style":3407},[7300],{"type":2929,"value":5076},{"type":2924,"tag":3241,"props":7302,"children":7303},{"style":3401},[7304],{"type":2929,"value":5275},{"type":2924,"tag":3241,"props":7306,"children":7307},{"style":3407},[7308],{"type":2929,"value":5086},{"type":2924,"tag":3241,"props":7310,"children":7311},{"style":3384},[7312],{"type":2929,"value":5091},{"type":2924,"tag":3241,"props":7314,"children":7315},{"style":3407},[7316],{"type":2929,"value":3895},{"type":2924,"tag":3241,"props":7318,"children":7319},{"style":3262},[7320],{"type":2929,"value":5100},{"type":2924,"tag":3241,"props":7322,"children":7323},{"style":3407},[7324],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":7326,"children":7327},{"style":3407},[7328],{"type":2929,"value":3730},{"type":2924,"tag":3241,"props":7330,"children":7331},{"class":3243,"line":3273},[7332],{"type":2924,"tag":3241,"props":7333,"children":7334},{"emptyLinePlaceholder":1196},[7335],{"type":2929,"value":3279},{"type":2924,"tag":3241,"props":7337,"children":7338},{"class":3243,"line":3282},[7339,7343,7348,7353,7357,7361,7365,7369,7373,7377],{"type":2924,"tag":3241,"props":7340,"children":7341},{"style":4344},[7342],{"type":2929,"value":5429},{"type":2924,"tag":3241,"props":7344,"children":7345},{"style":3401},[7346],{"type":2929,"value":7347}," shieldStorage ",{"type":2924,"tag":3241,"props":7349,"children":7350},{"style":3407},[7351],{"type":2929,"value":7352},"=",{"type":2924,"tag":3241,"props":7354,"children":7355},{"style":3395},[7356],{"type":2929,"value":5275},{"type":2924,"tag":3241,"props":7358,"children":7359},{"style":3401},[7360],{"type":2929,"value":3404},{"type":2924,"tag":3241,"props":7362,"children":7363},{"style":3407},[7364],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":7366,"children":7367},{"style":3262},[7368],{"type":2929,"value":4315},{"type":2924,"tag":3241,"props":7370,"children":7371},{"style":3407},[7372],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":7374,"children":7375},{"style":3401},[7376],{"type":2929,"value":3725},{"type":2924,"tag":3241,"props":7378,"children":7379},{"style":3407},[7380],{"type":2929,"value":3730},{"type":2924,"tag":3241,"props":7382,"children":7383},{"class":3243,"line":2888},[7384,7388,7393,7397,7401,7406,7410],{"type":2924,"tag":3241,"props":7385,"children":7386},{"style":4344},[7387],{"type":2929,"value":5429},{"type":2924,"tag":3241,"props":7389,"children":7390},{"style":3401},[7391],{"type":2929,"value":7392}," ipKey ",{"type":2924,"tag":3241,"props":7394,"children":7395},{"style":3407},[7396],{"type":2929,"value":7352},{"type":2924,"tag":3241,"props":7398,"children":7399},{"style":3407},[7400],{"type":2929,"value":3895},{"type":2924,"tag":3241,"props":7402,"children":7403},{"style":3262},[7404],{"type":2929,"value":7405},"ip:192.168.1.1",{"type":2924,"tag":3241,"props":7407,"children":7408},{"style":3407},[7409],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":7411,"children":7412},{"style":3407},[7413],{"type":2929,"value":3730},{"type":2924,"tag":3241,"props":7415,"children":7416},{"class":3243,"line":3307},[7417,7421,7426,7430,7434,7438,7442,7446,7450,7455,7459,7463,7467,7471],{"type":2924,"tag":3241,"props":7418,"children":7419},{"style":4344},[7420],{"type":2929,"value":5429},{"type":2924,"tag":3241,"props":7422,"children":7423},{"style":3401},[7424],{"type":2929,"value":7425}," entry ",{"type":2924,"tag":3241,"props":7427,"children":7428},{"style":3407},[7429],{"type":2929,"value":7352},{"type":2924,"tag":3241,"props":7431,"children":7432},{"style":3401},[7433],{"type":2929,"value":5424},{"type":2924,"tag":3241,"props":7435,"children":7436},{"style":3384},[7437],{"type":2929,"value":6556},{"type":2924,"tag":3241,"props":7439,"children":7440},{"style":3401},[7441],{"type":2929,"value":5265},{"type":2924,"tag":3241,"props":7443,"children":7444},{"style":3407},[7445],{"type":2929,"value":4286},{"type":2924,"tag":3241,"props":7447,"children":7448},{"style":3395},[7449],{"type":2929,"value":5486},{"type":2924,"tag":3241,"props":7451,"children":7452},{"style":3401},[7453],{"type":2929,"value":7454},"(ipKey)) ",{"type":2924,"tag":3241,"props":7456,"children":7457},{"style":3384},[7458],{"type":2929,"value":6585},{"type":2924,"tag":3241,"props":7460,"children":7461},{"style":3256},[7462],{"type":2929,"value":5822},{"type":2924,"tag":3241,"props":7464,"children":7465},{"style":3407},[7466],{"type":2929,"value":6594},{"type":2924,"tag":3241,"props":7468,"children":7469},{"style":3256},[7470],{"type":2929,"value":6599},{"type":2924,"tag":3241,"props":7472,"children":7473},{"style":3407},[7474],{"type":2929,"value":3730},{"type":2924,"tag":3241,"props":7476,"children":7477},{"class":3243,"line":3315},[7478],{"type":2924,"tag":3241,"props":7479,"children":7480},{"emptyLinePlaceholder":1196},[7481],{"type":2929,"value":3279},{"type":2924,"tag":3241,"props":7483,"children":7484},{"class":3243,"line":3324},[7485,7490,7495],{"type":2924,"tag":3241,"props":7486,"children":7487},{"style":3384},[7488],{"type":2929,"value":7489},"if",{"type":2924,"tag":3241,"props":7491,"children":7492},{"style":3401},[7493],{"type":2929,"value":7494}," (entry) ",{"type":2924,"tag":3241,"props":7496,"children":7497},{"style":3407},[7498],{"type":2929,"value":3410},{"type":2924,"tag":3241,"props":7500,"children":7501},{"class":3243,"line":2913},[7502,7507,7511,7515,7519,7523,7528,7532,7536,7540,7545,7549,7554,7558,7562],{"type":2924,"tag":3241,"props":7503,"children":7504},{"style":3401},[7505],{"type":2929,"value":7506},"  console",{"type":2924,"tag":3241,"props":7508,"children":7509},{"style":3407},[7510],{"type":2929,"value":4286},{"type":2924,"tag":3241,"props":7512,"children":7513},{"style":3395},[7514],{"type":2929,"value":5619},{"type":2924,"tag":3241,"props":7516,"children":7517},{"style":3416},[7518],{"type":2929,"value":3404},{"type":2924,"tag":3241,"props":7520,"children":7521},{"style":3407},[7522],{"type":2929,"value":5628},{"type":2924,"tag":3241,"props":7524,"children":7525},{"style":3262},[7526],{"type":2929,"value":7527},"IP has made ",{"type":2924,"tag":3241,"props":7529,"children":7530},{"style":3407},[7531],{"type":2929,"value":5638},{"type":2924,"tag":3241,"props":7533,"children":7534},{"style":3401},[7535],{"type":2929,"value":6637},{"type":2924,"tag":3241,"props":7537,"children":7538},{"style":3407},[7539],{"type":2929,"value":4286},{"type":2924,"tag":3241,"props":7541,"children":7542},{"style":3401},[7543],{"type":2929,"value":7544},"count",{"type":2924,"tag":3241,"props":7546,"children":7547},{"style":3407},[7548],{"type":2929,"value":3720},{"type":2924,"tag":3241,"props":7550,"children":7551},{"style":3262},[7552],{"type":2929,"value":7553}," requests",{"type":2924,"tag":3241,"props":7555,"children":7556},{"style":3407},[7557],{"type":2929,"value":5628},{"type":2924,"tag":3241,"props":7559,"children":7560},{"style":3416},[7561],{"type":2929,"value":3725},{"type":2924,"tag":3241,"props":7563,"children":7564},{"style":3407},[7565],{"type":2929,"value":3730},{"type":2924,"tag":3241,"props":7567,"children":7568},{"class":3243,"line":3520},[7569,7573,7577,7581,7585,7589,7594,7598,7603,7607,7612,7616,7621,7625,7630,7634,7639,7643],{"type":2924,"tag":3241,"props":7570,"children":7571},{"style":3401},[7572],{"type":2929,"value":7506},{"type":2924,"tag":3241,"props":7574,"children":7575},{"style":3407},[7576],{"type":2929,"value":4286},{"type":2924,"tag":3241,"props":7578,"children":7579},{"style":3395},[7580],{"type":2929,"value":5619},{"type":2924,"tag":3241,"props":7582,"children":7583},{"style":3416},[7584],{"type":2929,"value":3404},{"type":2924,"tag":3241,"props":7586,"children":7587},{"style":3407},[7588],{"type":2929,"value":5628},{"type":2924,"tag":3241,"props":7590,"children":7591},{"style":3262},[7592],{"type":2929,"value":7593},"Last request at: ",{"type":2924,"tag":3241,"props":7595,"children":7596},{"style":3407},[7597],{"type":2929,"value":5638},{"type":2924,"tag":3241,"props":7599,"children":7600},{"style":3407},[7601],{"type":2929,"value":7602},"new",{"type":2924,"tag":3241,"props":7604,"children":7605},{"style":3395},[7606],{"type":2929,"value":6446},{"type":2924,"tag":3241,"props":7608,"children":7609},{"style":3401},[7610],{"type":2929,"value":7611},"(entry",{"type":2924,"tag":3241,"props":7613,"children":7614},{"style":3407},[7615],{"type":2929,"value":4286},{"type":2924,"tag":3241,"props":7617,"children":7618},{"style":3401},[7619],{"type":2929,"value":7620},"time)",{"type":2924,"tag":3241,"props":7622,"children":7623},{"style":3407},[7624],{"type":2929,"value":4286},{"type":2924,"tag":3241,"props":7626,"children":7627},{"style":3395},[7628],{"type":2929,"value":7629},"toISOString",{"type":2924,"tag":3241,"props":7631,"children":7632},{"style":3401},[7633],{"type":2929,"value":5248},{"type":2924,"tag":3241,"props":7635,"children":7636},{"style":3407},[7637],{"type":2929,"value":7638},"}`",{"type":2924,"tag":3241,"props":7640,"children":7641},{"style":3416},[7642],{"type":2929,"value":3725},{"type":2924,"tag":3241,"props":7644,"children":7645},{"style":3407},[7646],{"type":2929,"value":3730},{"type":2924,"tag":3241,"props":7648,"children":7649},{"class":3243,"line":3529},[7650],{"type":2924,"tag":3241,"props":7651,"children":7652},{"style":3407},[7653],{"type":2929,"value":4138},{"type":2924,"tag":3217,"props":7655,"children":7657},{"id":7656},"moduleoptions-type",[7658,7664],{"type":2924,"tag":3081,"props":7659,"children":7661},{"className":7660},[],[7662],{"type":2929,"value":7663},"ModuleOptions",{"type":2929,"value":7113},{"type":2924,"tag":2931,"props":7666,"children":7667},{},[7668],{"type":2929,"value":7669},"You can also import the module configuration type:",{"type":2924,"tag":3231,"props":7671,"children":7673},{"className":5057,"code":7672,"language":5059,"meta":2868,"style":2868},"import type { ModuleOptions } from \"nuxt-api-shield\";\n",[7674],{"type":2924,"tag":3081,"props":7675,"children":7676},{"__ignoreMap":2868},[7677],{"type":2924,"tag":3241,"props":7678,"children":7679},{"class":3243,"line":2896},[7680,7684,7688,7692,7697,7701,7705,7709,7713,7717],{"type":2924,"tag":3241,"props":7681,"children":7682},{"style":3384},[7683],{"type":2929,"value":5071},{"type":2924,"tag":3241,"props":7685,"children":7686},{"style":3384},[7687],{"type":2929,"value":5813},{"type":2924,"tag":3241,"props":7689,"children":7690},{"style":3407},[7691],{"type":2929,"value":5076},{"type":2924,"tag":3241,"props":7693,"children":7694},{"style":3401},[7695],{"type":2929,"value":7696}," ModuleOptions",{"type":2924,"tag":3241,"props":7698,"children":7699},{"style":3407},[7700],{"type":2929,"value":5086},{"type":2924,"tag":3241,"props":7702,"children":7703},{"style":3384},[7704],{"type":2929,"value":5091},{"type":2924,"tag":3241,"props":7706,"children":7707},{"style":3407},[7708],{"type":2929,"value":3895},{"type":2924,"tag":3241,"props":7710,"children":7711},{"style":3262},[7712],{"type":2929,"value":2865},{"type":2924,"tag":3241,"props":7714,"children":7715},{"style":3407},[7716],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":7718,"children":7719},{"style":3407},[7720],{"type":2929,"value":3730},{"type":2924,"tag":3007,"props":7722,"children":7724},{"id":7723},"per-route-rate-limiting",[7725],{"type":2929,"value":7726},"Per-Route Rate Limiting",{"type":2924,"tag":2931,"props":7728,"children":7729},{},[7730,7735,7737,7742],{"type":2924,"tag":3081,"props":7731,"children":7733},{"className":7732},[],[7734],{"type":2929,"value":2865},{"type":2929,"value":7736}," supports ",{"type":2924,"tag":3019,"props":7738,"children":7739},{},[7740],{"type":2929,"value":7741},"per-route rate limiting",{"type":2929,"value":7743},", allowing you to define custom limits for specific API endpoints while keeping a global default configuration for all other routes.",{"type":2924,"tag":2931,"props":7745,"children":7746},{},[7747,7749,7755,7757,7763,7765,7771],{"type":2929,"value":7748},"This is useful when certain endpoints (such as ",{"type":2924,"tag":3081,"props":7750,"children":7752},{"className":7751},[],[7753],{"type":2929,"value":7754},"\u002Fapi\u002Flogin",{"type":2929,"value":7756},", ",{"type":2924,"tag":3081,"props":7758,"children":7760},{"className":7759},[],[7761],{"type":2929,"value":7762},"\u002Fapi\u002Fauth",{"type":2929,"value":7764},", or ",{"type":2924,"tag":3081,"props":7766,"children":7768},{"className":7767},[],[7769],{"type":2929,"value":7770},"\u002Fapi\u002Fpayment",{"type":2929,"value":7772},") require stricter protection.",{"type":2924,"tag":7774,"props":7775,"children":7776},"hr",{},[],{"type":2924,"tag":3217,"props":7778,"children":7780},{"id":7779},"configuration-example",[7781],{"type":2929,"value":7782},"Configuration Example",{"type":2924,"tag":2931,"props":7784,"children":7785},{},[7786,7787,7793],{"type":2929,"value":4157},{"type":2924,"tag":3081,"props":7788,"children":7790},{"className":7789},[],[7791],{"type":2929,"value":7792},"routes",{"type":2929,"value":7794}," option accepts a mixed array of strings (exact matches) and objects (custom limits or patterns).",{"type":2924,"tag":3231,"props":7796,"children":7798},{"className":5057,"code":7797,"language":5059,"meta":2868,"style":2868},"export default defineNuxtConfig({\n  modules: [\"nuxt-api-shield\"],\n\n  nuxtApiShield: {\n    limit: {\n      max: 12,\n      duration: 108,\n      ban: 3600,\n    },\n\n    routes: [\n      \u002F\u002F 1. String: uses the global default limit (exact match)\n      \"\u002Fapi\u002Fexample\",\n\n      \u002F\u002F 2. Object: custom rate limit for a specific route (exact match)\n      {\n        path: \"\u002Fapi\u002Fexample-per-route\",\n        max: 5,\n        duration: 10,\n        \u002F\u002F ⚠️ \"ban\" always uses the global value\n      },\n\n      \u002F\u002F 3. Object: Wildcard pattern\n      {\n        path: \"\u002Fapi\u002Fusers\u002F*\u002Fprofile\",\n        pattern: true,\n        max: 10,\n        duration: 60\n      }\n    ],\n  },\n});\n",[7799],{"type":2924,"tag":3081,"props":7800,"children":7801},{"__ignoreMap":2868},[7802,7825,7860,7867,7882,7898,7918,7938,7958,7965,7972,7989,7997,8017,8024,8032,8040,8069,8090,8111,8119,8127,8134,8142,8149,8177,8197,8216,8232,8239,8251,8258],{"type":2924,"tag":3241,"props":7803,"children":7804},{"class":3243,"line":2896},[7805,7809,7813,7817,7821],{"type":2924,"tag":3241,"props":7806,"children":7807},{"style":3384},[7808],{"type":2929,"value":3387},{"type":2924,"tag":3241,"props":7810,"children":7811},{"style":3384},[7812],{"type":2929,"value":3392},{"type":2924,"tag":3241,"props":7814,"children":7815},{"style":3395},[7816],{"type":2929,"value":3398},{"type":2924,"tag":3241,"props":7818,"children":7819},{"style":3401},[7820],{"type":2929,"value":3404},{"type":2924,"tag":3241,"props":7822,"children":7823},{"style":3407},[7824],{"type":2929,"value":3410},{"type":2924,"tag":3241,"props":7826,"children":7827},{"class":3243,"line":2892},[7828,7832,7836,7840,7844,7848,7852,7856],{"type":2924,"tag":3241,"props":7829,"children":7830},{"style":3416},[7831],{"type":2929,"value":3419},{"type":2924,"tag":3241,"props":7833,"children":7834},{"style":3407},[7835],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":7837,"children":7838},{"style":3401},[7839],{"type":2929,"value":3429},{"type":2924,"tag":3241,"props":7841,"children":7842},{"style":3407},[7843],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":7845,"children":7846},{"style":3262},[7847],{"type":2929,"value":2865},{"type":2924,"tag":3241,"props":7849,"children":7850},{"style":3407},[7851],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":7853,"children":7854},{"style":3401},[7855],{"type":2929,"value":3447},{"type":2924,"tag":3241,"props":7857,"children":7858},{"style":3407},[7859],{"type":2929,"value":3452},{"type":2924,"tag":3241,"props":7861,"children":7862},{"class":3243,"line":3273},[7863],{"type":2924,"tag":3241,"props":7864,"children":7865},{"emptyLinePlaceholder":1196},[7866],{"type":2929,"value":3279},{"type":2924,"tag":3241,"props":7868,"children":7869},{"class":3243,"line":3282},[7870,7874,7878],{"type":2924,"tag":3241,"props":7871,"children":7872},{"style":3416},[7873],{"type":2929,"value":3460},{"type":2924,"tag":3241,"props":7875,"children":7876},{"style":3407},[7877],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":7879,"children":7880},{"style":3407},[7881],{"type":2929,"value":3469},{"type":2924,"tag":3241,"props":7883,"children":7884},{"class":3243,"line":2888},[7885,7890,7894],{"type":2924,"tag":3241,"props":7886,"children":7887},{"style":3416},[7888],{"type":2929,"value":7889},"    limit",{"type":2924,"tag":3241,"props":7891,"children":7892},{"style":3407},[7893],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":7895,"children":7896},{"style":3407},[7897],{"type":2929,"value":3469},{"type":2924,"tag":3241,"props":7899,"children":7900},{"class":3243,"line":3307},[7901,7906,7910,7914],{"type":2924,"tag":3241,"props":7902,"children":7903},{"style":3416},[7904],{"type":2929,"value":7905},"      max",{"type":2924,"tag":3241,"props":7907,"children":7908},{"style":3407},[7909],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":7911,"children":7912},{"style":3627},[7913],{"type":2929,"value":3795},{"type":2924,"tag":3241,"props":7915,"children":7916},{"style":3407},[7917],{"type":2929,"value":3452},{"type":2924,"tag":3241,"props":7919,"children":7920},{"class":3243,"line":3315},[7921,7926,7930,7934],{"type":2924,"tag":3241,"props":7922,"children":7923},{"style":3416},[7924],{"type":2929,"value":7925},"      duration",{"type":2924,"tag":3241,"props":7927,"children":7928},{"style":3407},[7929],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":7931,"children":7932},{"style":3627},[7933],{"type":2929,"value":3816},{"type":2924,"tag":3241,"props":7935,"children":7936},{"style":3407},[7937],{"type":2929,"value":3452},{"type":2924,"tag":3241,"props":7939,"children":7940},{"class":3243,"line":3324},[7941,7946,7950,7954],{"type":2924,"tag":3241,"props":7942,"children":7943},{"style":3416},[7944],{"type":2929,"value":7945},"      ban",{"type":2924,"tag":3241,"props":7947,"children":7948},{"style":3407},[7949],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":7951,"children":7952},{"style":3627},[7953],{"type":2929,"value":3842},{"type":2924,"tag":3241,"props":7955,"children":7956},{"style":3407},[7957],{"type":2929,"value":3452},{"type":2924,"tag":3241,"props":7959,"children":7960},{"class":3243,"line":2913},[7961],{"type":2924,"tag":3241,"props":7962,"children":7963},{"style":3407},[7964],{"type":2929,"value":3517},{"type":2924,"tag":3241,"props":7966,"children":7967},{"class":3243,"line":3520},[7968],{"type":2924,"tag":3241,"props":7969,"children":7970},{"emptyLinePlaceholder":1196},[7971],{"type":2929,"value":3279},{"type":2924,"tag":3241,"props":7973,"children":7974},{"class":3243,"line":3529},[7975,7980,7984],{"type":2924,"tag":3241,"props":7976,"children":7977},{"style":3416},[7978],{"type":2929,"value":7979},"    routes",{"type":2924,"tag":3241,"props":7981,"children":7982},{"style":3407},[7983],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":7985,"children":7986},{"style":3401},[7987],{"type":2929,"value":7988}," [\n",{"type":2924,"tag":3241,"props":7990,"children":7991},{"class":3243,"line":3538},[7992],{"type":2924,"tag":3241,"props":7993,"children":7994},{"style":3247},[7995],{"type":2929,"value":7996},"      \u002F\u002F 1. String: uses the global default limit (exact match)\n",{"type":2924,"tag":3241,"props":7998,"children":7999},{"class":3243,"line":3547},[8000,8004,8009,8013],{"type":2924,"tag":3241,"props":8001,"children":8002},{"style":3407},[8003],{"type":2929,"value":4392},{"type":2924,"tag":3241,"props":8005,"children":8006},{"style":3262},[8007],{"type":2929,"value":8008},"\u002Fapi\u002Fexample",{"type":2924,"tag":3241,"props":8010,"children":8011},{"style":3407},[8012],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":8014,"children":8015},{"style":3407},[8016],{"type":2929,"value":3452},{"type":2924,"tag":3241,"props":8018,"children":8019},{"class":3243,"line":3556},[8020],{"type":2924,"tag":3241,"props":8021,"children":8022},{"emptyLinePlaceholder":1196},[8023],{"type":2929,"value":3279},{"type":2924,"tag":3241,"props":8025,"children":8026},{"class":3243,"line":3565},[8027],{"type":2924,"tag":3241,"props":8028,"children":8029},{"style":3247},[8030],{"type":2929,"value":8031},"      \u002F\u002F 2. Object: custom rate limit for a specific route (exact match)\n",{"type":2924,"tag":3241,"props":8033,"children":8034},{"class":3243,"line":3574},[8035],{"type":2924,"tag":3241,"props":8036,"children":8037},{"style":3407},[8038],{"type":2929,"value":8039},"      {\n",{"type":2924,"tag":3241,"props":8041,"children":8042},{"class":3243,"line":3582},[8043,8048,8052,8056,8061,8065],{"type":2924,"tag":3241,"props":8044,"children":8045},{"style":3416},[8046],{"type":2929,"value":8047},"        path",{"type":2924,"tag":3241,"props":8049,"children":8050},{"style":3407},[8051],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":8053,"children":8054},{"style":3407},[8055],{"type":2929,"value":3895},{"type":2924,"tag":3241,"props":8057,"children":8058},{"style":3262},[8059],{"type":2929,"value":8060},"\u002Fapi\u002Fexample-per-route",{"type":2924,"tag":3241,"props":8062,"children":8063},{"style":3407},[8064],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":8066,"children":8067},{"style":3407},[8068],{"type":2929,"value":3452},{"type":2924,"tag":3241,"props":8070,"children":8071},{"class":3243,"line":3591},[8072,8077,8081,8086],{"type":2924,"tag":3241,"props":8073,"children":8074},{"style":3416},[8075],{"type":2929,"value":8076},"        max",{"type":2924,"tag":3241,"props":8078,"children":8079},{"style":3407},[8080],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":8082,"children":8083},{"style":3627},[8084],{"type":2929,"value":8085}," 5",{"type":2924,"tag":3241,"props":8087,"children":8088},{"style":3407},[8089],{"type":2929,"value":3452},{"type":2924,"tag":3241,"props":8091,"children":8092},{"class":3243,"line":3600},[8093,8098,8102,8107],{"type":2924,"tag":3241,"props":8094,"children":8095},{"style":3416},[8096],{"type":2929,"value":8097},"        duration",{"type":2924,"tag":3241,"props":8099,"children":8100},{"style":3407},[8101],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":8103,"children":8104},{"style":3627},[8105],{"type":2929,"value":8106}," 10",{"type":2924,"tag":3241,"props":8108,"children":8109},{"style":3407},[8110],{"type":2929,"value":3452},{"type":2924,"tag":3241,"props":8112,"children":8113},{"class":3243,"line":3614},[8114],{"type":2924,"tag":3241,"props":8115,"children":8116},{"style":3247},[8117],{"type":2929,"value":8118},"        \u002F\u002F ⚠️ \"ban\" always uses the global value\n",{"type":2924,"tag":3241,"props":8120,"children":8121},{"class":3243,"line":3643},[8122],{"type":2924,"tag":3241,"props":8123,"children":8124},{"style":3407},[8125],{"type":2929,"value":8126},"      },\n",{"type":2924,"tag":3241,"props":8128,"children":8129},{"class":3243,"line":3660},[8130],{"type":2924,"tag":3241,"props":8131,"children":8132},{"emptyLinePlaceholder":1196},[8133],{"type":2929,"value":3279},{"type":2924,"tag":3241,"props":8135,"children":8136},{"class":3243,"line":3669},[8137],{"type":2924,"tag":3241,"props":8138,"children":8139},{"style":3247},[8140],{"type":2929,"value":8141},"      \u002F\u002F 3. Object: Wildcard pattern\n",{"type":2924,"tag":3241,"props":8143,"children":8144},{"class":3243,"line":3697},[8145],{"type":2924,"tag":3241,"props":8146,"children":8147},{"style":3407},[8148],{"type":2929,"value":8039},{"type":2924,"tag":3241,"props":8150,"children":8151},{"class":3243,"line":3705},[8152,8156,8160,8164,8169,8173],{"type":2924,"tag":3241,"props":8153,"children":8154},{"style":3416},[8155],{"type":2929,"value":8047},{"type":2924,"tag":3241,"props":8157,"children":8158},{"style":3407},[8159],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":8161,"children":8162},{"style":3407},[8163],{"type":2929,"value":3895},{"type":2924,"tag":3241,"props":8165,"children":8166},{"style":3262},[8167],{"type":2929,"value":8168},"\u002Fapi\u002Fusers\u002F*\u002Fprofile",{"type":2924,"tag":3241,"props":8170,"children":8171},{"style":3407},[8172],{"type":2929,"value":3434},{"type":2924,"tag":3241,"props":8174,"children":8175},{"style":3407},[8176],{"type":2929,"value":3452},{"type":2924,"tag":3241,"props":8178,"children":8179},{"class":3243,"line":3714},[8180,8185,8189,8193],{"type":2924,"tag":3241,"props":8181,"children":8182},{"style":3416},[8183],{"type":2929,"value":8184},"        pattern",{"type":2924,"tag":3241,"props":8186,"children":8187},{"style":3407},[8188],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":8190,"children":8191},{"style":3682},[8192],{"type":2929,"value":3685},{"type":2924,"tag":3241,"props":8194,"children":8195},{"style":3407},[8196],{"type":2929,"value":3452},{"type":2924,"tag":3241,"props":8198,"children":8199},{"class":3243,"line":6489},[8200,8204,8208,8212],{"type":2924,"tag":3241,"props":8201,"children":8202},{"style":3416},[8203],{"type":2929,"value":8076},{"type":2924,"tag":3241,"props":8205,"children":8206},{"style":3407},[8207],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":8209,"children":8210},{"style":3627},[8211],{"type":2929,"value":8106},{"type":2924,"tag":3241,"props":8213,"children":8214},{"style":3407},[8215],{"type":2929,"value":3452},{"type":2924,"tag":3241,"props":8217,"children":8218},{"class":3243,"line":6497},[8219,8223,8227],{"type":2924,"tag":3241,"props":8220,"children":8221},{"style":3416},[8222],{"type":2929,"value":8097},{"type":2924,"tag":3241,"props":8224,"children":8225},{"style":3407},[8226],{"type":2929,"value":3424},{"type":2924,"tag":3241,"props":8228,"children":8229},{"style":3627},[8230],{"type":2929,"value":8231}," 60\n",{"type":2924,"tag":3241,"props":8233,"children":8234},{"class":3243,"line":6533},[8235],{"type":2924,"tag":3241,"props":8236,"children":8237},{"style":3407},[8238],{"type":2929,"value":4459},{"type":2924,"tag":3241,"props":8240,"children":8241},{"class":3243,"line":6606},[8242,8247],{"type":2924,"tag":3241,"props":8243,"children":8244},{"style":3401},[8245],{"type":2929,"value":8246},"    ]",{"type":2924,"tag":3241,"props":8248,"children":8249},{"style":3407},[8250],{"type":2929,"value":3452},{"type":2924,"tag":3241,"props":8252,"children":8253},{"class":3243,"line":6614},[8254],{"type":2924,"tag":3241,"props":8255,"children":8256},{"style":3407},[8257],{"type":2929,"value":3711},{"type":2924,"tag":3241,"props":8259,"children":8260},{"class":3243,"line":6623},[8261,8265,8269],{"type":2924,"tag":3241,"props":8262,"children":8263},{"style":3407},[8264],{"type":2929,"value":3720},{"type":2924,"tag":3241,"props":8266,"children":8267},{"style":3401},[8268],{"type":2929,"value":3725},{"type":2924,"tag":3241,"props":8270,"children":8271},{"style":3407},[8272],{"type":2929,"value":3730},{"type":2924,"tag":3217,"props":8274,"children":8276},{"id":8275},"wildcard-route-support",[8277],{"type":2929,"value":8278},"Wildcard Route Support",{"type":2924,"tag":2931,"props":8280,"children":8281},{},[8282,8284,8290],{"type":2929,"value":8283},"Wildcard patterns allow you to apply the same limits to groups of related API endpoints. Enable them by setting ",{"type":2924,"tag":3081,"props":8285,"children":8287},{"className":8286},[],[8288],{"type":2929,"value":8289},"pattern: true",{"type":2929,"value":8291}," in your route configuration.",{"type":2924,"tag":5023,"props":8293,"children":8295},{"id":8294},"wildcard-pattern-syntax",[8296],{"type":2929,"value":8297},"Wildcard Pattern Syntax",{"type":2924,"tag":2981,"props":8299,"children":8300},{},[8301,8345],{"type":2924,"tag":2985,"props":8302,"children":8303},{},[8304,8316,8318],{"type":2924,"tag":3019,"props":8305,"children":8306},{},[8307,8309,8315],{"type":2929,"value":8308},"Single-Segment Wildcard (",{"type":2924,"tag":3081,"props":8310,"children":8312},{"className":8311},[],[8313],{"type":2929,"value":8314},"*",{"type":2929,"value":3725},{"type":2929,"value":8317},": Matches exactly one path segment.\n",{"type":2924,"tag":2981,"props":8319,"children":8320},{},[8321],{"type":2924,"tag":2985,"props":8322,"children":8323},{},[8324,8329,8331,8337,8338,8344],{"type":2924,"tag":3081,"props":8325,"children":8327},{"className":8326},[],[8328],{"type":2929,"value":8168},{"type":2929,"value":8330}," matches ",{"type":2924,"tag":3081,"props":8332,"children":8334},{"className":8333},[],[8335],{"type":2929,"value":8336},"\u002Fapi\u002Fusers\u002F123\u002Fprofile",{"type":2929,"value":7083},{"type":2924,"tag":3081,"props":8339,"children":8341},{"className":8340},[],[8342],{"type":2929,"value":8343},"\u002Fapi\u002Fusers\u002Fadmin\u002Fprofile",{"type":2929,"value":4286},{"type":2924,"tag":2985,"props":8346,"children":8347},{},[8348,8360,8362],{"type":2924,"tag":3019,"props":8349,"children":8350},{},[8351,8353,8359],{"type":2929,"value":8352},"Multi-Segment Wildcard (",{"type":2924,"tag":3081,"props":8354,"children":8356},{"className":8355},[],[8357],{"type":2929,"value":8358},"**",{"type":2929,"value":3725},{"type":2929,"value":8361},": Matches zero or more path segments.\n",{"type":2924,"tag":2981,"props":8363,"children":8364},{},[8365],{"type":2924,"tag":2985,"props":8366,"children":8367},{},[8368,8374,8375,8381,8382,8388],{"type":2924,"tag":3081,"props":8369,"children":8371},{"className":8370},[],[8372],{"type":2929,"value":8373},"\u002Fapi\u002Freports\u002F**\u002Fsummary",{"type":2929,"value":8330},{"type":2924,"tag":3081,"props":8376,"children":8378},{"className":8377},[],[8379],{"type":2929,"value":8380},"\u002Fapi\u002Freports\u002Fmonthly\u002F2023\u002Fsummary",{"type":2929,"value":7083},{"type":2924,"tag":3081,"props":8383,"children":8385},{"className":8384},[],[8386],{"type":2929,"value":8387},"\u002Fapi\u002Freports\u002Fsummary",{"type":2929,"value":4286},{"type":2924,"tag":5023,"props":8390,"children":8392},{"id":8391},"pattern-precedence",[8393],{"type":2929,"value":8394},"Pattern Precedence",{"type":2924,"tag":8396,"props":8397,"children":8398},"ol",{},[8399,8409,8419],{"type":2924,"tag":2985,"props":8400,"children":8401},{},[8402,8407],{"type":2924,"tag":3019,"props":8403,"children":8404},{},[8405],{"type":2929,"value":8406},"Exact matches",{"type":2929,"value":8408}," always take precedence over wildcard patterns.",{"type":2924,"tag":2985,"props":8410,"children":8411},{},[8412,8417],{"type":2924,"tag":3019,"props":8413,"children":8414},{},[8415],{"type":2929,"value":8416},"More specific wildcards",{"type":2929,"value":8418}," take precedence over less specific ones.",{"type":2924,"tag":2985,"props":8420,"children":8421},{},[8422],{"type":2929,"value":8423},"When multiple wildcard patterns match, the most specific one is used.",{"type":2924,"tag":5023,"props":8425,"children":8427},{"id":8426},"important-notes",[8428],{"type":2929,"value":8429},"Important Notes",{"type":2924,"tag":2981,"props":8431,"children":8432},{},[8433,8443],{"type":2924,"tag":2985,"props":8434,"children":8435},{},[8436,8441],{"type":2924,"tag":3019,"props":8437,"children":8438},{},[8439],{"type":2929,"value":8440},"Shared Rate Limits:",{"type":2929,"value":8442}," All requests that match the same wildcard pattern share the same rate limit counter.",{"type":2924,"tag":2985,"props":8444,"children":8445},{},[8446,8451,8453,8459,8460,8466],{"type":2924,"tag":3019,"props":8447,"children":8448},{},[8449],{"type":2929,"value":8450},"Security:",{"type":2929,"value":8452}," Broad or dangerous patterns like ",{"type":2924,"tag":3081,"props":8454,"children":8456},{"className":8455},[],[8457],{"type":2929,"value":8458},"\u002F**",{"type":2929,"value":7083},{"type":2924,"tag":3081,"props":8461,"children":8463},{"className":8462},[],[8464],{"type":2929,"value":8465},"\u002F*",{"type":2929,"value":8467}," are automatically rejected to prevent accidental global blocking.",{"type":2924,"tag":3007,"props":8469,"children":8471},{"id":8470},"important-considerations",[8472],{"type":2929,"value":8473},"Important Considerations",{"type":2924,"tag":3217,"props":8475,"children":8477},{"id":8476},"data-privacy-ip-address-storage",[8478],{"type":2929,"value":8479},"Data Privacy (IP Address Storage)",{"type":2924,"tag":2931,"props":8481,"children":8482},{},[8483,8488],{"type":2924,"tag":3081,"props":8484,"children":8486},{"className":8485},[],[8487],{"type":2929,"value":2865},{"type":2929,"value":8489}," functions by tracking IP addresses to monitor request rates and apply bans. This means IP addresses, which can be considered Personally Identifiable Information (PII) under regulations like GDPR, are stored by the module.",{"type":2924,"tag":2981,"props":8491,"children":8492},{},[8493,8534,8544],{"type":2924,"tag":2985,"props":8494,"children":8495},{},[8496,8501],{"type":2924,"tag":3019,"props":8497,"children":8498},{},[8499],{"type":2929,"value":8500},"Data Stored:",{"type":2924,"tag":2981,"props":8502,"children":8503},{},[8504,8523],{"type":2924,"tag":2985,"props":8505,"children":8506},{},[8507,8513,8515,8521],{"type":2924,"tag":3081,"props":8508,"children":8510},{"className":8509},[],[8511],{"type":2929,"value":8512},"ip:\u003CIP_ADDRESS>",{"type":2929,"value":8514},": Stores ",{"type":2924,"tag":3081,"props":8516,"children":8518},{"className":8517},[],[8519],{"type":2929,"value":8520},"{ count: number, time: number }",{"type":2929,"value":8522}," for tracking request rates.",{"type":2924,"tag":2985,"props":8524,"children":8525},{},[8526,8532],{"type":2924,"tag":3081,"props":8527,"children":8529},{"className":8528},[],[8530],{"type":2929,"value":8531},"ban:\u003CIP_ADDRESS>",{"type":2929,"value":8533},": Stores a timestamp indicating when a ban on an IP address expires.",{"type":2924,"tag":2985,"props":8535,"children":8536},{},[8537,8542],{"type":2924,"tag":3019,"props":8538,"children":8539},{},[8540],{"type":2929,"value":8541},"Compliance:",{"type":2929,"value":8543}," Ensure your usage complies with any applicable data privacy regulations. This may involve updating your privacy policy to inform users about this data processing.",{"type":2924,"tag":2985,"props":8545,"children":8546},{},[8547,8552],{"type":2924,"tag":3019,"props":8548,"children":8549},{},[8550],{"type":2929,"value":8551},"Data Retention:",{"type":2924,"tag":2981,"props":8553,"children":8554},{},[8555,8567],{"type":2924,"tag":2985,"props":8556,"children":8557},{},[8558,8560,8565],{"type":2929,"value":8559},"Ban entries are cleaned up by the ",{"type":2924,"tag":3081,"props":8561,"children":8563},{"className":8562},[],[8564],{"type":2929,"value":3178},{"type":2929,"value":8566}," task after expiry.",{"type":2924,"tag":2985,"props":8568,"children":8569},{},[8570,8572,8577,8579,8584],{"type":2929,"value":8571},"IP tracking entries are cleaned up by the ",{"type":2924,"tag":3081,"props":8573,"children":8575},{"className":8574},[],[8576],{"type":2929,"value":3186},{"type":2929,"value":8578}," task based on the ",{"type":2924,"tag":3081,"props":8580,"children":8582},{"className":8581},[],[8583],{"type":2929,"value":4747},{"type":2929,"value":8585}," setting.",{"type":2924,"tag":3217,"props":8587,"children":8589},{"id":8588},"storage-security",[8590],{"type":2929,"value":8591},"Storage Security",{"type":2924,"tag":2981,"props":8593,"children":8594},{},[8595,8673],{"type":2924,"tag":2985,"props":8596,"children":8597},{},[8598,8611,8613,8619,8621,8626,8627,8633,8635,8640,8642,8648,8650],{"type":2924,"tag":3019,"props":8599,"children":8600},{},[8601,8603,8609],{"type":2929,"value":8602},"Filesystem Driver (",{"type":2924,"tag":3081,"props":8604,"children":8606},{"className":8605},[],[8607],{"type":2929,"value":8608},"driver: 'fs'",{"type":2929,"value":8610},"):",{"type":2929,"value":8612}," If you use the filesystem driver for ",{"type":2924,"tag":3081,"props":8614,"children":8616},{"className":8615},[],[8617],{"type":2929,"value":8618},"unstorage",{"type":2929,"value":8620}," (e.g., ",{"type":2924,"tag":3081,"props":8622,"children":8624},{"className":8623},[],[8625],{"type":2929,"value":8608},{"type":2929,"value":7756},{"type":2924,"tag":3081,"props":8628,"children":8630},{"className":8629},[],[8631],{"type":2929,"value":8632},"base: '.shield'",{"type":2929,"value":8634},"), ensure that the storage directory (and the ",{"type":2924,"tag":3081,"props":8636,"children":8638},{"className":8637},[],[8639],{"type":2929,"value":3966},{"type":2929,"value":8641}," directory if logging is enabled via ",{"type":2924,"tag":3081,"props":8643,"children":8645},{"className":8644},[],[8646],{"type":2929,"value":8647},"log.path",{"type":2929,"value":8649},") is:\n",{"type":2924,"tag":2981,"props":8651,"children":8652},{},[8653,8663],{"type":2924,"tag":2985,"props":8654,"children":8655},{},[8656,8661],{"type":2924,"tag":3019,"props":8657,"children":8658},{},[8659],{"type":2929,"value":8660},"Not web-accessible:",{"type":2929,"value":8662}," Your web server should not be configured to serve files from these directories.",{"type":2924,"tag":2985,"props":8664,"children":8665},{},[8666,8671],{"type":2924,"tag":3019,"props":8667,"children":8668},{},[8669],{"type":2929,"value":8670},"Properly permissioned:",{"type":2929,"value":8672}," The directories should have appropriate server-side file permissions to prevent unauthorized reading or writing.",{"type":2924,"tag":2985,"props":8674,"children":8675},{},[8676,8681],{"type":2924,"tag":3019,"props":8677,"children":8678},{},[8679],{"type":2929,"value":8680},"Other Drivers (Redis, etc.):",{"type":2929,"value":8682}," If using database drivers like Redis, ensure your database server itself is secured (e.g., authentication, network access controls).",{"type":2924,"tag":3217,"props":8684,"children":8686},{"id":8685},"error-message-errormessage",[8687,8689,8695],{"type":2929,"value":8688},"Error Message (",{"type":2924,"tag":3081,"props":8690,"children":8692},{"className":8691},[],[8693],{"type":2929,"value":8694},"errorMessage",{"type":2929,"value":3725},{"type":2924,"tag":2931,"props":8697,"children":8698},{},[8699,8700,8705],{"type":2929,"value":4157},{"type":2924,"tag":3081,"props":8701,"children":8703},{"className":8702},[],[8704],{"type":2929,"value":8694},{"type":2929,"value":8706}," option in the module configuration is returned in the body of a 429 response.",{"type":2924,"tag":2981,"props":8708,"children":8709},{},[8710,8715],{"type":2924,"tag":2985,"props":8711,"children":8712},{},[8713],{"type":2929,"value":8714},"It's recommended to use a plain text message.",{"type":2924,"tag":2985,"props":8716,"children":8717},{},[8718,8720,8725],{"type":2929,"value":8719},"If you choose to use HTML in your ",{"type":2924,"tag":3081,"props":8721,"children":8723},{"className":8722},[],[8724],{"type":2929,"value":8694},{"type":2929,"value":8726},", ensure your client-side application correctly sanitizes it or renders it in a way that prevents XSS vulnerabilities. The module itself does not sanitize this user-configured message.",{"type":2924,"tag":3007,"props":8728,"children":8730},{"id":8729},"development",[8731],{"type":2929,"value":8732},"Development",{"type":2924,"tag":3231,"props":8734,"children":8736},{"className":3233,"code":8735,"language":3235,"meta":2868,"style":2868},"# Install dependencies\nyarn\n\n# Generate type stubs\nyarn dev:prepare\n\n# Develop with the playground\nyarn dev\n\n# Build the playground\nyarn dev:build\n\n# Run ESLint\nyarn lint\n\n# Run Vitest\nyarn test\nyarn test:watch\n\n# Release new version\nyarn release:patch\nyarn release:minor\n",[8737],{"type":2924,"tag":3081,"props":8738,"children":8739},{"__ignoreMap":2868},[8740,8748,8756,8763,8771,8783,8790,8798,8810,8817,8825,8837,8844,8852,8864,8871,8879,8891,8903,8910,8918,8930],{"type":2924,"tag":3241,"props":8741,"children":8742},{"class":3243,"line":2896},[8743],{"type":2924,"tag":3241,"props":8744,"children":8745},{"style":3247},[8746],{"type":2929,"value":8747},"# Install dependencies\n",{"type":2924,"tag":3241,"props":8749,"children":8750},{"class":3243,"line":2892},[8751],{"type":2924,"tag":3241,"props":8752,"children":8753},{"style":3256},[8754],{"type":2929,"value":8755},"yarn\n",{"type":2924,"tag":3241,"props":8757,"children":8758},{"class":3243,"line":3273},[8759],{"type":2924,"tag":3241,"props":8760,"children":8761},{"emptyLinePlaceholder":1196},[8762],{"type":2929,"value":3279},{"type":2924,"tag":3241,"props":8764,"children":8765},{"class":3243,"line":3282},[8766],{"type":2924,"tag":3241,"props":8767,"children":8768},{"style":3247},[8769],{"type":2929,"value":8770},"# Generate type stubs\n",{"type":2924,"tag":3241,"props":8772,"children":8773},{"class":3243,"line":2888},[8774,8778],{"type":2924,"tag":3241,"props":8775,"children":8776},{"style":3256},[8777],{"type":2929,"value":3296},{"type":2924,"tag":3241,"props":8779,"children":8780},{"style":3262},[8781],{"type":2929,"value":8782}," dev:prepare\n",{"type":2924,"tag":3241,"props":8784,"children":8785},{"class":3243,"line":3307},[8786],{"type":2924,"tag":3241,"props":8787,"children":8788},{"emptyLinePlaceholder":1196},[8789],{"type":2929,"value":3279},{"type":2924,"tag":3241,"props":8791,"children":8792},{"class":3243,"line":3315},[8793],{"type":2924,"tag":3241,"props":8794,"children":8795},{"style":3247},[8796],{"type":2929,"value":8797},"# Develop with the playground\n",{"type":2924,"tag":3241,"props":8799,"children":8800},{"class":3243,"line":3324},[8801,8805],{"type":2924,"tag":3241,"props":8802,"children":8803},{"style":3256},[8804],{"type":2929,"value":3296},{"type":2924,"tag":3241,"props":8806,"children":8807},{"style":3262},[8808],{"type":2929,"value":8809}," dev\n",{"type":2924,"tag":3241,"props":8811,"children":8812},{"class":3243,"line":2913},[8813],{"type":2924,"tag":3241,"props":8814,"children":8815},{"emptyLinePlaceholder":1196},[8816],{"type":2929,"value":3279},{"type":2924,"tag":3241,"props":8818,"children":8819},{"class":3243,"line":3520},[8820],{"type":2924,"tag":3241,"props":8821,"children":8822},{"style":3247},[8823],{"type":2929,"value":8824},"# Build the playground\n",{"type":2924,"tag":3241,"props":8826,"children":8827},{"class":3243,"line":3529},[8828,8832],{"type":2924,"tag":3241,"props":8829,"children":8830},{"style":3256},[8831],{"type":2929,"value":3296},{"type":2924,"tag":3241,"props":8833,"children":8834},{"style":3262},[8835],{"type":2929,"value":8836}," dev:build\n",{"type":2924,"tag":3241,"props":8838,"children":8839},{"class":3243,"line":3538},[8840],{"type":2924,"tag":3241,"props":8841,"children":8842},{"emptyLinePlaceholder":1196},[8843],{"type":2929,"value":3279},{"type":2924,"tag":3241,"props":8845,"children":8846},{"class":3243,"line":3547},[8847],{"type":2924,"tag":3241,"props":8848,"children":8849},{"style":3247},[8850],{"type":2929,"value":8851},"# Run ESLint\n",{"type":2924,"tag":3241,"props":8853,"children":8854},{"class":3243,"line":3556},[8855,8859],{"type":2924,"tag":3241,"props":8856,"children":8857},{"style":3256},[8858],{"type":2929,"value":3296},{"type":2924,"tag":3241,"props":8860,"children":8861},{"style":3262},[8862],{"type":2929,"value":8863}," lint\n",{"type":2924,"tag":3241,"props":8865,"children":8866},{"class":3243,"line":3565},[8867],{"type":2924,"tag":3241,"props":8868,"children":8869},{"emptyLinePlaceholder":1196},[8870],{"type":2929,"value":3279},{"type":2924,"tag":3241,"props":8872,"children":8873},{"class":3243,"line":3574},[8874],{"type":2924,"tag":3241,"props":8875,"children":8876},{"style":3247},[8877],{"type":2929,"value":8878},"# Run Vitest\n",{"type":2924,"tag":3241,"props":8880,"children":8881},{"class":3243,"line":3582},[8882,8886],{"type":2924,"tag":3241,"props":8883,"children":8884},{"style":3256},[8885],{"type":2929,"value":3296},{"type":2924,"tag":3241,"props":8887,"children":8888},{"style":3262},[8889],{"type":2929,"value":8890}," test\n",{"type":2924,"tag":3241,"props":8892,"children":8893},{"class":3243,"line":3591},[8894,8898],{"type":2924,"tag":3241,"props":8895,"children":8896},{"style":3256},[8897],{"type":2929,"value":3296},{"type":2924,"tag":3241,"props":8899,"children":8900},{"style":3262},[8901],{"type":2929,"value":8902}," test:watch\n",{"type":2924,"tag":3241,"props":8904,"children":8905},{"class":3243,"line":3600},[8906],{"type":2924,"tag":3241,"props":8907,"children":8908},{"emptyLinePlaceholder":1196},[8909],{"type":2929,"value":3279},{"type":2924,"tag":3241,"props":8911,"children":8912},{"class":3243,"line":3614},[8913],{"type":2924,"tag":3241,"props":8914,"children":8915},{"style":3247},[8916],{"type":2929,"value":8917},"# Release new version\n",{"type":2924,"tag":3241,"props":8919,"children":8920},{"class":3243,"line":3643},[8921,8925],{"type":2924,"tag":3241,"props":8922,"children":8923},{"style":3256},[8924],{"type":2929,"value":3296},{"type":2924,"tag":3241,"props":8926,"children":8927},{"style":3262},[8928],{"type":2929,"value":8929}," release:patch\n",{"type":2924,"tag":3241,"props":8931,"children":8932},{"class":3243,"line":3660},[8933,8937],{"type":2924,"tag":3241,"props":8934,"children":8935},{"style":3256},[8936],{"type":2929,"value":3296},{"type":2924,"tag":3241,"props":8938,"children":8939},{"style":3262},[8940],{"type":2929,"value":8941}," release:minor\n",{"type":2924,"tag":8943,"props":8944,"children":8945},"style",{},[8946],{"type":2929,"value":8947},"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);}",{"title":2868,"searchDepth":2892,"depth":2892,"links":8949},[8950,8951,8962,8968,8972,8978],{"id":3009,"depth":2892,"text":395},{"id":3212,"depth":2892,"text":3215,"children":8952},[8953,8955,8957,8959,8961],{"id":3219,"depth":3273,"text":8954},"1. Add nuxt-api-shield dependency to your project",{"id":3342,"depth":3273,"text":8956},"2. Add nuxt-api-shield to the modules section of nuxt.config.ts",{"id":4289,"depth":3273,"text":8958},"3. Add nitro\u002Fstorage to nuxt.config.ts",{"id":4698,"depth":3273,"text":8960},"4. Schedule bundled cleanup tasks in nuxt.config.ts",{"id":4999,"depth":3273,"text":5002},{"id":7093,"depth":2892,"text":7096,"children":8963},[8964,8966],{"id":7104,"depth":3273,"text":8965},"RateLimit Type",{"id":7656,"depth":3273,"text":8967},"ModuleOptions Type",{"id":7723,"depth":2892,"text":7726,"children":8969},[8970,8971],{"id":7779,"depth":3273,"text":7782},{"id":8275,"depth":3273,"text":8278},{"id":8470,"depth":2892,"text":8473,"children":8973},[8974,8975,8976],{"id":8476,"depth":3273,"text":8479},{"id":8588,"depth":3273,"text":8591},{"id":8685,"depth":3273,"text":8977},"Error Message (errorMessage)",{"id":8729,"depth":2892,"text":8732}]