[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fGCo9l1hMtNdUiA6QzdUX5X3kLqaWcC5t2kdz4LrvCvc":3,"module-api-shield":2856,"versions":8974},[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",{"name":2857,"description":2858,"repo":2859,"npm":2860,"icon":2861,"github":2862,"website":2862,"learn_more":2863,"category":2864,"type":2865,"maintainers":2866,"compatibility":2872,"generatedAt":2875,"contributors":2876,"stats":2904,"readme":2912},"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",[2867],{"name":2868,"github":2869,"twitter":2870,"bluesky":2871},"rrd","rrd108","radharadhya","rrd108.bsky.social",{"nuxt":2873,"requires":2874},">=3.0.0",{},"2026-04-10T16:41:28.144Z",[2877,2880,2884,2888,2892,2895,2898,2901],{"id":2878,"username":2869,"contributions":2879},3147489,260,{"id":2881,"username":2882,"contributions":2883},31929574,"ravesandstorm",5,{"id":2885,"username":2886,"contributions":2887},28706372,"danielroe",2,{"id":2889,"username":2890,"contributions":2891},20068593,"kschnekenburger",1,{"id":2893,"username":2894,"contributions":2891},32599710,"simonmaass",{"id":2896,"username":2897,"contributions":2891},125942725,"nd2024",{"id":2899,"username":2900,"contributions":2891},10197526,"chachew",{"id":2902,"username":2903,"contributions":2891},55457896,"LeeKrane",{"version":2905,"downloads":2906,"stars":2907,"watchers":2907,"forks":2908,"defaultBranch":2909,"publishedAt":2910,"createdAt":2911},"0.10.2",3679,52,9,"main",1774886807236,1711731542236,{"data":2913,"body":2915,"toc":8943},{"title":2914,"description":2863},"Nuxt API Shield",{"type":2916,"children":2917},"root",[2918,2925,2970,2975,3001,3007,3205,3211,3225,3335,3360,3365,3726,3744,4134,4148,4177,4282,4301,4313,4477,4482,4691,4702,4768,4987,4992,4998,5017,5024,5037,5050,5720,5744,5750,5779,5790,7019,7059,7086,7092,7097,7109,7120,7227,7235,7649,7660,7665,7716,7722,7739,7768,7772,7778,7790,8268,8274,8287,8293,8384,8390,8419,8425,8463,8469,8475,8485,8581,8587,8678,8691,8702,8722,8728,8937],{"type":2919,"tag":2920,"props":2921,"children":2922},"element","h1",{"id":2860},[2923],{"type":2924,"value":2914},"text",{"type":2919,"tag":2926,"props":2927,"children":2928},"p",{},[2929,2942,2951,2960],{"type":2919,"tag":2930,"props":2931,"children":2935},"a",{"href":2932,"rel":2933},"https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fnuxt-api-shield",[2934],"nofollow",[2936],{"type":2919,"tag":2937,"props":2938,"children":2941},"img",{"alt":2939,"src":2940},"npm version","https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002Fnuxt-api-shield\u002Flatest.svg?style=flat&colorA=020420&colorB=00DC82",[],{"type":2919,"tag":2930,"props":2943,"children":2945},{"href":2932,"rel":2944},[2934],[2946],{"type":2919,"tag":2937,"props":2947,"children":2950},{"alt":2948,"src":2949},"npm downloads","https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fdm\u002Fnuxt-api-shield.svg?style=flat&colorA=020420&colorB=00DC82",[],{"type":2919,"tag":2930,"props":2952,"children":2954},{"href":2932,"rel":2953},[2934],[2955],{"type":2919,"tag":2937,"props":2956,"children":2959},{"alt":2957,"src":2958},"License","https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fl\u002Fnuxt-api-shield.svg?style=flat&colorA=020420&colorB=00DC82",[],{"type":2919,"tag":2930,"props":2961,"children":2964},{"href":2962,"rel":2963},"https:\u002F\u002Fnuxt.com",[2934],[2965],{"type":2919,"tag":2937,"props":2966,"children":2969},{"alt":2967,"src":2968},"Nuxt","https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FNuxt-020420?logo=nuxt.js",[],{"type":2919,"tag":2926,"props":2971,"children":2972},{},[2973],{"type":2924,"value":2974},"This Nuxt module implements a rate limiting middleware to protect your API endpoints from excessive requests.",{"type":2919,"tag":2976,"props":2977,"children":2978},"ul",{},[2979],{"type":2919,"tag":2980,"props":2981,"children":2982},"li",{},[2983,2989],{"type":2919,"tag":2930,"props":2984,"children":2986},{"href":2985},"\u002FCHANGELOG.md",[2987],{"type":2924,"value":2988},"✨  Release Notes",{"type":2919,"tag":2976,"props":2990,"children":2991},{},[2992],{"type":2919,"tag":2980,"props":2993,"children":2994},{},[2995],{"type":2919,"tag":2930,"props":2996,"children":2998},{"href":2862,"rel":2997},[2934],[2999],{"type":2924,"value":3000},"📖  Documentation",{"type":2919,"tag":3002,"props":3003,"children":3005},"h2",{"id":3004},"features",[3006],{"type":2924,"value":395},{"type":2919,"tag":2976,"props":3008,"children":3009},{},[3010,3032,3089,3110,3131,3152,3184],{"type":2919,"tag":2980,"props":3011,"children":3012},{},[3013,3019],{"type":2919,"tag":3014,"props":3015,"children":3016},"strong",{},[3017],{"type":2924,"value":3018},"IP-Based Rate limiting and Brute Force Protection",{"type":2919,"tag":2976,"props":3020,"children":3021},{},[3022,3027],{"type":2919,"tag":2980,"props":3023,"children":3024},{},[3025],{"type":2924,"value":3026},"Tracks and enforces rate limits for individual IP addresses.",{"type":2919,"tag":2980,"props":3028,"children":3029},{},[3030],{"type":2924,"value":3031},"Prevents malicious actors or excessive requests from a single source from overwhelming your API.",{"type":2919,"tag":2980,"props":3033,"children":3034},{},[3035,3040],{"type":2919,"tag":3014,"props":3036,"children":3037},{},[3038],{"type":2924,"value":3039},"Customizable Rate Limits",{"type":2919,"tag":2976,"props":3041,"children":3042},{},[3043,3048,3060,3065,3070,3084],{"type":2919,"tag":2980,"props":3044,"children":3045},{},[3046],{"type":2924,"value":3047},"Configure maximum request count, duration within which the limit applies, and a ban period for exceeding the limit.",{"type":2919,"tag":2980,"props":3049,"children":3050},{},[3051,3053,3058],{"type":2924,"value":3052},"If the request limit is exceeded, the user is banned for the configured ban period. During the ban period, ",{"type":2919,"tag":3014,"props":3054,"children":3055},{},[3056],{"type":2924,"value":3057},"all requests are blocked with a 429 error",{"type":2924,"value":3059},", regardless of the rate limit window.",{"type":2919,"tag":2980,"props":3061,"children":3062},{},[3063],{"type":2924,"value":3064},"Add a delay to responses when a user is banned to discourage further abuse (optional).",{"type":2919,"tag":2980,"props":3066,"children":3067},{},[3068],{"type":2924,"value":3069},"Customize the error message for banned users.",{"type":2919,"tag":2980,"props":3071,"children":3072},{},[3073,3075,3082],{"type":2924,"value":3074},"Optionally include the ",{"type":2919,"tag":3076,"props":3077,"children":3079},"code",{"className":3078},[],[3080],{"type":2924,"value":3081},"Retry-After",{"type":2924,"value":3083}," header in responses when a user is banned.",{"type":2919,"tag":2980,"props":3085,"children":3086},{},[3087],{"type":2924,"value":3088},"Tailor the rate-limiting behavior to align with your API's specific needs and usage patterns.",{"type":2919,"tag":2980,"props":3090,"children":3091},{},[3092,3097],{"type":2919,"tag":3014,"props":3093,"children":3094},{},[3095],{"type":2924,"value":3096},"Event-Driven Handling",{"type":2919,"tag":2976,"props":3098,"children":3099},{},[3100,3105],{"type":2919,"tag":2980,"props":3101,"children":3102},{},[3103],{"type":2924,"value":3104},"Intercepts incoming API requests efficiently using Nuxt's event system.",{"type":2919,"tag":2980,"props":3106,"children":3107},{},[3108],{"type":2924,"value":3109},"Ensures seamless integration with your Nuxt application's request lifecycle.",{"type":2919,"tag":2980,"props":3111,"children":3112},{},[3113,3118],{"type":2919,"tag":3014,"props":3114,"children":3115},{},[3116],{"type":2924,"value":3117},"Flexible Storage",{"type":2919,"tag":2976,"props":3119,"children":3120},{},[3121,3126],{"type":2919,"tag":2980,"props":3122,"children":3123},{},[3124],{"type":2924,"value":3125},"Utilizes Nuxt's unstorage abstraction for versatile storage options.",{"type":2919,"tag":2980,"props":3127,"children":3128},{},[3129],{"type":2924,"value":3130},"Store rate-limiting data in various storage providers (filesystem, memory, databases, etc.) based on your project's requirements.",{"type":2919,"tag":2980,"props":3132,"children":3133},{},[3134,3139],{"type":2919,"tag":3014,"props":3135,"children":3136},{},[3137],{"type":2924,"value":3138},"Configurable with Runtime Config",{"type":2919,"tag":2976,"props":3140,"children":3141},{},[3142,3147],{"type":2919,"tag":2980,"props":3143,"children":3144},{},[3145],{"type":2924,"value":3146},"Easily adjust rate-limiting parameters without code changes.",{"type":2919,"tag":2980,"props":3148,"children":3149},{},[3150],{"type":2924,"value":3151},"Adapt to dynamic needs and maintain control over rate-limiting behavior through Nuxt's runtime configuration.",{"type":2919,"tag":2980,"props":3153,"children":3154},{},[3155,3160],{"type":2919,"tag":3014,"props":3156,"children":3157},{},[3158],{"type":2924,"value":3159},"Bundled cleanup tasks",{"type":2919,"tag":2976,"props":3161,"children":3162},{},[3163],{"type":2919,"tag":2980,"props":3164,"children":3165},{},[3166,3168,3174,3176,3182],{"type":2924,"value":3167},"Registers Nitro tasks ",{"type":2919,"tag":3076,"props":3169,"children":3171},{"className":3170},[],[3172],{"type":2924,"value":3173},"shield:cleanBans",{"type":2924,"value":3175}," and ",{"type":2919,"tag":3076,"props":3177,"children":3179},{"className":3178},[],[3180],{"type":2924,"value":3181},"shield:cleanIpData",{"type":2924,"value":3183}," so you can schedule maintenance without adding task files (see setup step 4).",{"type":2919,"tag":2980,"props":3185,"children":3186},{},[3187,3192],{"type":2919,"tag":3014,"props":3188,"children":3189},{},[3190],{"type":2924,"value":3191},"Clear Error Handling",{"type":2919,"tag":2976,"props":3193,"children":3194},{},[3195,3200],{"type":2919,"tag":2980,"props":3196,"children":3197},{},[3198],{"type":2924,"value":3199},"Returns a standardized 429 \"Too Many Requests\" error response when rate limits are exceeded or when a user is banned.",{"type":2919,"tag":2980,"props":3201,"children":3202},{},[3203],{"type":2924,"value":3204},"Facilitates proper error handling in client-side applications for a smooth user experience.",{"type":2919,"tag":3002,"props":3206,"children":3208},{"id":3207},"quick-setup",[3209],{"type":2924,"value":3210},"Quick Setup",{"type":2919,"tag":3212,"props":3213,"children":3215},"h3",{"id":3214},"_1-add-nuxt-api-shield-dependency-to-your-project",[3216,3218,3223],{"type":2924,"value":3217},"1. Add ",{"type":2919,"tag":3076,"props":3219,"children":3221},{"className":3220},[],[3222],{"type":2924,"value":2860},{"type":2924,"value":3224}," dependency to your project",{"type":2919,"tag":3226,"props":3227,"children":3231},"pre",{"className":3228,"code":3229,"language":3230,"meta":2863,"style":2863},"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",[3232],{"type":2919,"tag":3076,"props":3233,"children":3234},{"__ignoreMap":2863},[3235,3246,3266,3275,3284,3300,3308,3317],{"type":2919,"tag":3236,"props":3237,"children":3239},"span",{"class":3238,"line":2891},"line",[3240],{"type":2919,"tag":3236,"props":3241,"children":3243},{"style":3242},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#90A4AE;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[3244],{"type":2924,"value":3245},"# Using pnpm\n",{"type":2919,"tag":3236,"props":3247,"children":3248},{"class":3238,"line":2887},[3249,3255,3261],{"type":2919,"tag":3236,"props":3250,"children":3252},{"style":3251},"--shiki-light:#E2931D;--shiki-default:#E2931D;--shiki-dark:#FFCB6B",[3253],{"type":2924,"value":3254},"pnpm",{"type":2919,"tag":3236,"props":3256,"children":3258},{"style":3257},"--shiki-light:#91B859;--shiki-default:#91B859;--shiki-dark:#C3E88D",[3259],{"type":2924,"value":3260}," add",{"type":2919,"tag":3236,"props":3262,"children":3263},{"style":3257},[3264],{"type":2924,"value":3265}," nuxt-api-shield\n",{"type":2919,"tag":3236,"props":3267,"children":3269},{"class":3238,"line":3268},3,[3270],{"type":2919,"tag":3236,"props":3271,"children":3272},{"emptyLinePlaceholder":1196},[3273],{"type":2924,"value":3274},"\n",{"type":2919,"tag":3236,"props":3276,"children":3278},{"class":3238,"line":3277},4,[3279],{"type":2919,"tag":3236,"props":3280,"children":3281},{"style":3242},[3282],{"type":2924,"value":3283},"# Using yarn\n",{"type":2919,"tag":3236,"props":3285,"children":3286},{"class":3238,"line":2883},[3287,3292,3296],{"type":2919,"tag":3236,"props":3288,"children":3289},{"style":3251},[3290],{"type":2924,"value":3291},"yarn",{"type":2919,"tag":3236,"props":3293,"children":3294},{"style":3257},[3295],{"type":2924,"value":3260},{"type":2919,"tag":3236,"props":3297,"children":3298},{"style":3257},[3299],{"type":2924,"value":3265},{"type":2919,"tag":3236,"props":3301,"children":3303},{"class":3238,"line":3302},6,[3304],{"type":2919,"tag":3236,"props":3305,"children":3306},{"emptyLinePlaceholder":1196},[3307],{"type":2924,"value":3274},{"type":2919,"tag":3236,"props":3309,"children":3311},{"class":3238,"line":3310},7,[3312],{"type":2919,"tag":3236,"props":3313,"children":3314},{"style":3242},[3315],{"type":2924,"value":3316},"# Using npm\n",{"type":2919,"tag":3236,"props":3318,"children":3320},{"class":3238,"line":3319},8,[3321,3326,3331],{"type":2919,"tag":3236,"props":3322,"children":3323},{"style":3251},[3324],{"type":2924,"value":3325},"npm",{"type":2919,"tag":3236,"props":3327,"children":3328},{"style":3257},[3329],{"type":2924,"value":3330}," install",{"type":2919,"tag":3236,"props":3332,"children":3333},{"style":3257},[3334],{"type":2924,"value":3265},{"type":2919,"tag":3212,"props":3336,"children":3338},{"id":3337},"_2-add-nuxt-api-shield-to-the-modules-section-of-nuxtconfigts",[3339,3341,3346,3348,3353,3355],{"type":2924,"value":3340},"2. Add ",{"type":2919,"tag":3076,"props":3342,"children":3344},{"className":3343},[],[3345],{"type":2924,"value":2860},{"type":2924,"value":3347}," to the ",{"type":2919,"tag":3076,"props":3349,"children":3351},{"className":3350},[],[3352],{"type":2924,"value":162},{"type":2924,"value":3354}," section of ",{"type":2919,"tag":3076,"props":3356,"children":3358},{"className":3357},[],[3359],{"type":2924,"value":233},{"type":2919,"tag":2926,"props":3361,"children":3362},{},[3363],{"type":2924,"value":3364},"You should add only the values you want to use differently from the default values.",{"type":2919,"tag":3226,"props":3366,"children":3370},{"className":3367,"code":3368,"language":3369,"meta":2863,"style":2863},"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",[3371],{"type":2919,"tag":3076,"props":3372,"children":3373},{"__ignoreMap":2863},[3374,3406,3448,3465,3473,3481,3489,3497,3505,3513,3522,3531,3540,3549,3558,3567,3575,3584,3593,3607,3636,3653,3662,3690,3698,3707],{"type":2919,"tag":3236,"props":3375,"children":3376},{"class":3238,"line":2891},[3377,3383,3388,3394,3400],{"type":2919,"tag":3236,"props":3378,"children":3380},{"style":3379},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#39ADB5;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[3381],{"type":2924,"value":3382},"export",{"type":2919,"tag":3236,"props":3384,"children":3385},{"style":3379},[3386],{"type":2924,"value":3387}," default",{"type":2919,"tag":3236,"props":3389,"children":3391},{"style":3390},"--shiki-light:#6182B8;--shiki-default:#6182B8;--shiki-dark:#82AAFF",[3392],{"type":2924,"value":3393}," defineNuxtConfig",{"type":2919,"tag":3236,"props":3395,"children":3397},{"style":3396},"--shiki-light:#90A4AE;--shiki-default:#90A4AE;--shiki-dark:#BABED8",[3398],{"type":2924,"value":3399},"(",{"type":2919,"tag":3236,"props":3401,"children":3403},{"style":3402},"--shiki-light:#39ADB5;--shiki-default:#39ADB5;--shiki-dark:#89DDFF",[3404],{"type":2924,"value":3405},"{\n",{"type":2919,"tag":3236,"props":3407,"children":3408},{"class":3238,"line":2887},[3409,3415,3420,3425,3430,3434,3438,3443],{"type":2919,"tag":3236,"props":3410,"children":3412},{"style":3411},"--shiki-light:#E53935;--shiki-default:#E53935;--shiki-dark:#F07178",[3413],{"type":2924,"value":3414},"  modules",{"type":2919,"tag":3236,"props":3416,"children":3417},{"style":3402},[3418],{"type":2924,"value":3419},":",{"type":2919,"tag":3236,"props":3421,"children":3422},{"style":3396},[3423],{"type":2924,"value":3424}," [",{"type":2919,"tag":3236,"props":3426,"children":3427},{"style":3402},[3428],{"type":2924,"value":3429},"\"",{"type":2919,"tag":3236,"props":3431,"children":3432},{"style":3257},[3433],{"type":2924,"value":2860},{"type":2919,"tag":3236,"props":3435,"children":3436},{"style":3402},[3437],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":3439,"children":3440},{"style":3396},[3441],{"type":2924,"value":3442},"]",{"type":2919,"tag":3236,"props":3444,"children":3445},{"style":3402},[3446],{"type":2924,"value":3447},",\n",{"type":2919,"tag":3236,"props":3449,"children":3450},{"class":3238,"line":3268},[3451,3456,3460],{"type":2919,"tag":3236,"props":3452,"children":3453},{"style":3411},[3454],{"type":2924,"value":3455},"  nuxtApiShield",{"type":2919,"tag":3236,"props":3457,"children":3458},{"style":3402},[3459],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":3461,"children":3462},{"style":3402},[3463],{"type":2924,"value":3464}," {\n",{"type":2919,"tag":3236,"props":3466,"children":3467},{"class":3238,"line":3277},[3468],{"type":2919,"tag":3236,"props":3469,"children":3470},{"style":3242},[3471],{"type":2924,"value":3472},"    \u002F*limit: {\n",{"type":2919,"tag":3236,"props":3474,"children":3475},{"class":3238,"line":2883},[3476],{"type":2919,"tag":3236,"props":3477,"children":3478},{"style":3242},[3479],{"type":2924,"value":3480},"      max: 12,        \u002F\u002F maximum requests per duration time, default is 12\u002Fduration\n",{"type":2919,"tag":3236,"props":3482,"children":3483},{"class":3238,"line":3302},[3484],{"type":2919,"tag":3236,"props":3485,"children":3486},{"style":3242},[3487],{"type":2924,"value":3488},"      duration: 108,   \u002F\u002F duration time in seconds, default is 108 seconds\n",{"type":2919,"tag":3236,"props":3490,"children":3491},{"class":3238,"line":3310},[3492],{"type":2919,"tag":3236,"props":3493,"children":3494},{"style":3242},[3495],{"type":2924,"value":3496},"      ban: 3600,      \u002F\u002F ban time in seconds, default is 3600 seconds = 1 hour\n",{"type":2919,"tag":3236,"props":3498,"children":3499},{"class":3238,"line":3319},[3500],{"type":2919,"tag":3236,"props":3501,"children":3502},{"style":3242},[3503],{"type":2924,"value":3504},"      \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":2919,"tag":3236,"props":3506,"children":3507},{"class":3238,"line":2908},[3508],{"type":2919,"tag":3236,"props":3509,"children":3510},{"style":3242},[3511],{"type":2924,"value":3512},"    },\n",{"type":2919,"tag":3236,"props":3514,"children":3516},{"class":3238,"line":3515},10,[3517],{"type":2919,"tag":3236,"props":3518,"children":3519},{"style":3242},[3520],{"type":2924,"value":3521},"    delayOnBan: true  \u002F\u002F delay every response with +1sec when the user is banned, default is true\n",{"type":2919,"tag":3236,"props":3523,"children":3525},{"class":3238,"line":3524},11,[3526],{"type":2919,"tag":3236,"props":3527,"children":3528},{"style":3242},[3529],{"type":2924,"value":3530},"    errorMessage: \"Too Many Requests\",  \u002F\u002F error message when the user is banned, default is \"Too Many Requests\"\n",{"type":2919,"tag":3236,"props":3532,"children":3534},{"class":3238,"line":3533},12,[3535],{"type":2919,"tag":3236,"props":3536,"children":3537},{"style":3242},[3538],{"type":2924,"value":3539},"    retryAfterHeader: false, \u002F\u002F when the user is banned add the Retry-After header to the response, default is false\n",{"type":2919,"tag":3236,"props":3541,"children":3543},{"class":3238,"line":3542},13,[3544],{"type":2919,"tag":3236,"props":3545,"children":3546},{"style":3242},[3547],{"type":2924,"value":3548},"    log: {\n",{"type":2919,"tag":3236,"props":3550,"children":3552},{"class":3238,"line":3551},14,[3553],{"type":2919,"tag":3236,"props":3554,"children":3555},{"style":3242},[3556],{"type":2924,"value":3557},"      path: \"logs\", \u002F\u002F path to the log file, every day a new log file will be created, use \"\" to disable logging\n",{"type":2919,"tag":3236,"props":3559,"children":3561},{"class":3238,"line":3560},15,[3562],{"type":2919,"tag":3236,"props":3563,"children":3564},{"style":3242},[3565],{"type":2924,"value":3566},"      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":2919,"tag":3236,"props":3568,"children":3570},{"class":3238,"line":3569},16,[3571],{"type":2919,"tag":3236,"props":3572,"children":3573},{"style":3242},[3574],{"type":2924,"value":3512},{"type":2919,"tag":3236,"props":3576,"children":3578},{"class":3238,"line":3577},17,[3579],{"type":2919,"tag":3236,"props":3580,"children":3581},{"style":3242},[3582],{"type":2924,"value":3583},"    routes: [], \u002F\u002F specify routes to apply rate limiting to, default is an empty array meaning all routes are protected.\n",{"type":2919,"tag":3236,"props":3585,"children":3587},{"class":3238,"line":3586},18,[3588],{"type":2919,"tag":3236,"props":3589,"children":3590},{"style":3242},[3591],{"type":2924,"value":3592},"    \u002F\u002F Example:\n",{"type":2919,"tag":3236,"props":3594,"children":3596},{"class":3238,"line":3595},19,[3597,3602],{"type":2919,"tag":3236,"props":3598,"children":3599},{"style":3242},[3600],{"type":2924,"value":3601},"    \u002F\u002F routes: [\"\u002Fapi\u002Fv2\u002F\", \"\u002Fapi\u002Fv3\u002F\"],",{"type":2919,"tag":3236,"props":3603,"children":3604},{"style":3242},[3605],{"type":2924,"value":3606}," \u002F\u002F \u002Fapi\u002Fv1 will not be protected, \u002Fapi\u002Fv2\u002F and \u002Fapi\u002Fv3\u002F will be protected *\u002F\n",{"type":2919,"tag":3236,"props":3608,"children":3610},{"class":3238,"line":3609},20,[3611,3616,3620,3626,3631],{"type":2919,"tag":3236,"props":3612,"children":3613},{"style":3411},[3614],{"type":2924,"value":3615},"    ipTTL",{"type":2919,"tag":3236,"props":3617,"children":3618},{"style":3402},[3619],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":3621,"children":3623},{"style":3622},"--shiki-light:#F76D47;--shiki-default:#F76D47;--shiki-dark:#F78C6C",[3624],{"type":2924,"value":3625}," 604800",{"type":2919,"tag":3236,"props":3627,"children":3628},{"style":3402},[3629],{"type":2924,"value":3630},",",{"type":2919,"tag":3236,"props":3632,"children":3633},{"style":3242},[3634],{"type":2924,"value":3635}," \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":2919,"tag":3236,"props":3637,"children":3639},{"class":3238,"line":3638},21,[3640,3645,3649],{"type":2919,"tag":3236,"props":3641,"children":3642},{"style":3411},[3643],{"type":2924,"value":3644},"    security",{"type":2919,"tag":3236,"props":3646,"children":3647},{"style":3402},[3648],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":3650,"children":3651},{"style":3402},[3652],{"type":2924,"value":3464},{"type":2919,"tag":3236,"props":3654,"children":3656},{"class":3238,"line":3655},22,[3657],{"type":2919,"tag":3236,"props":3658,"children":3659},{"style":3242},[3660],{"type":2924,"value":3661},"      \u002F\u002F Optional: Security-related configurations\n",{"type":2919,"tag":3236,"props":3663,"children":3665},{"class":3238,"line":3664},23,[3666,3671,3675,3681,3685],{"type":2919,"tag":3236,"props":3667,"children":3668},{"style":3411},[3669],{"type":2924,"value":3670},"      trustXForwardedFor",{"type":2919,"tag":3236,"props":3672,"children":3673},{"style":3402},[3674],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":3676,"children":3678},{"style":3677},"--shiki-light:#FF5370;--shiki-default:#FF5370;--shiki-dark:#FF9CAC",[3679],{"type":2924,"value":3680}," true",{"type":2919,"tag":3236,"props":3682,"children":3683},{"style":3402},[3684],{"type":2924,"value":3630},{"type":2919,"tag":3236,"props":3686,"children":3687},{"style":3242},[3688],{"type":2924,"value":3689}," \u002F\u002F Default: true. Whether to trust X-Forwarded-For headers. See warning below.\n",{"type":2919,"tag":3236,"props":3691,"children":3693},{"class":3238,"line":3692},24,[3694],{"type":2919,"tag":3236,"props":3695,"children":3696},{"style":3402},[3697],{"type":2924,"value":3512},{"type":2919,"tag":3236,"props":3699,"children":3701},{"class":3238,"line":3700},25,[3702],{"type":2919,"tag":3236,"props":3703,"children":3704},{"style":3402},[3705],{"type":2924,"value":3706},"  },\n",{"type":2919,"tag":3236,"props":3708,"children":3710},{"class":3238,"line":3709},26,[3711,3716,3721],{"type":2919,"tag":3236,"props":3712,"children":3713},{"style":3402},[3714],{"type":2924,"value":3715},"}",{"type":2919,"tag":3236,"props":3717,"children":3718},{"style":3396},[3719],{"type":2924,"value":3720},")",{"type":2919,"tag":3236,"props":3722,"children":3723},{"style":3402},[3724],{"type":2924,"value":3725},";\n",{"type":2919,"tag":2926,"props":3727,"children":3728},{},[3729,3734,3736,3742],{"type":2919,"tag":3014,"props":3730,"children":3731},{},[3732],{"type":2924,"value":3733},"Default Configuration Values:",{"type":2924,"value":3735},"\n(These are applied by the module if not specified in your ",{"type":2919,"tag":3076,"props":3737,"children":3739},{"className":3738},[],[3740],{"type":2924,"value":3741},"nuxtApiShield",{"type":2924,"value":3743}," config)",{"type":2919,"tag":3226,"props":3745,"children":3747},{"className":3367,"code":3746,"language":3369,"meta":2863,"style":2863},"{\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",[3748],{"type":2919,"tag":3076,"props":3749,"children":3750},{"__ignoreMap":2863},[3751,3758,3774,3795,3821,3847,3854,3874,3904,3925,3941,3975,4001,4008,4029,4082,4098,4118,4126],{"type":2919,"tag":3236,"props":3752,"children":3753},{"class":3238,"line":2891},[3754],{"type":2919,"tag":3236,"props":3755,"children":3756},{"style":3402},[3757],{"type":2924,"value":3405},{"type":2919,"tag":3236,"props":3759,"children":3760},{"class":3238,"line":2887},[3761,3766,3770],{"type":2919,"tag":3236,"props":3762,"children":3763},{"style":3251},[3764],{"type":2924,"value":3765},"  limit",{"type":2919,"tag":3236,"props":3767,"children":3768},{"style":3402},[3769],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":3771,"children":3772},{"style":3402},[3773],{"type":2924,"value":3464},{"type":2919,"tag":3236,"props":3775,"children":3776},{"class":3238,"line":3268},[3777,3782,3786,3791],{"type":2919,"tag":3236,"props":3778,"children":3779},{"style":3251},[3780],{"type":2924,"value":3781},"    max",{"type":2919,"tag":3236,"props":3783,"children":3784},{"style":3402},[3785],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":3787,"children":3788},{"style":3622},[3789],{"type":2924,"value":3790}," 12",{"type":2919,"tag":3236,"props":3792,"children":3793},{"style":3402},[3794],{"type":2924,"value":3447},{"type":2919,"tag":3236,"props":3796,"children":3797},{"class":3238,"line":3277},[3798,3803,3807,3812,3816],{"type":2919,"tag":3236,"props":3799,"children":3800},{"style":3251},[3801],{"type":2924,"value":3802},"    duration",{"type":2919,"tag":3236,"props":3804,"children":3805},{"style":3402},[3806],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":3808,"children":3809},{"style":3622},[3810],{"type":2924,"value":3811}," 108",{"type":2919,"tag":3236,"props":3813,"children":3814},{"style":3402},[3815],{"type":2924,"value":3630},{"type":2919,"tag":3236,"props":3817,"children":3818},{"style":3242},[3819],{"type":2924,"value":3820}," \u002F\u002F seconds\n",{"type":2919,"tag":3236,"props":3822,"children":3823},{"class":3238,"line":2883},[3824,3829,3833,3838,3842],{"type":2919,"tag":3236,"props":3825,"children":3826},{"style":3251},[3827],{"type":2924,"value":3828},"    ban",{"type":2919,"tag":3236,"props":3830,"children":3831},{"style":3402},[3832],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":3834,"children":3835},{"style":3622},[3836],{"type":2924,"value":3837}," 3600",{"type":2919,"tag":3236,"props":3839,"children":3840},{"style":3402},[3841],{"type":2924,"value":3630},{"type":2919,"tag":3236,"props":3843,"children":3844},{"style":3242},[3845],{"type":2924,"value":3846},"     \u002F\u002F seconds\n",{"type":2919,"tag":3236,"props":3848,"children":3849},{"class":3238,"line":3302},[3850],{"type":2919,"tag":3236,"props":3851,"children":3852},{"style":3402},[3853],{"type":2924,"value":3706},{"type":2919,"tag":3236,"props":3855,"children":3856},{"class":3238,"line":3310},[3857,3862,3866,3870],{"type":2919,"tag":3236,"props":3858,"children":3859},{"style":3251},[3860],{"type":2924,"value":3861},"  delayOnBan",{"type":2919,"tag":3236,"props":3863,"children":3864},{"style":3402},[3865],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":3867,"children":3868},{"style":3677},[3869],{"type":2924,"value":3680},{"type":2919,"tag":3236,"props":3871,"children":3872},{"style":3402},[3873],{"type":2924,"value":3447},{"type":2919,"tag":3236,"props":3875,"children":3876},{"class":3238,"line":3319},[3877,3882,3886,3891,3896,3900],{"type":2919,"tag":3236,"props":3878,"children":3879},{"style":3251},[3880],{"type":2924,"value":3881},"  errorMessage",{"type":2919,"tag":3236,"props":3883,"children":3884},{"style":3402},[3885],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":3887,"children":3888},{"style":3402},[3889],{"type":2924,"value":3890}," \"",{"type":2919,"tag":3236,"props":3892,"children":3893},{"style":3257},[3894],{"type":2924,"value":3895},"Too Many Requests",{"type":2919,"tag":3236,"props":3897,"children":3898},{"style":3402},[3899],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":3901,"children":3902},{"style":3402},[3903],{"type":2924,"value":3447},{"type":2919,"tag":3236,"props":3905,"children":3906},{"class":3238,"line":2908},[3907,3912,3916,3921],{"type":2919,"tag":3236,"props":3908,"children":3909},{"style":3251},[3910],{"type":2924,"value":3911},"  retryAfterHeader",{"type":2919,"tag":3236,"props":3913,"children":3914},{"style":3402},[3915],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":3917,"children":3918},{"style":3677},[3919],{"type":2924,"value":3920}," false",{"type":2919,"tag":3236,"props":3922,"children":3923},{"style":3402},[3924],{"type":2924,"value":3447},{"type":2919,"tag":3236,"props":3926,"children":3927},{"class":3238,"line":3515},[3928,3933,3937],{"type":2919,"tag":3236,"props":3929,"children":3930},{"style":3251},[3931],{"type":2924,"value":3932},"  log",{"type":2919,"tag":3236,"props":3934,"children":3935},{"style":3402},[3936],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":3938,"children":3939},{"style":3402},[3940],{"type":2924,"value":3464},{"type":2919,"tag":3236,"props":3942,"children":3943},{"class":3238,"line":3524},[3944,3949,3953,3957,3962,3966,3970],{"type":2919,"tag":3236,"props":3945,"children":3946},{"style":3251},[3947],{"type":2924,"value":3948},"    path",{"type":2919,"tag":3236,"props":3950,"children":3951},{"style":3402},[3952],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":3954,"children":3955},{"style":3402},[3956],{"type":2924,"value":3890},{"type":2919,"tag":3236,"props":3958,"children":3959},{"style":3257},[3960],{"type":2924,"value":3961},"logs",{"type":2919,"tag":3236,"props":3963,"children":3964},{"style":3402},[3965],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":3967,"children":3968},{"style":3402},[3969],{"type":2924,"value":3630},{"type":2919,"tag":3236,"props":3971,"children":3972},{"style":3242},[3973],{"type":2924,"value":3974}," \u002F\u002F Logging is disabled if path is empty\n",{"type":2919,"tag":3236,"props":3976,"children":3977},{"class":3238,"line":3533},[3978,3983,3987,3992,3996],{"type":2919,"tag":3236,"props":3979,"children":3980},{"style":3251},[3981],{"type":2924,"value":3982},"    attempts",{"type":2919,"tag":3236,"props":3984,"children":3985},{"style":3402},[3986],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":3988,"children":3989},{"style":3622},[3990],{"type":2924,"value":3991}," 100",{"type":2919,"tag":3236,"props":3993,"children":3994},{"style":3402},[3995],{"type":2924,"value":3630},{"type":2919,"tag":3236,"props":3997,"children":3998},{"style":3242},[3999],{"type":2924,"value":4000}," \u002F\u002F Logging per IP is disabled if attempts is 0\n",{"type":2919,"tag":3236,"props":4002,"children":4003},{"class":3238,"line":3542},[4004],{"type":2919,"tag":3236,"props":4005,"children":4006},{"style":3402},[4007],{"type":2924,"value":3706},{"type":2919,"tag":3236,"props":4009,"children":4010},{"class":3238,"line":3551},[4011,4016,4020,4025],{"type":2919,"tag":3236,"props":4012,"children":4013},{"style":3251},[4014],{"type":2924,"value":4015},"  routes",{"type":2919,"tag":3236,"props":4017,"children":4018},{"style":3402},[4019],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":4021,"children":4022},{"style":3411},[4023],{"type":2924,"value":4024}," []",{"type":2919,"tag":3236,"props":4026,"children":4027},{"style":3402},[4028],{"type":2924,"value":3447},{"type":2919,"tag":3236,"props":4030,"children":4031},{"class":3238,"line":3560},[4032,4037,4041,4046,4051,4056,4060,4065,4069,4073,4077],{"type":2919,"tag":3236,"props":4033,"children":4034},{"style":3251},[4035],{"type":2924,"value":4036},"  ipTTL",{"type":2919,"tag":3236,"props":4038,"children":4039},{"style":3402},[4040],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":4042,"children":4043},{"style":3622},[4044],{"type":2924,"value":4045}," 7",{"type":2919,"tag":3236,"props":4047,"children":4048},{"style":3402},[4049],{"type":2924,"value":4050}," *",{"type":2919,"tag":3236,"props":4052,"children":4053},{"style":3622},[4054],{"type":2924,"value":4055}," 24",{"type":2919,"tag":3236,"props":4057,"children":4058},{"style":3402},[4059],{"type":2924,"value":4050},{"type":2919,"tag":3236,"props":4061,"children":4062},{"style":3622},[4063],{"type":2924,"value":4064}," 60",{"type":2919,"tag":3236,"props":4066,"children":4067},{"style":3402},[4068],{"type":2924,"value":4050},{"type":2919,"tag":3236,"props":4070,"children":4071},{"style":3622},[4072],{"type":2924,"value":4064},{"type":2919,"tag":3236,"props":4074,"children":4075},{"style":3402},[4076],{"type":2924,"value":3630},{"type":2919,"tag":3236,"props":4078,"children":4079},{"style":3242},[4080],{"type":2924,"value":4081}," \u002F\u002F 7 days in seconds\n",{"type":2919,"tag":3236,"props":4083,"children":4084},{"class":3238,"line":3569},[4085,4090,4094],{"type":2919,"tag":3236,"props":4086,"children":4087},{"style":3251},[4088],{"type":2924,"value":4089},"  security",{"type":2919,"tag":3236,"props":4091,"children":4092},{"style":3402},[4093],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":4095,"children":4096},{"style":3402},[4097],{"type":2924,"value":3464},{"type":2919,"tag":3236,"props":4099,"children":4100},{"class":3238,"line":3577},[4101,4106,4110,4114],{"type":2919,"tag":3236,"props":4102,"children":4103},{"style":3251},[4104],{"type":2924,"value":4105},"    trustXForwardedFor",{"type":2919,"tag":3236,"props":4107,"children":4108},{"style":3402},[4109],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":4111,"children":4112},{"style":3677},[4113],{"type":2924,"value":3680},{"type":2919,"tag":3236,"props":4115,"children":4116},{"style":3402},[4117],{"type":2924,"value":3447},{"type":2919,"tag":3236,"props":4119,"children":4120},{"class":3238,"line":3586},[4121],{"type":2919,"tag":3236,"props":4122,"children":4123},{"style":3402},[4124],{"type":2924,"value":4125},"  }\n",{"type":2919,"tag":3236,"props":4127,"children":4128},{"class":3238,"line":3595},[4129],{"type":2919,"tag":3236,"props":4130,"children":4131},{"style":3402},[4132],{"type":2924,"value":4133},"}\n",{"type":2919,"tag":2926,"props":4135,"children":4136},{},[4137],{"type":2919,"tag":3014,"props":4138,"children":4139},{},[4140,4142],{"type":2924,"value":4141},"Security Warning: ",{"type":2919,"tag":3076,"props":4143,"children":4145},{"className":4144},[],[4146],{"type":2924,"value":4147},"trustXForwardedFor",{"type":2919,"tag":2926,"props":4149,"children":4150},{},[4151,4153,4159,4161,4167,4169,4175],{"type":2924,"value":4152},"The ",{"type":2919,"tag":3076,"props":4154,"children":4156},{"className":4155},[],[4157],{"type":2924,"value":4158},"security.trustXForwardedFor",{"type":2924,"value":4160}," option (default is ",{"type":2919,"tag":3076,"props":4162,"children":4164},{"className":4163},[],[4165],{"type":2924,"value":4166},"true",{"type":2924,"value":4168},", set by the module) determines if the module uses the ",{"type":2919,"tag":3076,"props":4170,"children":4172},{"className":4171},[],[4173],{"type":2924,"value":4174},"X-Forwarded-For",{"type":2924,"value":4176}," HTTP header to identify the client's IP address.",{"type":2919,"tag":2976,"props":4178,"children":4179},{},[4180,4199,4237,4257],{"type":2919,"tag":2980,"props":4181,"children":4182},{},[4183,4185,4190,4192,4197],{"type":2924,"value":4184},"If set to ",{"type":2919,"tag":3076,"props":4186,"children":4188},{"className":4187},[],[4189],{"type":2924,"value":4166},{"type":2924,"value":4191},": The module will use the IP address provided in the ",{"type":2919,"tag":3076,"props":4193,"children":4195},{"className":4194},[],[4196],{"type":2924,"value":4174},{"type":2924,"value":4198}," 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":2919,"tag":2980,"props":4200,"children":4201},{},[4202,4207,4209,4214,4216,4221,4223,4228,4230,4235],{"type":2919,"tag":3014,"props":4203,"children":4204},{},[4205],{"type":2924,"value":4206},"WARNING:",{"type":2924,"value":4208}," If ",{"type":2919,"tag":3076,"props":4210,"children":4212},{"className":4211},[],[4213],{"type":2924,"value":4147},{"type":2924,"value":4215}," is ",{"type":2919,"tag":3076,"props":4217,"children":4219},{"className":4218},[],[4220],{"type":2924,"value":4166},{"type":2924,"value":4222}," and your application is directly internet-facing OR your proxy is not configured to strip incoming ",{"type":2919,"tag":3076,"props":4224,"children":4226},{"className":4225},[],[4227],{"type":2924,"value":4174},{"type":2924,"value":4229}," headers from clients, malicious users can spoof their IP address by sending a fake ",{"type":2919,"tag":3076,"props":4231,"children":4233},{"className":4232},[],[4234],{"type":2924,"value":4174},{"type":2924,"value":4236}," header. This would allow them to bypass rate limits or cause other users to be incorrectly rate-limited.",{"type":2919,"tag":2980,"props":4238,"children":4239},{},[4240,4241,4247,4249,4255],{"type":2924,"value":4184},{"type":2919,"tag":3076,"props":4242,"children":4244},{"className":4243},[],[4245],{"type":2924,"value":4246},"false",{"type":2924,"value":4248},": The module will use the direct IP address of the incoming connection (i.e., ",{"type":2919,"tag":3076,"props":4250,"children":4252},{"className":4251},[],[4253],{"type":2924,"value":4254},"event.node.req.socket.remoteAddress",{"type":2924,"value":4256},"). Use this setting if your application is directly internet-facing or if you are unsure about your proxy's configuration.",{"type":2919,"tag":2980,"props":4258,"children":4259},{},[4260,4265,4267,4273,4275,4280],{"type":2919,"tag":3014,"props":4261,"children":4262},{},[4263],{"type":2924,"value":4264},"Recommendation:",{"type":2924,"value":4266}," Only enable ",{"type":2919,"tag":3076,"props":4268,"children":4270},{"className":4269},[],[4271],{"type":2924,"value":4272},"trustXForwardedFor: true",{"type":2924,"value":4274}," 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":2919,"tag":3076,"props":4276,"children":4278},{"className":4277},[],[4279],{"type":2924,"value":4246},{"type":2924,"value":4281},".",{"type":2919,"tag":3212,"props":4283,"children":4285},{"id":4284},"_3-add-nitrostorage-to-nuxtconfigts",[4286,4288,4294,4296],{"type":2924,"value":4287},"3. Add ",{"type":2919,"tag":3076,"props":4289,"children":4291},{"className":4290},[],[4292],{"type":2924,"value":4293},"nitro\u002Fstorage",{"type":2924,"value":4295}," to ",{"type":2919,"tag":3076,"props":4297,"children":4299},{"className":4298},[],[4300],{"type":2924,"value":233},{"type":2919,"tag":2926,"props":4302,"children":4303},{},[4304,4306,4311],{"type":2924,"value":4305},"You can use any storage you want, but you have to use ",{"type":2919,"tag":3014,"props":4307,"children":4308},{},[4309],{"type":2924,"value":4310},"shield",{"type":2924,"value":4312}," as the name of the storage.",{"type":2919,"tag":3226,"props":4314,"children":4318},{"className":4315,"code":4316,"language":4317,"meta":2863,"style":2863},"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",[4319],{"type":2919,"tag":3076,"props":4320,"children":4321},{"__ignoreMap":2863},[4322,4329,4355,4380,4404,4412,4447,4455,4463,4470],{"type":2919,"tag":3236,"props":4323,"children":4324},{"class":3238,"line":2891},[4325],{"type":2919,"tag":3236,"props":4326,"children":4327},{"style":3402},[4328],{"type":2924,"value":3405},{"type":2919,"tag":3236,"props":4330,"children":4331},{"class":3238,"line":2887},[4332,4337,4343,4347,4351],{"type":2919,"tag":3236,"props":4333,"children":4334},{"style":3402},[4335],{"type":2924,"value":4336},"  \"",{"type":2919,"tag":3236,"props":4338,"children":4340},{"style":4339},"--shiki-light:#9C3EDA;--shiki-default:#9C3EDA;--shiki-dark:#C792EA",[4341],{"type":2924,"value":4342},"nitro",{"type":2919,"tag":3236,"props":4344,"children":4345},{"style":3402},[4346],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":4348,"children":4349},{"style":3402},[4350],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":4352,"children":4353},{"style":3402},[4354],{"type":2924,"value":3464},{"type":2919,"tag":3236,"props":4356,"children":4357},{"class":3238,"line":3268},[4358,4363,4368,4372,4376],{"type":2919,"tag":3236,"props":4359,"children":4360},{"style":3402},[4361],{"type":2924,"value":4362},"    \"",{"type":2919,"tag":3236,"props":4364,"children":4365},{"style":3251},[4366],{"type":2924,"value":4367},"storage",{"type":2919,"tag":3236,"props":4369,"children":4370},{"style":3402},[4371],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":4373,"children":4374},{"style":3402},[4375],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":4377,"children":4378},{"style":3402},[4379],{"type":2924,"value":3464},{"type":2919,"tag":3236,"props":4381,"children":4382},{"class":3238,"line":3277},[4383,4388,4392,4396,4400],{"type":2919,"tag":3236,"props":4384,"children":4385},{"style":3402},[4386],{"type":2924,"value":4387},"      \"",{"type":2919,"tag":3236,"props":4389,"children":4390},{"style":3622},[4391],{"type":2924,"value":4310},{"type":2919,"tag":3236,"props":4393,"children":4394},{"style":3402},[4395],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":4397,"children":4398},{"style":3402},[4399],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":4401,"children":4402},{"style":3402},[4403],{"type":2924,"value":3464},{"type":2919,"tag":3236,"props":4405,"children":4406},{"class":3238,"line":2883},[4407],{"type":2919,"tag":3236,"props":4408,"children":4409},{"style":3242},[4410],{"type":2924,"value":4411},"        \u002F\u002F storage name, you **must** use \"shield\" as the name\n",{"type":2919,"tag":3236,"props":4413,"children":4414},{"class":3238,"line":3302},[4415,4420,4425,4429,4433,4437,4442],{"type":2919,"tag":3236,"props":4416,"children":4417},{"style":3402},[4418],{"type":2924,"value":4419},"        \"",{"type":2919,"tag":3236,"props":4421,"children":4422},{"style":3411},[4423],{"type":2924,"value":4424},"driver",{"type":2919,"tag":3236,"props":4426,"children":4427},{"style":3402},[4428],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":4430,"children":4431},{"style":3402},[4432],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":4434,"children":4435},{"style":3402},[4436],{"type":2924,"value":3890},{"type":2919,"tag":3236,"props":4438,"children":4439},{"style":3257},[4440],{"type":2924,"value":4441},"memory",{"type":2919,"tag":3236,"props":4443,"children":4444},{"style":3402},[4445],{"type":2924,"value":4446},"\"\n",{"type":2919,"tag":3236,"props":4448,"children":4449},{"class":3238,"line":3310},[4450],{"type":2919,"tag":3236,"props":4451,"children":4452},{"style":3402},[4453],{"type":2924,"value":4454},"      }\n",{"type":2919,"tag":3236,"props":4456,"children":4457},{"class":3238,"line":3319},[4458],{"type":2919,"tag":3236,"props":4459,"children":4460},{"style":3402},[4461],{"type":2924,"value":4462},"    }\n",{"type":2919,"tag":3236,"props":4464,"children":4465},{"class":3238,"line":2908},[4466],{"type":2919,"tag":3236,"props":4467,"children":4468},{"style":3402},[4469],{"type":2924,"value":4125},{"type":2919,"tag":3236,"props":4471,"children":4472},{"class":3238,"line":3515},[4473],{"type":2919,"tag":3236,"props":4474,"children":4475},{"style":3402},[4476],{"type":2924,"value":4133},{"type":2919,"tag":2926,"props":4478,"children":4479},{},[4480],{"type":2924,"value":4481},"If you use for example redis, you can use the following configuration, define the host and port.",{"type":2919,"tag":3226,"props":4483,"children":4485},{"className":4315,"code":4484,"language":4317,"meta":2863,"style":2863},"{\n  \"nitro\": {\n    \"storage\": {\n      \"shield\": {\n        \"driver\": \"redis\",\n        \"host\": \"localhost\",\n        \"port\": 6379\n      }\n    }\n  }\n}\n",[4486],{"type":2919,"tag":3076,"props":4487,"children":4488},{"__ignoreMap":2863},[4489,4496,4519,4542,4565,4601,4638,4663,4670,4677,4684],{"type":2919,"tag":3236,"props":4490,"children":4491},{"class":3238,"line":2891},[4492],{"type":2919,"tag":3236,"props":4493,"children":4494},{"style":3402},[4495],{"type":2924,"value":3405},{"type":2919,"tag":3236,"props":4497,"children":4498},{"class":3238,"line":2887},[4499,4503,4507,4511,4515],{"type":2919,"tag":3236,"props":4500,"children":4501},{"style":3402},[4502],{"type":2924,"value":4336},{"type":2919,"tag":3236,"props":4504,"children":4505},{"style":4339},[4506],{"type":2924,"value":4342},{"type":2919,"tag":3236,"props":4508,"children":4509},{"style":3402},[4510],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":4512,"children":4513},{"style":3402},[4514],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":4516,"children":4517},{"style":3402},[4518],{"type":2924,"value":3464},{"type":2919,"tag":3236,"props":4520,"children":4521},{"class":3238,"line":3268},[4522,4526,4530,4534,4538],{"type":2919,"tag":3236,"props":4523,"children":4524},{"style":3402},[4525],{"type":2924,"value":4362},{"type":2919,"tag":3236,"props":4527,"children":4528},{"style":3251},[4529],{"type":2924,"value":4367},{"type":2919,"tag":3236,"props":4531,"children":4532},{"style":3402},[4533],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":4535,"children":4536},{"style":3402},[4537],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":4539,"children":4540},{"style":3402},[4541],{"type":2924,"value":3464},{"type":2919,"tag":3236,"props":4543,"children":4544},{"class":3238,"line":3277},[4545,4549,4553,4557,4561],{"type":2919,"tag":3236,"props":4546,"children":4547},{"style":3402},[4548],{"type":2924,"value":4387},{"type":2919,"tag":3236,"props":4550,"children":4551},{"style":3622},[4552],{"type":2924,"value":4310},{"type":2919,"tag":3236,"props":4554,"children":4555},{"style":3402},[4556],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":4558,"children":4559},{"style":3402},[4560],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":4562,"children":4563},{"style":3402},[4564],{"type":2924,"value":3464},{"type":2919,"tag":3236,"props":4566,"children":4567},{"class":3238,"line":2883},[4568,4572,4576,4580,4584,4588,4593,4597],{"type":2919,"tag":3236,"props":4569,"children":4570},{"style":3402},[4571],{"type":2924,"value":4419},{"type":2919,"tag":3236,"props":4573,"children":4574},{"style":3411},[4575],{"type":2924,"value":4424},{"type":2919,"tag":3236,"props":4577,"children":4578},{"style":3402},[4579],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":4581,"children":4582},{"style":3402},[4583],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":4585,"children":4586},{"style":3402},[4587],{"type":2924,"value":3890},{"type":2919,"tag":3236,"props":4589,"children":4590},{"style":3257},[4591],{"type":2924,"value":4592},"redis",{"type":2919,"tag":3236,"props":4594,"children":4595},{"style":3402},[4596],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":4598,"children":4599},{"style":3402},[4600],{"type":2924,"value":3447},{"type":2919,"tag":3236,"props":4602,"children":4603},{"class":3238,"line":3302},[4604,4608,4613,4617,4621,4625,4630,4634],{"type":2919,"tag":3236,"props":4605,"children":4606},{"style":3402},[4607],{"type":2924,"value":4419},{"type":2919,"tag":3236,"props":4609,"children":4610},{"style":3411},[4611],{"type":2924,"value":4612},"host",{"type":2919,"tag":3236,"props":4614,"children":4615},{"style":3402},[4616],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":4618,"children":4619},{"style":3402},[4620],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":4622,"children":4623},{"style":3402},[4624],{"type":2924,"value":3890},{"type":2919,"tag":3236,"props":4626,"children":4627},{"style":3257},[4628],{"type":2924,"value":4629},"localhost",{"type":2919,"tag":3236,"props":4631,"children":4632},{"style":3402},[4633],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":4635,"children":4636},{"style":3402},[4637],{"type":2924,"value":3447},{"type":2919,"tag":3236,"props":4639,"children":4640},{"class":3238,"line":3310},[4641,4645,4650,4654,4658],{"type":2919,"tag":3236,"props":4642,"children":4643},{"style":3402},[4644],{"type":2924,"value":4419},{"type":2919,"tag":3236,"props":4646,"children":4647},{"style":3411},[4648],{"type":2924,"value":4649},"port",{"type":2919,"tag":3236,"props":4651,"children":4652},{"style":3402},[4653],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":4655,"children":4656},{"style":3402},[4657],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":4659,"children":4660},{"style":3622},[4661],{"type":2924,"value":4662}," 6379\n",{"type":2919,"tag":3236,"props":4664,"children":4665},{"class":3238,"line":3319},[4666],{"type":2919,"tag":3236,"props":4667,"children":4668},{"style":3402},[4669],{"type":2924,"value":4454},{"type":2919,"tag":3236,"props":4671,"children":4672},{"class":3238,"line":2908},[4673],{"type":2919,"tag":3236,"props":4674,"children":4675},{"style":3402},[4676],{"type":2924,"value":4462},{"type":2919,"tag":3236,"props":4678,"children":4679},{"class":3238,"line":3515},[4680],{"type":2919,"tag":3236,"props":4681,"children":4682},{"style":3402},[4683],{"type":2924,"value":4125},{"type":2919,"tag":3236,"props":4685,"children":4686},{"class":3238,"line":3524},[4687],{"type":2919,"tag":3236,"props":4688,"children":4689},{"style":3402},[4690],{"type":2924,"value":4133},{"type":2919,"tag":3212,"props":4692,"children":4694},{"id":4693},"_4-schedule-bundled-cleanup-tasks-in-nuxtconfigts",[4695,4697],{"type":2924,"value":4696},"4. Schedule bundled cleanup tasks in ",{"type":2919,"tag":3076,"props":4698,"children":4700},{"className":4699},[],[4701],{"type":2924,"value":233},{"type":2919,"tag":2926,"props":4703,"children":4704},{},[4705,4707,4712,4714,4720,4722,4727,4729,4735,4737,4743,4745,4751,4753,4758,4760,4766],{"type":2924,"value":4706},"The module registers two Nitro tasks for you: ",{"type":2919,"tag":3076,"props":4708,"children":4710},{"className":4709},[],[4711],{"type":2924,"value":3173},{"type":2924,"value":4713}," (removes expired ",{"type":2919,"tag":3076,"props":4715,"children":4717},{"className":4716},[],[4718],{"type":2924,"value":4719},"ban:*",{"type":2924,"value":4721}," keys) and ",{"type":2919,"tag":3076,"props":4723,"children":4725},{"className":4724},[],[4726],{"type":2924,"value":3181},{"type":2924,"value":4728}," (removes stale ",{"type":2919,"tag":3076,"props":4730,"children":4732},{"className":4731},[],[4733],{"type":2924,"value":4734},"ip:*",{"type":2924,"value":4736}," keys using ",{"type":2919,"tag":3076,"props":4738,"children":4740},{"className":4739},[],[4741],{"type":2924,"value":4742},"ipTTL",{"type":2924,"value":4744},"). Turn on Nitro tasks and add ",{"type":2919,"tag":3076,"props":4746,"children":4748},{"className":4747},[],[4749],{"type":2924,"value":4750},"scheduledTasks",{"type":2924,"value":4752}," so they run on a cadence you choose. You do ",{"type":2919,"tag":3014,"props":4754,"children":4755},{},[4756],{"type":2924,"value":4757},"not",{"type":2924,"value":4759}," need files under ",{"type":2919,"tag":3076,"props":4761,"children":4763},{"className":4762},[],[4764],{"type":2924,"value":4765},"server\u002Ftasks\u002F",{"type":2924,"value":4767}," for this default setup.",{"type":2919,"tag":3226,"props":4769,"children":4771},{"className":4315,"code":4770,"language":4317,"meta":2863,"style":2863},"{\n  \"nitro\": {\n    \"experimental\": {\n      \"tasks\": true\n    },\n    \"scheduledTasks\": {\n      \"*\u002F15 * * * *\": [\"shield:cleanBans\"],\n      \"0 0 * * *\": [\"shield:cleanIpData\"]\n    }\n  }\n}\n",[4772],{"type":2919,"tag":3076,"props":4773,"children":4774},{"__ignoreMap":2863},[4775,4782,4805,4829,4854,4861,4884,4925,4966,4973,4980],{"type":2919,"tag":3236,"props":4776,"children":4777},{"class":3238,"line":2891},[4778],{"type":2919,"tag":3236,"props":4779,"children":4780},{"style":3402},[4781],{"type":2924,"value":3405},{"type":2919,"tag":3236,"props":4783,"children":4784},{"class":3238,"line":2887},[4785,4789,4793,4797,4801],{"type":2919,"tag":3236,"props":4786,"children":4787},{"style":3402},[4788],{"type":2924,"value":4336},{"type":2919,"tag":3236,"props":4790,"children":4791},{"style":4339},[4792],{"type":2924,"value":4342},{"type":2919,"tag":3236,"props":4794,"children":4795},{"style":3402},[4796],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":4798,"children":4799},{"style":3402},[4800],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":4802,"children":4803},{"style":3402},[4804],{"type":2924,"value":3464},{"type":2919,"tag":3236,"props":4806,"children":4807},{"class":3238,"line":3268},[4808,4812,4817,4821,4825],{"type":2919,"tag":3236,"props":4809,"children":4810},{"style":3402},[4811],{"type":2924,"value":4362},{"type":2919,"tag":3236,"props":4813,"children":4814},{"style":3251},[4815],{"type":2924,"value":4816},"experimental",{"type":2919,"tag":3236,"props":4818,"children":4819},{"style":3402},[4820],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":4822,"children":4823},{"style":3402},[4824],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":4826,"children":4827},{"style":3402},[4828],{"type":2924,"value":3464},{"type":2919,"tag":3236,"props":4830,"children":4831},{"class":3238,"line":3277},[4832,4836,4841,4845,4849],{"type":2919,"tag":3236,"props":4833,"children":4834},{"style":3402},[4835],{"type":2924,"value":4387},{"type":2919,"tag":3236,"props":4837,"children":4838},{"style":3622},[4839],{"type":2924,"value":4840},"tasks",{"type":2919,"tag":3236,"props":4842,"children":4843},{"style":3402},[4844],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":4846,"children":4847},{"style":3402},[4848],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":4850,"children":4851},{"style":3402},[4852],{"type":2924,"value":4853}," true\n",{"type":2919,"tag":3236,"props":4855,"children":4856},{"class":3238,"line":2883},[4857],{"type":2919,"tag":3236,"props":4858,"children":4859},{"style":3402},[4860],{"type":2924,"value":3512},{"type":2919,"tag":3236,"props":4862,"children":4863},{"class":3238,"line":3302},[4864,4868,4872,4876,4880],{"type":2919,"tag":3236,"props":4865,"children":4866},{"style":3402},[4867],{"type":2924,"value":4362},{"type":2919,"tag":3236,"props":4869,"children":4870},{"style":3251},[4871],{"type":2924,"value":4750},{"type":2919,"tag":3236,"props":4873,"children":4874},{"style":3402},[4875],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":4877,"children":4878},{"style":3402},[4879],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":4881,"children":4882},{"style":3402},[4883],{"type":2924,"value":3464},{"type":2919,"tag":3236,"props":4885,"children":4886},{"class":3238,"line":3310},[4887,4891,4896,4900,4904,4908,4912,4916,4920],{"type":2919,"tag":3236,"props":4888,"children":4889},{"style":3402},[4890],{"type":2924,"value":4387},{"type":2919,"tag":3236,"props":4892,"children":4893},{"style":3622},[4894],{"type":2924,"value":4895},"*\u002F15 * * * *",{"type":2919,"tag":3236,"props":4897,"children":4898},{"style":3402},[4899],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":4901,"children":4902},{"style":3402},[4903],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":4905,"children":4906},{"style":3402},[4907],{"type":2924,"value":3424},{"type":2919,"tag":3236,"props":4909,"children":4910},{"style":3402},[4911],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":4913,"children":4914},{"style":3257},[4915],{"type":2924,"value":3173},{"type":2919,"tag":3236,"props":4917,"children":4918},{"style":3402},[4919],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":4921,"children":4922},{"style":3402},[4923],{"type":2924,"value":4924},"],\n",{"type":2919,"tag":3236,"props":4926,"children":4927},{"class":3238,"line":3319},[4928,4932,4937,4941,4945,4949,4953,4957,4961],{"type":2919,"tag":3236,"props":4929,"children":4930},{"style":3402},[4931],{"type":2924,"value":4387},{"type":2919,"tag":3236,"props":4933,"children":4934},{"style":3622},[4935],{"type":2924,"value":4936},"0 0 * * *",{"type":2919,"tag":3236,"props":4938,"children":4939},{"style":3402},[4940],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":4942,"children":4943},{"style":3402},[4944],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":4946,"children":4947},{"style":3402},[4948],{"type":2924,"value":3424},{"type":2919,"tag":3236,"props":4950,"children":4951},{"style":3402},[4952],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":4954,"children":4955},{"style":3257},[4956],{"type":2924,"value":3181},{"type":2919,"tag":3236,"props":4958,"children":4959},{"style":3402},[4960],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":4962,"children":4963},{"style":3402},[4964],{"type":2924,"value":4965},"]\n",{"type":2919,"tag":3236,"props":4967,"children":4968},{"class":3238,"line":2908},[4969],{"type":2919,"tag":3236,"props":4970,"children":4971},{"style":3402},[4972],{"type":2924,"value":4462},{"type":2919,"tag":3236,"props":4974,"children":4975},{"class":3238,"line":3515},[4976],{"type":2919,"tag":3236,"props":4977,"children":4978},{"style":3402},[4979],{"type":2924,"value":4125},{"type":2919,"tag":3236,"props":4981,"children":4982},{"class":3238,"line":3524},[4983],{"type":2919,"tag":3236,"props":4984,"children":4985},{"style":3402},[4986],{"type":2924,"value":4133},{"type":2919,"tag":2926,"props":4988,"children":4989},{},[4990],{"type":2924,"value":4991},"Cron expressions are examples only: for instance, clean expired bans every 15 minutes and IP tracking data daily at midnight.",{"type":2919,"tag":3212,"props":4993,"children":4995},{"id":4994},"_5-optional-custom-cleanup-task-implementations",[4996],{"type":2924,"value":4997},"5. Optional: custom cleanup task implementations",{"type":2919,"tag":2926,"props":4999,"children":5000},{},[5001,5003,5008,5010,5015],{"type":2924,"value":5002},"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":2919,"tag":3014,"props":5004,"children":5005},{},[5006],{"type":2924,"value":5007},"another",{"type":2924,"value":5009}," task name and point ",{"type":2919,"tag":3076,"props":5011,"children":5013},{"className":5012},[],[5014],{"type":2924,"value":4750},{"type":2924,"value":5016}," at that name instead.",{"type":2919,"tag":5018,"props":5019,"children":5021},"h4",{"id":5020},"a-task-for-cleaning-expired-bans",[5022],{"type":2924,"value":5023},"a) Task for cleaning expired bans",{"type":2919,"tag":2926,"props":5025,"children":5026},{},[5027,5029,5035],{"type":2924,"value":5028},"Removes ban entries (",{"type":2919,"tag":3076,"props":5030,"children":5032},{"className":5031},[],[5033],{"type":2924,"value":5034},"ban:xxx.xxx.xxx.xxx",{"type":2924,"value":5036},") after the ban timestamp has passed.",{"type":2919,"tag":2926,"props":5038,"children":5039},{},[5040,5042,5048],{"type":2924,"value":5041},"Example ",{"type":2919,"tag":3076,"props":5043,"children":5045},{"className":5044},[],[5046],{"type":2924,"value":5047},"server\u002Ftasks\u002Fshield\u002FcleanBans.ts",{"type":2924,"value":5049}," (task name must match what you schedule):",{"type":2919,"tag":3226,"props":5051,"children":5055},{"className":5052,"code":5053,"language":5054,"meta":2863,"style":2863},"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",[5056],{"type":2919,"tag":3076,"props":5057,"children":5058},{"__ignoreMap":2863},[5059,5110,5117,5141,5157,5190,5219,5226,5248,5300,5307,5315,5374,5381,5407,5448,5499,5534,5571,5584,5591,5598,5660,5698,5705],{"type":2919,"tag":3236,"props":5060,"children":5061},{"class":3238,"line":2891},[5062,5067,5072,5077,5082,5087,5091,5096,5100,5105],{"type":2919,"tag":3236,"props":5063,"children":5064},{"style":3379},[5065],{"type":2924,"value":5066},"import",{"type":2919,"tag":3236,"props":5068,"children":5069},{"style":3402},[5070],{"type":2924,"value":5071}," {",{"type":2919,"tag":3236,"props":5073,"children":5074},{"style":3396},[5075],{"type":2924,"value":5076}," isActualBanTimestampExpired",{"type":2919,"tag":3236,"props":5078,"children":5079},{"style":3402},[5080],{"type":2924,"value":5081}," }",{"type":2919,"tag":3236,"props":5083,"children":5084},{"style":3379},[5085],{"type":2924,"value":5086}," from",{"type":2919,"tag":3236,"props":5088,"children":5089},{"style":3402},[5090],{"type":2924,"value":3890},{"type":2919,"tag":3236,"props":5092,"children":5093},{"style":3257},[5094],{"type":2924,"value":5095},"#imports",{"type":2919,"tag":3236,"props":5097,"children":5098},{"style":3402},[5099],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":5101,"children":5102},{"style":3402},[5103],{"type":2924,"value":5104},";",{"type":2919,"tag":3236,"props":5106,"children":5107},{"style":3242},[5108],{"type":2924,"value":5109}," \u002F\u002F Auto-imported utility from nuxt-api-shield\n",{"type":2919,"tag":3236,"props":5111,"children":5112},{"class":3238,"line":2887},[5113],{"type":2919,"tag":3236,"props":5114,"children":5115},{"emptyLinePlaceholder":1196},[5116],{"type":2924,"value":3274},{"type":2919,"tag":3236,"props":5118,"children":5119},{"class":3238,"line":3268},[5120,5124,5128,5133,5137],{"type":2919,"tag":3236,"props":5121,"children":5122},{"style":3379},[5123],{"type":2924,"value":3382},{"type":2919,"tag":3236,"props":5125,"children":5126},{"style":3379},[5127],{"type":2924,"value":3387},{"type":2919,"tag":3236,"props":5129,"children":5130},{"style":3390},[5131],{"type":2924,"value":5132}," defineTask",{"type":2919,"tag":3236,"props":5134,"children":5135},{"style":3396},[5136],{"type":2924,"value":3399},{"type":2919,"tag":3236,"props":5138,"children":5139},{"style":3402},[5140],{"type":2924,"value":3405},{"type":2919,"tag":3236,"props":5142,"children":5143},{"class":3238,"line":3277},[5144,5149,5153],{"type":2919,"tag":3236,"props":5145,"children":5146},{"style":3411},[5147],{"type":2924,"value":5148},"  meta",{"type":2919,"tag":3236,"props":5150,"children":5151},{"style":3402},[5152],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":5154,"children":5155},{"style":3402},[5156],{"type":2924,"value":3464},{"type":2919,"tag":3236,"props":5158,"children":5159},{"class":3238,"line":2883},[5160,5165,5169,5173,5177,5181,5185],{"type":2919,"tag":3236,"props":5161,"children":5162},{"style":3411},[5163],{"type":2924,"value":5164},"    name",{"type":2919,"tag":3236,"props":5166,"children":5167},{"style":3402},[5168],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":5170,"children":5171},{"style":3402},[5172],{"type":2924,"value":3890},{"type":2919,"tag":3236,"props":5174,"children":5175},{"style":3257},[5176],{"type":2924,"value":3173},{"type":2919,"tag":3236,"props":5178,"children":5179},{"style":3402},[5180],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":5182,"children":5183},{"style":3402},[5184],{"type":2924,"value":3630},{"type":2919,"tag":3236,"props":5186,"children":5187},{"style":3242},[5188],{"type":2924,"value":5189}," \u002F\u002F Match the name in scheduledTasks\n",{"type":2919,"tag":3236,"props":5191,"children":5192},{"class":3238,"line":3302},[5193,5198,5202,5206,5211,5215],{"type":2919,"tag":3236,"props":5194,"children":5195},{"style":3411},[5196],{"type":2924,"value":5197},"    description",{"type":2919,"tag":3236,"props":5199,"children":5200},{"style":3402},[5201],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":5203,"children":5204},{"style":3402},[5205],{"type":2924,"value":3890},{"type":2919,"tag":3236,"props":5207,"children":5208},{"style":3257},[5209],{"type":2924,"value":5210},"Clean expired bans from nuxt-api-shield storage.",{"type":2919,"tag":3236,"props":5212,"children":5213},{"style":3402},[5214],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":5216,"children":5217},{"style":3402},[5218],{"type":2924,"value":3447},{"type":2919,"tag":3236,"props":5220,"children":5221},{"class":3238,"line":3310},[5222],{"type":2919,"tag":3236,"props":5223,"children":5224},{"style":3402},[5225],{"type":2924,"value":3706},{"type":2919,"tag":3236,"props":5227,"children":5228},{"class":3238,"line":3319},[5229,5234,5239,5244],{"type":2919,"tag":3236,"props":5230,"children":5231},{"style":4339},[5232],{"type":2924,"value":5233},"  async",{"type":2919,"tag":3236,"props":5235,"children":5236},{"style":3411},[5237],{"type":2924,"value":5238}," run",{"type":2919,"tag":3236,"props":5240,"children":5241},{"style":3402},[5242],{"type":2924,"value":5243},"()",{"type":2919,"tag":3236,"props":5245,"children":5246},{"style":3402},[5247],{"type":2924,"value":3464},{"type":2919,"tag":3236,"props":5249,"children":5250},{"class":3238,"line":2908},[5251,5256,5261,5266,5271,5275,5279,5283,5287,5291,5295],{"type":2919,"tag":3236,"props":5252,"children":5253},{"style":4339},[5254],{"type":2924,"value":5255},"    const",{"type":2919,"tag":3236,"props":5257,"children":5258},{"style":3396},[5259],{"type":2924,"value":5260}," shieldStorage",{"type":2919,"tag":3236,"props":5262,"children":5263},{"style":3402},[5264],{"type":2924,"value":5265}," =",{"type":2919,"tag":3236,"props":5267,"children":5268},{"style":3390},[5269],{"type":2924,"value":5270}," useStorage",{"type":2919,"tag":3236,"props":5272,"children":5273},{"style":3411},[5274],{"type":2924,"value":3399},{"type":2919,"tag":3236,"props":5276,"children":5277},{"style":3402},[5278],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":5280,"children":5281},{"style":3257},[5282],{"type":2924,"value":4310},{"type":2919,"tag":3236,"props":5284,"children":5285},{"style":3402},[5286],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":5288,"children":5289},{"style":3411},[5290],{"type":2924,"value":3720},{"type":2919,"tag":3236,"props":5292,"children":5293},{"style":3402},[5294],{"type":2924,"value":5104},{"type":2919,"tag":3236,"props":5296,"children":5297},{"style":3242},[5298],{"type":2924,"value":5299}," \u002F\u002F Use your configured storage name\n",{"type":2919,"tag":3236,"props":5301,"children":5302},{"class":3238,"line":3515},[5303],{"type":2919,"tag":3236,"props":5304,"children":5305},{"emptyLinePlaceholder":1196},[5306],{"type":2924,"value":3274},{"type":2919,"tag":3236,"props":5308,"children":5309},{"class":3238,"line":3524},[5310],{"type":2919,"tag":3236,"props":5311,"children":5312},{"style":3242},[5313],{"type":2924,"value":5314},"    \u002F\u002F Only fetch keys that start with the 'ban:' prefix\n",{"type":2919,"tag":3236,"props":5316,"children":5317},{"class":3238,"line":3533},[5318,5322,5327,5331,5336,5340,5344,5349,5353,5357,5362,5366,5370],{"type":2919,"tag":3236,"props":5319,"children":5320},{"style":4339},[5321],{"type":2924,"value":5255},{"type":2919,"tag":3236,"props":5323,"children":5324},{"style":3396},[5325],{"type":2924,"value":5326}," banKeys",{"type":2919,"tag":3236,"props":5328,"children":5329},{"style":3402},[5330],{"type":2924,"value":5265},{"type":2919,"tag":3236,"props":5332,"children":5333},{"style":3379},[5334],{"type":2924,"value":5335}," await",{"type":2919,"tag":3236,"props":5337,"children":5338},{"style":3396},[5339],{"type":2924,"value":5260},{"type":2919,"tag":3236,"props":5341,"children":5342},{"style":3402},[5343],{"type":2924,"value":4281},{"type":2919,"tag":3236,"props":5345,"children":5346},{"style":3390},[5347],{"type":2924,"value":5348},"getKeys",{"type":2919,"tag":3236,"props":5350,"children":5351},{"style":3411},[5352],{"type":2924,"value":3399},{"type":2919,"tag":3236,"props":5354,"children":5355},{"style":3402},[5356],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":5358,"children":5359},{"style":3257},[5360],{"type":2924,"value":5361},"ban:",{"type":2919,"tag":3236,"props":5363,"children":5364},{"style":3402},[5365],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":5367,"children":5368},{"style":3411},[5369],{"type":2924,"value":3720},{"type":2919,"tag":3236,"props":5371,"children":5372},{"style":3402},[5373],{"type":2924,"value":3725},{"type":2919,"tag":3236,"props":5375,"children":5376},{"class":3238,"line":3542},[5377],{"type":2919,"tag":3236,"props":5378,"children":5379},{"emptyLinePlaceholder":1196},[5380],{"type":2924,"value":3274},{"type":2919,"tag":3236,"props":5382,"children":5383},{"class":3238,"line":3551},[5384,5389,5394,5398,5403],{"type":2919,"tag":3236,"props":5385,"children":5386},{"style":4339},[5387],{"type":2924,"value":5388},"    let",{"type":2919,"tag":3236,"props":5390,"children":5391},{"style":3396},[5392],{"type":2924,"value":5393}," cleanedCount",{"type":2919,"tag":3236,"props":5395,"children":5396},{"style":3402},[5397],{"type":2924,"value":5265},{"type":2919,"tag":3236,"props":5399,"children":5400},{"style":3622},[5401],{"type":2924,"value":5402}," 0",{"type":2919,"tag":3236,"props":5404,"children":5405},{"style":3402},[5406],{"type":2924,"value":3725},{"type":2919,"tag":3236,"props":5408,"children":5409},{"class":3238,"line":3560},[5410,5415,5420,5425,5430,5435,5439,5444],{"type":2919,"tag":3236,"props":5411,"children":5412},{"style":3379},[5413],{"type":2924,"value":5414},"    for",{"type":2919,"tag":3236,"props":5416,"children":5417},{"style":3411},[5418],{"type":2924,"value":5419}," (",{"type":2919,"tag":3236,"props":5421,"children":5422},{"style":4339},[5423],{"type":2924,"value":5424},"const",{"type":2919,"tag":3236,"props":5426,"children":5427},{"style":3396},[5428],{"type":2924,"value":5429}," key",{"type":2919,"tag":3236,"props":5431,"children":5432},{"style":3402},[5433],{"type":2924,"value":5434}," of",{"type":2919,"tag":3236,"props":5436,"children":5437},{"style":3396},[5438],{"type":2924,"value":5326},{"type":2919,"tag":3236,"props":5440,"children":5441},{"style":3411},[5442],{"type":2924,"value":5443},") ",{"type":2919,"tag":3236,"props":5445,"children":5446},{"style":3402},[5447],{"type":2924,"value":3405},{"type":2919,"tag":3236,"props":5449,"children":5450},{"class":3238,"line":3569},[5451,5456,5461,5465,5469,5473,5477,5482,5486,5491,5495],{"type":2919,"tag":3236,"props":5452,"children":5453},{"style":4339},[5454],{"type":2924,"value":5455},"      const",{"type":2919,"tag":3236,"props":5457,"children":5458},{"style":3396},[5459],{"type":2924,"value":5460}," bannedUntilRaw",{"type":2919,"tag":3236,"props":5462,"children":5463},{"style":3402},[5464],{"type":2924,"value":5265},{"type":2919,"tag":3236,"props":5466,"children":5467},{"style":3379},[5468],{"type":2924,"value":5335},{"type":2919,"tag":3236,"props":5470,"children":5471},{"style":3396},[5472],{"type":2924,"value":5260},{"type":2919,"tag":3236,"props":5474,"children":5475},{"style":3402},[5476],{"type":2924,"value":4281},{"type":2919,"tag":3236,"props":5478,"children":5479},{"style":3390},[5480],{"type":2924,"value":5481},"getItem",{"type":2919,"tag":3236,"props":5483,"children":5484},{"style":3411},[5485],{"type":2924,"value":3399},{"type":2919,"tag":3236,"props":5487,"children":5488},{"style":3396},[5489],{"type":2924,"value":5490},"key",{"type":2919,"tag":3236,"props":5492,"children":5493},{"style":3411},[5494],{"type":2924,"value":3720},{"type":2919,"tag":3236,"props":5496,"children":5497},{"style":3402},[5498],{"type":2924,"value":3725},{"type":2919,"tag":3236,"props":5500,"children":5501},{"class":3238,"line":3577},[5502,5507,5511,5516,5520,5525,5530],{"type":2919,"tag":3236,"props":5503,"children":5504},{"style":3379},[5505],{"type":2924,"value":5506},"      if",{"type":2919,"tag":3236,"props":5508,"children":5509},{"style":3411},[5510],{"type":2924,"value":5419},{"type":2919,"tag":3236,"props":5512,"children":5513},{"style":3390},[5514],{"type":2924,"value":5515},"isActualBanTimestampExpired",{"type":2919,"tag":3236,"props":5517,"children":5518},{"style":3411},[5519],{"type":2924,"value":3399},{"type":2919,"tag":3236,"props":5521,"children":5522},{"style":3396},[5523],{"type":2924,"value":5524},"bannedUntilRaw",{"type":2919,"tag":3236,"props":5526,"children":5527},{"style":3411},[5528],{"type":2924,"value":5529},")) ",{"type":2919,"tag":3236,"props":5531,"children":5532},{"style":3402},[5533],{"type":2924,"value":3405},{"type":2919,"tag":3236,"props":5535,"children":5536},{"class":3238,"line":3586},[5537,5542,5546,5550,5555,5559,5563,5567],{"type":2919,"tag":3236,"props":5538,"children":5539},{"style":3379},[5540],{"type":2924,"value":5541},"        await",{"type":2919,"tag":3236,"props":5543,"children":5544},{"style":3396},[5545],{"type":2924,"value":5260},{"type":2919,"tag":3236,"props":5547,"children":5548},{"style":3402},[5549],{"type":2924,"value":4281},{"type":2919,"tag":3236,"props":5551,"children":5552},{"style":3390},[5553],{"type":2924,"value":5554},"removeItem",{"type":2919,"tag":3236,"props":5556,"children":5557},{"style":3411},[5558],{"type":2924,"value":3399},{"type":2919,"tag":3236,"props":5560,"children":5561},{"style":3396},[5562],{"type":2924,"value":5490},{"type":2919,"tag":3236,"props":5564,"children":5565},{"style":3411},[5566],{"type":2924,"value":3720},{"type":2919,"tag":3236,"props":5568,"children":5569},{"style":3402},[5570],{"type":2924,"value":3725},{"type":2919,"tag":3236,"props":5572,"children":5573},{"class":3238,"line":3595},[5574,5579],{"type":2919,"tag":3236,"props":5575,"children":5576},{"style":3396},[5577],{"type":2924,"value":5578},"        cleanedCount",{"type":2919,"tag":3236,"props":5580,"children":5581},{"style":3402},[5582],{"type":2924,"value":5583},"++;\n",{"type":2919,"tag":3236,"props":5585,"children":5586},{"class":3238,"line":3609},[5587],{"type":2919,"tag":3236,"props":5588,"children":5589},{"style":3402},[5590],{"type":2924,"value":4454},{"type":2919,"tag":3236,"props":5592,"children":5593},{"class":3238,"line":3638},[5594],{"type":2919,"tag":3236,"props":5595,"children":5596},{"style":3402},[5597],{"type":2924,"value":4462},{"type":2919,"tag":3236,"props":5599,"children":5600},{"class":3238,"line":3655},[5601,5606,5610,5615,5619,5624,5629,5634,5639,5643,5648,5652,5656],{"type":2919,"tag":3236,"props":5602,"children":5603},{"style":3396},[5604],{"type":2924,"value":5605},"    console",{"type":2919,"tag":3236,"props":5607,"children":5608},{"style":3402},[5609],{"type":2924,"value":4281},{"type":2919,"tag":3236,"props":5611,"children":5612},{"style":3390},[5613],{"type":2924,"value":5614},"log",{"type":2919,"tag":3236,"props":5616,"children":5617},{"style":3411},[5618],{"type":2924,"value":3399},{"type":2919,"tag":3236,"props":5620,"children":5621},{"style":3402},[5622],{"type":2924,"value":5623},"`",{"type":2919,"tag":3236,"props":5625,"children":5626},{"style":3257},[5627],{"type":2924,"value":5628},"[nuxt-api-shield] Cleaned ",{"type":2919,"tag":3236,"props":5630,"children":5631},{"style":3402},[5632],{"type":2924,"value":5633},"${",{"type":2919,"tag":3236,"props":5635,"children":5636},{"style":3396},[5637],{"type":2924,"value":5638},"cleanedCount",{"type":2919,"tag":3236,"props":5640,"children":5641},{"style":3402},[5642],{"type":2924,"value":3715},{"type":2919,"tag":3236,"props":5644,"children":5645},{"style":3257},[5646],{"type":2924,"value":5647}," expired ban(s).",{"type":2919,"tag":3236,"props":5649,"children":5650},{"style":3402},[5651],{"type":2924,"value":5623},{"type":2919,"tag":3236,"props":5653,"children":5654},{"style":3411},[5655],{"type":2924,"value":3720},{"type":2919,"tag":3236,"props":5657,"children":5658},{"style":3402},[5659],{"type":2924,"value":3725},{"type":2919,"tag":3236,"props":5661,"children":5662},{"class":3238,"line":3664},[5663,5668,5672,5677,5681,5685,5689,5693],{"type":2919,"tag":3236,"props":5664,"children":5665},{"style":3379},[5666],{"type":2924,"value":5667},"    return",{"type":2919,"tag":3236,"props":5669,"children":5670},{"style":3402},[5671],{"type":2924,"value":5071},{"type":2919,"tag":3236,"props":5673,"children":5674},{"style":3411},[5675],{"type":2924,"value":5676}," result",{"type":2919,"tag":3236,"props":5678,"children":5679},{"style":3402},[5680],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":5682,"children":5683},{"style":3402},[5684],{"type":2924,"value":5071},{"type":2919,"tag":3236,"props":5686,"children":5687},{"style":3396},[5688],{"type":2924,"value":5393},{"type":2919,"tag":3236,"props":5690,"children":5691},{"style":3402},[5692],{"type":2924,"value":5081},{"type":2919,"tag":3236,"props":5694,"children":5695},{"style":3402},[5696],{"type":2924,"value":5697}," };\n",{"type":2919,"tag":3236,"props":5699,"children":5700},{"class":3238,"line":3692},[5701],{"type":2919,"tag":3236,"props":5702,"children":5703},{"style":3402},[5704],{"type":2924,"value":3706},{"type":2919,"tag":3236,"props":5706,"children":5707},{"class":3238,"line":3700},[5708,5712,5716],{"type":2919,"tag":3236,"props":5709,"children":5710},{"style":3402},[5711],{"type":2924,"value":3715},{"type":2919,"tag":3236,"props":5713,"children":5714},{"style":3396},[5715],{"type":2924,"value":3720},{"type":2919,"tag":3236,"props":5717,"children":5718},{"style":3402},[5719],{"type":2924,"value":3725},{"type":2919,"tag":2926,"props":5721,"children":5722},{},[5723,5724,5729,5731,5736,5738,5743],{"type":2924,"value":4152},{"type":2919,"tag":3076,"props":5725,"children":5727},{"className":5726},[],[5728],{"type":2924,"value":5515},{"type":2924,"value":5730}," utility is provided by ",{"type":2919,"tag":3076,"props":5732,"children":5734},{"className":5733},[],[5735],{"type":2924,"value":2860},{"type":2924,"value":5737}," and should be available via ",{"type":2919,"tag":3076,"props":5739,"children":5741},{"className":5740},[],[5742],{"type":2924,"value":5095},{"type":2924,"value":4281},{"type":2919,"tag":5018,"props":5745,"children":5747},{"id":5746},"b-task-for-cleaning-old-ip-tracking-data",[5748],{"type":2924,"value":5749},"b) Task for cleaning old IP tracking data",{"type":2919,"tag":2926,"props":5751,"children":5752},{},[5753,5755,5761,5763,5769,5771,5777],{"type":2924,"value":5754},"Cleans IP tracking entries (",{"type":2919,"tag":3076,"props":5756,"children":5758},{"className":5757},[],[5759],{"type":2924,"value":5760},"ip:xxx.xxx.xxx.xxx",{"type":2924,"value":5762},") whose ",{"type":2919,"tag":3076,"props":5764,"children":5766},{"className":5765},[],[5767],{"type":2924,"value":5768},"time",{"type":2924,"value":5770}," is older than ",{"type":2919,"tag":3076,"props":5772,"children":5774},{"className":5773},[],[5775],{"type":2924,"value":5776},"nuxtApiShield.ipTTL",{"type":2924,"value":5778}," (default 7 days), and drops malformed entries. That keeps storage from growing with one-off IPs that were never banned.",{"type":2919,"tag":2926,"props":5780,"children":5781},{},[5782,5783,5789],{"type":2924,"value":5041},{"type":2919,"tag":3076,"props":5784,"children":5786},{"className":5785},[],[5787],{"type":2924,"value":5788},"server\u002Ftasks\u002Fshield\u002FcleanIpData.ts",{"type":2924,"value":3419},{"type":2919,"tag":3226,"props":5791,"children":5793},{"className":5052,"code":5792,"language":5054,"meta":2863,"style":2863},"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",[5794],{"type":2919,"tag":3076,"props":5795,"children":5796},{"__ignoreMap":2863},[5797,5842,5882,5889,5912,5927,5958,5986,5993,6012,6055,6099,6106,6114,6146,6153,6201,6222,6238,6250,6317,6324,6357,6364,6421,6459,6482,6490,6526,6599,6607,6616,6681,6733,6770,6783,6792,6810,6819,6855,6867,6875,6883,6891,6911,6946,6959,6995,7003],{"type":2919,"tag":3236,"props":5798,"children":5799},{"class":3238,"line":2891},[5800,5804,5809,5813,5818,5822,5826,5830,5834,5838],{"type":2919,"tag":3236,"props":5801,"children":5802},{"style":3379},[5803],{"type":2924,"value":5066},{"type":2919,"tag":3236,"props":5805,"children":5806},{"style":3379},[5807],{"type":2924,"value":5808}," type",{"type":2919,"tag":3236,"props":5810,"children":5811},{"style":3402},[5812],{"type":2924,"value":5071},{"type":2919,"tag":3236,"props":5814,"children":5815},{"style":3396},[5816],{"type":2924,"value":5817}," RateLimit",{"type":2919,"tag":3236,"props":5819,"children":5820},{"style":3402},[5821],{"type":2924,"value":5081},{"type":2919,"tag":3236,"props":5823,"children":5824},{"style":3379},[5825],{"type":2924,"value":5086},{"type":2919,"tag":3236,"props":5827,"children":5828},{"style":3402},[5829],{"type":2924,"value":3890},{"type":2919,"tag":3236,"props":5831,"children":5832},{"style":3257},[5833],{"type":2924,"value":2860},{"type":2919,"tag":3236,"props":5835,"children":5836},{"style":3402},[5837],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":5839,"children":5840},{"style":3402},[5841],{"type":2924,"value":3725},{"type":2919,"tag":3236,"props":5843,"children":5844},{"class":3238,"line":2887},[5845,5849,5853,5858,5862,5866,5870,5874,5878],{"type":2919,"tag":3236,"props":5846,"children":5847},{"style":3379},[5848],{"type":2924,"value":5066},{"type":2919,"tag":3236,"props":5850,"children":5851},{"style":3402},[5852],{"type":2924,"value":5071},{"type":2919,"tag":3236,"props":5854,"children":5855},{"style":3396},[5856],{"type":2924,"value":5857}," useRuntimeConfig",{"type":2919,"tag":3236,"props":5859,"children":5860},{"style":3402},[5861],{"type":2924,"value":5081},{"type":2919,"tag":3236,"props":5863,"children":5864},{"style":3379},[5865],{"type":2924,"value":5086},{"type":2919,"tag":3236,"props":5867,"children":5868},{"style":3402},[5869],{"type":2924,"value":3890},{"type":2919,"tag":3236,"props":5871,"children":5872},{"style":3257},[5873],{"type":2924,"value":5095},{"type":2919,"tag":3236,"props":5875,"children":5876},{"style":3402},[5877],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":5879,"children":5880},{"style":3402},[5881],{"type":2924,"value":3725},{"type":2919,"tag":3236,"props":5883,"children":5884},{"class":3238,"line":3268},[5885],{"type":2919,"tag":3236,"props":5886,"children":5887},{"emptyLinePlaceholder":1196},[5888],{"type":2924,"value":3274},{"type":2919,"tag":3236,"props":5890,"children":5891},{"class":3238,"line":3277},[5892,5896,5900,5904,5908],{"type":2919,"tag":3236,"props":5893,"children":5894},{"style":3379},[5895],{"type":2924,"value":3382},{"type":2919,"tag":3236,"props":5897,"children":5898},{"style":3379},[5899],{"type":2924,"value":3387},{"type":2919,"tag":3236,"props":5901,"children":5902},{"style":3390},[5903],{"type":2924,"value":5132},{"type":2919,"tag":3236,"props":5905,"children":5906},{"style":3396},[5907],{"type":2924,"value":3399},{"type":2919,"tag":3236,"props":5909,"children":5910},{"style":3402},[5911],{"type":2924,"value":3405},{"type":2919,"tag":3236,"props":5913,"children":5914},{"class":3238,"line":2883},[5915,5919,5923],{"type":2919,"tag":3236,"props":5916,"children":5917},{"style":3411},[5918],{"type":2924,"value":5148},{"type":2919,"tag":3236,"props":5920,"children":5921},{"style":3402},[5922],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":5924,"children":5925},{"style":3402},[5926],{"type":2924,"value":3464},{"type":2919,"tag":3236,"props":5928,"children":5929},{"class":3238,"line":3302},[5930,5934,5938,5942,5946,5950,5954],{"type":2919,"tag":3236,"props":5931,"children":5932},{"style":3411},[5933],{"type":2924,"value":5164},{"type":2919,"tag":3236,"props":5935,"children":5936},{"style":3402},[5937],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":5939,"children":5940},{"style":3402},[5941],{"type":2924,"value":3890},{"type":2919,"tag":3236,"props":5943,"children":5944},{"style":3257},[5945],{"type":2924,"value":3181},{"type":2919,"tag":3236,"props":5947,"children":5948},{"style":3402},[5949],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":5951,"children":5952},{"style":3402},[5953],{"type":2924,"value":3630},{"type":2919,"tag":3236,"props":5955,"children":5956},{"style":3242},[5957],{"type":2924,"value":5189},{"type":2919,"tag":3236,"props":5959,"children":5960},{"class":3238,"line":3310},[5961,5965,5969,5973,5978,5982],{"type":2919,"tag":3236,"props":5962,"children":5963},{"style":3411},[5964],{"type":2924,"value":5197},{"type":2919,"tag":3236,"props":5966,"children":5967},{"style":3402},[5968],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":5970,"children":5971},{"style":3402},[5972],{"type":2924,"value":3890},{"type":2919,"tag":3236,"props":5974,"children":5975},{"style":3257},[5976],{"type":2924,"value":5977},"Clean old IP tracking data from nuxt-api-shield storage.",{"type":2919,"tag":3236,"props":5979,"children":5980},{"style":3402},[5981],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":5983,"children":5984},{"style":3402},[5985],{"type":2924,"value":3447},{"type":2919,"tag":3236,"props":5987,"children":5988},{"class":3238,"line":3319},[5989],{"type":2919,"tag":3236,"props":5990,"children":5991},{"style":3402},[5992],{"type":2924,"value":3706},{"type":2919,"tag":3236,"props":5994,"children":5995},{"class":3238,"line":2908},[5996,6000,6004,6008],{"type":2919,"tag":3236,"props":5997,"children":5998},{"style":4339},[5999],{"type":2924,"value":5233},{"type":2919,"tag":3236,"props":6001,"children":6002},{"style":3411},[6003],{"type":2924,"value":5238},{"type":2919,"tag":3236,"props":6005,"children":6006},{"style":3402},[6007],{"type":2924,"value":5243},{"type":2919,"tag":3236,"props":6009,"children":6010},{"style":3402},[6011],{"type":2924,"value":3464},{"type":2919,"tag":3236,"props":6013,"children":6014},{"class":3238,"line":3515},[6015,6019,6023,6027,6031,6035,6039,6043,6047,6051],{"type":2919,"tag":3236,"props":6016,"children":6017},{"style":4339},[6018],{"type":2924,"value":5255},{"type":2919,"tag":3236,"props":6020,"children":6021},{"style":3396},[6022],{"type":2924,"value":5260},{"type":2919,"tag":3236,"props":6024,"children":6025},{"style":3402},[6026],{"type":2924,"value":5265},{"type":2919,"tag":3236,"props":6028,"children":6029},{"style":3390},[6030],{"type":2924,"value":5270},{"type":2919,"tag":3236,"props":6032,"children":6033},{"style":3411},[6034],{"type":2924,"value":3399},{"type":2919,"tag":3236,"props":6036,"children":6037},{"style":3402},[6038],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":6040,"children":6041},{"style":3257},[6042],{"type":2924,"value":4310},{"type":2919,"tag":3236,"props":6044,"children":6045},{"style":3402},[6046],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":6048,"children":6049},{"style":3411},[6050],{"type":2924,"value":3720},{"type":2919,"tag":3236,"props":6052,"children":6053},{"style":3402},[6054],{"type":2924,"value":3725},{"type":2919,"tag":3236,"props":6056,"children":6057},{"class":3238,"line":3524},[6058,6062,6067,6071,6075,6079,6083,6087,6091,6095],{"type":2919,"tag":3236,"props":6059,"children":6060},{"style":4339},[6061],{"type":2924,"value":5255},{"type":2919,"tag":3236,"props":6063,"children":6064},{"style":3396},[6065],{"type":2924,"value":6066}," config",{"type":2919,"tag":3236,"props":6068,"children":6069},{"style":3402},[6070],{"type":2924,"value":5265},{"type":2919,"tag":3236,"props":6072,"children":6073},{"style":3390},[6074],{"type":2924,"value":5857},{"type":2919,"tag":3236,"props":6076,"children":6077},{"style":3411},[6078],{"type":2924,"value":5243},{"type":2919,"tag":3236,"props":6080,"children":6081},{"style":3402},[6082],{"type":2924,"value":4281},{"type":2919,"tag":3236,"props":6084,"children":6085},{"style":3396},[6086],{"type":2924,"value":180},{"type":2919,"tag":3236,"props":6088,"children":6089},{"style":3402},[6090],{"type":2924,"value":4281},{"type":2919,"tag":3236,"props":6092,"children":6093},{"style":3396},[6094],{"type":2924,"value":3741},{"type":2919,"tag":3236,"props":6096,"children":6097},{"style":3402},[6098],{"type":2924,"value":3725},{"type":2919,"tag":3236,"props":6100,"children":6101},{"class":3238,"line":3533},[6102],{"type":2919,"tag":3236,"props":6103,"children":6104},{"emptyLinePlaceholder":1196},[6105],{"type":2924,"value":3274},{"type":2919,"tag":3236,"props":6107,"children":6108},{"class":3238,"line":3542},[6109],{"type":2919,"tag":3236,"props":6110,"children":6111},{"style":3242},[6112],{"type":2924,"value":6113},"    \u002F\u002F ipTTL is expected to be in seconds from config (module applies default if not set by user)\n",{"type":2919,"tag":3236,"props":6115,"children":6116},{"class":3238,"line":3551},[6117,6121,6126,6130,6134,6138,6142],{"type":2919,"tag":3236,"props":6118,"children":6119},{"style":4339},[6120],{"type":2924,"value":5255},{"type":2919,"tag":3236,"props":6122,"children":6123},{"style":3396},[6124],{"type":2924,"value":6125}," ipTTLseconds",{"type":2919,"tag":3236,"props":6127,"children":6128},{"style":3402},[6129],{"type":2924,"value":5265},{"type":2919,"tag":3236,"props":6131,"children":6132},{"style":3396},[6133],{"type":2924,"value":6066},{"type":2919,"tag":3236,"props":6135,"children":6136},{"style":3402},[6137],{"type":2924,"value":4281},{"type":2919,"tag":3236,"props":6139,"children":6140},{"style":3396},[6141],{"type":2924,"value":4742},{"type":2919,"tag":3236,"props":6143,"children":6144},{"style":3402},[6145],{"type":2924,"value":3725},{"type":2919,"tag":3236,"props":6147,"children":6148},{"class":3238,"line":3560},[6149],{"type":2919,"tag":3236,"props":6150,"children":6151},{"emptyLinePlaceholder":1196},[6152],{"type":2924,"value":3274},{"type":2919,"tag":3236,"props":6154,"children":6155},{"class":3238,"line":3569},[6156,6161,6165,6170,6175,6180,6184,6189,6193,6197],{"type":2919,"tag":3236,"props":6157,"children":6158},{"style":3379},[6159],{"type":2924,"value":6160},"    if",{"type":2919,"tag":3236,"props":6162,"children":6163},{"style":3411},[6164],{"type":2924,"value":5419},{"type":2919,"tag":3236,"props":6166,"children":6167},{"style":3402},[6168],{"type":2924,"value":6169},"!",{"type":2919,"tag":3236,"props":6171,"children":6172},{"style":3396},[6173],{"type":2924,"value":6174},"ipTTLseconds",{"type":2919,"tag":3236,"props":6176,"children":6177},{"style":3402},[6178],{"type":2924,"value":6179}," ||",{"type":2919,"tag":3236,"props":6181,"children":6182},{"style":3396},[6183],{"type":2924,"value":6125},{"type":2919,"tag":3236,"props":6185,"children":6186},{"style":3402},[6187],{"type":2924,"value":6188}," \u003C=",{"type":2919,"tag":3236,"props":6190,"children":6191},{"style":3622},[6192],{"type":2924,"value":5402},{"type":2919,"tag":3236,"props":6194,"children":6195},{"style":3411},[6196],{"type":2924,"value":5443},{"type":2919,"tag":3236,"props":6198,"children":6199},{"style":3402},[6200],{"type":2924,"value":3405},{"type":2919,"tag":3236,"props":6202,"children":6203},{"class":3238,"line":3577},[6204,6209,6213,6217],{"type":2919,"tag":3236,"props":6205,"children":6206},{"style":3396},[6207],{"type":2924,"value":6208},"      console",{"type":2919,"tag":3236,"props":6210,"children":6211},{"style":3402},[6212],{"type":2924,"value":4281},{"type":2919,"tag":3236,"props":6214,"children":6215},{"style":3390},[6216],{"type":2924,"value":5614},{"type":2919,"tag":3236,"props":6218,"children":6219},{"style":3411},[6220],{"type":2924,"value":6221},"(\n",{"type":2919,"tag":3236,"props":6223,"children":6224},{"class":3238,"line":3586},[6225,6229,6234],{"type":2919,"tag":3236,"props":6226,"children":6227},{"style":3402},[6228],{"type":2924,"value":4419},{"type":2919,"tag":3236,"props":6230,"children":6231},{"style":3257},[6232],{"type":2924,"value":6233},"[nuxt-api-shield] IP data cleanup (ipTTL) is disabled or invalid.",{"type":2919,"tag":3236,"props":6235,"children":6236},{"style":3402},[6237],{"type":2924,"value":4446},{"type":2919,"tag":3236,"props":6239,"children":6240},{"class":3238,"line":3595},[6241,6246],{"type":2919,"tag":3236,"props":6242,"children":6243},{"style":3411},[6244],{"type":2924,"value":6245},"      )",{"type":2919,"tag":3236,"props":6247,"children":6248},{"style":3402},[6249],{"type":2924,"value":3725},{"type":2919,"tag":3236,"props":6251,"children":6252},{"class":3238,"line":3609},[6253,6258,6262,6266,6270,6274,6278,6282,6286,6291,6296,6300,6304,6309,6313],{"type":2919,"tag":3236,"props":6254,"children":6255},{"style":3379},[6256],{"type":2924,"value":6257},"      return",{"type":2919,"tag":3236,"props":6259,"children":6260},{"style":3402},[6261],{"type":2924,"value":5071},{"type":2919,"tag":3236,"props":6263,"children":6264},{"style":3411},[6265],{"type":2924,"value":5676},{"type":2919,"tag":3236,"props":6267,"children":6268},{"style":3402},[6269],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":6271,"children":6272},{"style":3402},[6273],{"type":2924,"value":5071},{"type":2919,"tag":3236,"props":6275,"children":6276},{"style":3411},[6277],{"type":2924,"value":5393},{"type":2919,"tag":3236,"props":6279,"children":6280},{"style":3402},[6281],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":6283,"children":6284},{"style":3622},[6285],{"type":2924,"value":5402},{"type":2919,"tag":3236,"props":6287,"children":6288},{"style":3402},[6289],{"type":2924,"value":6290}," },",{"type":2919,"tag":3236,"props":6292,"children":6293},{"style":3411},[6294],{"type":2924,"value":6295}," status",{"type":2919,"tag":3236,"props":6297,"children":6298},{"style":3402},[6299],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":6301,"children":6302},{"style":3402},[6303],{"type":2924,"value":3890},{"type":2919,"tag":3236,"props":6305,"children":6306},{"style":3257},[6307],{"type":2924,"value":6308},"disabled_or_invalid_ttl",{"type":2919,"tag":3236,"props":6310,"children":6311},{"style":3402},[6312],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":6314,"children":6315},{"style":3402},[6316],{"type":2924,"value":5697},{"type":2919,"tag":3236,"props":6318,"children":6319},{"class":3238,"line":3638},[6320],{"type":2919,"tag":3236,"props":6321,"children":6322},{"style":3402},[6323],{"type":2924,"value":4462},{"type":2919,"tag":3236,"props":6325,"children":6326},{"class":3238,"line":3655},[6327,6331,6336,6340,6344,6348,6353],{"type":2919,"tag":3236,"props":6328,"children":6329},{"style":4339},[6330],{"type":2924,"value":5255},{"type":2919,"tag":3236,"props":6332,"children":6333},{"style":3396},[6334],{"type":2924,"value":6335}," ipTTLms",{"type":2919,"tag":3236,"props":6337,"children":6338},{"style":3402},[6339],{"type":2924,"value":5265},{"type":2919,"tag":3236,"props":6341,"children":6342},{"style":3396},[6343],{"type":2924,"value":6125},{"type":2919,"tag":3236,"props":6345,"children":6346},{"style":3402},[6347],{"type":2924,"value":4050},{"type":2919,"tag":3236,"props":6349,"children":6350},{"style":3622},[6351],{"type":2924,"value":6352}," 1000",{"type":2919,"tag":3236,"props":6354,"children":6355},{"style":3402},[6356],{"type":2924,"value":3725},{"type":2919,"tag":3236,"props":6358,"children":6359},{"class":3238,"line":3664},[6360],{"type":2919,"tag":3236,"props":6361,"children":6362},{"emptyLinePlaceholder":1196},[6363],{"type":2924,"value":3274},{"type":2919,"tag":3236,"props":6365,"children":6366},{"class":3238,"line":3692},[6367,6371,6376,6380,6384,6388,6392,6396,6400,6404,6409,6413,6417],{"type":2919,"tag":3236,"props":6368,"children":6369},{"style":4339},[6370],{"type":2924,"value":5255},{"type":2919,"tag":3236,"props":6372,"children":6373},{"style":3396},[6374],{"type":2924,"value":6375}," ipKeys",{"type":2919,"tag":3236,"props":6377,"children":6378},{"style":3402},[6379],{"type":2924,"value":5265},{"type":2919,"tag":3236,"props":6381,"children":6382},{"style":3379},[6383],{"type":2924,"value":5335},{"type":2919,"tag":3236,"props":6385,"children":6386},{"style":3396},[6387],{"type":2924,"value":5260},{"type":2919,"tag":3236,"props":6389,"children":6390},{"style":3402},[6391],{"type":2924,"value":4281},{"type":2919,"tag":3236,"props":6393,"children":6394},{"style":3390},[6395],{"type":2924,"value":5348},{"type":2919,"tag":3236,"props":6397,"children":6398},{"style":3411},[6399],{"type":2924,"value":3399},{"type":2919,"tag":3236,"props":6401,"children":6402},{"style":3402},[6403],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":6405,"children":6406},{"style":3257},[6407],{"type":2924,"value":6408},"ip:",{"type":2919,"tag":3236,"props":6410,"children":6411},{"style":3402},[6412],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":6414,"children":6415},{"style":3411},[6416],{"type":2924,"value":3720},{"type":2919,"tag":3236,"props":6418,"children":6419},{"style":3402},[6420],{"type":2924,"value":3725},{"type":2919,"tag":3236,"props":6422,"children":6423},{"class":3238,"line":3700},[6424,6428,6433,6437,6442,6446,6451,6455],{"type":2919,"tag":3236,"props":6425,"children":6426},{"style":4339},[6427],{"type":2924,"value":5255},{"type":2919,"tag":3236,"props":6429,"children":6430},{"style":3396},[6431],{"type":2924,"value":6432}," currentTime",{"type":2919,"tag":3236,"props":6434,"children":6435},{"style":3402},[6436],{"type":2924,"value":5265},{"type":2919,"tag":3236,"props":6438,"children":6439},{"style":3396},[6440],{"type":2924,"value":6441}," Date",{"type":2919,"tag":3236,"props":6443,"children":6444},{"style":3402},[6445],{"type":2924,"value":4281},{"type":2919,"tag":3236,"props":6447,"children":6448},{"style":3390},[6449],{"type":2924,"value":6450},"now",{"type":2919,"tag":3236,"props":6452,"children":6453},{"style":3411},[6454],{"type":2924,"value":5243},{"type":2919,"tag":3236,"props":6456,"children":6457},{"style":3402},[6458],{"type":2924,"value":3725},{"type":2919,"tag":3236,"props":6460,"children":6461},{"class":3238,"line":3709},[6462,6466,6470,6474,6478],{"type":2919,"tag":3236,"props":6463,"children":6464},{"style":4339},[6465],{"type":2924,"value":5388},{"type":2919,"tag":3236,"props":6467,"children":6468},{"style":3396},[6469],{"type":2924,"value":5393},{"type":2919,"tag":3236,"props":6471,"children":6472},{"style":3402},[6473],{"type":2924,"value":5265},{"type":2919,"tag":3236,"props":6475,"children":6476},{"style":3622},[6477],{"type":2924,"value":5402},{"type":2919,"tag":3236,"props":6479,"children":6480},{"style":3402},[6481],{"type":2924,"value":3725},{"type":2919,"tag":3236,"props":6483,"children":6485},{"class":3238,"line":6484},27,[6486],{"type":2919,"tag":3236,"props":6487,"children":6488},{"emptyLinePlaceholder":1196},[6489],{"type":2924,"value":3274},{"type":2919,"tag":3236,"props":6491,"children":6493},{"class":3238,"line":6492},28,[6494,6498,6502,6506,6510,6514,6518,6522],{"type":2919,"tag":3236,"props":6495,"children":6496},{"style":3379},[6497],{"type":2924,"value":5414},{"type":2919,"tag":3236,"props":6499,"children":6500},{"style":3411},[6501],{"type":2924,"value":5419},{"type":2919,"tag":3236,"props":6503,"children":6504},{"style":4339},[6505],{"type":2924,"value":5424},{"type":2919,"tag":3236,"props":6507,"children":6508},{"style":3396},[6509],{"type":2924,"value":5429},{"type":2919,"tag":3236,"props":6511,"children":6512},{"style":3402},[6513],{"type":2924,"value":5434},{"type":2919,"tag":3236,"props":6515,"children":6516},{"style":3396},[6517],{"type":2924,"value":6375},{"type":2919,"tag":3236,"props":6519,"children":6520},{"style":3411},[6521],{"type":2924,"value":5443},{"type":2919,"tag":3236,"props":6523,"children":6524},{"style":3402},[6525],{"type":2924,"value":3405},{"type":2919,"tag":3236,"props":6527,"children":6529},{"class":3238,"line":6528},29,[6530,6534,6539,6543,6547,6552,6556,6560,6564,6568,6572,6576,6581,6585,6590,6595],{"type":2919,"tag":3236,"props":6531,"children":6532},{"style":4339},[6533],{"type":2924,"value":5455},{"type":2919,"tag":3236,"props":6535,"children":6536},{"style":3396},[6537],{"type":2924,"value":6538}," entry",{"type":2919,"tag":3236,"props":6540,"children":6541},{"style":3402},[6542],{"type":2924,"value":5265},{"type":2919,"tag":3236,"props":6544,"children":6545},{"style":3411},[6546],{"type":2924,"value":5419},{"type":2919,"tag":3236,"props":6548,"children":6549},{"style":3379},[6550],{"type":2924,"value":6551},"await",{"type":2919,"tag":3236,"props":6553,"children":6554},{"style":3396},[6555],{"type":2924,"value":5260},{"type":2919,"tag":3236,"props":6557,"children":6558},{"style":3402},[6559],{"type":2924,"value":4281},{"type":2919,"tag":3236,"props":6561,"children":6562},{"style":3390},[6563],{"type":2924,"value":5481},{"type":2919,"tag":3236,"props":6565,"children":6566},{"style":3411},[6567],{"type":2924,"value":3399},{"type":2919,"tag":3236,"props":6569,"children":6570},{"style":3396},[6571],{"type":2924,"value":5490},{"type":2919,"tag":3236,"props":6573,"children":6574},{"style":3411},[6575],{"type":2924,"value":5529},{"type":2919,"tag":3236,"props":6577,"children":6578},{"style":3379},[6579],{"type":2924,"value":6580},"as",{"type":2919,"tag":3236,"props":6582,"children":6583},{"style":3251},[6584],{"type":2924,"value":5817},{"type":2919,"tag":3236,"props":6586,"children":6587},{"style":3402},[6588],{"type":2924,"value":6589}," |",{"type":2919,"tag":3236,"props":6591,"children":6592},{"style":3251},[6593],{"type":2924,"value":6594}," null",{"type":2919,"tag":3236,"props":6596,"children":6597},{"style":3402},[6598],{"type":2924,"value":3725},{"type":2919,"tag":3236,"props":6600,"children":6602},{"class":3238,"line":6601},30,[6603],{"type":2919,"tag":3236,"props":6604,"children":6605},{"emptyLinePlaceholder":1196},[6606],{"type":2924,"value":3274},{"type":2919,"tag":3236,"props":6608,"children":6610},{"class":3238,"line":6609},31,[6611],{"type":2919,"tag":3236,"props":6612,"children":6613},{"style":3242},[6614],{"type":2924,"value":6615},"      \u002F\u002F Check if entry exists and has a numeric 'time' property\n",{"type":2919,"tag":3236,"props":6617,"children":6619},{"class":3238,"line":6618},32,[6620,6624,6628,6633,6638,6643,6647,6651,6655,6660,6664,6669,6673,6677],{"type":2919,"tag":3236,"props":6621,"children":6622},{"style":3379},[6623],{"type":2924,"value":5506},{"type":2919,"tag":3236,"props":6625,"children":6626},{"style":3411},[6627],{"type":2924,"value":5419},{"type":2919,"tag":3236,"props":6629,"children":6630},{"style":3396},[6631],{"type":2924,"value":6632},"entry",{"type":2919,"tag":3236,"props":6634,"children":6635},{"style":3402},[6636],{"type":2924,"value":6637}," &&",{"type":2919,"tag":3236,"props":6639,"children":6640},{"style":3402},[6641],{"type":2924,"value":6642}," typeof",{"type":2919,"tag":3236,"props":6644,"children":6645},{"style":3396},[6646],{"type":2924,"value":6538},{"type":2919,"tag":3236,"props":6648,"children":6649},{"style":3402},[6650],{"type":2924,"value":4281},{"type":2919,"tag":3236,"props":6652,"children":6653},{"style":3396},[6654],{"type":2924,"value":5768},{"type":2919,"tag":3236,"props":6656,"children":6657},{"style":3402},[6658],{"type":2924,"value":6659}," ===",{"type":2919,"tag":3236,"props":6661,"children":6662},{"style":3402},[6663],{"type":2924,"value":3890},{"type":2919,"tag":3236,"props":6665,"children":6666},{"style":3257},[6667],{"type":2924,"value":6668},"number",{"type":2919,"tag":3236,"props":6670,"children":6671},{"style":3402},[6672],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":6674,"children":6675},{"style":3411},[6676],{"type":2924,"value":5443},{"type":2919,"tag":3236,"props":6678,"children":6679},{"style":3402},[6680],{"type":2924,"value":3405},{"type":2919,"tag":3236,"props":6682,"children":6684},{"class":3238,"line":6683},33,[6685,6690,6694,6699,6704,6708,6712,6716,6721,6725,6729],{"type":2919,"tag":3236,"props":6686,"children":6687},{"style":3379},[6688],{"type":2924,"value":6689},"        if",{"type":2919,"tag":3236,"props":6691,"children":6692},{"style":3411},[6693],{"type":2924,"value":5419},{"type":2919,"tag":3236,"props":6695,"children":6696},{"style":3396},[6697],{"type":2924,"value":6698},"currentTime",{"type":2919,"tag":3236,"props":6700,"children":6701},{"style":3402},[6702],{"type":2924,"value":6703}," -",{"type":2919,"tag":3236,"props":6705,"children":6706},{"style":3396},[6707],{"type":2924,"value":6538},{"type":2919,"tag":3236,"props":6709,"children":6710},{"style":3402},[6711],{"type":2924,"value":4281},{"type":2919,"tag":3236,"props":6713,"children":6714},{"style":3396},[6715],{"type":2924,"value":5768},{"type":2919,"tag":3236,"props":6717,"children":6718},{"style":3402},[6719],{"type":2924,"value":6720}," >",{"type":2919,"tag":3236,"props":6722,"children":6723},{"style":3396},[6724],{"type":2924,"value":6335},{"type":2919,"tag":3236,"props":6726,"children":6727},{"style":3411},[6728],{"type":2924,"value":5443},{"type":2919,"tag":3236,"props":6730,"children":6731},{"style":3402},[6732],{"type":2924,"value":3405},{"type":2919,"tag":3236,"props":6734,"children":6736},{"class":3238,"line":6735},34,[6737,6742,6746,6750,6754,6758,6762,6766],{"type":2919,"tag":3236,"props":6738,"children":6739},{"style":3379},[6740],{"type":2924,"value":6741},"          await",{"type":2919,"tag":3236,"props":6743,"children":6744},{"style":3396},[6745],{"type":2924,"value":5260},{"type":2919,"tag":3236,"props":6747,"children":6748},{"style":3402},[6749],{"type":2924,"value":4281},{"type":2919,"tag":3236,"props":6751,"children":6752},{"style":3390},[6753],{"type":2924,"value":5554},{"type":2919,"tag":3236,"props":6755,"children":6756},{"style":3411},[6757],{"type":2924,"value":3399},{"type":2919,"tag":3236,"props":6759,"children":6760},{"style":3396},[6761],{"type":2924,"value":5490},{"type":2919,"tag":3236,"props":6763,"children":6764},{"style":3411},[6765],{"type":2924,"value":3720},{"type":2919,"tag":3236,"props":6767,"children":6768},{"style":3402},[6769],{"type":2924,"value":3725},{"type":2919,"tag":3236,"props":6771,"children":6773},{"class":3238,"line":6772},35,[6774,6779],{"type":2919,"tag":3236,"props":6775,"children":6776},{"style":3396},[6777],{"type":2924,"value":6778},"          cleanedCount",{"type":2919,"tag":3236,"props":6780,"children":6781},{"style":3402},[6782],{"type":2924,"value":5583},{"type":2919,"tag":3236,"props":6784,"children":6786},{"class":3238,"line":6785},36,[6787],{"type":2919,"tag":3236,"props":6788,"children":6789},{"style":3402},[6790],{"type":2924,"value":6791},"        }\n",{"type":2919,"tag":3236,"props":6793,"children":6795},{"class":3238,"line":6794},37,[6796,6801,6806],{"type":2919,"tag":3236,"props":6797,"children":6798},{"style":3402},[6799],{"type":2924,"value":6800},"      }",{"type":2919,"tag":3236,"props":6802,"children":6803},{"style":3379},[6804],{"type":2924,"value":6805}," else",{"type":2919,"tag":3236,"props":6807,"children":6808},{"style":3402},[6809],{"type":2924,"value":3464},{"type":2919,"tag":3236,"props":6811,"children":6813},{"class":3238,"line":6812},38,[6814],{"type":2919,"tag":3236,"props":6815,"children":6816},{"style":3242},[6817],{"type":2924,"value":6818},"        \u002F\u002F Clean up entries that are null, not an object, or missing a numeric 'time'\n",{"type":2919,"tag":3236,"props":6820,"children":6822},{"class":3238,"line":6821},39,[6823,6827,6831,6835,6839,6843,6847,6851],{"type":2919,"tag":3236,"props":6824,"children":6825},{"style":3379},[6826],{"type":2924,"value":5541},{"type":2919,"tag":3236,"props":6828,"children":6829},{"style":3396},[6830],{"type":2924,"value":5260},{"type":2919,"tag":3236,"props":6832,"children":6833},{"style":3402},[6834],{"type":2924,"value":4281},{"type":2919,"tag":3236,"props":6836,"children":6837},{"style":3390},[6838],{"type":2924,"value":5554},{"type":2919,"tag":3236,"props":6840,"children":6841},{"style":3411},[6842],{"type":2924,"value":3399},{"type":2919,"tag":3236,"props":6844,"children":6845},{"style":3396},[6846],{"type":2924,"value":5490},{"type":2919,"tag":3236,"props":6848,"children":6849},{"style":3411},[6850],{"type":2924,"value":3720},{"type":2919,"tag":3236,"props":6852,"children":6853},{"style":3402},[6854],{"type":2924,"value":3725},{"type":2919,"tag":3236,"props":6856,"children":6858},{"class":3238,"line":6857},40,[6859,6863],{"type":2919,"tag":3236,"props":6860,"children":6861},{"style":3396},[6862],{"type":2924,"value":5578},{"type":2919,"tag":3236,"props":6864,"children":6865},{"style":3402},[6866],{"type":2924,"value":5583},{"type":2919,"tag":3236,"props":6868,"children":6870},{"class":3238,"line":6869},41,[6871],{"type":2919,"tag":3236,"props":6872,"children":6873},{"style":3402},[6874],{"type":2924,"value":4454},{"type":2919,"tag":3236,"props":6876,"children":6878},{"class":3238,"line":6877},42,[6879],{"type":2919,"tag":3236,"props":6880,"children":6881},{"style":3402},[6882],{"type":2924,"value":4462},{"type":2919,"tag":3236,"props":6884,"children":6886},{"class":3238,"line":6885},43,[6887],{"type":2919,"tag":3236,"props":6888,"children":6889},{"emptyLinePlaceholder":1196},[6890],{"type":2924,"value":3274},{"type":2919,"tag":3236,"props":6892,"children":6894},{"class":3238,"line":6893},44,[6895,6899,6903,6907],{"type":2919,"tag":3236,"props":6896,"children":6897},{"style":3396},[6898],{"type":2924,"value":5605},{"type":2919,"tag":3236,"props":6900,"children":6901},{"style":3402},[6902],{"type":2924,"value":4281},{"type":2919,"tag":3236,"props":6904,"children":6905},{"style":3390},[6906],{"type":2924,"value":5614},{"type":2919,"tag":3236,"props":6908,"children":6909},{"style":3411},[6910],{"type":2924,"value":6221},{"type":2919,"tag":3236,"props":6912,"children":6914},{"class":3238,"line":6913},45,[6915,6920,6924,6928,6932,6936,6941],{"type":2919,"tag":3236,"props":6916,"children":6917},{"style":3402},[6918],{"type":2924,"value":6919},"      `",{"type":2919,"tag":3236,"props":6921,"children":6922},{"style":3257},[6923],{"type":2924,"value":5628},{"type":2919,"tag":3236,"props":6925,"children":6926},{"style":3402},[6927],{"type":2924,"value":5633},{"type":2919,"tag":3236,"props":6929,"children":6930},{"style":3396},[6931],{"type":2924,"value":5638},{"type":2919,"tag":3236,"props":6933,"children":6934},{"style":3402},[6935],{"type":2924,"value":3715},{"type":2919,"tag":3236,"props":6937,"children":6938},{"style":3257},[6939],{"type":2924,"value":6940}," old\u002Fmalformed IP data entries.",{"type":2919,"tag":3236,"props":6942,"children":6943},{"style":3402},[6944],{"type":2924,"value":6945},"`\n",{"type":2919,"tag":3236,"props":6947,"children":6949},{"class":3238,"line":6948},46,[6950,6955],{"type":2919,"tag":3236,"props":6951,"children":6952},{"style":3411},[6953],{"type":2924,"value":6954},"    )",{"type":2919,"tag":3236,"props":6956,"children":6957},{"style":3402},[6958],{"type":2924,"value":3725},{"type":2919,"tag":3236,"props":6960,"children":6962},{"class":3238,"line":6961},47,[6963,6967,6971,6975,6979,6983,6987,6991],{"type":2919,"tag":3236,"props":6964,"children":6965},{"style":3379},[6966],{"type":2924,"value":5667},{"type":2919,"tag":3236,"props":6968,"children":6969},{"style":3402},[6970],{"type":2924,"value":5071},{"type":2919,"tag":3236,"props":6972,"children":6973},{"style":3411},[6974],{"type":2924,"value":5676},{"type":2919,"tag":3236,"props":6976,"children":6977},{"style":3402},[6978],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":6980,"children":6981},{"style":3402},[6982],{"type":2924,"value":5071},{"type":2919,"tag":3236,"props":6984,"children":6985},{"style":3396},[6986],{"type":2924,"value":5393},{"type":2919,"tag":3236,"props":6988,"children":6989},{"style":3402},[6990],{"type":2924,"value":5081},{"type":2919,"tag":3236,"props":6992,"children":6993},{"style":3402},[6994],{"type":2924,"value":5697},{"type":2919,"tag":3236,"props":6996,"children":6998},{"class":3238,"line":6997},48,[6999],{"type":2919,"tag":3236,"props":7000,"children":7001},{"style":3402},[7002],{"type":2924,"value":3706},{"type":2919,"tag":3236,"props":7004,"children":7006},{"class":3238,"line":7005},49,[7007,7011,7015],{"type":2919,"tag":3236,"props":7008,"children":7009},{"style":3402},[7010],{"type":2924,"value":3715},{"type":2919,"tag":3236,"props":7012,"children":7013},{"style":3396},[7014],{"type":2924,"value":3720},{"type":2919,"tag":3236,"props":7016,"children":7017},{"style":3402},[7018],{"type":2924,"value":3725},{"type":2919,"tag":2926,"props":7020,"children":7021},{},[7022,7024,7029,7031,7036,7038,7043,7044,7050,7052,7057],{"type":2924,"value":7023},"Configure ",{"type":2919,"tag":3076,"props":7025,"children":7027},{"className":7026},[],[7028],{"type":2924,"value":4742},{"type":2924,"value":7030}," under ",{"type":2919,"tag":3076,"props":7032,"children":7034},{"className":7033},[],[7035],{"type":2924,"value":3741},{"type":2924,"value":7037}," if you want a TTL other than the default. Setting ",{"type":2919,"tag":3076,"props":7039,"children":7041},{"className":7040},[],[7042],{"type":2924,"value":4742},{"type":2924,"value":4295},{"type":2919,"tag":3076,"props":7045,"children":7047},{"className":7046},[],[7048],{"type":2924,"value":7049},"0",{"type":2924,"value":7051}," (or any non-positive value) makes the bundled ",{"type":2919,"tag":3076,"props":7053,"children":7055},{"className":7054},[],[7056],{"type":2924,"value":3181},{"type":2924,"value":7058}," task skip IP cleanup (it logs and exits).",{"type":2919,"tag":2926,"props":7060,"children":7061},{},[7062,7064,7070,7072,7077,7079,7084],{"type":2924,"value":7063},"If you add your own task file with the same ",{"type":2919,"tag":3076,"props":7065,"children":7067},{"className":7066},[],[7068],{"type":2924,"value":7069},"meta.name",{"type":2924,"value":7071}," as a bundled task (",{"type":2919,"tag":3076,"props":7073,"children":7075},{"className":7074},[],[7076],{"type":2924,"value":3173},{"type":2924,"value":7078}," or ",{"type":2919,"tag":3076,"props":7080,"children":7082},{"className":7081},[],[7083],{"type":2924,"value":3181},{"type":2924,"value":7085},"), Nitro may prefer your project file over the module—avoid duplicate names unless you intend to override.",{"type":2919,"tag":3002,"props":7087,"children":7089},{"id":7088},"typescript-types",[7090],{"type":2924,"value":7091},"TypeScript Types",{"type":2919,"tag":2926,"props":7093,"children":7094},{},[7095],{"type":2924,"value":7096},"The module exports TypeScript types that you can use in your application:",{"type":2919,"tag":3212,"props":7098,"children":7100},{"id":7099},"ratelimit-type",[7101,7107],{"type":2919,"tag":3076,"props":7102,"children":7104},{"className":7103},[],[7105],{"type":2924,"value":7106},"RateLimit",{"type":2924,"value":7108}," Type",{"type":2919,"tag":2926,"props":7110,"children":7111},{},[7112,7113,7118],{"type":2924,"value":4152},{"type":2919,"tag":3076,"props":7114,"children":7116},{"className":7115},[],[7117],{"type":2924,"value":7106},{"type":2924,"value":7119}," type represents the structure of rate limit data stored for each IP address:",{"type":2919,"tag":3226,"props":7121,"children":7123},{"className":5052,"code":7122,"language":5054,"meta":2863,"style":2863},"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",[7124],{"type":2919,"tag":3076,"props":7125,"children":7126},{"__ignoreMap":2863},[7127,7170,7177,7185,7193,7206,7219],{"type":2919,"tag":3236,"props":7128,"children":7129},{"class":3238,"line":2891},[7130,7134,7138,7142,7146,7150,7154,7158,7162,7166],{"type":2919,"tag":3236,"props":7131,"children":7132},{"style":3379},[7133],{"type":2924,"value":5066},{"type":2919,"tag":3236,"props":7135,"children":7136},{"style":3379},[7137],{"type":2924,"value":5808},{"type":2919,"tag":3236,"props":7139,"children":7140},{"style":3402},[7141],{"type":2924,"value":5071},{"type":2919,"tag":3236,"props":7143,"children":7144},{"style":3396},[7145],{"type":2924,"value":5817},{"type":2919,"tag":3236,"props":7147,"children":7148},{"style":3402},[7149],{"type":2924,"value":5081},{"type":2919,"tag":3236,"props":7151,"children":7152},{"style":3379},[7153],{"type":2924,"value":5086},{"type":2919,"tag":3236,"props":7155,"children":7156},{"style":3402},[7157],{"type":2924,"value":3890},{"type":2919,"tag":3236,"props":7159,"children":7160},{"style":3257},[7161],{"type":2924,"value":2860},{"type":2919,"tag":3236,"props":7163,"children":7164},{"style":3402},[7165],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":7167,"children":7168},{"style":3402},[7169],{"type":2924,"value":3725},{"type":2919,"tag":3236,"props":7171,"children":7172},{"class":3238,"line":2887},[7173],{"type":2919,"tag":3236,"props":7174,"children":7175},{"emptyLinePlaceholder":1196},[7176],{"type":2924,"value":3274},{"type":2919,"tag":3236,"props":7178,"children":7179},{"class":3238,"line":3268},[7180],{"type":2919,"tag":3236,"props":7181,"children":7182},{"style":3242},[7183],{"type":2924,"value":7184},"\u002F\u002F RateLimit structure:\n",{"type":2919,"tag":3236,"props":7186,"children":7187},{"class":3238,"line":3277},[7188],{"type":2919,"tag":3236,"props":7189,"children":7190},{"style":3242},[7191],{"type":2924,"value":7192},"\u002F\u002F {\n",{"type":2919,"tag":3236,"props":7194,"children":7195},{"class":3238,"line":2883},[7196,7201],{"type":2919,"tag":3236,"props":7197,"children":7198},{"style":3242},[7199],{"type":2924,"value":7200},"\u002F\u002F   count: number",{"type":2919,"tag":3236,"props":7202,"children":7203},{"style":3242},[7204],{"type":2924,"value":7205},"  \u002F\u002F Number of requests made\n",{"type":2919,"tag":3236,"props":7207,"children":7208},{"class":3238,"line":3302},[7209,7214],{"type":2919,"tag":3236,"props":7210,"children":7211},{"style":3242},[7212],{"type":2924,"value":7213},"\u002F\u002F   time: number",{"type":2919,"tag":3236,"props":7215,"children":7216},{"style":3242},[7217],{"type":2924,"value":7218},"   \u002F\u002F Timestamp of the last request\n",{"type":2919,"tag":3236,"props":7220,"children":7221},{"class":3238,"line":3310},[7222],{"type":2919,"tag":3236,"props":7223,"children":7224},{"style":3242},[7225],{"type":2924,"value":7226},"\u002F\u002F }\n",{"type":2919,"tag":2926,"props":7228,"children":7229},{},[7230],{"type":2919,"tag":3014,"props":7231,"children":7232},{},[7233],{"type":2924,"value":7234},"Usage Example:",{"type":2919,"tag":3226,"props":7236,"children":7238},{"className":5052,"code":7237,"language":5054,"meta":2863,"style":2863},"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",[7239],{"type":2919,"tag":3076,"props":7240,"children":7241},{"__ignoreMap":2863},[7242,7285,7324,7331,7376,7409,7470,7477,7494,7561,7642],{"type":2919,"tag":3236,"props":7243,"children":7244},{"class":3238,"line":2891},[7245,7249,7253,7257,7261,7265,7269,7273,7277,7281],{"type":2919,"tag":3236,"props":7246,"children":7247},{"style":3379},[7248],{"type":2924,"value":5066},{"type":2919,"tag":3236,"props":7250,"children":7251},{"style":3379},[7252],{"type":2924,"value":5808},{"type":2919,"tag":3236,"props":7254,"children":7255},{"style":3402},[7256],{"type":2924,"value":5071},{"type":2919,"tag":3236,"props":7258,"children":7259},{"style":3396},[7260],{"type":2924,"value":5817},{"type":2919,"tag":3236,"props":7262,"children":7263},{"style":3402},[7264],{"type":2924,"value":5081},{"type":2919,"tag":3236,"props":7266,"children":7267},{"style":3379},[7268],{"type":2924,"value":5086},{"type":2919,"tag":3236,"props":7270,"children":7271},{"style":3402},[7272],{"type":2924,"value":3890},{"type":2919,"tag":3236,"props":7274,"children":7275},{"style":3257},[7276],{"type":2924,"value":2860},{"type":2919,"tag":3236,"props":7278,"children":7279},{"style":3402},[7280],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":7282,"children":7283},{"style":3402},[7284],{"type":2924,"value":3725},{"type":2919,"tag":3236,"props":7286,"children":7287},{"class":3238,"line":2887},[7288,7292,7296,7300,7304,7308,7312,7316,7320],{"type":2919,"tag":3236,"props":7289,"children":7290},{"style":3379},[7291],{"type":2924,"value":5066},{"type":2919,"tag":3236,"props":7293,"children":7294},{"style":3402},[7295],{"type":2924,"value":5071},{"type":2919,"tag":3236,"props":7297,"children":7298},{"style":3396},[7299],{"type":2924,"value":5270},{"type":2919,"tag":3236,"props":7301,"children":7302},{"style":3402},[7303],{"type":2924,"value":5081},{"type":2919,"tag":3236,"props":7305,"children":7306},{"style":3379},[7307],{"type":2924,"value":5086},{"type":2919,"tag":3236,"props":7309,"children":7310},{"style":3402},[7311],{"type":2924,"value":3890},{"type":2919,"tag":3236,"props":7313,"children":7314},{"style":3257},[7315],{"type":2924,"value":5095},{"type":2919,"tag":3236,"props":7317,"children":7318},{"style":3402},[7319],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":7321,"children":7322},{"style":3402},[7323],{"type":2924,"value":3725},{"type":2919,"tag":3236,"props":7325,"children":7326},{"class":3238,"line":3268},[7327],{"type":2919,"tag":3236,"props":7328,"children":7329},{"emptyLinePlaceholder":1196},[7330],{"type":2924,"value":3274},{"type":2919,"tag":3236,"props":7332,"children":7333},{"class":3238,"line":3277},[7334,7338,7343,7348,7352,7356,7360,7364,7368,7372],{"type":2919,"tag":3236,"props":7335,"children":7336},{"style":4339},[7337],{"type":2924,"value":5424},{"type":2919,"tag":3236,"props":7339,"children":7340},{"style":3396},[7341],{"type":2924,"value":7342}," shieldStorage ",{"type":2919,"tag":3236,"props":7344,"children":7345},{"style":3402},[7346],{"type":2924,"value":7347},"=",{"type":2919,"tag":3236,"props":7349,"children":7350},{"style":3390},[7351],{"type":2924,"value":5270},{"type":2919,"tag":3236,"props":7353,"children":7354},{"style":3396},[7355],{"type":2924,"value":3399},{"type":2919,"tag":3236,"props":7357,"children":7358},{"style":3402},[7359],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":7361,"children":7362},{"style":3257},[7363],{"type":2924,"value":4310},{"type":2919,"tag":3236,"props":7365,"children":7366},{"style":3402},[7367],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":7369,"children":7370},{"style":3396},[7371],{"type":2924,"value":3720},{"type":2919,"tag":3236,"props":7373,"children":7374},{"style":3402},[7375],{"type":2924,"value":3725},{"type":2919,"tag":3236,"props":7377,"children":7378},{"class":3238,"line":2883},[7379,7383,7388,7392,7396,7401,7405],{"type":2919,"tag":3236,"props":7380,"children":7381},{"style":4339},[7382],{"type":2924,"value":5424},{"type":2919,"tag":3236,"props":7384,"children":7385},{"style":3396},[7386],{"type":2924,"value":7387}," ipKey ",{"type":2919,"tag":3236,"props":7389,"children":7390},{"style":3402},[7391],{"type":2924,"value":7347},{"type":2919,"tag":3236,"props":7393,"children":7394},{"style":3402},[7395],{"type":2924,"value":3890},{"type":2919,"tag":3236,"props":7397,"children":7398},{"style":3257},[7399],{"type":2924,"value":7400},"ip:192.168.1.1",{"type":2919,"tag":3236,"props":7402,"children":7403},{"style":3402},[7404],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":7406,"children":7407},{"style":3402},[7408],{"type":2924,"value":3725},{"type":2919,"tag":3236,"props":7410,"children":7411},{"class":3238,"line":3302},[7412,7416,7421,7425,7429,7433,7437,7441,7445,7450,7454,7458,7462,7466],{"type":2919,"tag":3236,"props":7413,"children":7414},{"style":4339},[7415],{"type":2924,"value":5424},{"type":2919,"tag":3236,"props":7417,"children":7418},{"style":3396},[7419],{"type":2924,"value":7420}," entry ",{"type":2919,"tag":3236,"props":7422,"children":7423},{"style":3402},[7424],{"type":2924,"value":7347},{"type":2919,"tag":3236,"props":7426,"children":7427},{"style":3396},[7428],{"type":2924,"value":5419},{"type":2919,"tag":3236,"props":7430,"children":7431},{"style":3379},[7432],{"type":2924,"value":6551},{"type":2919,"tag":3236,"props":7434,"children":7435},{"style":3396},[7436],{"type":2924,"value":5260},{"type":2919,"tag":3236,"props":7438,"children":7439},{"style":3402},[7440],{"type":2924,"value":4281},{"type":2919,"tag":3236,"props":7442,"children":7443},{"style":3390},[7444],{"type":2924,"value":5481},{"type":2919,"tag":3236,"props":7446,"children":7447},{"style":3396},[7448],{"type":2924,"value":7449},"(ipKey)) ",{"type":2919,"tag":3236,"props":7451,"children":7452},{"style":3379},[7453],{"type":2924,"value":6580},{"type":2919,"tag":3236,"props":7455,"children":7456},{"style":3251},[7457],{"type":2924,"value":5817},{"type":2919,"tag":3236,"props":7459,"children":7460},{"style":3402},[7461],{"type":2924,"value":6589},{"type":2919,"tag":3236,"props":7463,"children":7464},{"style":3251},[7465],{"type":2924,"value":6594},{"type":2919,"tag":3236,"props":7467,"children":7468},{"style":3402},[7469],{"type":2924,"value":3725},{"type":2919,"tag":3236,"props":7471,"children":7472},{"class":3238,"line":3310},[7473],{"type":2919,"tag":3236,"props":7474,"children":7475},{"emptyLinePlaceholder":1196},[7476],{"type":2924,"value":3274},{"type":2919,"tag":3236,"props":7478,"children":7479},{"class":3238,"line":3319},[7480,7485,7490],{"type":2919,"tag":3236,"props":7481,"children":7482},{"style":3379},[7483],{"type":2924,"value":7484},"if",{"type":2919,"tag":3236,"props":7486,"children":7487},{"style":3396},[7488],{"type":2924,"value":7489}," (entry) ",{"type":2919,"tag":3236,"props":7491,"children":7492},{"style":3402},[7493],{"type":2924,"value":3405},{"type":2919,"tag":3236,"props":7495,"children":7496},{"class":3238,"line":2908},[7497,7502,7506,7510,7514,7518,7523,7527,7531,7535,7540,7544,7549,7553,7557],{"type":2919,"tag":3236,"props":7498,"children":7499},{"style":3396},[7500],{"type":2924,"value":7501},"  console",{"type":2919,"tag":3236,"props":7503,"children":7504},{"style":3402},[7505],{"type":2924,"value":4281},{"type":2919,"tag":3236,"props":7507,"children":7508},{"style":3390},[7509],{"type":2924,"value":5614},{"type":2919,"tag":3236,"props":7511,"children":7512},{"style":3411},[7513],{"type":2924,"value":3399},{"type":2919,"tag":3236,"props":7515,"children":7516},{"style":3402},[7517],{"type":2924,"value":5623},{"type":2919,"tag":3236,"props":7519,"children":7520},{"style":3257},[7521],{"type":2924,"value":7522},"IP has made ",{"type":2919,"tag":3236,"props":7524,"children":7525},{"style":3402},[7526],{"type":2924,"value":5633},{"type":2919,"tag":3236,"props":7528,"children":7529},{"style":3396},[7530],{"type":2924,"value":6632},{"type":2919,"tag":3236,"props":7532,"children":7533},{"style":3402},[7534],{"type":2924,"value":4281},{"type":2919,"tag":3236,"props":7536,"children":7537},{"style":3396},[7538],{"type":2924,"value":7539},"count",{"type":2919,"tag":3236,"props":7541,"children":7542},{"style":3402},[7543],{"type":2924,"value":3715},{"type":2919,"tag":3236,"props":7545,"children":7546},{"style":3257},[7547],{"type":2924,"value":7548}," requests",{"type":2919,"tag":3236,"props":7550,"children":7551},{"style":3402},[7552],{"type":2924,"value":5623},{"type":2919,"tag":3236,"props":7554,"children":7555},{"style":3411},[7556],{"type":2924,"value":3720},{"type":2919,"tag":3236,"props":7558,"children":7559},{"style":3402},[7560],{"type":2924,"value":3725},{"type":2919,"tag":3236,"props":7562,"children":7563},{"class":3238,"line":3515},[7564,7568,7572,7576,7580,7584,7589,7593,7598,7602,7607,7611,7616,7620,7625,7629,7634,7638],{"type":2919,"tag":3236,"props":7565,"children":7566},{"style":3396},[7567],{"type":2924,"value":7501},{"type":2919,"tag":3236,"props":7569,"children":7570},{"style":3402},[7571],{"type":2924,"value":4281},{"type":2919,"tag":3236,"props":7573,"children":7574},{"style":3390},[7575],{"type":2924,"value":5614},{"type":2919,"tag":3236,"props":7577,"children":7578},{"style":3411},[7579],{"type":2924,"value":3399},{"type":2919,"tag":3236,"props":7581,"children":7582},{"style":3402},[7583],{"type":2924,"value":5623},{"type":2919,"tag":3236,"props":7585,"children":7586},{"style":3257},[7587],{"type":2924,"value":7588},"Last request at: ",{"type":2919,"tag":3236,"props":7590,"children":7591},{"style":3402},[7592],{"type":2924,"value":5633},{"type":2919,"tag":3236,"props":7594,"children":7595},{"style":3402},[7596],{"type":2924,"value":7597},"new",{"type":2919,"tag":3236,"props":7599,"children":7600},{"style":3390},[7601],{"type":2924,"value":6441},{"type":2919,"tag":3236,"props":7603,"children":7604},{"style":3396},[7605],{"type":2924,"value":7606},"(entry",{"type":2919,"tag":3236,"props":7608,"children":7609},{"style":3402},[7610],{"type":2924,"value":4281},{"type":2919,"tag":3236,"props":7612,"children":7613},{"style":3396},[7614],{"type":2924,"value":7615},"time)",{"type":2919,"tag":3236,"props":7617,"children":7618},{"style":3402},[7619],{"type":2924,"value":4281},{"type":2919,"tag":3236,"props":7621,"children":7622},{"style":3390},[7623],{"type":2924,"value":7624},"toISOString",{"type":2919,"tag":3236,"props":7626,"children":7627},{"style":3396},[7628],{"type":2924,"value":5243},{"type":2919,"tag":3236,"props":7630,"children":7631},{"style":3402},[7632],{"type":2924,"value":7633},"}`",{"type":2919,"tag":3236,"props":7635,"children":7636},{"style":3411},[7637],{"type":2924,"value":3720},{"type":2919,"tag":3236,"props":7639,"children":7640},{"style":3402},[7641],{"type":2924,"value":3725},{"type":2919,"tag":3236,"props":7643,"children":7644},{"class":3238,"line":3524},[7645],{"type":2919,"tag":3236,"props":7646,"children":7647},{"style":3402},[7648],{"type":2924,"value":4133},{"type":2919,"tag":3212,"props":7650,"children":7652},{"id":7651},"moduleoptions-type",[7653,7659],{"type":2919,"tag":3076,"props":7654,"children":7656},{"className":7655},[],[7657],{"type":2924,"value":7658},"ModuleOptions",{"type":2924,"value":7108},{"type":2919,"tag":2926,"props":7661,"children":7662},{},[7663],{"type":2924,"value":7664},"You can also import the module configuration type:",{"type":2919,"tag":3226,"props":7666,"children":7668},{"className":5052,"code":7667,"language":5054,"meta":2863,"style":2863},"import type { ModuleOptions } from \"nuxt-api-shield\";\n",[7669],{"type":2919,"tag":3076,"props":7670,"children":7671},{"__ignoreMap":2863},[7672],{"type":2919,"tag":3236,"props":7673,"children":7674},{"class":3238,"line":2891},[7675,7679,7683,7687,7692,7696,7700,7704,7708,7712],{"type":2919,"tag":3236,"props":7676,"children":7677},{"style":3379},[7678],{"type":2924,"value":5066},{"type":2919,"tag":3236,"props":7680,"children":7681},{"style":3379},[7682],{"type":2924,"value":5808},{"type":2919,"tag":3236,"props":7684,"children":7685},{"style":3402},[7686],{"type":2924,"value":5071},{"type":2919,"tag":3236,"props":7688,"children":7689},{"style":3396},[7690],{"type":2924,"value":7691}," ModuleOptions",{"type":2919,"tag":3236,"props":7693,"children":7694},{"style":3402},[7695],{"type":2924,"value":5081},{"type":2919,"tag":3236,"props":7697,"children":7698},{"style":3379},[7699],{"type":2924,"value":5086},{"type":2919,"tag":3236,"props":7701,"children":7702},{"style":3402},[7703],{"type":2924,"value":3890},{"type":2919,"tag":3236,"props":7705,"children":7706},{"style":3257},[7707],{"type":2924,"value":2860},{"type":2919,"tag":3236,"props":7709,"children":7710},{"style":3402},[7711],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":7713,"children":7714},{"style":3402},[7715],{"type":2924,"value":3725},{"type":2919,"tag":3002,"props":7717,"children":7719},{"id":7718},"per-route-rate-limiting",[7720],{"type":2924,"value":7721},"Per-Route Rate Limiting",{"type":2919,"tag":2926,"props":7723,"children":7724},{},[7725,7730,7732,7737],{"type":2919,"tag":3076,"props":7726,"children":7728},{"className":7727},[],[7729],{"type":2924,"value":2860},{"type":2924,"value":7731}," supports ",{"type":2919,"tag":3014,"props":7733,"children":7734},{},[7735],{"type":2924,"value":7736},"per-route rate limiting",{"type":2924,"value":7738},", allowing you to define custom limits for specific API endpoints while keeping a global default configuration for all other routes.",{"type":2919,"tag":2926,"props":7740,"children":7741},{},[7742,7744,7750,7752,7758,7760,7766],{"type":2924,"value":7743},"This is useful when certain endpoints (such as ",{"type":2919,"tag":3076,"props":7745,"children":7747},{"className":7746},[],[7748],{"type":2924,"value":7749},"\u002Fapi\u002Flogin",{"type":2924,"value":7751},", ",{"type":2919,"tag":3076,"props":7753,"children":7755},{"className":7754},[],[7756],{"type":2924,"value":7757},"\u002Fapi\u002Fauth",{"type":2924,"value":7759},", or ",{"type":2919,"tag":3076,"props":7761,"children":7763},{"className":7762},[],[7764],{"type":2924,"value":7765},"\u002Fapi\u002Fpayment",{"type":2924,"value":7767},") require stricter protection.",{"type":2919,"tag":7769,"props":7770,"children":7771},"hr",{},[],{"type":2919,"tag":3212,"props":7773,"children":7775},{"id":7774},"configuration-example",[7776],{"type":2924,"value":7777},"Configuration Example",{"type":2919,"tag":2926,"props":7779,"children":7780},{},[7781,7782,7788],{"type":2924,"value":4152},{"type":2919,"tag":3076,"props":7783,"children":7785},{"className":7784},[],[7786],{"type":2924,"value":7787},"routes",{"type":2924,"value":7789}," option accepts a mixed array of strings (exact matches) and objects (custom limits or patterns).",{"type":2919,"tag":3226,"props":7791,"children":7793},{"className":5052,"code":7792,"language":5054,"meta":2863,"style":2863},"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",[7794],{"type":2919,"tag":3076,"props":7795,"children":7796},{"__ignoreMap":2863},[7797,7820,7855,7862,7877,7893,7913,7933,7953,7960,7967,7984,7992,8012,8019,8027,8035,8064,8085,8106,8114,8122,8129,8137,8144,8172,8192,8211,8227,8234,8246,8253],{"type":2919,"tag":3236,"props":7798,"children":7799},{"class":3238,"line":2891},[7800,7804,7808,7812,7816],{"type":2919,"tag":3236,"props":7801,"children":7802},{"style":3379},[7803],{"type":2924,"value":3382},{"type":2919,"tag":3236,"props":7805,"children":7806},{"style":3379},[7807],{"type":2924,"value":3387},{"type":2919,"tag":3236,"props":7809,"children":7810},{"style":3390},[7811],{"type":2924,"value":3393},{"type":2919,"tag":3236,"props":7813,"children":7814},{"style":3396},[7815],{"type":2924,"value":3399},{"type":2919,"tag":3236,"props":7817,"children":7818},{"style":3402},[7819],{"type":2924,"value":3405},{"type":2919,"tag":3236,"props":7821,"children":7822},{"class":3238,"line":2887},[7823,7827,7831,7835,7839,7843,7847,7851],{"type":2919,"tag":3236,"props":7824,"children":7825},{"style":3411},[7826],{"type":2924,"value":3414},{"type":2919,"tag":3236,"props":7828,"children":7829},{"style":3402},[7830],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":7832,"children":7833},{"style":3396},[7834],{"type":2924,"value":3424},{"type":2919,"tag":3236,"props":7836,"children":7837},{"style":3402},[7838],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":7840,"children":7841},{"style":3257},[7842],{"type":2924,"value":2860},{"type":2919,"tag":3236,"props":7844,"children":7845},{"style":3402},[7846],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":7848,"children":7849},{"style":3396},[7850],{"type":2924,"value":3442},{"type":2919,"tag":3236,"props":7852,"children":7853},{"style":3402},[7854],{"type":2924,"value":3447},{"type":2919,"tag":3236,"props":7856,"children":7857},{"class":3238,"line":3268},[7858],{"type":2919,"tag":3236,"props":7859,"children":7860},{"emptyLinePlaceholder":1196},[7861],{"type":2924,"value":3274},{"type":2919,"tag":3236,"props":7863,"children":7864},{"class":3238,"line":3277},[7865,7869,7873],{"type":2919,"tag":3236,"props":7866,"children":7867},{"style":3411},[7868],{"type":2924,"value":3455},{"type":2919,"tag":3236,"props":7870,"children":7871},{"style":3402},[7872],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":7874,"children":7875},{"style":3402},[7876],{"type":2924,"value":3464},{"type":2919,"tag":3236,"props":7878,"children":7879},{"class":3238,"line":2883},[7880,7885,7889],{"type":2919,"tag":3236,"props":7881,"children":7882},{"style":3411},[7883],{"type":2924,"value":7884},"    limit",{"type":2919,"tag":3236,"props":7886,"children":7887},{"style":3402},[7888],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":7890,"children":7891},{"style":3402},[7892],{"type":2924,"value":3464},{"type":2919,"tag":3236,"props":7894,"children":7895},{"class":3238,"line":3302},[7896,7901,7905,7909],{"type":2919,"tag":3236,"props":7897,"children":7898},{"style":3411},[7899],{"type":2924,"value":7900},"      max",{"type":2919,"tag":3236,"props":7902,"children":7903},{"style":3402},[7904],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":7906,"children":7907},{"style":3622},[7908],{"type":2924,"value":3790},{"type":2919,"tag":3236,"props":7910,"children":7911},{"style":3402},[7912],{"type":2924,"value":3447},{"type":2919,"tag":3236,"props":7914,"children":7915},{"class":3238,"line":3310},[7916,7921,7925,7929],{"type":2919,"tag":3236,"props":7917,"children":7918},{"style":3411},[7919],{"type":2924,"value":7920},"      duration",{"type":2919,"tag":3236,"props":7922,"children":7923},{"style":3402},[7924],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":7926,"children":7927},{"style":3622},[7928],{"type":2924,"value":3811},{"type":2919,"tag":3236,"props":7930,"children":7931},{"style":3402},[7932],{"type":2924,"value":3447},{"type":2919,"tag":3236,"props":7934,"children":7935},{"class":3238,"line":3319},[7936,7941,7945,7949],{"type":2919,"tag":3236,"props":7937,"children":7938},{"style":3411},[7939],{"type":2924,"value":7940},"      ban",{"type":2919,"tag":3236,"props":7942,"children":7943},{"style":3402},[7944],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":7946,"children":7947},{"style":3622},[7948],{"type":2924,"value":3837},{"type":2919,"tag":3236,"props":7950,"children":7951},{"style":3402},[7952],{"type":2924,"value":3447},{"type":2919,"tag":3236,"props":7954,"children":7955},{"class":3238,"line":2908},[7956],{"type":2919,"tag":3236,"props":7957,"children":7958},{"style":3402},[7959],{"type":2924,"value":3512},{"type":2919,"tag":3236,"props":7961,"children":7962},{"class":3238,"line":3515},[7963],{"type":2919,"tag":3236,"props":7964,"children":7965},{"emptyLinePlaceholder":1196},[7966],{"type":2924,"value":3274},{"type":2919,"tag":3236,"props":7968,"children":7969},{"class":3238,"line":3524},[7970,7975,7979],{"type":2919,"tag":3236,"props":7971,"children":7972},{"style":3411},[7973],{"type":2924,"value":7974},"    routes",{"type":2919,"tag":3236,"props":7976,"children":7977},{"style":3402},[7978],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":7980,"children":7981},{"style":3396},[7982],{"type":2924,"value":7983}," [\n",{"type":2919,"tag":3236,"props":7985,"children":7986},{"class":3238,"line":3533},[7987],{"type":2919,"tag":3236,"props":7988,"children":7989},{"style":3242},[7990],{"type":2924,"value":7991},"      \u002F\u002F 1. String: uses the global default limit (exact match)\n",{"type":2919,"tag":3236,"props":7993,"children":7994},{"class":3238,"line":3542},[7995,7999,8004,8008],{"type":2919,"tag":3236,"props":7996,"children":7997},{"style":3402},[7998],{"type":2924,"value":4387},{"type":2919,"tag":3236,"props":8000,"children":8001},{"style":3257},[8002],{"type":2924,"value":8003},"\u002Fapi\u002Fexample",{"type":2919,"tag":3236,"props":8005,"children":8006},{"style":3402},[8007],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":8009,"children":8010},{"style":3402},[8011],{"type":2924,"value":3447},{"type":2919,"tag":3236,"props":8013,"children":8014},{"class":3238,"line":3551},[8015],{"type":2919,"tag":3236,"props":8016,"children":8017},{"emptyLinePlaceholder":1196},[8018],{"type":2924,"value":3274},{"type":2919,"tag":3236,"props":8020,"children":8021},{"class":3238,"line":3560},[8022],{"type":2919,"tag":3236,"props":8023,"children":8024},{"style":3242},[8025],{"type":2924,"value":8026},"      \u002F\u002F 2. Object: custom rate limit for a specific route (exact match)\n",{"type":2919,"tag":3236,"props":8028,"children":8029},{"class":3238,"line":3569},[8030],{"type":2919,"tag":3236,"props":8031,"children":8032},{"style":3402},[8033],{"type":2924,"value":8034},"      {\n",{"type":2919,"tag":3236,"props":8036,"children":8037},{"class":3238,"line":3577},[8038,8043,8047,8051,8056,8060],{"type":2919,"tag":3236,"props":8039,"children":8040},{"style":3411},[8041],{"type":2924,"value":8042},"        path",{"type":2919,"tag":3236,"props":8044,"children":8045},{"style":3402},[8046],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":8048,"children":8049},{"style":3402},[8050],{"type":2924,"value":3890},{"type":2919,"tag":3236,"props":8052,"children":8053},{"style":3257},[8054],{"type":2924,"value":8055},"\u002Fapi\u002Fexample-per-route",{"type":2919,"tag":3236,"props":8057,"children":8058},{"style":3402},[8059],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":8061,"children":8062},{"style":3402},[8063],{"type":2924,"value":3447},{"type":2919,"tag":3236,"props":8065,"children":8066},{"class":3238,"line":3586},[8067,8072,8076,8081],{"type":2919,"tag":3236,"props":8068,"children":8069},{"style":3411},[8070],{"type":2924,"value":8071},"        max",{"type":2919,"tag":3236,"props":8073,"children":8074},{"style":3402},[8075],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":8077,"children":8078},{"style":3622},[8079],{"type":2924,"value":8080}," 5",{"type":2919,"tag":3236,"props":8082,"children":8083},{"style":3402},[8084],{"type":2924,"value":3447},{"type":2919,"tag":3236,"props":8086,"children":8087},{"class":3238,"line":3595},[8088,8093,8097,8102],{"type":2919,"tag":3236,"props":8089,"children":8090},{"style":3411},[8091],{"type":2924,"value":8092},"        duration",{"type":2919,"tag":3236,"props":8094,"children":8095},{"style":3402},[8096],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":8098,"children":8099},{"style":3622},[8100],{"type":2924,"value":8101}," 10",{"type":2919,"tag":3236,"props":8103,"children":8104},{"style":3402},[8105],{"type":2924,"value":3447},{"type":2919,"tag":3236,"props":8107,"children":8108},{"class":3238,"line":3609},[8109],{"type":2919,"tag":3236,"props":8110,"children":8111},{"style":3242},[8112],{"type":2924,"value":8113},"        \u002F\u002F ⚠️ \"ban\" always uses the global value\n",{"type":2919,"tag":3236,"props":8115,"children":8116},{"class":3238,"line":3638},[8117],{"type":2919,"tag":3236,"props":8118,"children":8119},{"style":3402},[8120],{"type":2924,"value":8121},"      },\n",{"type":2919,"tag":3236,"props":8123,"children":8124},{"class":3238,"line":3655},[8125],{"type":2919,"tag":3236,"props":8126,"children":8127},{"emptyLinePlaceholder":1196},[8128],{"type":2924,"value":3274},{"type":2919,"tag":3236,"props":8130,"children":8131},{"class":3238,"line":3664},[8132],{"type":2919,"tag":3236,"props":8133,"children":8134},{"style":3242},[8135],{"type":2924,"value":8136},"      \u002F\u002F 3. Object: Wildcard pattern\n",{"type":2919,"tag":3236,"props":8138,"children":8139},{"class":3238,"line":3692},[8140],{"type":2919,"tag":3236,"props":8141,"children":8142},{"style":3402},[8143],{"type":2924,"value":8034},{"type":2919,"tag":3236,"props":8145,"children":8146},{"class":3238,"line":3700},[8147,8151,8155,8159,8164,8168],{"type":2919,"tag":3236,"props":8148,"children":8149},{"style":3411},[8150],{"type":2924,"value":8042},{"type":2919,"tag":3236,"props":8152,"children":8153},{"style":3402},[8154],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":8156,"children":8157},{"style":3402},[8158],{"type":2924,"value":3890},{"type":2919,"tag":3236,"props":8160,"children":8161},{"style":3257},[8162],{"type":2924,"value":8163},"\u002Fapi\u002Fusers\u002F*\u002Fprofile",{"type":2919,"tag":3236,"props":8165,"children":8166},{"style":3402},[8167],{"type":2924,"value":3429},{"type":2919,"tag":3236,"props":8169,"children":8170},{"style":3402},[8171],{"type":2924,"value":3447},{"type":2919,"tag":3236,"props":8173,"children":8174},{"class":3238,"line":3709},[8175,8180,8184,8188],{"type":2919,"tag":3236,"props":8176,"children":8177},{"style":3411},[8178],{"type":2924,"value":8179},"        pattern",{"type":2919,"tag":3236,"props":8181,"children":8182},{"style":3402},[8183],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":8185,"children":8186},{"style":3677},[8187],{"type":2924,"value":3680},{"type":2919,"tag":3236,"props":8189,"children":8190},{"style":3402},[8191],{"type":2924,"value":3447},{"type":2919,"tag":3236,"props":8193,"children":8194},{"class":3238,"line":6484},[8195,8199,8203,8207],{"type":2919,"tag":3236,"props":8196,"children":8197},{"style":3411},[8198],{"type":2924,"value":8071},{"type":2919,"tag":3236,"props":8200,"children":8201},{"style":3402},[8202],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":8204,"children":8205},{"style":3622},[8206],{"type":2924,"value":8101},{"type":2919,"tag":3236,"props":8208,"children":8209},{"style":3402},[8210],{"type":2924,"value":3447},{"type":2919,"tag":3236,"props":8212,"children":8213},{"class":3238,"line":6492},[8214,8218,8222],{"type":2919,"tag":3236,"props":8215,"children":8216},{"style":3411},[8217],{"type":2924,"value":8092},{"type":2919,"tag":3236,"props":8219,"children":8220},{"style":3402},[8221],{"type":2924,"value":3419},{"type":2919,"tag":3236,"props":8223,"children":8224},{"style":3622},[8225],{"type":2924,"value":8226}," 60\n",{"type":2919,"tag":3236,"props":8228,"children":8229},{"class":3238,"line":6528},[8230],{"type":2919,"tag":3236,"props":8231,"children":8232},{"style":3402},[8233],{"type":2924,"value":4454},{"type":2919,"tag":3236,"props":8235,"children":8236},{"class":3238,"line":6601},[8237,8242],{"type":2919,"tag":3236,"props":8238,"children":8239},{"style":3396},[8240],{"type":2924,"value":8241},"    ]",{"type":2919,"tag":3236,"props":8243,"children":8244},{"style":3402},[8245],{"type":2924,"value":3447},{"type":2919,"tag":3236,"props":8247,"children":8248},{"class":3238,"line":6609},[8249],{"type":2919,"tag":3236,"props":8250,"children":8251},{"style":3402},[8252],{"type":2924,"value":3706},{"type":2919,"tag":3236,"props":8254,"children":8255},{"class":3238,"line":6618},[8256,8260,8264],{"type":2919,"tag":3236,"props":8257,"children":8258},{"style":3402},[8259],{"type":2924,"value":3715},{"type":2919,"tag":3236,"props":8261,"children":8262},{"style":3396},[8263],{"type":2924,"value":3720},{"type":2919,"tag":3236,"props":8265,"children":8266},{"style":3402},[8267],{"type":2924,"value":3725},{"type":2919,"tag":3212,"props":8269,"children":8271},{"id":8270},"wildcard-route-support",[8272],{"type":2924,"value":8273},"Wildcard Route Support",{"type":2919,"tag":2926,"props":8275,"children":8276},{},[8277,8279,8285],{"type":2924,"value":8278},"Wildcard patterns allow you to apply the same limits to groups of related API endpoints. Enable them by setting ",{"type":2919,"tag":3076,"props":8280,"children":8282},{"className":8281},[],[8283],{"type":2924,"value":8284},"pattern: true",{"type":2924,"value":8286}," in your route configuration.",{"type":2919,"tag":5018,"props":8288,"children":8290},{"id":8289},"wildcard-pattern-syntax",[8291],{"type":2924,"value":8292},"Wildcard Pattern Syntax",{"type":2919,"tag":2976,"props":8294,"children":8295},{},[8296,8340],{"type":2919,"tag":2980,"props":8297,"children":8298},{},[8299,8311,8313],{"type":2919,"tag":3014,"props":8300,"children":8301},{},[8302,8304,8310],{"type":2924,"value":8303},"Single-Segment Wildcard (",{"type":2919,"tag":3076,"props":8305,"children":8307},{"className":8306},[],[8308],{"type":2924,"value":8309},"*",{"type":2924,"value":3720},{"type":2924,"value":8312},": Matches exactly one path segment.\n",{"type":2919,"tag":2976,"props":8314,"children":8315},{},[8316],{"type":2919,"tag":2980,"props":8317,"children":8318},{},[8319,8324,8326,8332,8333,8339],{"type":2919,"tag":3076,"props":8320,"children":8322},{"className":8321},[],[8323],{"type":2924,"value":8163},{"type":2924,"value":8325}," matches ",{"type":2919,"tag":3076,"props":8327,"children":8329},{"className":8328},[],[8330],{"type":2924,"value":8331},"\u002Fapi\u002Fusers\u002F123\u002Fprofile",{"type":2924,"value":7078},{"type":2919,"tag":3076,"props":8334,"children":8336},{"className":8335},[],[8337],{"type":2924,"value":8338},"\u002Fapi\u002Fusers\u002Fadmin\u002Fprofile",{"type":2924,"value":4281},{"type":2919,"tag":2980,"props":8341,"children":8342},{},[8343,8355,8357],{"type":2919,"tag":3014,"props":8344,"children":8345},{},[8346,8348,8354],{"type":2924,"value":8347},"Multi-Segment Wildcard (",{"type":2919,"tag":3076,"props":8349,"children":8351},{"className":8350},[],[8352],{"type":2924,"value":8353},"**",{"type":2924,"value":3720},{"type":2924,"value":8356},": Matches zero or more path segments.\n",{"type":2919,"tag":2976,"props":8358,"children":8359},{},[8360],{"type":2919,"tag":2980,"props":8361,"children":8362},{},[8363,8369,8370,8376,8377,8383],{"type":2919,"tag":3076,"props":8364,"children":8366},{"className":8365},[],[8367],{"type":2924,"value":8368},"\u002Fapi\u002Freports\u002F**\u002Fsummary",{"type":2924,"value":8325},{"type":2919,"tag":3076,"props":8371,"children":8373},{"className":8372},[],[8374],{"type":2924,"value":8375},"\u002Fapi\u002Freports\u002Fmonthly\u002F2023\u002Fsummary",{"type":2924,"value":7078},{"type":2919,"tag":3076,"props":8378,"children":8380},{"className":8379},[],[8381],{"type":2924,"value":8382},"\u002Fapi\u002Freports\u002Fsummary",{"type":2924,"value":4281},{"type":2919,"tag":5018,"props":8385,"children":8387},{"id":8386},"pattern-precedence",[8388],{"type":2924,"value":8389},"Pattern Precedence",{"type":2919,"tag":8391,"props":8392,"children":8393},"ol",{},[8394,8404,8414],{"type":2919,"tag":2980,"props":8395,"children":8396},{},[8397,8402],{"type":2919,"tag":3014,"props":8398,"children":8399},{},[8400],{"type":2924,"value":8401},"Exact matches",{"type":2924,"value":8403}," always take precedence over wildcard patterns.",{"type":2919,"tag":2980,"props":8405,"children":8406},{},[8407,8412],{"type":2919,"tag":3014,"props":8408,"children":8409},{},[8410],{"type":2924,"value":8411},"More specific wildcards",{"type":2924,"value":8413}," take precedence over less specific ones.",{"type":2919,"tag":2980,"props":8415,"children":8416},{},[8417],{"type":2924,"value":8418},"When multiple wildcard patterns match, the most specific one is used.",{"type":2919,"tag":5018,"props":8420,"children":8422},{"id":8421},"important-notes",[8423],{"type":2924,"value":8424},"Important Notes",{"type":2919,"tag":2976,"props":8426,"children":8427},{},[8428,8438],{"type":2919,"tag":2980,"props":8429,"children":8430},{},[8431,8436],{"type":2919,"tag":3014,"props":8432,"children":8433},{},[8434],{"type":2924,"value":8435},"Shared Rate Limits:",{"type":2924,"value":8437}," All requests that match the same wildcard pattern share the same rate limit counter.",{"type":2919,"tag":2980,"props":8439,"children":8440},{},[8441,8446,8448,8454,8455,8461],{"type":2919,"tag":3014,"props":8442,"children":8443},{},[8444],{"type":2924,"value":8445},"Security:",{"type":2924,"value":8447}," Broad or dangerous patterns like ",{"type":2919,"tag":3076,"props":8449,"children":8451},{"className":8450},[],[8452],{"type":2924,"value":8453},"\u002F**",{"type":2924,"value":7078},{"type":2919,"tag":3076,"props":8456,"children":8458},{"className":8457},[],[8459],{"type":2924,"value":8460},"\u002F*",{"type":2924,"value":8462}," are automatically rejected to prevent accidental global blocking.",{"type":2919,"tag":3002,"props":8464,"children":8466},{"id":8465},"important-considerations",[8467],{"type":2924,"value":8468},"Important Considerations",{"type":2919,"tag":3212,"props":8470,"children":8472},{"id":8471},"data-privacy-ip-address-storage",[8473],{"type":2924,"value":8474},"Data Privacy (IP Address Storage)",{"type":2919,"tag":2926,"props":8476,"children":8477},{},[8478,8483],{"type":2919,"tag":3076,"props":8479,"children":8481},{"className":8480},[],[8482],{"type":2924,"value":2860},{"type":2924,"value":8484}," 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":2919,"tag":2976,"props":8486,"children":8487},{},[8488,8529,8539],{"type":2919,"tag":2980,"props":8489,"children":8490},{},[8491,8496],{"type":2919,"tag":3014,"props":8492,"children":8493},{},[8494],{"type":2924,"value":8495},"Data Stored:",{"type":2919,"tag":2976,"props":8497,"children":8498},{},[8499,8518],{"type":2919,"tag":2980,"props":8500,"children":8501},{},[8502,8508,8510,8516],{"type":2919,"tag":3076,"props":8503,"children":8505},{"className":8504},[],[8506],{"type":2924,"value":8507},"ip:\u003CIP_ADDRESS>",{"type":2924,"value":8509},": Stores ",{"type":2919,"tag":3076,"props":8511,"children":8513},{"className":8512},[],[8514],{"type":2924,"value":8515},"{ count: number, time: number }",{"type":2924,"value":8517}," for tracking request rates.",{"type":2919,"tag":2980,"props":8519,"children":8520},{},[8521,8527],{"type":2919,"tag":3076,"props":8522,"children":8524},{"className":8523},[],[8525],{"type":2924,"value":8526},"ban:\u003CIP_ADDRESS>",{"type":2924,"value":8528},": Stores a timestamp indicating when a ban on an IP address expires.",{"type":2919,"tag":2980,"props":8530,"children":8531},{},[8532,8537],{"type":2919,"tag":3014,"props":8533,"children":8534},{},[8535],{"type":2924,"value":8536},"Compliance:",{"type":2924,"value":8538}," 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":2919,"tag":2980,"props":8540,"children":8541},{},[8542,8547],{"type":2919,"tag":3014,"props":8543,"children":8544},{},[8545],{"type":2924,"value":8546},"Data Retention:",{"type":2919,"tag":2976,"props":8548,"children":8549},{},[8550,8562],{"type":2919,"tag":2980,"props":8551,"children":8552},{},[8553,8555,8560],{"type":2924,"value":8554},"Ban entries are cleaned up by the ",{"type":2919,"tag":3076,"props":8556,"children":8558},{"className":8557},[],[8559],{"type":2924,"value":3173},{"type":2924,"value":8561}," task after expiry.",{"type":2919,"tag":2980,"props":8563,"children":8564},{},[8565,8567,8572,8574,8579],{"type":2924,"value":8566},"IP tracking entries are cleaned up by the ",{"type":2919,"tag":3076,"props":8568,"children":8570},{"className":8569},[],[8571],{"type":2924,"value":3181},{"type":2924,"value":8573}," task based on the ",{"type":2919,"tag":3076,"props":8575,"children":8577},{"className":8576},[],[8578],{"type":2924,"value":4742},{"type":2924,"value":8580}," setting.",{"type":2919,"tag":3212,"props":8582,"children":8584},{"id":8583},"storage-security",[8585],{"type":2924,"value":8586},"Storage Security",{"type":2919,"tag":2976,"props":8588,"children":8589},{},[8590,8668],{"type":2919,"tag":2980,"props":8591,"children":8592},{},[8593,8606,8608,8614,8616,8621,8622,8628,8630,8635,8637,8643,8645],{"type":2919,"tag":3014,"props":8594,"children":8595},{},[8596,8598,8604],{"type":2924,"value":8597},"Filesystem Driver (",{"type":2919,"tag":3076,"props":8599,"children":8601},{"className":8600},[],[8602],{"type":2924,"value":8603},"driver: 'fs'",{"type":2924,"value":8605},"):",{"type":2924,"value":8607}," If you use the filesystem driver for ",{"type":2919,"tag":3076,"props":8609,"children":8611},{"className":8610},[],[8612],{"type":2924,"value":8613},"unstorage",{"type":2924,"value":8615}," (e.g., ",{"type":2919,"tag":3076,"props":8617,"children":8619},{"className":8618},[],[8620],{"type":2924,"value":8603},{"type":2924,"value":7751},{"type":2919,"tag":3076,"props":8623,"children":8625},{"className":8624},[],[8626],{"type":2924,"value":8627},"base: '.shield'",{"type":2924,"value":8629},"), ensure that the storage directory (and the ",{"type":2919,"tag":3076,"props":8631,"children":8633},{"className":8632},[],[8634],{"type":2924,"value":3961},{"type":2924,"value":8636}," directory if logging is enabled via ",{"type":2919,"tag":3076,"props":8638,"children":8640},{"className":8639},[],[8641],{"type":2924,"value":8642},"log.path",{"type":2924,"value":8644},") is:\n",{"type":2919,"tag":2976,"props":8646,"children":8647},{},[8648,8658],{"type":2919,"tag":2980,"props":8649,"children":8650},{},[8651,8656],{"type":2919,"tag":3014,"props":8652,"children":8653},{},[8654],{"type":2924,"value":8655},"Not web-accessible:",{"type":2924,"value":8657}," Your web server should not be configured to serve files from these directories.",{"type":2919,"tag":2980,"props":8659,"children":8660},{},[8661,8666],{"type":2919,"tag":3014,"props":8662,"children":8663},{},[8664],{"type":2924,"value":8665},"Properly permissioned:",{"type":2924,"value":8667}," The directories should have appropriate server-side file permissions to prevent unauthorized reading or writing.",{"type":2919,"tag":2980,"props":8669,"children":8670},{},[8671,8676],{"type":2919,"tag":3014,"props":8672,"children":8673},{},[8674],{"type":2924,"value":8675},"Other Drivers (Redis, etc.):",{"type":2924,"value":8677}," If using database drivers like Redis, ensure your database server itself is secured (e.g., authentication, network access controls).",{"type":2919,"tag":3212,"props":8679,"children":8681},{"id":8680},"error-message-errormessage",[8682,8684,8690],{"type":2924,"value":8683},"Error Message (",{"type":2919,"tag":3076,"props":8685,"children":8687},{"className":8686},[],[8688],{"type":2924,"value":8689},"errorMessage",{"type":2924,"value":3720},{"type":2919,"tag":2926,"props":8692,"children":8693},{},[8694,8695,8700],{"type":2924,"value":4152},{"type":2919,"tag":3076,"props":8696,"children":8698},{"className":8697},[],[8699],{"type":2924,"value":8689},{"type":2924,"value":8701}," option in the module configuration is returned in the body of a 429 response.",{"type":2919,"tag":2976,"props":8703,"children":8704},{},[8705,8710],{"type":2919,"tag":2980,"props":8706,"children":8707},{},[8708],{"type":2924,"value":8709},"It's recommended to use a plain text message.",{"type":2919,"tag":2980,"props":8711,"children":8712},{},[8713,8715,8720],{"type":2924,"value":8714},"If you choose to use HTML in your ",{"type":2919,"tag":3076,"props":8716,"children":8718},{"className":8717},[],[8719],{"type":2924,"value":8689},{"type":2924,"value":8721},", 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":2919,"tag":3002,"props":8723,"children":8725},{"id":8724},"development",[8726],{"type":2924,"value":8727},"Development",{"type":2919,"tag":3226,"props":8729,"children":8731},{"className":3228,"code":8730,"language":3230,"meta":2863,"style":2863},"# 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",[8732],{"type":2919,"tag":3076,"props":8733,"children":8734},{"__ignoreMap":2863},[8735,8743,8751,8758,8766,8778,8785,8793,8805,8812,8820,8832,8839,8847,8859,8866,8874,8886,8898,8905,8913,8925],{"type":2919,"tag":3236,"props":8736,"children":8737},{"class":3238,"line":2891},[8738],{"type":2919,"tag":3236,"props":8739,"children":8740},{"style":3242},[8741],{"type":2924,"value":8742},"# Install dependencies\n",{"type":2919,"tag":3236,"props":8744,"children":8745},{"class":3238,"line":2887},[8746],{"type":2919,"tag":3236,"props":8747,"children":8748},{"style":3251},[8749],{"type":2924,"value":8750},"yarn\n",{"type":2919,"tag":3236,"props":8752,"children":8753},{"class":3238,"line":3268},[8754],{"type":2919,"tag":3236,"props":8755,"children":8756},{"emptyLinePlaceholder":1196},[8757],{"type":2924,"value":3274},{"type":2919,"tag":3236,"props":8759,"children":8760},{"class":3238,"line":3277},[8761],{"type":2919,"tag":3236,"props":8762,"children":8763},{"style":3242},[8764],{"type":2924,"value":8765},"# Generate type stubs\n",{"type":2919,"tag":3236,"props":8767,"children":8768},{"class":3238,"line":2883},[8769,8773],{"type":2919,"tag":3236,"props":8770,"children":8771},{"style":3251},[8772],{"type":2924,"value":3291},{"type":2919,"tag":3236,"props":8774,"children":8775},{"style":3257},[8776],{"type":2924,"value":8777}," dev:prepare\n",{"type":2919,"tag":3236,"props":8779,"children":8780},{"class":3238,"line":3302},[8781],{"type":2919,"tag":3236,"props":8782,"children":8783},{"emptyLinePlaceholder":1196},[8784],{"type":2924,"value":3274},{"type":2919,"tag":3236,"props":8786,"children":8787},{"class":3238,"line":3310},[8788],{"type":2919,"tag":3236,"props":8789,"children":8790},{"style":3242},[8791],{"type":2924,"value":8792},"# Develop with the playground\n",{"type":2919,"tag":3236,"props":8794,"children":8795},{"class":3238,"line":3319},[8796,8800],{"type":2919,"tag":3236,"props":8797,"children":8798},{"style":3251},[8799],{"type":2924,"value":3291},{"type":2919,"tag":3236,"props":8801,"children":8802},{"style":3257},[8803],{"type":2924,"value":8804}," dev\n",{"type":2919,"tag":3236,"props":8806,"children":8807},{"class":3238,"line":2908},[8808],{"type":2919,"tag":3236,"props":8809,"children":8810},{"emptyLinePlaceholder":1196},[8811],{"type":2924,"value":3274},{"type":2919,"tag":3236,"props":8813,"children":8814},{"class":3238,"line":3515},[8815],{"type":2919,"tag":3236,"props":8816,"children":8817},{"style":3242},[8818],{"type":2924,"value":8819},"# Build the playground\n",{"type":2919,"tag":3236,"props":8821,"children":8822},{"class":3238,"line":3524},[8823,8827],{"type":2919,"tag":3236,"props":8824,"children":8825},{"style":3251},[8826],{"type":2924,"value":3291},{"type":2919,"tag":3236,"props":8828,"children":8829},{"style":3257},[8830],{"type":2924,"value":8831}," dev:build\n",{"type":2919,"tag":3236,"props":8833,"children":8834},{"class":3238,"line":3533},[8835],{"type":2919,"tag":3236,"props":8836,"children":8837},{"emptyLinePlaceholder":1196},[8838],{"type":2924,"value":3274},{"type":2919,"tag":3236,"props":8840,"children":8841},{"class":3238,"line":3542},[8842],{"type":2919,"tag":3236,"props":8843,"children":8844},{"style":3242},[8845],{"type":2924,"value":8846},"# Run ESLint\n",{"type":2919,"tag":3236,"props":8848,"children":8849},{"class":3238,"line":3551},[8850,8854],{"type":2919,"tag":3236,"props":8851,"children":8852},{"style":3251},[8853],{"type":2924,"value":3291},{"type":2919,"tag":3236,"props":8855,"children":8856},{"style":3257},[8857],{"type":2924,"value":8858}," lint\n",{"type":2919,"tag":3236,"props":8860,"children":8861},{"class":3238,"line":3560},[8862],{"type":2919,"tag":3236,"props":8863,"children":8864},{"emptyLinePlaceholder":1196},[8865],{"type":2924,"value":3274},{"type":2919,"tag":3236,"props":8867,"children":8868},{"class":3238,"line":3569},[8869],{"type":2919,"tag":3236,"props":8870,"children":8871},{"style":3242},[8872],{"type":2924,"value":8873},"# Run Vitest\n",{"type":2919,"tag":3236,"props":8875,"children":8876},{"class":3238,"line":3577},[8877,8881],{"type":2919,"tag":3236,"props":8878,"children":8879},{"style":3251},[8880],{"type":2924,"value":3291},{"type":2919,"tag":3236,"props":8882,"children":8883},{"style":3257},[8884],{"type":2924,"value":8885}," test\n",{"type":2919,"tag":3236,"props":8887,"children":8888},{"class":3238,"line":3586},[8889,8893],{"type":2919,"tag":3236,"props":8890,"children":8891},{"style":3251},[8892],{"type":2924,"value":3291},{"type":2919,"tag":3236,"props":8894,"children":8895},{"style":3257},[8896],{"type":2924,"value":8897}," test:watch\n",{"type":2919,"tag":3236,"props":8899,"children":8900},{"class":3238,"line":3595},[8901],{"type":2919,"tag":3236,"props":8902,"children":8903},{"emptyLinePlaceholder":1196},[8904],{"type":2924,"value":3274},{"type":2919,"tag":3236,"props":8906,"children":8907},{"class":3238,"line":3609},[8908],{"type":2919,"tag":3236,"props":8909,"children":8910},{"style":3242},[8911],{"type":2924,"value":8912},"# Release new version\n",{"type":2919,"tag":3236,"props":8914,"children":8915},{"class":3238,"line":3638},[8916,8920],{"type":2919,"tag":3236,"props":8917,"children":8918},{"style":3251},[8919],{"type":2924,"value":3291},{"type":2919,"tag":3236,"props":8921,"children":8922},{"style":3257},[8923],{"type":2924,"value":8924}," release:patch\n",{"type":2919,"tag":3236,"props":8926,"children":8927},{"class":3238,"line":3655},[8928,8932],{"type":2919,"tag":3236,"props":8929,"children":8930},{"style":3251},[8931],{"type":2924,"value":3291},{"type":2919,"tag":3236,"props":8933,"children":8934},{"style":3257},[8935],{"type":2924,"value":8936}," release:minor\n",{"type":2919,"tag":8938,"props":8939,"children":8940},"style",{},[8941],{"type":2924,"value":8942},"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":2863,"searchDepth":2887,"depth":2887,"links":8944},[8945,8946,8957,8963,8967,8973],{"id":3004,"depth":2887,"text":395},{"id":3207,"depth":2887,"text":3210,"children":8947},[8948,8950,8952,8954,8956],{"id":3214,"depth":3268,"text":8949},"1. Add nuxt-api-shield dependency to your project",{"id":3337,"depth":3268,"text":8951},"2. Add nuxt-api-shield to the modules section of nuxt.config.ts",{"id":4284,"depth":3268,"text":8953},"3. Add nitro\u002Fstorage to nuxt.config.ts",{"id":4693,"depth":3268,"text":8955},"4. Schedule bundled cleanup tasks in nuxt.config.ts",{"id":4994,"depth":3268,"text":4997},{"id":7088,"depth":2887,"text":7091,"children":8958},[8959,8961],{"id":7099,"depth":3268,"text":8960},"RateLimit Type",{"id":7651,"depth":3268,"text":8962},"ModuleOptions Type",{"id":7718,"depth":2887,"text":7721,"children":8964},[8965,8966],{"id":7774,"depth":3268,"text":7777},{"id":8270,"depth":3268,"text":8273},{"id":8465,"depth":2887,"text":8468,"children":8968},[8969,8970,8971],{"id":8471,"depth":3268,"text":8474},{"id":8583,"depth":3268,"text":8586},{"id":8680,"depth":3268,"text":8972},"Error Message (errorMessage)",{"id":8724,"depth":2887,"text":8727},{"v5":8975,"v4":8976,"v3":8977,"v2":8978},"5 (nightly)","4.4.2","3.21.2","2.18.1"]