[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f30r277ag21rfj":3,"module-api-shield":3072,"versions":10787},[4,1132,2002,2866],{"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,430,919,1011,1048,1090],{"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,360,383],{"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,356],{"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},"Module Dependencies","\u002Fdocs\u002F3.x\u002Fguide\u002Fmodules\u002Fmodule-dependencies","docs\u002F3.x\u002F3.guide\u002F4.modules\u002F4.module-dependencies",{"title":345,"path":346,"stem":347,"titleTemplate":6},"Use Hooks & Extend Types","\u002Fdocs\u002F3.x\u002Fguide\u002Fmodules\u002Frecipes-advanced","docs\u002F3.x\u002F3.guide\u002F4.modules\u002F5.recipes-advanced",{"title":349,"path":350,"stem":351,"titleTemplate":6},"Test Your Module","\u002Fdocs\u002F3.x\u002Fguide\u002Fmodules\u002Ftesting","docs\u002F3.x\u002F3.guide\u002F4.modules\u002F6.testing",{"title":353,"path":354,"stem":355,"titleTemplate":6},"Follow Best Practices","\u002Fdocs\u002F3.x\u002Fguide\u002Fmodules\u002Fbest-practices","docs\u002F3.x\u002F3.guide\u002F4.modules\u002F7.best-practices",{"title":357,"path":358,"stem":359,"titleTemplate":6},"Publish & Share Your Module","\u002Fdocs\u002F3.x\u002Fguide\u002Fmodules\u002Fecosystem","docs\u002F3.x\u002F3.guide\u002F4.modules\u002F8.ecosystem",{"title":361,"titleTemplate":362,"icon":363,"path":364,"stem":365,"children":366,"page":108},"Recipes","%s · Recipes","i-lucide-cooking-pot","\u002Fdocs\u002F3.x\u002Fguide\u002Frecipes","docs\u002F3.x\u002F3.guide\u002F5.recipes",[367,371,375,379],{"title":368,"path":369,"stem":370,"titleTemplate":6},"Custom Routing","\u002Fdocs\u002F3.x\u002Fguide\u002Frecipes\u002Fcustom-routing","docs\u002F3.x\u002F3.guide\u002F5.recipes\u002F1.custom-routing",{"title":372,"path":373,"stem":374,"titleTemplate":6},"Vite Plugins","\u002Fdocs\u002F3.x\u002Fguide\u002Frecipes\u002Fvite-plugin","docs\u002F3.x\u002F3.guide\u002F5.recipes\u002F2.vite-plugin",{"title":376,"path":377,"stem":378,"titleTemplate":6},"Custom useFetch","\u002Fdocs\u002F3.x\u002Fguide\u002Frecipes\u002Fcustom-usefetch","docs\u002F3.x\u002F3.guide\u002F5.recipes\u002F3.custom-usefetch",{"title":380,"path":381,"stem":382,"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":384,"titleTemplate":385,"icon":386,"path":387,"stem":388,"children":389,"page":108},"Going Further","%s · Nuxt Advanced","i-lucide-star","\u002Fdocs\u002F3.x\u002Fguide\u002Fgoing-further","docs\u002F3.x\u002F3.guide\u002F6.going-further",[390,394,398,402,406,410,414,418,422,426],{"title":391,"path":392,"stem":393,"titleTemplate":6},"Custom Events","\u002Fdocs\u002F3.x\u002Fguide\u002Fgoing-further\u002Fevents","docs\u002F3.x\u002F3.guide\u002F6.going-further\u002F1.events",{"title":395,"path":396,"stem":397,"titleTemplate":6},"Experimental Features","\u002Fdocs\u002F3.x\u002Fguide\u002Fgoing-further\u002Fexperimental-features","docs\u002F3.x\u002F3.guide\u002F6.going-further\u002F1.experimental-features",{"title":399,"path":400,"stem":401,"titleTemplate":6},"Features","\u002Fdocs\u002F3.x\u002Fguide\u002Fgoing-further\u002Ffeatures","docs\u002F3.x\u002F3.guide\u002F6.going-further\u002F1.features",{"title":403,"path":404,"stem":405,"titleTemplate":6},"Runtime Config","\u002Fdocs\u002F3.x\u002Fguide\u002Fgoing-further\u002Fruntime-config","docs\u002F3.x\u002F3.guide\u002F6.going-further\u002F10.runtime-config",{"title":407,"path":408,"stem":409,"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":411,"path":412,"stem":413,"titleTemplate":6},"Lifecycle Hooks","\u002Fdocs\u002F3.x\u002Fguide\u002Fgoing-further\u002Fhooks","docs\u002F3.x\u002F3.guide\u002F6.going-further\u002F2.hooks",{"title":415,"path":416,"stem":417,"titleTemplate":6},"Nuxt Kit","\u002Fdocs\u002F3.x\u002Fguide\u002Fgoing-further\u002Fkit","docs\u002F3.x\u002F3.guide\u002F6.going-further\u002F4.kit",{"title":419,"path":420,"stem":421,"titleTemplate":6},"NuxtApp","\u002Fdocs\u002F3.x\u002Fguide\u002Fgoing-further\u002Fnuxt-app","docs\u002F3.x\u002F3.guide\u002F6.going-further\u002F6.nuxt-app",{"title":423,"path":424,"stem":425,"titleTemplate":6},"Authoring Nuxt Layers","\u002Fdocs\u002F3.x\u002Fguide\u002Fgoing-further\u002Flayers","docs\u002F3.x\u002F3.guide\u002F6.going-further\u002F7.layers",{"title":427,"path":428,"stem":429,"titleTemplate":6},"Debugging","\u002Fdocs\u002F3.x\u002Fguide\u002Fgoing-further\u002Fdebugging","docs\u002F3.x\u002F3.guide\u002F6.going-further\u002F9.debugging",{"title":431,"titleTemplate":432,"icon":433,"path":434,"stem":435,"children":436,"page":108},"API","%s · Nuxt API","i-lucide-code-xml","\u002Fdocs\u002F3.x\u002Fapi","docs\u002F3.x\u002F4.api",[437,503,626,749,828,901,914],{"title":438,"titleTemplate":439,"icon":324,"path":440,"stem":441,"children":442,"page":108},"Components","%s · Nuxt Components","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents","docs\u002F3.x\u002F4.api\u002F1.components",[443,447,451,455,459,463,467,471,475,479,483,487,491,495,499],{"title":444,"path":445,"stem":446,"titleTemplate":6},"\u003CClientOnly>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fclient-only","docs\u002F3.x\u002F4.api\u002F1.components\u002F1.client-only",{"title":448,"path":449,"stem":450,"titleTemplate":6},"\u003CDevOnly>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fdev-only","docs\u002F3.x\u002F4.api\u002F1.components\u002F1.dev-only",{"title":452,"path":453,"stem":454,"titleTemplate":6},"\u003CNuxtClientFallback>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fnuxt-client-fallback","docs\u002F3.x\u002F4.api\u002F1.components\u002F1.nuxt-client-fallback",{"title":456,"path":457,"stem":458,"titleTemplate":6},"\u003CNuxtPicture>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fnuxt-picture","docs\u002F3.x\u002F4.api\u002F1.components\u002F10.nuxt-picture",{"title":460,"path":461,"stem":462,"titleTemplate":6},"\u003CTeleport>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fteleports","docs\u002F3.x\u002F4.api\u002F1.components\u002F11.teleports",{"title":464,"path":465,"stem":466,"titleTemplate":6},"\u003CNuxtRouteAnnouncer>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fnuxt-route-announcer","docs\u002F3.x\u002F4.api\u002F1.components\u002F12.nuxt-route-announcer",{"title":468,"path":469,"stem":470,"titleTemplate":6},"\u003CNuxtTime>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fnuxt-time","docs\u002F3.x\u002F4.api\u002F1.components\u002F13.nuxt-time",{"title":472,"path":473,"stem":474,"titleTemplate":6},"\u003CNuxtPage>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fnuxt-page","docs\u002F3.x\u002F4.api\u002F1.components\u002F2.nuxt-page",{"title":476,"path":477,"stem":478,"titleTemplate":6},"\u003CNuxtLayout>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fnuxt-layout","docs\u002F3.x\u002F4.api\u002F1.components\u002F3.nuxt-layout",{"title":480,"path":481,"stem":482,"titleTemplate":6},"\u003CNuxtLink>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fnuxt-link","docs\u002F3.x\u002F4.api\u002F1.components\u002F4.nuxt-link",{"title":484,"path":485,"stem":486,"titleTemplate":6},"\u003CNuxtLoadingIndicator>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fnuxt-loading-indicator","docs\u002F3.x\u002F4.api\u002F1.components\u002F5.nuxt-loading-indicator",{"title":488,"path":489,"stem":490,"titleTemplate":6},"\u003CNuxtErrorBoundary>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fnuxt-error-boundary","docs\u002F3.x\u002F4.api\u002F1.components\u002F6.nuxt-error-boundary",{"title":492,"path":493,"stem":494,"titleTemplate":6},"\u003CNuxtWelcome>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fnuxt-welcome","docs\u002F3.x\u002F4.api\u002F1.components\u002F7.nuxt-welcome",{"title":496,"path":497,"stem":498,"titleTemplate":6},"\u003CNuxtIsland>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fnuxt-island","docs\u002F3.x\u002F4.api\u002F1.components\u002F8.nuxt-island",{"title":500,"path":501,"stem":502,"titleTemplate":6},"\u003CNuxtImg>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fnuxt-img","docs\u002F3.x\u002F4.api\u002F1.components\u002F9.nuxt-img",{"title":504,"titleTemplate":505,"icon":506,"path":507,"stem":508,"children":509,"page":108},"Composables","%s · Nuxt Composables","i-lucide-arrow-left-right","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables","docs\u002F3.x\u002F4.api\u002F2.composables",[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,622],{"title":511,"path":512,"stem":513,"titleTemplate":6},"onPrehydrate","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fon-prehydrate","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fon-prehydrate",{"title":515,"path":516,"stem":517,"titleTemplate":6},"useAppConfig","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-app-config","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-app-config",{"title":519,"path":520,"stem":521,"titleTemplate":6},"useAsyncData","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-async-data","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-async-data",{"title":523,"path":524,"stem":525,"titleTemplate":6},"useCookie","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-cookie","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-cookie",{"title":527,"path":528,"stem":529,"titleTemplate":6},"useError","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-error","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-error",{"title":531,"path":532,"stem":533,"titleTemplate":6},"useFetch","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-fetch","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-fetch",{"title":535,"path":536,"stem":537,"titleTemplate":6},"useHead","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-head","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-head",{"title":539,"path":540,"stem":541,"titleTemplate":6},"useHeadSafe","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-head-safe","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-head-safe",{"title":543,"path":544,"stem":545,"titleTemplate":6},"useHydration","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-hydration","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-hydration",{"title":547,"path":548,"stem":549,"titleTemplate":6},"useLazyAsyncData","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-lazy-async-data","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-lazy-async-data",{"title":551,"path":552,"stem":553,"titleTemplate":6},"useLazyFetch","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-lazy-fetch","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-lazy-fetch",{"title":555,"path":556,"stem":557,"titleTemplate":6},"useLoadingIndicator","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-loading-indicator","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-loading-indicator",{"title":559,"path":560,"stem":561,"titleTemplate":6},"useNuxtApp","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-nuxt-app","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-nuxt-app",{"title":563,"path":564,"stem":565,"titleTemplate":6},"useNuxtData","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-nuxt-data","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-nuxt-data",{"title":567,"path":568,"stem":569,"titleTemplate":6},"usePreviewMode","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-preview-mode","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-preview-mode",{"title":571,"path":572,"stem":573,"titleTemplate":6},"useRequestEvent","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-request-event","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-request-event",{"title":575,"path":576,"stem":577,"titleTemplate":6},"useRequestFetch","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-request-fetch","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-request-fetch",{"title":579,"path":580,"stem":581,"titleTemplate":6},"useRequestHeader","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-request-header","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-request-header",{"title":583,"path":584,"stem":585,"titleTemplate":6},"useRequestHeaders","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-request-headers","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-request-headers",{"title":587,"path":588,"stem":589,"titleTemplate":6},"useRequestURL","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-request-url","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-request-url",{"title":591,"path":592,"stem":593,"titleTemplate":6},"useResponseHeader","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-response-header","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-response-header",{"title":595,"path":596,"stem":597,"titleTemplate":6},"useRoute","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-route","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-route",{"title":599,"path":600,"stem":601,"titleTemplate":6},"useRouteAnnouncer","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-route-announcer","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-route-announcer",{"title":603,"path":604,"stem":605,"titleTemplate":6},"useRouter","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-router","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-router",{"title":607,"path":608,"stem":609,"titleTemplate":6},"useRuntimeConfig","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-runtime-config","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-runtime-config",{"title":611,"path":612,"stem":613,"titleTemplate":6},"useRuntimeHook","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-runtime-hook","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-runtime-hook",{"title":615,"path":616,"stem":617,"titleTemplate":6},"useSeoMeta","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-seo-meta","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-seo-meta",{"title":619,"path":620,"stem":621,"titleTemplate":6},"useServerSeoMeta","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-server-seo-meta","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-server-seo-meta",{"title":623,"path":624,"stem":625,"titleTemplate":6},"useState","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-state","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-state",{"title":627,"titleTemplate":628,"icon":629,"path":630,"stem":631,"children":632,"page":108},"Utils","%s · Nuxt Utils","i-lucide-square-function","\u002Fdocs\u002F3.x\u002Fapi\u002Futils","docs\u002F3.x\u002F4.api\u002F3.utils",[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,745],{"title":634,"path":635,"stem":636,"titleTemplate":6},"$fetch","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fdollarfetch","docs\u002F3.x\u002F4.api\u002F3.utils\u002F$fetch",{"title":638,"path":639,"stem":640,"titleTemplate":6},"abortNavigation","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fabort-navigation","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fabort-navigation",{"title":642,"path":643,"stem":644,"titleTemplate":6},"addRouteMiddleware","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fadd-route-middleware","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fadd-route-middleware",{"title":646,"path":647,"stem":648,"titleTemplate":6},"callOnce","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fcall-once","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fcall-once",{"title":650,"path":651,"stem":652,"titleTemplate":6},"clearError","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fclear-error","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fclear-error",{"title":654,"path":655,"stem":656,"titleTemplate":6},"clearNuxtData","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fclear-nuxt-data","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fclear-nuxt-data",{"title":658,"path":659,"stem":660,"titleTemplate":6},"clearNuxtState","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fclear-nuxt-state","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fclear-nuxt-state",{"title":662,"path":663,"stem":664,"titleTemplate":6},"createError","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fcreate-error","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fcreate-error",{"title":666,"path":667,"stem":668,"titleTemplate":6},"defineLazyHydrationComponent","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fdefine-lazy-hydration-component","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fdefine-lazy-hydration-component",{"title":670,"path":671,"stem":672,"titleTemplate":6},"defineNuxtComponent","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fdefine-nuxt-component","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fdefine-nuxt-component",{"title":674,"path":675,"stem":676,"titleTemplate":6},"defineNuxtPlugin","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fdefine-nuxt-plugin","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fdefine-nuxt-plugin",{"title":678,"path":679,"stem":680,"titleTemplate":6},"defineNuxtRouteMiddleware","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fdefine-nuxt-route-middleware","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fdefine-nuxt-route-middleware",{"title":682,"path":683,"stem":684,"titleTemplate":6},"definePageMeta","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fdefine-page-meta","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fdefine-page-meta",{"title":686,"path":687,"stem":688,"titleTemplate":6},"defineRouteRules","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fdefine-route-rules","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fdefine-route-rules",{"title":690,"path":691,"stem":692,"titleTemplate":6},"navigateTo","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fnavigate-to","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fnavigate-to",{"title":694,"path":695,"stem":696,"titleTemplate":6},"onBeforeRouteLeave","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fon-before-route-leave","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fon-before-route-leave",{"title":698,"path":699,"stem":700,"titleTemplate":6},"onBeforeRouteUpdate","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fon-before-route-update","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fon-before-route-update",{"title":702,"path":703,"stem":704,"titleTemplate":6},"onNuxtReady","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fon-nuxt-ready","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fon-nuxt-ready",{"title":706,"path":707,"stem":708,"titleTemplate":6},"prefetchComponents","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fprefetch-components","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fprefetch-components",{"title":710,"path":711,"stem":712,"titleTemplate":6},"preloadComponents","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fpreload-components","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fpreload-components",{"title":714,"path":715,"stem":716,"titleTemplate":6},"preloadRouteComponents","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fpreload-route-components","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fpreload-route-components",{"title":718,"path":719,"stem":720,"titleTemplate":6},"prerenderRoutes","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fprerender-routes","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fprerender-routes",{"title":722,"path":723,"stem":724,"titleTemplate":6},"refreshCookie","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Frefresh-cookie","docs\u002F3.x\u002F4.api\u002F3.utils\u002Frefresh-cookie",{"title":726,"path":727,"stem":728,"titleTemplate":6},"refreshNuxtData","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Frefresh-nuxt-data","docs\u002F3.x\u002F4.api\u002F3.utils\u002Frefresh-nuxt-data",{"title":730,"path":731,"stem":732,"titleTemplate":6},"reloadNuxtApp","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Freload-nuxt-app","docs\u002F3.x\u002F4.api\u002F3.utils\u002Freload-nuxt-app",{"title":734,"path":735,"stem":736,"titleTemplate":6},"setPageLayout","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fset-page-layout","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fset-page-layout",{"title":738,"path":739,"stem":740,"titleTemplate":6},"setResponseStatus","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fset-response-status","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fset-response-status",{"title":742,"path":743,"stem":744,"titleTemplate":6},"showError","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fshow-error","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fshow-error",{"title":746,"path":747,"stem":748,"titleTemplate":6},"updateAppConfig","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fupdate-app-config","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fupdate-app-config",{"title":750,"titleTemplate":751,"icon":752,"path":753,"stem":754,"children":755,"page":108},"CLI","%s · Nuxt CLI","i-lucide-square-terminal","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands","docs\u002F3.x\u002F4.api\u002F4.commands",[756,760,764,768,772,776,780,784,788,792,796,800,804,808,812,816,820,824],{"title":757,"path":758,"stem":759,"titleTemplate":6},"Nuxt CLI","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Foverview","docs\u002F3.x\u002F4.api\u002F4.commands\u002F1.overview",{"title":761,"path":762,"stem":763,"titleTemplate":6},"nuxt add","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fadd","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fadd",{"title":765,"path":766,"stem":767,"titleTemplate":6},"nuxt add-template","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fadd-template","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fadd-template",{"title":769,"path":770,"stem":771,"titleTemplate":6},"nuxt analyze","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fanalyze","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fanalyze",{"title":773,"path":774,"stem":775,"titleTemplate":6},"nuxt build","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fbuild","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fbuild",{"title":777,"path":778,"stem":779,"titleTemplate":6},"nuxt build-module","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fbuild-module","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fbuild-module",{"title":781,"path":782,"stem":783,"titleTemplate":6},"nuxt cleanup","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fcleanup","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fcleanup",{"title":785,"path":786,"stem":787,"titleTemplate":6},"nuxt dev","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fdev","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fdev",{"title":789,"path":790,"stem":791,"titleTemplate":6},"nuxt devtools","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fdevtools","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fdevtools",{"title":793,"path":794,"stem":795,"titleTemplate":6},"nuxt generate","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fgenerate","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fgenerate",{"title":797,"path":798,"stem":799,"titleTemplate":6},"nuxt info","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Finfo","docs\u002F3.x\u002F4.api\u002F4.commands\u002Finfo",{"title":801,"path":802,"stem":803,"titleTemplate":6},"create nuxt","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Finit","docs\u002F3.x\u002F4.api\u002F4.commands\u002Finit",{"title":805,"path":806,"stem":807,"titleTemplate":6},"nuxt module","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fmodule","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fmodule",{"title":809,"path":810,"stem":811,"titleTemplate":6},"nuxt prepare","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fprepare","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fprepare",{"title":813,"path":814,"stem":815,"titleTemplate":6},"nuxt preview","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fpreview","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fpreview",{"title":817,"path":818,"stem":819,"titleTemplate":6},"nuxt test","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Ftest","docs\u002F3.x\u002F4.api\u002F4.commands\u002Ftest",{"title":821,"path":822,"stem":823,"titleTemplate":6},"nuxt typecheck","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Ftypecheck","docs\u002F3.x\u002F4.api\u002F4.commands\u002Ftypecheck",{"title":825,"path":826,"stem":827,"titleTemplate":6},"nuxt upgrade","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fupgrade","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fupgrade",{"title":415,"titleTemplate":829,"icon":830,"path":831,"stem":832,"children":833,"page":108},"%s · Nuxt Kit","i-lucide-package","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit","docs\u002F3.x\u002F4.api\u002F5.kit",[834,837,840,844,848,852,856,860,864,867,871,875,878,881,885,889,893,897],{"title":276,"path":835,"stem":836,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fmodules","docs\u002F3.x\u002F4.api\u002F5.kit\u002F1.modules",{"title":403,"path":838,"stem":839,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fruntime-config","docs\u002F3.x\u002F4.api\u002F5.kit\u002F10.runtime-config",{"title":841,"path":842,"stem":843,"titleTemplate":6},"Templates","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Ftemplates","docs\u002F3.x\u002F4.api\u002F5.kit\u002F10.templates",{"title":845,"path":846,"stem":847,"titleTemplate":6},"Nitro","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fnitro","docs\u002F3.x\u002F4.api\u002F5.kit\u002F11.nitro",{"title":849,"path":850,"stem":851,"titleTemplate":6},"Resolving","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fresolving","docs\u002F3.x\u002F4.api\u002F5.kit\u002F12.resolving",{"title":853,"path":854,"stem":855,"titleTemplate":6},"Logging","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Flogging","docs\u002F3.x\u002F4.api\u002F5.kit\u002F13.logging",{"title":857,"path":858,"stem":859,"titleTemplate":6},"Builder","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fbuilder","docs\u002F3.x\u002F4.api\u002F5.kit\u002F14.builder",{"title":861,"path":862,"stem":863,"titleTemplate":6},"Examples","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fexamples","docs\u002F3.x\u002F4.api\u002F5.kit\u002F15.examples",{"title":84,"path":865,"stem":866,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Flayers","docs\u002F3.x\u002F4.api\u002F5.kit\u002F16.layers",{"title":868,"path":869,"stem":870,"titleTemplate":6},"Programmatic Usage","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fprogrammatic","docs\u002F3.x\u002F4.api\u002F5.kit\u002F2.programmatic",{"title":872,"path":873,"stem":874,"titleTemplate":6},"Compatibility","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fcompatibility","docs\u002F3.x\u002F4.api\u002F5.kit\u002F3.compatibility",{"title":268,"path":876,"stem":877,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fautoimports","docs\u002F3.x\u002F4.api\u002F5.kit\u002F4.autoimports",{"title":438,"path":879,"stem":880,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fcomponents","docs\u002F3.x\u002F4.api\u002F5.kit\u002F5.components",{"title":882,"path":883,"stem":884,"titleTemplate":6},"Context","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fcontext","docs\u002F3.x\u002F4.api\u002F5.kit\u002F6.context",{"title":886,"path":887,"stem":888,"titleTemplate":6},"Pages","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fpages","docs\u002F3.x\u002F4.api\u002F5.kit\u002F7.pages",{"title":890,"path":891,"stem":892,"titleTemplate":6},"Layout","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Flayout","docs\u002F3.x\u002F4.api\u002F5.kit\u002F8.layout",{"title":894,"path":895,"stem":896,"titleTemplate":6},"Head","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fhead","docs\u002F3.x\u002F4.api\u002F5.kit\u002F9.head",{"title":898,"path":899,"stem":900,"titleTemplate":6},"Plugins","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fplugins","docs\u002F3.x\u002F4.api\u002F5.kit\u002F9.plugins",{"title":902,"titleTemplate":6,"icon":903,"path":904,"stem":905,"children":906,"page":108},"Advanced","i-lucide-brain","\u002Fdocs\u002F3.x\u002Fapi\u002Fadvanced","docs\u002F3.x\u002F4.api\u002F6.advanced",[907,910],{"title":411,"path":908,"stem":909,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fapi\u002Fadvanced\u002Fhooks","docs\u002F3.x\u002F4.api\u002F6.advanced\u002F1.hooks",{"title":911,"path":912,"stem":913,"titleTemplate":6},"Import meta","\u002Fdocs\u002F3.x\u002Fapi\u002Fadvanced\u002Fimport-meta","docs\u002F3.x\u002F4.api\u002F6.advanced\u002F2.import-meta",{"title":915,"path":916,"stem":917,"titleTemplate":918,"icon":32},"Nuxt Configuration","\u002Fdocs\u002F3.x\u002Fapi\u002Fnuxt-config","docs\u002F3.x\u002F4.api\u002F6.nuxt-config","%s",{"title":861,"titleTemplate":920,"icon":921,"path":922,"stem":923,"children":924,"page":108},"%s · Nuxt Examples","i-lucide-app-window-mac","\u002Fdocs\u002F3.x\u002Fexamples","docs\u002F3.x\u002F4.examples",[925,929,951,966,1002],{"title":926,"path":927,"stem":928,"titleTemplate":6},"Hello World","\u002Fdocs\u002F3.x\u002Fexamples\u002Fhello-world","docs\u002F3.x\u002F4.examples\u002F0.hello-world",{"title":399,"path":930,"stem":931,"children":932,"page":108},"\u002Fdocs\u002F3.x\u002Fexamples\u002Ffeatures","docs\u002F3.x\u002F4.examples\u002F1.features",[933,937,940,943,947],{"title":934,"path":935,"stem":936,"titleTemplate":6},"Auto Imports","\u002Fdocs\u002F3.x\u002Fexamples\u002Ffeatures\u002Fauto-imports","docs\u002F3.x\u002F4.examples\u002F1.features\u002F1.auto-imports",{"title":64,"path":938,"stem":939,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fexamples\u002Ffeatures\u002Fdata-fetching","docs\u002F3.x\u002F4.examples\u002F1.features\u002F2.data-fetching",{"title":69,"path":941,"stem":942,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fexamples\u002Ffeatures\u002Fstate-management","docs\u002F3.x\u002F4.examples\u002F1.features\u002F3.state-management",{"title":944,"path":945,"stem":946,"titleTemplate":6},"Meta Tags","\u002Fdocs\u002F3.x\u002Fexamples\u002Ffeatures\u002Fmeta-tags","docs\u002F3.x\u002F4.examples\u002F1.features\u002F4.meta-tags",{"title":948,"path":949,"stem":950,"titleTemplate":6},"Layouts","\u002Fdocs\u002F3.x\u002Fexamples\u002Ffeatures\u002Flayouts","docs\u002F3.x\u002F4.examples\u002F1.features\u002F5.layouts",{"title":49,"path":952,"stem":953,"children":954,"page":108},"\u002Fdocs\u002F3.x\u002Fexamples\u002Frouting","docs\u002F3.x\u002F4.examples\u002F2.routing",[955,959,962],{"title":956,"path":957,"stem":958,"titleTemplate":6},"Middleware","\u002Fdocs\u002F3.x\u002Fexamples\u002Frouting\u002Fmiddleware","docs\u002F3.x\u002F4.examples\u002F2.routing\u002Fmiddleware",{"title":886,"path":960,"stem":961,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fexamples\u002Frouting\u002Fpages","docs\u002F3.x\u002F4.examples\u002F2.routing\u002Fpages",{"title":963,"path":964,"stem":965,"titleTemplate":6},"Universal Router","\u002Fdocs\u002F3.x\u002Fexamples\u002Frouting\u002Funiversal-router","docs\u002F3.x\u002F4.examples\u002F2.routing\u002Funiversal-router",{"title":902,"path":967,"stem":968,"children":969,"page":108},"\u002Fdocs\u002F3.x\u002Fexamples\u002Fadvanced","docs\u002F3.x\u002F4.examples\u002F4.advanced",[970,973,976,980,984,988,992,995,998],{"title":84,"path":971,"stem":972,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fexamples\u002Fadvanced\u002Fconfig-extends","docs\u002F3.x\u002F4.examples\u002F4.advanced\u002Fconfig-extends",{"title":74,"path":974,"stem":975,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fexamples\u002Fadvanced\u002Ferror-handling","docs\u002F3.x\u002F4.examples\u002F4.advanced\u002Ferror-handling",{"title":977,"path":978,"stem":979,"titleTemplate":6},"JSX \u002F TSX","\u002Fdocs\u002F3.x\u002Fexamples\u002Fadvanced\u002Fjsx","docs\u002F3.x\u002F4.examples\u002F4.advanced\u002Fjsx",{"title":981,"path":982,"stem":983,"titleTemplate":6},"Locale","\u002Fdocs\u002F3.x\u002Fexamples\u002Fadvanced\u002Flocale","docs\u002F3.x\u002F4.examples\u002F4.advanced\u002Flocale",{"title":985,"path":986,"stem":987,"titleTemplate":6},"Module Extend Pages","\u002Fdocs\u002F3.x\u002Fexamples\u002Fadvanced\u002Fmodule-extend-pages","docs\u002F3.x\u002F4.examples\u002F4.advanced\u002Fmodule-extend-pages",{"title":989,"path":990,"stem":991,"titleTemplate":6},"Teleport","\u002Fdocs\u002F3.x\u002Fexamples\u002Fadvanced\u002Fteleport","docs\u002F3.x\u002F4.examples\u002F4.advanced\u002Fteleport",{"title":99,"path":993,"stem":994,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fexamples\u002Fadvanced\u002Ftesting","docs\u002F3.x\u002F4.examples\u002F4.advanced\u002Ftesting",{"title":523,"path":996,"stem":997,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fexamples\u002Fadvanced\u002Fuse-cookie","docs\u002F3.x\u002F4.examples\u002F4.advanced\u002Fuse-cookie",{"title":999,"path":1000,"stem":1001,"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":1003,"path":1004,"stem":1005,"children":1006,"page":108},"Experimental","\u002Fdocs\u002F3.x\u002Fexamples\u002Fexperimental","docs\u002F3.x\u002F4.examples\u002F7.experimental",[1007],{"title":1008,"path":1009,"stem":1010,"titleTemplate":6},"WASM","\u002Fdocs\u002F3.x\u002Fexamples\u002Fexperimental\u002Fwasm","docs\u002F3.x\u002F4.examples\u002F7.experimental\u002Fwasm",{"title":1012,"titleTemplate":1013,"icon":1014,"path":1015,"stem":1016,"children":1017,"page":108},"Community","%s · Nuxt Community","i-lucide-messages-square","\u002Fdocs\u002F3.x\u002Fcommunity","docs\u002F3.x\u002F5.community",[1018,1023,1028,1033,1038,1043],{"title":1019,"path":1020,"stem":1021,"titleTemplate":6,"icon":1022},"Getting Help","\u002Fdocs\u002F3.x\u002Fcommunity\u002Fgetting-help","docs\u002F3.x\u002F5.community\u002F2.getting-help","i-lucide-life-buoy",{"title":1024,"path":1025,"stem":1026,"titleTemplate":6,"icon":1027},"Reporting Bugs","\u002Fdocs\u002F3.x\u002Fcommunity\u002Freporting-bugs","docs\u002F3.x\u002F5.community\u002F3.reporting-bugs","i-lucide-bug",{"title":1029,"path":1030,"stem":1031,"titleTemplate":6,"icon":1032},"Contribution","\u002Fdocs\u002F3.x\u002Fcommunity\u002Fcontribution","docs\u002F3.x\u002F5.community\u002F4.contribution","i-lucide-git-pull-request",{"title":1034,"path":1035,"stem":1036,"titleTemplate":6,"icon":1037},"Framework","\u002Fdocs\u002F3.x\u002Fcommunity\u002Fframework-contribution","docs\u002F3.x\u002F5.community\u002F5.framework-contribution","i-lucide-github",{"title":1039,"path":1040,"stem":1041,"titleTemplate":6,"icon":1042},"Roadmap","\u002Fdocs\u002F3.x\u002Fcommunity\u002Froadmap","docs\u002F3.x\u002F5.community\u002F6.roadmap","i-lucide-map",{"title":1044,"path":1045,"stem":1046,"titleTemplate":6,"icon":1047},"Releases","\u002Fdocs\u002F3.x\u002Fcommunity\u002Fchangelog","docs\u002F3.x\u002F5.community\u002F7.changelog","i-lucide-bell-dot",{"title":1049,"titleTemplate":1050,"icon":1051,"path":1052,"stem":1053,"children":1054,"page":108},"Migrate to Nuxt Bridge","Migrate to Nuxt Bridge: %s","i-lucide-ship","\u002Fdocs\u002F3.x\u002Fbridge","docs\u002F3.x\u002F6.bridge",[1055,1059,1062,1065,1069,1073,1077,1080,1083,1086],{"title":1056,"path":1057,"stem":1058,"titleTemplate":6},"Overview","\u002Fdocs\u002F3.x\u002Fbridge\u002Foverview","docs\u002F3.x\u002F6.bridge\u002F1.overview",{"title":29,"path":1060,"stem":1061,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fbridge\u002Fconfiguration","docs\u002F3.x\u002F6.bridge\u002F10.configuration",{"title":280,"path":1063,"stem":1064,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fbridge\u002Ftypescript","docs\u002F3.x\u002F6.bridge\u002F2.typescript",{"title":1066,"path":1067,"stem":1068,"titleTemplate":6},"Legacy Composition API","\u002Fdocs\u002F3.x\u002Fbridge\u002Fbridge-composition-api","docs\u002F3.x\u002F6.bridge\u002F3.bridge-composition-api",{"title":1070,"path":1071,"stem":1072,"titleTemplate":6},"Plugins and Middleware","\u002Fdocs\u002F3.x\u002Fbridge\u002Fplugins-and-middleware","docs\u002F3.x\u002F6.bridge\u002F4.plugins-and-middleware",{"title":1074,"path":1075,"stem":1076,"titleTemplate":6},"New Composition API","\u002Fdocs\u002F3.x\u002Fbridge\u002Fnuxt3-compatible-api","docs\u002F3.x\u002F6.bridge\u002F5.nuxt3-compatible-api",{"title":944,"path":1078,"stem":1079,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fbridge\u002Fmeta","docs\u002F3.x\u002F6.bridge\u002F6.meta",{"title":403,"path":1081,"stem":1082,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fbridge\u002Fruntime-config","docs\u002F3.x\u002F6.bridge\u002F7.runtime-config",{"title":845,"path":1084,"stem":1085,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fbridge\u002Fnitro","docs\u002F3.x\u002F6.bridge\u002F8.nitro",{"title":1087,"path":1088,"stem":1089,"titleTemplate":6},"Vite","\u002Fdocs\u002F3.x\u002Fbridge\u002Fvite","docs\u002F3.x\u002F6.bridge\u002F9.vite",{"title":1091,"titleTemplate":1092,"icon":107,"path":1093,"stem":1094,"children":1095,"page":108},"Migrate to Nuxt 3","Migrate to Nuxt 3: %s","\u002Fdocs\u002F3.x\u002Fmigration","docs\u002F3.x\u002F7.migration",[1096,1099,1103,1106,1109,1112,1115,1118,1121,1125,1129],{"title":1056,"path":1097,"stem":1098,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fmigration\u002Foverview","docs\u002F3.x\u002F7.migration\u002F1.overview",{"title":1100,"path":1101,"stem":1102,"titleTemplate":6},"Build Tooling","\u002Fdocs\u002F3.x\u002Fmigration\u002Fbundling","docs\u002F3.x\u002F7.migration\u002F10.bundling",{"title":79,"path":1104,"stem":1105,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fmigration\u002Fserver","docs\u002F3.x\u002F7.migration\u002F11.server",{"title":29,"path":1107,"stem":1108,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fmigration\u002Fconfiguration","docs\u002F3.x\u002F7.migration\u002F2.configuration",{"title":276,"path":1110,"stem":1111,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fmigration\u002Fmodule-authors","docs\u002F3.x\u002F7.migration\u002F20.module-authors",{"title":934,"path":1113,"stem":1114,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fmigration\u002Fauto-imports","docs\u002F3.x\u002F7.migration\u002F3.auto-imports",{"title":944,"path":1116,"stem":1117,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fmigration\u002Fmeta","docs\u002F3.x\u002F7.migration\u002F4.meta",{"title":1070,"path":1119,"stem":1120,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fmigration\u002Fplugins-and-middleware","docs\u002F3.x\u002F7.migration\u002F5.plugins-and-middleware",{"title":1122,"path":1123,"stem":1124,"titleTemplate":6},"Pages and Layouts","\u002Fdocs\u002F3.x\u002Fmigration\u002Fpages-and-layouts","docs\u002F3.x\u002F7.migration\u002F6.pages-and-layouts",{"title":1126,"path":1127,"stem":1128,"titleTemplate":6},"Component Options","\u002Fdocs\u002F3.x\u002Fmigration\u002Fcomponent-options","docs\u002F3.x\u002F7.migration\u002F7.component-options",{"title":403,"path":1130,"stem":1131,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fmigration\u002Fruntime-config","docs\u002F3.x\u002F7.migration\u002F8.runtime-config",{"title":5,"titleTemplate":6,"icon":7,"path":1133,"stem":1134,"children":1135,"page":108},"\u002Fdocs\u002F4.x","docs\u002F4.x",[1136,1194,1293,1444,1832,1909,1931,1965],{"title":12,"titleTemplate":13,"icon":14,"path":1137,"stem":1138,"children":1139,"page":108},"\u002Fdocs\u002F4.x\u002Fgetting-started","docs\u002F4.x\u002F1.getting-started",[1140,1143,1146,1149,1152,1155,1158,1161,1164,1167,1170,1173,1176,1179,1182,1185,1188,1191],{"title":19,"path":1141,"stem":1142,"titleTemplate":6,"icon":22},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fintroduction","docs\u002F4.x\u002F1.getting-started\u002F01.introduction",{"title":24,"path":1144,"stem":1145,"titleTemplate":6,"icon":27},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Finstallation","docs\u002F4.x\u002F1.getting-started\u002F02.installation",{"title":29,"path":1147,"stem":1148,"titleTemplate":6,"icon":32},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fconfiguration","docs\u002F4.x\u002F1.getting-started\u002F03.configuration",{"title":34,"path":1150,"stem":1151,"titleTemplate":6,"icon":37},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fviews","docs\u002F4.x\u002F1.getting-started\u002F04.views",{"title":39,"path":1153,"stem":1154,"titleTemplate":6,"icon":42},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fassets","docs\u002F4.x\u002F1.getting-started\u002F05.assets",{"title":44,"path":1156,"stem":1157,"titleTemplate":6,"icon":47},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fstyling","docs\u002F4.x\u002F1.getting-started\u002F06.styling",{"title":49,"path":1159,"stem":1160,"titleTemplate":6,"icon":52},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Frouting","docs\u002F4.x\u002F1.getting-started\u002F07.routing",{"title":54,"path":1162,"stem":1163,"titleTemplate":6,"icon":57},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fseo-meta","docs\u002F4.x\u002F1.getting-started\u002F08.seo-meta",{"title":59,"path":1165,"stem":1166,"titleTemplate":6,"icon":62},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Ftransitions","docs\u002F4.x\u002F1.getting-started\u002F09.transitions",{"title":64,"path":1168,"stem":1169,"titleTemplate":6,"icon":67},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fdata-fetching","docs\u002F4.x\u002F1.getting-started\u002F10.data-fetching",{"title":69,"path":1171,"stem":1172,"titleTemplate":6,"icon":72},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fstate-management","docs\u002F4.x\u002F1.getting-started\u002F11.state-management",{"title":74,"path":1174,"stem":1175,"titleTemplate":6,"icon":77},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Ferror-handling","docs\u002F4.x\u002F1.getting-started\u002F12.error-handling",{"title":79,"path":1177,"stem":1178,"titleTemplate":6,"icon":82},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fserver","docs\u002F4.x\u002F1.getting-started\u002F13.server",{"title":84,"path":1180,"stem":1181,"titleTemplate":6,"icon":87},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Flayers","docs\u002F4.x\u002F1.getting-started\u002F14.layers",{"title":89,"path":1183,"stem":1184,"titleTemplate":6,"icon":92},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fprerendering","docs\u002F4.x\u002F1.getting-started\u002F15.prerendering",{"title":94,"path":1186,"stem":1187,"titleTemplate":6,"icon":97},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fdeployment","docs\u002F4.x\u002F1.getting-started\u002F16.deployment",{"title":99,"path":1189,"stem":1190,"titleTemplate":6,"icon":102},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Ftesting","docs\u002F4.x\u002F1.getting-started\u002F17.testing",{"title":104,"path":1192,"stem":1193,"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":1195,"stem":1196,"children":1197,"page":108},"\u002Fdocs\u002F4.x\u002Fdirectory-structure","docs\u002F4.x\u002F2.directory-structure",[1198,1201,1204,1246,1249,1252,1255,1258,1261,1264,1267,1272,1275,1278,1281,1284,1287,1290],{"title":117,"path":1199,"stem":1200,"titleTemplate":6,"icon":120},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fnuxt","docs\u002F4.x\u002F2.directory-structure\u002F0.nuxt",{"title":122,"path":1202,"stem":1203,"titleTemplate":6,"icon":125},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Foutput","docs\u002F4.x\u002F2.directory-structure\u002F0.output",{"title":1205,"titleTemplate":111,"head":1206,"defaultOpen":1208,"icon":1209,"path":1210,"stem":1211,"children":1212,"page":108},"app",{"title":1207},"app\u002F",true,"i-vscode-icons-folder-type-app","\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp","docs\u002F4.x\u002F2.directory-structure\u002F1.app",[1213,1216,1219,1222,1225,1228,1231,1234,1237,1240,1243],{"title":127,"path":1214,"stem":1215,"titleTemplate":6,"icon":130},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Fassets","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F1.assets",{"title":132,"path":1217,"stem":1218,"titleTemplate":6,"icon":135},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Fcomponents","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F1.components",{"title":137,"path":1220,"stem":1221,"titleTemplate":6,"icon":140},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Fcomposables","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F1.composables",{"title":152,"path":1223,"stem":1224,"titleTemplate":6,"icon":155},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Flayouts","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F1.layouts",{"title":157,"path":1226,"stem":1227,"titleTemplate":6,"icon":160},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Fmiddleware","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F1.middleware",{"title":171,"path":1229,"stem":1230,"titleTemplate":6,"icon":155},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Fpages","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F1.pages",{"title":175,"path":1232,"stem":1233,"titleTemplate":6,"icon":178},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Fplugins","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F1.plugins",{"title":195,"path":1235,"stem":1236,"titleTemplate":6,"icon":198},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Futils","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F1.utils",{"title":219,"path":1238,"stem":1239,"titleTemplate":6,"icon":222},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Fapp","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F3.app",{"title":224,"path":1241,"stem":1242,"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":1244,"stem":1245,"titleTemplate":6,"icon":222},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Ferror","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F3.error",{"title":142,"path":1247,"stem":1248,"titleTemplate":6,"icon":145},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fcontent","docs\u002F4.x\u002F2.directory-structure\u002F1.content",{"title":147,"path":1250,"stem":1251,"titleTemplate":6,"icon":150},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Flayers","docs\u002F4.x\u002F2.directory-structure\u002F1.layers",{"title":162,"path":1253,"stem":1254,"titleTemplate":6,"icon":150},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fmodules","docs\u002F4.x\u002F2.directory-structure\u002F1.modules",{"title":166,"path":1256,"stem":1257,"titleTemplate":6,"icon":169},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fnode_modules","docs\u002F4.x\u002F2.directory-structure\u002F1.node_modules",{"title":180,"path":1259,"stem":1260,"titleTemplate":6,"icon":183},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fpublic","docs\u002F4.x\u002F2.directory-structure\u002F1.public",{"title":185,"path":1262,"stem":1263,"titleTemplate":6,"icon":188},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fserver","docs\u002F4.x\u002F2.directory-structure\u002F1.server",{"title":190,"path":1265,"stem":1266,"titleTemplate":6,"icon":193},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fshared","docs\u002F4.x\u002F2.directory-structure\u002F1.shared",{"title":1268,"path":1269,"stem":1270,"titleTemplate":6,"icon":1271},"test","\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Ftest","docs\u002F4.x\u002F2.directory-structure\u002F1.test","i-vscode-icons-folder-type-test",{"title":200,"path":1273,"stem":1274,"titleTemplate":6,"icon":203},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fenv","docs\u002F4.x\u002F2.directory-structure\u002F2.env",{"title":205,"path":1276,"stem":1277,"titleTemplate":6,"icon":208},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fgitignore","docs\u002F4.x\u002F2.directory-structure\u002F2.gitignore",{"title":210,"path":1279,"stem":1280,"titleTemplate":6,"icon":213},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fnuxtignore","docs\u002F4.x\u002F2.directory-structure\u002F2.nuxtignore",{"title":215,"path":1282,"stem":1283,"titleTemplate":6,"icon":213},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fnuxtrc","docs\u002F4.x\u002F2.directory-structure\u002F2.nuxtrc",{"title":233,"path":1285,"stem":1286,"titleTemplate":6,"icon":213},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fnuxt-config","docs\u002F4.x\u002F2.directory-structure\u002F3.nuxt-config",{"title":237,"path":1288,"stem":1289,"titleTemplate":6,"icon":240},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fpackage","docs\u002F4.x\u002F2.directory-structure\u002F3.package",{"title":242,"path":1291,"stem":1292,"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":1294,"stem":1295,"children":1296,"page":108},"\u002Fdocs\u002F4.x\u002Fguide","docs\u002F4.x\u002F3.guide",[1297,1326,1348,1358,1386,1406],{"title":253,"titleTemplate":254,"icon":255,"path":1298,"stem":1299,"children":1300,"page":108},"\u002Fdocs\u002F4.x\u002Fguide\u002Fconcepts","docs\u002F4.x\u002F3.guide\u002F1.concepts",[1301,1304,1307,1310,1313,1316,1320,1323],{"title":260,"path":1302,"stem":1303,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fconcepts\u002Frendering","docs\u002F4.x\u002F3.guide\u002F1.concepts\u002F1.rendering",{"title":264,"path":1305,"stem":1306,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fconcepts\u002Fnuxt-lifecycle","docs\u002F4.x\u002F3.guide\u002F1.concepts\u002F2.nuxt-lifecycle",{"title":268,"path":1308,"stem":1309,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fconcepts\u002Fauto-imports","docs\u002F4.x\u002F3.guide\u002F1.concepts\u002F3.auto-imports",{"title":272,"path":1311,"stem":1312,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fconcepts\u002Fserver-engine","docs\u002F4.x\u002F3.guide\u002F1.concepts\u002F4.server-engine",{"title":276,"path":1314,"stem":1315,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fconcepts\u002Fmodules","docs\u002F4.x\u002F3.guide\u002F1.concepts\u002F5.modules",{"title":1317,"path":1318,"stem":1319,"titleTemplate":6},"Server Components","\u002Fdocs\u002F4.x\u002Fguide\u002Fconcepts\u002Fserver-components","docs\u002F4.x\u002F3.guide\u002F1.concepts\u002F6.server-components",{"title":280,"path":1321,"stem":1322,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fconcepts\u002Ftypescript","docs\u002F4.x\u002F3.guide\u002F1.concepts\u002F8.typescript",{"title":284,"path":1324,"stem":1325,"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":1327,"stem":1328,"children":1329,"page":108},"\u002Fdocs\u002F4.x\u002Fguide\u002Fbest-practices","docs\u002F4.x\u002F3.guide\u002F2.best-practices",[1330,1334,1338,1342,1345],{"title":1331,"path":1332,"stem":1333,"titleTemplate":6},"Accessibility","\u002Fdocs\u002F4.x\u002Fguide\u002Fbest-practices\u002Faccessibility","docs\u002F4.x\u002F3.guide\u002F2.best-practices\u002Faccessibility",{"title":1335,"path":1336,"stem":1337,"titleTemplate":6},"Dev Containers","\u002Fdocs\u002F4.x\u002Fguide\u002Fbest-practices\u002Fdevcontainers","docs\u002F4.x\u002F3.guide\u002F2.best-practices\u002Fdevcontainers",{"title":1339,"path":1340,"stem":1341,"titleTemplate":6},"Nuxt and Hydration","\u002Fdocs\u002F4.x\u002Fguide\u002Fbest-practices\u002Fhydration","docs\u002F4.x\u002F3.guide\u002F2.best-practices\u002Fhydration",{"title":299,"path":1343,"stem":1344,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fbest-practices\u002Fperformance","docs\u002F4.x\u002F3.guide\u002F2.best-practices\u002Fperformance",{"title":303,"path":1346,"stem":1347,"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":1349,"stem":1350,"children":1351,"page":108},"\u002Fdocs\u002F4.x\u002Fguide\u002Fai","docs\u002F4.x\u002F3.guide\u002F3.ai",[1352,1355],{"title":314,"path":1353,"stem":1354,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fai\u002Fmcp","docs\u002F4.x\u002F3.guide\u002F3.ai\u002F1.mcp",{"title":318,"path":1356,"stem":1357,"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":1359,"stem":1360,"children":1361,"page":108},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules","docs\u002F4.x\u002F3.guide\u002F4.modules",[1362,1365,1368,1371,1374,1377,1380,1383],{"title":329,"path":1363,"stem":1364,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Fgetting-started","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F1.getting-started",{"title":333,"path":1366,"stem":1367,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Fmodule-anatomy","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F2.module-anatomy",{"title":337,"path":1369,"stem":1370,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Frecipes-basics","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F3.recipes-basics",{"title":341,"path":1372,"stem":1373,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Fmodule-dependencies","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F4.module-dependencies",{"title":345,"path":1375,"stem":1376,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Frecipes-advanced","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F5.recipes-advanced",{"title":349,"path":1378,"stem":1379,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Ftesting","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F6.testing",{"title":353,"path":1381,"stem":1382,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Fbest-practices","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F7.best-practices",{"title":357,"path":1384,"stem":1385,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Fecosystem","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F8.ecosystem",{"title":361,"titleTemplate":362,"icon":363,"path":1387,"stem":1388,"children":1389,"page":108},"\u002Fdocs\u002F4.x\u002Fguide\u002Frecipes","docs\u002F4.x\u002F3.guide\u002F5.recipes",[1390,1393,1396,1399,1402],{"title":368,"path":1391,"stem":1392,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Frecipes\u002Fcustom-routing","docs\u002F4.x\u002F3.guide\u002F5.recipes\u002F1.custom-routing",{"title":372,"path":1394,"stem":1395,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Frecipes\u002Fvite-plugin","docs\u002F4.x\u002F3.guide\u002F5.recipes\u002F2.vite-plugin",{"title":376,"path":1397,"stem":1398,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Frecipes\u002Fcustom-usefetch","docs\u002F4.x\u002F3.guide\u002F5.recipes\u002F3.custom-usefetch",{"title":380,"path":1400,"stem":1401,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Frecipes\u002Fsessions-and-authentication","docs\u002F4.x\u002F3.guide\u002F5.recipes\u002F4.sessions-and-authentication",{"title":1403,"path":1404,"stem":1405,"titleTemplate":6},"Mostly-Static Sites","\u002Fdocs\u002F4.x\u002Fguide\u002Frecipes\u002Fmostly-static-sites","docs\u002F4.x\u002F3.guide\u002F5.recipes\u002F5.mostly-static-sites",{"title":384,"titleTemplate":385,"icon":386,"path":1407,"stem":1408,"children":1409,"page":108},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further","docs\u002F4.x\u002F3.guide\u002F6.going-further",[1410,1413,1416,1419,1422,1425,1428,1431,1434,1437,1441],{"title":391,"path":1411,"stem":1412,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fevents","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F1.events",{"title":395,"path":1414,"stem":1415,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fexperimental-features","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F1.experimental-features",{"title":399,"path":1417,"stem":1418,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Ffeatures","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F1.features",{"title":403,"path":1420,"stem":1421,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fruntime-config","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F10.runtime-config",{"title":407,"path":1423,"stem":1424,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fnightly-release-channel","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F11.nightly-release-channel",{"title":411,"path":1426,"stem":1427,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fhooks","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F2.hooks",{"title":415,"path":1429,"stem":1430,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fkit","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F4.kit",{"title":419,"path":1432,"stem":1433,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fnuxt-app","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F6.nuxt-app",{"title":423,"path":1435,"stem":1436,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Flayers","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F7.layers",{"title":1438,"path":1439,"stem":1440,"titleTemplate":6},"Creating a Builder","\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fbuilders","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F8.builders",{"title":427,"path":1442,"stem":1443,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fdebugging","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F9.debugging",{"title":431,"titleTemplate":432,"icon":433,"path":1445,"stem":1446,"children":1447,"page":108},"\u002Fdocs\u002F4.x\u002Fapi","docs\u002F4.x\u002F4.api",[1448,1501,1608,1699,1757,1819,1829],{"title":438,"titleTemplate":439,"icon":324,"path":1449,"stem":1450,"children":1451,"page":108},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents","docs\u002F4.x\u002F4.api\u002F1.components",[1452,1455,1458,1461,1464,1467,1470,1473,1477,1480,1483,1486,1489,1492,1495,1498],{"title":444,"path":1453,"stem":1454,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fclient-only","docs\u002F4.x\u002F4.api\u002F1.components\u002F1.client-only",{"title":448,"path":1456,"stem":1457,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fdev-only","docs\u002F4.x\u002F4.api\u002F1.components\u002F1.dev-only",{"title":452,"path":1459,"stem":1460,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-client-fallback","docs\u002F4.x\u002F4.api\u002F1.components\u002F1.nuxt-client-fallback",{"title":456,"path":1462,"stem":1463,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-picture","docs\u002F4.x\u002F4.api\u002F1.components\u002F10.nuxt-picture",{"title":460,"path":1465,"stem":1466,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fteleports","docs\u002F4.x\u002F4.api\u002F1.components\u002F11.teleports",{"title":464,"path":1468,"stem":1469,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-route-announcer","docs\u002F4.x\u002F4.api\u002F1.components\u002F12.nuxt-route-announcer",{"title":468,"path":1471,"stem":1472,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-time","docs\u002F4.x\u002F4.api\u002F1.components\u002F13.nuxt-time",{"title":1474,"path":1475,"stem":1476,"titleTemplate":6},"\u003CNuxtAnnouncer>","\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-announcer","docs\u002F4.x\u002F4.api\u002F1.components\u002F14.nuxt-announcer",{"title":472,"path":1478,"stem":1479,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-page","docs\u002F4.x\u002F4.api\u002F1.components\u002F2.nuxt-page",{"title":476,"path":1481,"stem":1482,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-layout","docs\u002F4.x\u002F4.api\u002F1.components\u002F3.nuxt-layout",{"title":480,"path":1484,"stem":1485,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-link","docs\u002F4.x\u002F4.api\u002F1.components\u002F4.nuxt-link",{"title":484,"path":1487,"stem":1488,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-loading-indicator","docs\u002F4.x\u002F4.api\u002F1.components\u002F5.nuxt-loading-indicator",{"title":488,"path":1490,"stem":1491,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-error-boundary","docs\u002F4.x\u002F4.api\u002F1.components\u002F6.nuxt-error-boundary",{"title":492,"path":1493,"stem":1494,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-welcome","docs\u002F4.x\u002F4.api\u002F1.components\u002F7.nuxt-welcome",{"title":496,"path":1496,"stem":1497,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-island","docs\u002F4.x\u002F4.api\u002F1.components\u002F8.nuxt-island",{"title":500,"path":1499,"stem":1500,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-img","docs\u002F4.x\u002F4.api\u002F1.components\u002F9.nuxt-img",{"title":504,"titleTemplate":505,"icon":506,"path":1502,"stem":1503,"children":1504,"page":108},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables","docs\u002F4.x\u002F4.api\u002F2.composables",[1505,1509,1513,1516,1520,1523,1526,1529,1532,1535,1538,1541,1544,1548,1551,1554,1557,1560,1563,1566,1569,1572,1575,1578,1581,1584,1587,1590,1593,1596,1599,1602,1605],{"title":1506,"path":1507,"stem":1508,"titleTemplate":6},"createUseAsyncData","\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fcreate-use-async-data","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fcreate-use-async-data",{"title":1510,"path":1511,"stem":1512,"titleTemplate":6},"createUseFetch","\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fcreate-use-fetch","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fcreate-use-fetch",{"title":511,"path":1514,"stem":1515,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fon-prehydrate","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fon-prehydrate",{"title":1517,"path":1518,"stem":1519,"titleTemplate":6},"useAnnouncer","\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-announcer","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-announcer",{"title":515,"path":1521,"stem":1522,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-app-config","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-app-config",{"title":519,"path":1524,"stem":1525,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-async-data","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-async-data",{"title":523,"path":1527,"stem":1528,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-cookie","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-cookie",{"title":527,"path":1530,"stem":1531,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-error","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-error",{"title":531,"path":1533,"stem":1534,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-fetch","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-fetch",{"title":535,"path":1536,"stem":1537,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-head","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-head",{"title":539,"path":1539,"stem":1540,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-head-safe","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-head-safe",{"title":543,"path":1542,"stem":1543,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-hydration","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-hydration",{"title":1545,"path":1546,"stem":1547,"titleTemplate":6},"useLayout","\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-layout","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-layout",{"title":547,"path":1549,"stem":1550,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-lazy-async-data","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-lazy-async-data",{"title":551,"path":1552,"stem":1553,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-lazy-fetch","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-lazy-fetch",{"title":555,"path":1555,"stem":1556,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-loading-indicator","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-loading-indicator",{"title":559,"path":1558,"stem":1559,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-nuxt-app","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-nuxt-app",{"title":563,"path":1561,"stem":1562,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-nuxt-data","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-nuxt-data",{"title":567,"path":1564,"stem":1565,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-preview-mode","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-preview-mode",{"title":571,"path":1567,"stem":1568,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-request-event","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-request-event",{"title":575,"path":1570,"stem":1571,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-request-fetch","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-request-fetch",{"title":579,"path":1573,"stem":1574,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-request-header","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-request-header",{"title":583,"path":1576,"stem":1577,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-request-headers","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-request-headers",{"title":587,"path":1579,"stem":1580,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-request-url","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-request-url",{"title":591,"path":1582,"stem":1583,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-response-header","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-response-header",{"title":595,"path":1585,"stem":1586,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-route","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-route",{"title":599,"path":1588,"stem":1589,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-route-announcer","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-route-announcer",{"title":603,"path":1591,"stem":1592,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-router","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-router",{"title":607,"path":1594,"stem":1595,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-runtime-config","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-runtime-config",{"title":611,"path":1597,"stem":1598,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-runtime-hook","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-runtime-hook",{"title":615,"path":1600,"stem":1601,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-seo-meta","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-seo-meta",{"title":619,"path":1603,"stem":1604,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-server-seo-meta","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-server-seo-meta",{"title":623,"path":1606,"stem":1607,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-state","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-state",{"title":627,"titleTemplate":628,"icon":629,"path":1609,"stem":1610,"children":1611,"page":108},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils","docs\u002F4.x\u002F4.api\u002F3.utils",[1612,1615,1618,1621,1624,1627,1630,1633,1636,1639,1642,1645,1648,1651,1654,1657,1660,1663,1666,1669,1672,1675,1678,1681,1684,1687,1690,1693,1696],{"title":634,"path":1613,"stem":1614,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fdollarfetch","docs\u002F4.x\u002F4.api\u002F3.utils\u002F$fetch",{"title":638,"path":1616,"stem":1617,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fabort-navigation","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fabort-navigation",{"title":642,"path":1619,"stem":1620,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fadd-route-middleware","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fadd-route-middleware",{"title":646,"path":1622,"stem":1623,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fcall-once","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fcall-once",{"title":650,"path":1625,"stem":1626,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fclear-error","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fclear-error",{"title":654,"path":1628,"stem":1629,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fclear-nuxt-data","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fclear-nuxt-data",{"title":658,"path":1631,"stem":1632,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fclear-nuxt-state","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fclear-nuxt-state",{"title":662,"path":1634,"stem":1635,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fcreate-error","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fcreate-error",{"title":666,"path":1637,"stem":1638,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fdefine-lazy-hydration-component","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fdefine-lazy-hydration-component",{"title":670,"path":1640,"stem":1641,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fdefine-nuxt-component","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fdefine-nuxt-component",{"title":674,"path":1643,"stem":1644,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fdefine-nuxt-plugin","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fdefine-nuxt-plugin",{"title":678,"path":1646,"stem":1647,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fdefine-nuxt-route-middleware","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fdefine-nuxt-route-middleware",{"title":682,"path":1649,"stem":1650,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fdefine-page-meta","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fdefine-page-meta",{"title":686,"path":1652,"stem":1653,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fdefine-route-rules","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fdefine-route-rules",{"title":690,"path":1655,"stem":1656,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fnavigate-to","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fnavigate-to",{"title":694,"path":1658,"stem":1659,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fon-before-route-leave","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fon-before-route-leave",{"title":698,"path":1661,"stem":1662,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fon-before-route-update","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fon-before-route-update",{"title":702,"path":1664,"stem":1665,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fon-nuxt-ready","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fon-nuxt-ready",{"title":706,"path":1667,"stem":1668,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fprefetch-components","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fprefetch-components",{"title":710,"path":1670,"stem":1671,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fpreload-components","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fpreload-components",{"title":714,"path":1673,"stem":1674,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fpreload-route-components","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fpreload-route-components",{"title":718,"path":1676,"stem":1677,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fprerender-routes","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fprerender-routes",{"title":722,"path":1679,"stem":1680,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Frefresh-cookie","docs\u002F4.x\u002F4.api\u002F3.utils\u002Frefresh-cookie",{"title":726,"path":1682,"stem":1683,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Frefresh-nuxt-data","docs\u002F4.x\u002F4.api\u002F3.utils\u002Frefresh-nuxt-data",{"title":730,"path":1685,"stem":1686,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Freload-nuxt-app","docs\u002F4.x\u002F4.api\u002F3.utils\u002Freload-nuxt-app",{"title":734,"path":1688,"stem":1689,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fset-page-layout","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fset-page-layout",{"title":738,"path":1691,"stem":1692,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fset-response-status","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fset-response-status",{"title":742,"path":1694,"stem":1695,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fshow-error","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fshow-error",{"title":746,"path":1697,"stem":1698,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fupdate-app-config","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fupdate-app-config",{"title":750,"titleTemplate":751,"icon":752,"path":1700,"stem":1701,"children":1702,"page":108},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands","docs\u002F4.x\u002F4.api\u002F4.commands",[1703,1706,1709,1712,1715,1718,1721,1724,1727,1730,1733,1736,1739,1742,1745,1748,1751,1754],{"title":757,"path":1704,"stem":1705,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Foverview","docs\u002F4.x\u002F4.api\u002F4.commands\u002F1.overview",{"title":761,"path":1707,"stem":1708,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fadd","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fadd",{"title":765,"path":1710,"stem":1711,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fadd-template","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fadd-template",{"title":769,"path":1713,"stem":1714,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fanalyze","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fanalyze",{"title":773,"path":1716,"stem":1717,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fbuild","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fbuild",{"title":777,"path":1719,"stem":1720,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fbuild-module","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fbuild-module",{"title":781,"path":1722,"stem":1723,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fcleanup","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fcleanup",{"title":785,"path":1725,"stem":1726,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fdev","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fdev",{"title":789,"path":1728,"stem":1729,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fdevtools","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fdevtools",{"title":793,"path":1731,"stem":1732,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fgenerate","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fgenerate",{"title":797,"path":1734,"stem":1735,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Finfo","docs\u002F4.x\u002F4.api\u002F4.commands\u002Finfo",{"title":801,"path":1737,"stem":1738,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Finit","docs\u002F4.x\u002F4.api\u002F4.commands\u002Finit",{"title":805,"path":1740,"stem":1741,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fmodule","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fmodule",{"title":809,"path":1743,"stem":1744,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fprepare","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fprepare",{"title":813,"path":1746,"stem":1747,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fpreview","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fpreview",{"title":817,"path":1749,"stem":1750,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Ftest","docs\u002F4.x\u002F4.api\u002F4.commands\u002Ftest",{"title":821,"path":1752,"stem":1753,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Ftypecheck","docs\u002F4.x\u002F4.api\u002F4.commands\u002Ftypecheck",{"title":825,"path":1755,"stem":1756,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fupgrade","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fupgrade",{"title":415,"titleTemplate":829,"icon":830,"path":1758,"stem":1759,"children":1760,"page":108},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit","docs\u002F4.x\u002F4.api\u002F5.kit",[1761,1764,1767,1770,1774,1777,1780,1783,1786,1789,1792,1795,1798,1801,1804,1807,1810,1813,1816],{"title":276,"path":1762,"stem":1763,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fmodules","docs\u002F4.x\u002F4.api\u002F5.kit\u002F1.modules",{"title":403,"path":1765,"stem":1766,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fruntime-config","docs\u002F4.x\u002F4.api\u002F5.kit\u002F10.runtime-config",{"title":841,"path":1768,"stem":1769,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Ftemplates","docs\u002F4.x\u002F4.api\u002F5.kit\u002F10.templates",{"title":1771,"path":1772,"stem":1773,"titleTemplate":6},"App Config","\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fapp-config","docs\u002F4.x\u002F4.api\u002F5.kit\u002F11.app-config",{"title":845,"path":1775,"stem":1776,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fnitro","docs\u002F4.x\u002F4.api\u002F5.kit\u002F12.nitro",{"title":849,"path":1778,"stem":1779,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fresolving","docs\u002F4.x\u002F4.api\u002F5.kit\u002F13.resolving",{"title":853,"path":1781,"stem":1782,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Flogging","docs\u002F4.x\u002F4.api\u002F5.kit\u002F14.logging",{"title":857,"path":1784,"stem":1785,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fbuilder","docs\u002F4.x\u002F4.api\u002F5.kit\u002F15.builder",{"title":861,"path":1787,"stem":1788,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fexamples","docs\u002F4.x\u002F4.api\u002F5.kit\u002F16.examples",{"title":84,"path":1790,"stem":1791,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Flayers","docs\u002F4.x\u002F4.api\u002F5.kit\u002F17.layers",{"title":868,"path":1793,"stem":1794,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fprogrammatic","docs\u002F4.x\u002F4.api\u002F5.kit\u002F2.programmatic",{"title":872,"path":1796,"stem":1797,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fcompatibility","docs\u002F4.x\u002F4.api\u002F5.kit\u002F3.compatibility",{"title":268,"path":1799,"stem":1800,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fautoimports","docs\u002F4.x\u002F4.api\u002F5.kit\u002F4.autoimports",{"title":438,"path":1802,"stem":1803,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fcomponents","docs\u002F4.x\u002F4.api\u002F5.kit\u002F5.components",{"title":882,"path":1805,"stem":1806,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fcontext","docs\u002F4.x\u002F4.api\u002F5.kit\u002F6.context",{"title":886,"path":1808,"stem":1809,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fpages","docs\u002F4.x\u002F4.api\u002F5.kit\u002F7.pages",{"title":890,"path":1811,"stem":1812,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Flayout","docs\u002F4.x\u002F4.api\u002F5.kit\u002F8.layout",{"title":894,"path":1814,"stem":1815,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fhead","docs\u002F4.x\u002F4.api\u002F5.kit\u002F9.head",{"title":898,"path":1817,"stem":1818,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fplugins","docs\u002F4.x\u002F4.api\u002F5.kit\u002F9.plugins",{"title":902,"titleTemplate":6,"icon":903,"path":1820,"stem":1821,"children":1822,"page":108},"\u002Fdocs\u002F4.x\u002Fapi\u002Fadvanced","docs\u002F4.x\u002F4.api\u002F6.advanced",[1823,1826],{"title":411,"path":1824,"stem":1825,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fadvanced\u002Fhooks","docs\u002F4.x\u002F4.api\u002F6.advanced\u002F1.hooks",{"title":911,"path":1827,"stem":1828,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fadvanced\u002Fimport-meta","docs\u002F4.x\u002F4.api\u002F6.advanced\u002F2.import-meta",{"title":915,"path":1830,"stem":1831,"titleTemplate":918,"icon":32},"\u002Fdocs\u002F4.x\u002Fapi\u002Fnuxt-config","docs\u002F4.x\u002F4.api\u002F6.nuxt-config",{"title":861,"titleTemplate":920,"icon":921,"path":1833,"stem":1834,"children":1835,"page":108},"\u002Fdocs\u002F4.x\u002Fexamples","docs\u002F4.x\u002F4.examples",[1836,1839,1858,1871,1902],{"title":926,"path":1837,"stem":1838,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fhello-world","docs\u002F4.x\u002F4.examples\u002F0.hello-world",{"title":399,"path":1840,"stem":1841,"children":1842,"page":108},"\u002Fdocs\u002F4.x\u002Fexamples\u002Ffeatures","docs\u002F4.x\u002F4.examples\u002F1.features",[1843,1846,1849,1852,1855],{"title":934,"path":1844,"stem":1845,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Ffeatures\u002Fauto-imports","docs\u002F4.x\u002F4.examples\u002F1.features\u002F1.auto-imports",{"title":64,"path":1847,"stem":1848,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Ffeatures\u002Fdata-fetching","docs\u002F4.x\u002F4.examples\u002F1.features\u002F2.data-fetching",{"title":69,"path":1850,"stem":1851,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Ffeatures\u002Fstate-management","docs\u002F4.x\u002F4.examples\u002F1.features\u002F3.state-management",{"title":944,"path":1853,"stem":1854,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Ffeatures\u002Fmeta-tags","docs\u002F4.x\u002F4.examples\u002F1.features\u002F4.meta-tags",{"title":948,"path":1856,"stem":1857,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Ffeatures\u002Flayouts","docs\u002F4.x\u002F4.examples\u002F1.features\u002F5.layouts",{"title":49,"path":1859,"stem":1860,"children":1861,"page":108},"\u002Fdocs\u002F4.x\u002Fexamples\u002Frouting","docs\u002F4.x\u002F4.examples\u002F2.routing",[1862,1865,1868],{"title":956,"path":1863,"stem":1864,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Frouting\u002Fmiddleware","docs\u002F4.x\u002F4.examples\u002F2.routing\u002Fmiddleware",{"title":886,"path":1866,"stem":1867,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Frouting\u002Fpages","docs\u002F4.x\u002F4.examples\u002F2.routing\u002Fpages",{"title":963,"path":1869,"stem":1870,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Frouting\u002Funiversal-router","docs\u002F4.x\u002F4.examples\u002F2.routing\u002Funiversal-router",{"title":902,"path":1872,"stem":1873,"children":1874,"page":108},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced","docs\u002F4.x\u002F4.examples\u002F4.advanced",[1875,1878,1881,1884,1887,1890,1893,1896,1899],{"title":84,"path":1876,"stem":1877,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Fconfig-extends","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Fconfig-extends",{"title":74,"path":1879,"stem":1880,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Ferror-handling","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Ferror-handling",{"title":977,"path":1882,"stem":1883,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Fjsx","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Fjsx",{"title":981,"path":1885,"stem":1886,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Flocale","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Flocale",{"title":985,"path":1888,"stem":1889,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Fmodule-extend-pages","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Fmodule-extend-pages",{"title":989,"path":1891,"stem":1892,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Fteleport","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Fteleport",{"title":99,"path":1894,"stem":1895,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Ftesting","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Ftesting",{"title":523,"path":1897,"stem":1898,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Fuse-cookie","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Fuse-cookie",{"title":999,"path":1900,"stem":1901,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Fuse-custom-fetch-composable","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Fuse-custom-fetch-composable",{"title":1003,"path":1903,"stem":1904,"children":1905,"page":108},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fexperimental","docs\u002F4.x\u002F4.examples\u002F7.experimental",[1906],{"title":1008,"path":1907,"stem":1908,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fexperimental\u002Fwasm","docs\u002F4.x\u002F4.examples\u002F7.experimental\u002Fwasm",{"title":1012,"titleTemplate":1013,"icon":1014,"path":1910,"stem":1911,"children":1912,"page":108},"\u002Fdocs\u002F4.x\u002Fcommunity","docs\u002F4.x\u002F5.community",[1913,1916,1919,1922,1925,1928],{"title":1019,"path":1914,"stem":1915,"titleTemplate":6,"icon":1022},"\u002Fdocs\u002F4.x\u002Fcommunity\u002Fgetting-help","docs\u002F4.x\u002F5.community\u002F2.getting-help",{"title":1024,"path":1917,"stem":1918,"titleTemplate":6,"icon":1027},"\u002Fdocs\u002F4.x\u002Fcommunity\u002Freporting-bugs","docs\u002F4.x\u002F5.community\u002F3.reporting-bugs",{"title":1029,"path":1920,"stem":1921,"titleTemplate":6,"icon":1032},"\u002Fdocs\u002F4.x\u002Fcommunity\u002Fcontribution","docs\u002F4.x\u002F5.community\u002F4.contribution",{"title":1034,"path":1923,"stem":1924,"titleTemplate":6,"icon":1037},"\u002Fdocs\u002F4.x\u002Fcommunity\u002Fframework-contribution","docs\u002F4.x\u002F5.community\u002F5.framework-contribution",{"title":1039,"path":1926,"stem":1927,"titleTemplate":6,"icon":1042},"\u002Fdocs\u002F4.x\u002Fcommunity\u002Froadmap","docs\u002F4.x\u002F5.community\u002F6.roadmap",{"title":1044,"path":1929,"stem":1930,"titleTemplate":6,"icon":1047},"\u002Fdocs\u002F4.x\u002Fcommunity\u002Fchangelog","docs\u002F4.x\u002F5.community\u002F7.changelog",{"title":1049,"titleTemplate":1050,"icon":1051,"path":1932,"stem":1933,"children":1934,"page":108},"\u002Fdocs\u002F4.x\u002Fbridge","docs\u002F4.x\u002F6.bridge",[1935,1938,1941,1944,1947,1950,1953,1956,1959,1962],{"title":1056,"path":1936,"stem":1937,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Foverview","docs\u002F4.x\u002F6.bridge\u002F1.overview",{"title":29,"path":1939,"stem":1940,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fconfiguration","docs\u002F4.x\u002F6.bridge\u002F10.configuration",{"title":280,"path":1942,"stem":1943,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Ftypescript","docs\u002F4.x\u002F6.bridge\u002F2.typescript",{"title":1066,"path":1945,"stem":1946,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fbridge-composition-api","docs\u002F4.x\u002F6.bridge\u002F3.bridge-composition-api",{"title":1070,"path":1948,"stem":1949,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fplugins-and-middleware","docs\u002F4.x\u002F6.bridge\u002F4.plugins-and-middleware",{"title":1074,"path":1951,"stem":1952,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fnuxt3-compatible-api","docs\u002F4.x\u002F6.bridge\u002F5.nuxt3-compatible-api",{"title":944,"path":1954,"stem":1955,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fmeta","docs\u002F4.x\u002F6.bridge\u002F6.meta",{"title":403,"path":1957,"stem":1958,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fruntime-config","docs\u002F4.x\u002F6.bridge\u002F7.runtime-config",{"title":845,"path":1960,"stem":1961,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fnitro","docs\u002F4.x\u002F6.bridge\u002F8.nitro",{"title":1087,"path":1963,"stem":1964,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fvite","docs\u002F4.x\u002F6.bridge\u002F9.vite",{"title":1091,"titleTemplate":1092,"icon":107,"path":1966,"stem":1967,"children":1968,"page":108},"\u002Fdocs\u002F4.x\u002Fmigration","docs\u002F4.x\u002F7.migration",[1969,1972,1975,1978,1981,1984,1987,1990,1993,1996,1999],{"title":1056,"path":1970,"stem":1971,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Foverview","docs\u002F4.x\u002F7.migration\u002F1.overview",{"title":1100,"path":1973,"stem":1974,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fbundling","docs\u002F4.x\u002F7.migration\u002F10.bundling",{"title":79,"path":1976,"stem":1977,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fserver","docs\u002F4.x\u002F7.migration\u002F11.server",{"title":29,"path":1979,"stem":1980,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fconfiguration","docs\u002F4.x\u002F7.migration\u002F2.configuration",{"title":276,"path":1982,"stem":1983,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fmodule-authors","docs\u002F4.x\u002F7.migration\u002F20.module-authors",{"title":934,"path":1985,"stem":1986,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fauto-imports","docs\u002F4.x\u002F7.migration\u002F3.auto-imports",{"title":944,"path":1988,"stem":1989,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fmeta","docs\u002F4.x\u002F7.migration\u002F4.meta",{"title":1070,"path":1991,"stem":1992,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fplugins-and-middleware","docs\u002F4.x\u002F7.migration\u002F5.plugins-and-middleware",{"title":1122,"path":1994,"stem":1995,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fpages-and-layouts","docs\u002F4.x\u002F7.migration\u002F6.pages-and-layouts",{"title":1126,"path":1997,"stem":1998,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fcomponent-options","docs\u002F4.x\u002F7.migration\u002F7.component-options",{"title":403,"path":2000,"stem":2001,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fruntime-config","docs\u002F4.x\u002F7.migration\u002F8.runtime-config",{"title":5,"titleTemplate":6,"icon":7,"path":2003,"stem":2004,"children":2005,"page":108},"\u002Fdocs\u002F5.x","docs\u002F5.x",[2006,2064,2157,2302,2696,2773,2795,2829],{"title":12,"titleTemplate":13,"icon":14,"path":2007,"stem":2008,"children":2009,"page":108},"\u002Fdocs\u002F5.x\u002Fgetting-started","docs\u002F5.x\u002F1.getting-started",[2010,2013,2016,2019,2022,2025,2028,2031,2034,2037,2040,2043,2046,2049,2052,2055,2058,2061],{"title":19,"path":2011,"stem":2012,"titleTemplate":6,"icon":22},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fintroduction","docs\u002F5.x\u002F1.getting-started\u002F01.introduction",{"title":24,"path":2014,"stem":2015,"titleTemplate":6,"icon":27},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Finstallation","docs\u002F5.x\u002F1.getting-started\u002F02.installation",{"title":29,"path":2017,"stem":2018,"titleTemplate":6,"icon":32},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fconfiguration","docs\u002F5.x\u002F1.getting-started\u002F03.configuration",{"title":34,"path":2020,"stem":2021,"titleTemplate":6,"icon":37},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fviews","docs\u002F5.x\u002F1.getting-started\u002F04.views",{"title":39,"path":2023,"stem":2024,"titleTemplate":6,"icon":42},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fassets","docs\u002F5.x\u002F1.getting-started\u002F05.assets",{"title":44,"path":2026,"stem":2027,"titleTemplate":6,"icon":47},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fstyling","docs\u002F5.x\u002F1.getting-started\u002F06.styling",{"title":49,"path":2029,"stem":2030,"titleTemplate":6,"icon":52},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Frouting","docs\u002F5.x\u002F1.getting-started\u002F07.routing",{"title":54,"path":2032,"stem":2033,"titleTemplate":6,"icon":57},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fseo-meta","docs\u002F5.x\u002F1.getting-started\u002F08.seo-meta",{"title":59,"path":2035,"stem":2036,"titleTemplate":6,"icon":62},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Ftransitions","docs\u002F5.x\u002F1.getting-started\u002F09.transitions",{"title":64,"path":2038,"stem":2039,"titleTemplate":6,"icon":67},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fdata-fetching","docs\u002F5.x\u002F1.getting-started\u002F10.data-fetching",{"title":69,"path":2041,"stem":2042,"titleTemplate":6,"icon":72},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fstate-management","docs\u002F5.x\u002F1.getting-started\u002F11.state-management",{"title":74,"path":2044,"stem":2045,"titleTemplate":6,"icon":77},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Ferror-handling","docs\u002F5.x\u002F1.getting-started\u002F12.error-handling",{"title":79,"path":2047,"stem":2048,"titleTemplate":6,"icon":82},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fserver","docs\u002F5.x\u002F1.getting-started\u002F13.server",{"title":84,"path":2050,"stem":2051,"titleTemplate":6,"icon":87},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Flayers","docs\u002F5.x\u002F1.getting-started\u002F14.layers",{"title":89,"path":2053,"stem":2054,"titleTemplate":6,"icon":92},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fprerendering","docs\u002F5.x\u002F1.getting-started\u002F15.prerendering",{"title":94,"path":2056,"stem":2057,"titleTemplate":6,"icon":97},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fdeployment","docs\u002F5.x\u002F1.getting-started\u002F16.deployment",{"title":99,"path":2059,"stem":2060,"titleTemplate":6,"icon":102},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Ftesting","docs\u002F5.x\u002F1.getting-started\u002F17.testing",{"title":104,"path":2062,"stem":2063,"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":2065,"stem":2066,"children":2067,"page":108},"\u002Fdocs\u002F5.x\u002Fdirectory-structure","docs\u002F5.x\u002F2.directory-structure",[2068,2071,2074,2112,2115,2118,2121,2124,2127,2130,2133,2136,2139,2142,2145,2148,2151,2154],{"title":117,"path":2069,"stem":2070,"titleTemplate":6,"icon":120},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fnuxt","docs\u002F5.x\u002F2.directory-structure\u002F0.nuxt",{"title":122,"path":2072,"stem":2073,"titleTemplate":6,"icon":125},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Foutput","docs\u002F5.x\u002F2.directory-structure\u002F0.output",{"title":1205,"titleTemplate":111,"head":2075,"defaultOpen":1208,"icon":1209,"path":2076,"stem":2077,"children":2078,"page":108},{"title":1207},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp","docs\u002F5.x\u002F2.directory-structure\u002F1.app",[2079,2082,2085,2088,2091,2094,2097,2100,2103,2106,2109],{"title":127,"path":2080,"stem":2081,"titleTemplate":6,"icon":130},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fassets","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.assets",{"title":132,"path":2083,"stem":2084,"titleTemplate":6,"icon":135},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fcomponents","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.components",{"title":137,"path":2086,"stem":2087,"titleTemplate":6,"icon":140},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fcomposables","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.composables",{"title":152,"path":2089,"stem":2090,"titleTemplate":6,"icon":155},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Flayouts","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.layouts",{"title":157,"path":2092,"stem":2093,"titleTemplate":6,"icon":160},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fmiddleware","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.middleware",{"title":171,"path":2095,"stem":2096,"titleTemplate":6,"icon":155},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fpages","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.pages",{"title":175,"path":2098,"stem":2099,"titleTemplate":6,"icon":178},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fplugins","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.plugins",{"title":195,"path":2101,"stem":2102,"titleTemplate":6,"icon":198},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Futils","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.utils",{"title":219,"path":2104,"stem":2105,"titleTemplate":6,"icon":222},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fapp","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F3.app",{"title":224,"path":2107,"stem":2108,"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":2110,"stem":2111,"titleTemplate":6,"icon":222},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Ferror","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F3.error",{"title":142,"path":2113,"stem":2114,"titleTemplate":6,"icon":145},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fcontent","docs\u002F5.x\u002F2.directory-structure\u002F1.content",{"title":147,"path":2116,"stem":2117,"titleTemplate":6,"icon":150},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Flayers","docs\u002F5.x\u002F2.directory-structure\u002F1.layers",{"title":162,"path":2119,"stem":2120,"titleTemplate":6,"icon":150},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fmodules","docs\u002F5.x\u002F2.directory-structure\u002F1.modules",{"title":166,"path":2122,"stem":2123,"titleTemplate":6,"icon":169},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fnode_modules","docs\u002F5.x\u002F2.directory-structure\u002F1.node_modules",{"title":180,"path":2125,"stem":2126,"titleTemplate":6,"icon":183},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fpublic","docs\u002F5.x\u002F2.directory-structure\u002F1.public",{"title":185,"path":2128,"stem":2129,"titleTemplate":6,"icon":188},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fserver","docs\u002F5.x\u002F2.directory-structure\u002F1.server",{"title":190,"path":2131,"stem":2132,"titleTemplate":6,"icon":193},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fshared","docs\u002F5.x\u002F2.directory-structure\u002F1.shared",{"title":1268,"path":2134,"stem":2135,"titleTemplate":6,"icon":1271},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Ftest","docs\u002F5.x\u002F2.directory-structure\u002F1.test",{"title":200,"path":2137,"stem":2138,"titleTemplate":6,"icon":203},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fenv","docs\u002F5.x\u002F2.directory-structure\u002F2.env",{"title":205,"path":2140,"stem":2141,"titleTemplate":6,"icon":208},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fgitignore","docs\u002F5.x\u002F2.directory-structure\u002F2.gitignore",{"title":210,"path":2143,"stem":2144,"titleTemplate":6,"icon":213},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fnuxtignore","docs\u002F5.x\u002F2.directory-structure\u002F2.nuxtignore",{"title":215,"path":2146,"stem":2147,"titleTemplate":6,"icon":213},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fnuxtrc","docs\u002F5.x\u002F2.directory-structure\u002F2.nuxtrc",{"title":233,"path":2149,"stem":2150,"titleTemplate":6,"icon":213},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fnuxt-config","docs\u002F5.x\u002F2.directory-structure\u002F3.nuxt-config",{"title":237,"path":2152,"stem":2153,"titleTemplate":6,"icon":240},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fpackage","docs\u002F5.x\u002F2.directory-structure\u002F3.package",{"title":242,"path":2155,"stem":2156,"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":2158,"stem":2159,"children":2160,"page":108},"\u002Fdocs\u002F5.x\u002Fguide","docs\u002F5.x\u002F3.guide",[2161,2189,2208,2218,2246,2265],{"title":253,"titleTemplate":254,"icon":255,"path":2162,"stem":2163,"children":2164,"page":108},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts","docs\u002F5.x\u002F3.guide\u002F1.concepts",[2165,2168,2171,2174,2177,2180,2183,2186],{"title":260,"path":2166,"stem":2167,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts\u002Frendering","docs\u002F5.x\u002F3.guide\u002F1.concepts\u002F1.rendering",{"title":264,"path":2169,"stem":2170,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts\u002Fnuxt-lifecycle","docs\u002F5.x\u002F3.guide\u002F1.concepts\u002F2.nuxt-lifecycle",{"title":268,"path":2172,"stem":2173,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts\u002Fauto-imports","docs\u002F5.x\u002F3.guide\u002F1.concepts\u002F3.auto-imports",{"title":272,"path":2175,"stem":2176,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts\u002Fserver-engine","docs\u002F5.x\u002F3.guide\u002F1.concepts\u002F4.server-engine",{"title":276,"path":2178,"stem":2179,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts\u002Fmodules","docs\u002F5.x\u002F3.guide\u002F1.concepts\u002F5.modules",{"title":1317,"path":2181,"stem":2182,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts\u002Fserver-components","docs\u002F5.x\u002F3.guide\u002F1.concepts\u002F6.server-components",{"title":280,"path":2184,"stem":2185,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts\u002Ftypescript","docs\u002F5.x\u002F3.guide\u002F1.concepts\u002F8.typescript",{"title":284,"path":2187,"stem":2188,"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":2190,"stem":2191,"children":2192,"page":108},"\u002Fdocs\u002F5.x\u002Fguide\u002Fbest-practices","docs\u002F5.x\u002F3.guide\u002F2.best-practices",[2193,2196,2199,2202,2205],{"title":1331,"path":2194,"stem":2195,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fbest-practices\u002Faccessibility","docs\u002F5.x\u002F3.guide\u002F2.best-practices\u002Faccessibility",{"title":1335,"path":2197,"stem":2198,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fbest-practices\u002Fdevcontainers","docs\u002F5.x\u002F3.guide\u002F2.best-practices\u002Fdevcontainers",{"title":1339,"path":2200,"stem":2201,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fbest-practices\u002Fhydration","docs\u002F5.x\u002F3.guide\u002F2.best-practices\u002Fhydration",{"title":299,"path":2203,"stem":2204,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fbest-practices\u002Fperformance","docs\u002F5.x\u002F3.guide\u002F2.best-practices\u002Fperformance",{"title":303,"path":2206,"stem":2207,"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":2209,"stem":2210,"children":2211,"page":108},"\u002Fdocs\u002F5.x\u002Fguide\u002Fai","docs\u002F5.x\u002F3.guide\u002F3.ai",[2212,2215],{"title":314,"path":2213,"stem":2214,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fai\u002Fmcp","docs\u002F5.x\u002F3.guide\u002F3.ai\u002F1.mcp",{"title":318,"path":2216,"stem":2217,"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":2219,"stem":2220,"children":2221,"page":108},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules","docs\u002F5.x\u002F3.guide\u002F4.modules",[2222,2225,2228,2231,2234,2237,2240,2243],{"title":329,"path":2223,"stem":2224,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Fgetting-started","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F1.getting-started",{"title":333,"path":2226,"stem":2227,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Fmodule-anatomy","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F2.module-anatomy",{"title":337,"path":2229,"stem":2230,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Frecipes-basics","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F3.recipes-basics",{"title":341,"path":2232,"stem":2233,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Fmodule-dependencies","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F4.module-dependencies",{"title":345,"path":2235,"stem":2236,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Frecipes-advanced","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F5.recipes-advanced",{"title":349,"path":2238,"stem":2239,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Ftesting","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F6.testing",{"title":353,"path":2241,"stem":2242,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Fbest-practices","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F7.best-practices",{"title":357,"path":2244,"stem":2245,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Fecosystem","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F8.ecosystem",{"title":361,"titleTemplate":362,"icon":363,"path":2247,"stem":2248,"children":2249,"page":108},"\u002Fdocs\u002F5.x\u002Fguide\u002Frecipes","docs\u002F5.x\u002F3.guide\u002F5.recipes",[2250,2253,2256,2259,2262],{"title":368,"path":2251,"stem":2252,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Frecipes\u002Fcustom-routing","docs\u002F5.x\u002F3.guide\u002F5.recipes\u002F1.custom-routing",{"title":372,"path":2254,"stem":2255,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Frecipes\u002Fvite-plugin","docs\u002F5.x\u002F3.guide\u002F5.recipes\u002F2.vite-plugin",{"title":376,"path":2257,"stem":2258,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Frecipes\u002Fcustom-usefetch","docs\u002F5.x\u002F3.guide\u002F5.recipes\u002F3.custom-usefetch",{"title":380,"path":2260,"stem":2261,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Frecipes\u002Fsessions-and-authentication","docs\u002F5.x\u002F3.guide\u002F5.recipes\u002F4.sessions-and-authentication",{"title":1403,"path":2263,"stem":2264,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Frecipes\u002Fmostly-static-sites","docs\u002F5.x\u002F3.guide\u002F5.recipes\u002F5.mostly-static-sites",{"title":384,"titleTemplate":385,"icon":386,"path":2266,"stem":2267,"children":2268,"page":108},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further","docs\u002F5.x\u002F3.guide\u002F6.going-further",[2269,2272,2275,2278,2281,2284,2287,2290,2293,2296,2299],{"title":391,"path":2270,"stem":2271,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fevents","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F1.events",{"title":395,"path":2273,"stem":2274,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fexperimental-features","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F1.experimental-features",{"title":399,"path":2276,"stem":2277,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Ffeatures","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F1.features",{"title":403,"path":2279,"stem":2280,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fruntime-config","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F10.runtime-config",{"title":407,"path":2282,"stem":2283,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fnightly-release-channel","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F11.nightly-release-channel",{"title":411,"path":2285,"stem":2286,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fhooks","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F2.hooks",{"title":415,"path":2288,"stem":2289,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fkit","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F4.kit",{"title":419,"path":2291,"stem":2292,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fnuxt-app","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F6.nuxt-app",{"title":423,"path":2294,"stem":2295,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Flayers","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F7.layers",{"title":1438,"path":2297,"stem":2298,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fbuilders","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F8.builders",{"title":427,"path":2300,"stem":2301,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fdebugging","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F9.debugging",{"title":431,"titleTemplate":432,"icon":433,"path":2303,"stem":2304,"children":2305,"page":108},"\u002Fdocs\u002F5.x\u002Fapi","docs\u002F5.x\u002F4.api",[2306,2358,2461,2552,2622,2683,2693],{"title":438,"titleTemplate":439,"icon":324,"path":2307,"stem":2308,"children":2309,"page":108},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents","docs\u002F5.x\u002F4.api\u002F1.components",[2310,2313,2316,2319,2322,2325,2328,2331,2334,2337,2340,2343,2346,2349,2352,2355],{"title":444,"path":2311,"stem":2312,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fclient-only","docs\u002F5.x\u002F4.api\u002F1.components\u002F1.client-only",{"title":448,"path":2314,"stem":2315,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fdev-only","docs\u002F5.x\u002F4.api\u002F1.components\u002F1.dev-only",{"title":452,"path":2317,"stem":2318,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-client-fallback","docs\u002F5.x\u002F4.api\u002F1.components\u002F1.nuxt-client-fallback",{"title":456,"path":2320,"stem":2321,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-picture","docs\u002F5.x\u002F4.api\u002F1.components\u002F10.nuxt-picture",{"title":460,"path":2323,"stem":2324,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fteleports","docs\u002F5.x\u002F4.api\u002F1.components\u002F11.teleports",{"title":464,"path":2326,"stem":2327,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-route-announcer","docs\u002F5.x\u002F4.api\u002F1.components\u002F12.nuxt-route-announcer",{"title":468,"path":2329,"stem":2330,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-time","docs\u002F5.x\u002F4.api\u002F1.components\u002F13.nuxt-time",{"title":1474,"path":2332,"stem":2333,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-announcer","docs\u002F5.x\u002F4.api\u002F1.components\u002F14.nuxt-announcer",{"title":472,"path":2335,"stem":2336,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-page","docs\u002F5.x\u002F4.api\u002F1.components\u002F2.nuxt-page",{"title":476,"path":2338,"stem":2339,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-layout","docs\u002F5.x\u002F4.api\u002F1.components\u002F3.nuxt-layout",{"title":480,"path":2341,"stem":2342,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-link","docs\u002F5.x\u002F4.api\u002F1.components\u002F4.nuxt-link",{"title":484,"path":2344,"stem":2345,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-loading-indicator","docs\u002F5.x\u002F4.api\u002F1.components\u002F5.nuxt-loading-indicator",{"title":488,"path":2347,"stem":2348,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-error-boundary","docs\u002F5.x\u002F4.api\u002F1.components\u002F6.nuxt-error-boundary",{"title":492,"path":2350,"stem":2351,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-welcome","docs\u002F5.x\u002F4.api\u002F1.components\u002F7.nuxt-welcome",{"title":496,"path":2353,"stem":2354,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-island","docs\u002F5.x\u002F4.api\u002F1.components\u002F8.nuxt-island",{"title":500,"path":2356,"stem":2357,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-img","docs\u002F5.x\u002F4.api\u002F1.components\u002F9.nuxt-img",{"title":504,"titleTemplate":505,"icon":506,"path":2359,"stem":2360,"children":2361,"page":108},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables","docs\u002F5.x\u002F4.api\u002F2.composables",[2362,2365,2368,2371,2374,2377,2380,2383,2386,2389,2392,2395,2398,2401,2404,2407,2410,2413,2416,2419,2422,2425,2428,2431,2434,2437,2440,2443,2446,2449,2452,2455,2458],{"title":1506,"path":2363,"stem":2364,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fcreate-use-async-data","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fcreate-use-async-data",{"title":1510,"path":2366,"stem":2367,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fcreate-use-fetch","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fcreate-use-fetch",{"title":511,"path":2369,"stem":2370,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fon-prehydrate","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fon-prehydrate",{"title":1517,"path":2372,"stem":2373,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-announcer","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-announcer",{"title":515,"path":2375,"stem":2376,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-app-config","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-app-config",{"title":519,"path":2378,"stem":2379,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-async-data","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-async-data",{"title":523,"path":2381,"stem":2382,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-cookie","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-cookie",{"title":527,"path":2384,"stem":2385,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-error","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-error",{"title":531,"path":2387,"stem":2388,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-fetch","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-fetch",{"title":535,"path":2390,"stem":2391,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-head","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-head",{"title":539,"path":2393,"stem":2394,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-head-safe","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-head-safe",{"title":543,"path":2396,"stem":2397,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-hydration","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-hydration",{"title":1545,"path":2399,"stem":2400,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-layout","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-layout",{"title":547,"path":2402,"stem":2403,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-lazy-async-data","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-lazy-async-data",{"title":551,"path":2405,"stem":2406,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-lazy-fetch","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-lazy-fetch",{"title":555,"path":2408,"stem":2409,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-loading-indicator","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-loading-indicator",{"title":559,"path":2411,"stem":2412,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-nuxt-app","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-nuxt-app",{"title":563,"path":2414,"stem":2415,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-nuxt-data","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-nuxt-data",{"title":567,"path":2417,"stem":2418,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-preview-mode","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-preview-mode",{"title":571,"path":2420,"stem":2421,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-request-event","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-request-event",{"title":575,"path":2423,"stem":2424,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-request-fetch","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-request-fetch",{"title":579,"path":2426,"stem":2427,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-request-header","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-request-header",{"title":583,"path":2429,"stem":2430,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-request-headers","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-request-headers",{"title":587,"path":2432,"stem":2433,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-request-url","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-request-url",{"title":591,"path":2435,"stem":2436,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-response-header","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-response-header",{"title":595,"path":2438,"stem":2439,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-route","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-route",{"title":599,"path":2441,"stem":2442,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-route-announcer","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-route-announcer",{"title":603,"path":2444,"stem":2445,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-router","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-router",{"title":607,"path":2447,"stem":2448,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-runtime-config","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-runtime-config",{"title":611,"path":2450,"stem":2451,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-runtime-hook","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-runtime-hook",{"title":615,"path":2453,"stem":2454,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-seo-meta","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-seo-meta",{"title":619,"path":2456,"stem":2457,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-server-seo-meta","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-server-seo-meta",{"title":623,"path":2459,"stem":2460,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-state","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-state",{"title":627,"titleTemplate":628,"icon":629,"path":2462,"stem":2463,"children":2464,"page":108},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils","docs\u002F5.x\u002F4.api\u002F3.utils",[2465,2468,2471,2474,2477,2480,2483,2486,2489,2492,2495,2498,2501,2504,2507,2510,2513,2516,2519,2522,2525,2528,2531,2534,2537,2540,2543,2546,2549],{"title":634,"path":2466,"stem":2467,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fdollarfetch","docs\u002F5.x\u002F4.api\u002F3.utils\u002F$fetch",{"title":638,"path":2469,"stem":2470,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fabort-navigation","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fabort-navigation",{"title":642,"path":2472,"stem":2473,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fadd-route-middleware","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fadd-route-middleware",{"title":646,"path":2475,"stem":2476,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fcall-once","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fcall-once",{"title":650,"path":2478,"stem":2479,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fclear-error","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fclear-error",{"title":654,"path":2481,"stem":2482,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fclear-nuxt-data","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fclear-nuxt-data",{"title":658,"path":2484,"stem":2485,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fclear-nuxt-state","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fclear-nuxt-state",{"title":662,"path":2487,"stem":2488,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fcreate-error","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fcreate-error",{"title":666,"path":2490,"stem":2491,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fdefine-lazy-hydration-component","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fdefine-lazy-hydration-component",{"title":670,"path":2493,"stem":2494,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fdefine-nuxt-component","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fdefine-nuxt-component",{"title":674,"path":2496,"stem":2497,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fdefine-nuxt-plugin","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fdefine-nuxt-plugin",{"title":678,"path":2499,"stem":2500,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fdefine-nuxt-route-middleware","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fdefine-nuxt-route-middleware",{"title":682,"path":2502,"stem":2503,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fdefine-page-meta","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fdefine-page-meta",{"title":686,"path":2505,"stem":2506,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fdefine-route-rules","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fdefine-route-rules",{"title":690,"path":2508,"stem":2509,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fnavigate-to","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fnavigate-to",{"title":694,"path":2511,"stem":2512,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fon-before-route-leave","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fon-before-route-leave",{"title":698,"path":2514,"stem":2515,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fon-before-route-update","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fon-before-route-update",{"title":702,"path":2517,"stem":2518,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fon-nuxt-ready","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fon-nuxt-ready",{"title":706,"path":2520,"stem":2521,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fprefetch-components","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fprefetch-components",{"title":710,"path":2523,"stem":2524,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fpreload-components","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fpreload-components",{"title":714,"path":2526,"stem":2527,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fpreload-route-components","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fpreload-route-components",{"title":718,"path":2529,"stem":2530,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fprerender-routes","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fprerender-routes",{"title":722,"path":2532,"stem":2533,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Frefresh-cookie","docs\u002F5.x\u002F4.api\u002F3.utils\u002Frefresh-cookie",{"title":726,"path":2535,"stem":2536,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Frefresh-nuxt-data","docs\u002F5.x\u002F4.api\u002F3.utils\u002Frefresh-nuxt-data",{"title":730,"path":2538,"stem":2539,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Freload-nuxt-app","docs\u002F5.x\u002F4.api\u002F3.utils\u002Freload-nuxt-app",{"title":734,"path":2541,"stem":2542,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fset-page-layout","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fset-page-layout",{"title":738,"path":2544,"stem":2545,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fset-response-status","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fset-response-status",{"title":742,"path":2547,"stem":2548,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fshow-error","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fshow-error",{"title":746,"path":2550,"stem":2551,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fupdate-app-config","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fupdate-app-config",{"title":750,"titleTemplate":751,"icon":752,"path":2553,"stem":2554,"children":2555,"page":108},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands","docs\u002F5.x\u002F4.api\u002F4.commands",[2556,2559,2562,2565,2568,2571,2574,2577,2581,2584,2587,2591,2594,2597,2600,2603,2606,2609,2613,2616,2619],{"title":757,"path":2557,"stem":2558,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Foverview","docs\u002F5.x\u002F4.api\u002F4.commands\u002F1.overview",{"title":761,"path":2560,"stem":2561,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fadd","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fadd",{"title":765,"path":2563,"stem":2564,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fadd-template","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fadd-template",{"title":769,"path":2566,"stem":2567,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fanalyze","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fanalyze",{"title":773,"path":2569,"stem":2570,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fbuild","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fbuild",{"title":777,"path":2572,"stem":2573,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fbuild-module","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fbuild-module",{"title":781,"path":2575,"stem":2576,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fcleanup","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fcleanup",{"title":2578,"path":2579,"stem":2580,"titleTemplate":6},"nuxt curl","\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fcurl","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fcurl",{"title":785,"path":2582,"stem":2583,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fdev","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fdev",{"title":789,"path":2585,"stem":2586,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fdevtools","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fdevtools",{"title":2588,"path":2589,"stem":2590,"titleTemplate":6},"nuxt docs","\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fdocs","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fdocs",{"title":793,"path":2592,"stem":2593,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fgenerate","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fgenerate",{"title":797,"path":2595,"stem":2596,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Finfo","docs\u002F5.x\u002F4.api\u002F4.commands\u002Finfo",{"title":801,"path":2598,"stem":2599,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Finit","docs\u002F5.x\u002F4.api\u002F4.commands\u002Finit",{"title":805,"path":2601,"stem":2602,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fmodule","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fmodule",{"title":809,"path":2604,"stem":2605,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fprepare","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fprepare",{"title":813,"path":2607,"stem":2608,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fpreview","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fpreview",{"title":2610,"path":2611,"stem":2612,"titleTemplate":6},"nuxt task","\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Ftask","docs\u002F5.x\u002F4.api\u002F4.commands\u002Ftask",{"title":817,"path":2614,"stem":2615,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Ftest","docs\u002F5.x\u002F4.api\u002F4.commands\u002Ftest",{"title":821,"path":2617,"stem":2618,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Ftypecheck","docs\u002F5.x\u002F4.api\u002F4.commands\u002Ftypecheck",{"title":825,"path":2620,"stem":2621,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fupgrade","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fupgrade",{"title":415,"titleTemplate":829,"icon":830,"path":2623,"stem":2624,"children":2625,"page":108},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit","docs\u002F5.x\u002F4.api\u002F5.kit",[2626,2629,2632,2635,2638,2641,2644,2647,2650,2653,2656,2659,2662,2665,2668,2671,2674,2677,2680],{"title":276,"path":2627,"stem":2628,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fmodules","docs\u002F5.x\u002F4.api\u002F5.kit\u002F1.modules",{"title":403,"path":2630,"stem":2631,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fruntime-config","docs\u002F5.x\u002F4.api\u002F5.kit\u002F10.runtime-config",{"title":841,"path":2633,"stem":2634,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Ftemplates","docs\u002F5.x\u002F4.api\u002F5.kit\u002F10.templates",{"title":1771,"path":2636,"stem":2637,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fapp-config","docs\u002F5.x\u002F4.api\u002F5.kit\u002F11.app-config",{"title":845,"path":2639,"stem":2640,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fnitro","docs\u002F5.x\u002F4.api\u002F5.kit\u002F12.nitro",{"title":849,"path":2642,"stem":2643,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fresolving","docs\u002F5.x\u002F4.api\u002F5.kit\u002F13.resolving",{"title":853,"path":2645,"stem":2646,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Flogging","docs\u002F5.x\u002F4.api\u002F5.kit\u002F14.logging",{"title":857,"path":2648,"stem":2649,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fbuilder","docs\u002F5.x\u002F4.api\u002F5.kit\u002F15.builder",{"title":861,"path":2651,"stem":2652,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fexamples","docs\u002F5.x\u002F4.api\u002F5.kit\u002F16.examples",{"title":84,"path":2654,"stem":2655,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Flayers","docs\u002F5.x\u002F4.api\u002F5.kit\u002F17.layers",{"title":868,"path":2657,"stem":2658,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fprogrammatic","docs\u002F5.x\u002F4.api\u002F5.kit\u002F2.programmatic",{"title":872,"path":2660,"stem":2661,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fcompatibility","docs\u002F5.x\u002F4.api\u002F5.kit\u002F3.compatibility",{"title":268,"path":2663,"stem":2664,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fautoimports","docs\u002F5.x\u002F4.api\u002F5.kit\u002F4.autoimports",{"title":438,"path":2666,"stem":2667,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fcomponents","docs\u002F5.x\u002F4.api\u002F5.kit\u002F5.components",{"title":882,"path":2669,"stem":2670,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fcontext","docs\u002F5.x\u002F4.api\u002F5.kit\u002F6.context",{"title":886,"path":2672,"stem":2673,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fpages","docs\u002F5.x\u002F4.api\u002F5.kit\u002F7.pages",{"title":890,"path":2675,"stem":2676,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Flayout","docs\u002F5.x\u002F4.api\u002F5.kit\u002F8.layout",{"title":894,"path":2678,"stem":2679,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fhead","docs\u002F5.x\u002F4.api\u002F5.kit\u002F9.head",{"title":898,"path":2681,"stem":2682,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fplugins","docs\u002F5.x\u002F4.api\u002F5.kit\u002F9.plugins",{"title":902,"titleTemplate":6,"icon":903,"path":2684,"stem":2685,"children":2686,"page":108},"\u002Fdocs\u002F5.x\u002Fapi\u002Fadvanced","docs\u002F5.x\u002F4.api\u002F6.advanced",[2687,2690],{"title":411,"path":2688,"stem":2689,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fadvanced\u002Fhooks","docs\u002F5.x\u002F4.api\u002F6.advanced\u002F1.hooks",{"title":911,"path":2691,"stem":2692,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fadvanced\u002Fimport-meta","docs\u002F5.x\u002F4.api\u002F6.advanced\u002F2.import-meta",{"title":915,"path":2694,"stem":2695,"titleTemplate":918,"icon":32},"\u002Fdocs\u002F5.x\u002Fapi\u002Fnuxt-config","docs\u002F5.x\u002F4.api\u002F6.nuxt-config",{"title":861,"titleTemplate":920,"icon":921,"path":2697,"stem":2698,"children":2699,"page":108},"\u002Fdocs\u002F5.x\u002Fexamples","docs\u002F5.x\u002F4.examples",[2700,2703,2722,2735,2766],{"title":926,"path":2701,"stem":2702,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fhello-world","docs\u002F5.x\u002F4.examples\u002F0.hello-world",{"title":399,"path":2704,"stem":2705,"children":2706,"page":108},"\u002Fdocs\u002F5.x\u002Fexamples\u002Ffeatures","docs\u002F5.x\u002F4.examples\u002F1.features",[2707,2710,2713,2716,2719],{"title":934,"path":2708,"stem":2709,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Ffeatures\u002Fauto-imports","docs\u002F5.x\u002F4.examples\u002F1.features\u002F1.auto-imports",{"title":64,"path":2711,"stem":2712,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Ffeatures\u002Fdata-fetching","docs\u002F5.x\u002F4.examples\u002F1.features\u002F2.data-fetching",{"title":69,"path":2714,"stem":2715,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Ffeatures\u002Fstate-management","docs\u002F5.x\u002F4.examples\u002F1.features\u002F3.state-management",{"title":944,"path":2717,"stem":2718,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Ffeatures\u002Fmeta-tags","docs\u002F5.x\u002F4.examples\u002F1.features\u002F4.meta-tags",{"title":948,"path":2720,"stem":2721,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Ffeatures\u002Flayouts","docs\u002F5.x\u002F4.examples\u002F1.features\u002F5.layouts",{"title":49,"path":2723,"stem":2724,"children":2725,"page":108},"\u002Fdocs\u002F5.x\u002Fexamples\u002Frouting","docs\u002F5.x\u002F4.examples\u002F2.routing",[2726,2729,2732],{"title":956,"path":2727,"stem":2728,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Frouting\u002Fmiddleware","docs\u002F5.x\u002F4.examples\u002F2.routing\u002Fmiddleware",{"title":886,"path":2730,"stem":2731,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Frouting\u002Fpages","docs\u002F5.x\u002F4.examples\u002F2.routing\u002Fpages",{"title":963,"path":2733,"stem":2734,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Frouting\u002Funiversal-router","docs\u002F5.x\u002F4.examples\u002F2.routing\u002Funiversal-router",{"title":902,"path":2736,"stem":2737,"children":2738,"page":108},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced","docs\u002F5.x\u002F4.examples\u002F4.advanced",[2739,2742,2745,2748,2751,2754,2757,2760,2763],{"title":84,"path":2740,"stem":2741,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Fconfig-extends","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Fconfig-extends",{"title":74,"path":2743,"stem":2744,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Ferror-handling","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Ferror-handling",{"title":977,"path":2746,"stem":2747,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Fjsx","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Fjsx",{"title":981,"path":2749,"stem":2750,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Flocale","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Flocale",{"title":985,"path":2752,"stem":2753,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Fmodule-extend-pages","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Fmodule-extend-pages",{"title":989,"path":2755,"stem":2756,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Fteleport","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Fteleport",{"title":99,"path":2758,"stem":2759,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Ftesting","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Ftesting",{"title":523,"path":2761,"stem":2762,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Fuse-cookie","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Fuse-cookie",{"title":999,"path":2764,"stem":2765,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Fuse-custom-fetch-composable","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Fuse-custom-fetch-composable",{"title":1003,"path":2767,"stem":2768,"children":2769,"page":108},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fexperimental","docs\u002F5.x\u002F4.examples\u002F7.experimental",[2770],{"title":1008,"path":2771,"stem":2772,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fexperimental\u002Fwasm","docs\u002F5.x\u002F4.examples\u002F7.experimental\u002Fwasm",{"title":1012,"titleTemplate":1013,"icon":1014,"path":2774,"stem":2775,"children":2776,"page":108},"\u002Fdocs\u002F5.x\u002Fcommunity","docs\u002F5.x\u002F5.community",[2777,2780,2783,2786,2789,2792],{"title":1019,"path":2778,"stem":2779,"titleTemplate":6,"icon":1022},"\u002Fdocs\u002F5.x\u002Fcommunity\u002Fgetting-help","docs\u002F5.x\u002F5.community\u002F2.getting-help",{"title":1024,"path":2781,"stem":2782,"titleTemplate":6,"icon":1027},"\u002Fdocs\u002F5.x\u002Fcommunity\u002Freporting-bugs","docs\u002F5.x\u002F5.community\u002F3.reporting-bugs",{"title":1029,"path":2784,"stem":2785,"titleTemplate":6,"icon":1032},"\u002Fdocs\u002F5.x\u002Fcommunity\u002Fcontribution","docs\u002F5.x\u002F5.community\u002F4.contribution",{"title":1034,"path":2787,"stem":2788,"titleTemplate":6,"icon":1037},"\u002Fdocs\u002F5.x\u002Fcommunity\u002Fframework-contribution","docs\u002F5.x\u002F5.community\u002F5.framework-contribution",{"title":1039,"path":2790,"stem":2791,"titleTemplate":6,"icon":1042},"\u002Fdocs\u002F5.x\u002Fcommunity\u002Froadmap","docs\u002F5.x\u002F5.community\u002F6.roadmap",{"title":1044,"path":2793,"stem":2794,"titleTemplate":6,"icon":1047},"\u002Fdocs\u002F5.x\u002Fcommunity\u002Fchangelog","docs\u002F5.x\u002F5.community\u002F7.changelog",{"title":1049,"titleTemplate":1050,"icon":1051,"path":2796,"stem":2797,"children":2798,"page":108},"\u002Fdocs\u002F5.x\u002Fbridge","docs\u002F5.x\u002F6.bridge",[2799,2802,2805,2808,2811,2814,2817,2820,2823,2826],{"title":1056,"path":2800,"stem":2801,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Foverview","docs\u002F5.x\u002F6.bridge\u002F1.overview",{"title":29,"path":2803,"stem":2804,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fconfiguration","docs\u002F5.x\u002F6.bridge\u002F10.configuration",{"title":280,"path":2806,"stem":2807,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Ftypescript","docs\u002F5.x\u002F6.bridge\u002F2.typescript",{"title":1066,"path":2809,"stem":2810,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fbridge-composition-api","docs\u002F5.x\u002F6.bridge\u002F3.bridge-composition-api",{"title":1070,"path":2812,"stem":2813,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fplugins-and-middleware","docs\u002F5.x\u002F6.bridge\u002F4.plugins-and-middleware",{"title":1074,"path":2815,"stem":2816,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fnuxt3-compatible-api","docs\u002F5.x\u002F6.bridge\u002F5.nuxt3-compatible-api",{"title":944,"path":2818,"stem":2819,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fmeta","docs\u002F5.x\u002F6.bridge\u002F6.meta",{"title":403,"path":2821,"stem":2822,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fruntime-config","docs\u002F5.x\u002F6.bridge\u002F7.runtime-config",{"title":845,"path":2824,"stem":2825,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fnitro","docs\u002F5.x\u002F6.bridge\u002F8.nitro",{"title":1087,"path":2827,"stem":2828,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fvite","docs\u002F5.x\u002F6.bridge\u002F9.vite",{"title":1091,"titleTemplate":1092,"icon":107,"path":2830,"stem":2831,"children":2832,"page":108},"\u002Fdocs\u002F5.x\u002Fmigration","docs\u002F5.x\u002F7.migration",[2833,2836,2839,2842,2845,2848,2851,2854,2857,2860,2863],{"title":1056,"path":2834,"stem":2835,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Foverview","docs\u002F5.x\u002F7.migration\u002F1.overview",{"title":1100,"path":2837,"stem":2838,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fbundling","docs\u002F5.x\u002F7.migration\u002F10.bundling",{"title":79,"path":2840,"stem":2841,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fserver","docs\u002F5.x\u002F7.migration\u002F11.server",{"title":29,"path":2843,"stem":2844,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fconfiguration","docs\u002F5.x\u002F7.migration\u002F2.configuration",{"title":276,"path":2846,"stem":2847,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fmodule-authors","docs\u002F5.x\u002F7.migration\u002F20.module-authors",{"title":934,"path":2849,"stem":2850,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fauto-imports","docs\u002F5.x\u002F7.migration\u002F3.auto-imports",{"title":944,"path":2852,"stem":2853,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fmeta","docs\u002F5.x\u002F7.migration\u002F4.meta",{"title":1070,"path":2855,"stem":2856,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fplugins-and-middleware","docs\u002F5.x\u002F7.migration\u002F5.plugins-and-middleware",{"title":1122,"path":2858,"stem":2859,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fpages-and-layouts","docs\u002F5.x\u002F7.migration\u002F6.pages-and-layouts",{"title":1126,"path":2861,"stem":2862,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fcomponent-options","docs\u002F5.x\u002F7.migration\u002F7.component-options",{"title":403,"path":2864,"stem":2865,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fruntime-config","docs\u002F5.x\u002F7.migration\u002F8.runtime-config",{"title":2867,"icon":2868,"path":2869,"stem":2870,"children":2871,"page":108},"Blog","i-lucide-newspaper","\u002Fblog","blog",[2872,2876,2880,2884,2888,2892,2896,2900,2904,2908,2912,2916,2920,2924,2928,2932,2936,2940,2944,2948,2952,2956,2960,2964,2968,2972,2976,2980,2984,2988,2992,2996,3000,3004,3008,3012,3016,3020,3024,3028,3032,3036,3040,3044,3048,3052,3056,3060,3064,3068],{"title":2873,"path":2874,"stem":2875},"Announcing 3.0","\u002Fblog\u002Fv3","blog\u002F1.v3",{"title":2877,"path":2878,"stem":2879},"Nuxt 3.3","\u002Fblog\u002Fv3-3","blog\u002F10.v3-3",{"title":2881,"path":2882,"stem":2883},"Nuxt 3.4","\u002Fblog\u002Fv3-4","blog\u002F11.v3-4",{"title":2885,"path":2886,"stem":2887},"Nuxt 3.5","\u002Fblog\u002Fv3-5","blog\u002F12.v3-5",{"title":2889,"path":2890,"stem":2891},"Nuxt 3.6","\u002Fblog\u002Fv3-6","blog\u002F13.v3-6",{"title":2893,"path":2894,"stem":2895},"Nuxt on the Edge","\u002Fblog\u002Fnuxt-on-the-edge","blog\u002F14.nuxt-on-the-edge",{"title":2897,"path":2898,"stem":2899},"Nuxt 3.7","\u002Fblog\u002Fv3-7","blog\u002F15.v3-7",{"title":2901,"path":2902,"stem":2903},"A New Website","\u002Fblog\u002Fnew-website","blog\u002F16.new-website",{"title":2905,"path":2906,"stem":2907},"Nuxt 3.8","\u002Fblog\u002Fv3-8","blog\u002F17.v3-8",{"title":2909,"path":2910,"stem":2911},"Nuxt DevTools v1.0","\u002Fblog\u002Fnuxt-devtools-v1-0","blog\u002F18.nuxt-devtools-v1-0",{"title":2913,"path":2914,"stem":2915},"Nuxt 3.9","\u002Fblog\u002Fv3-9","blog\u002F19.v3-9",{"title":2917,"path":2918,"stem":2919},"Nuxt: A vision for 2023","\u002Fblog\u002Fvision-2023","blog\u002F2.vision-2023",{"title":2921,"path":2922,"stem":2923},"Nuxt 3.10","\u002Fblog\u002Fv3-10","blog\u002F20.v3-10",{"title":2925,"path":2926,"stem":2927},"The Evolution of Shiki v1.0","\u002Fblog\u002Fshiki-v1","blog\u002F21.shiki-v1",{"title":2929,"path":2930,"stem":2931},"Nuxt 3.11","\u002Fblog\u002Fv3-11","blog\u002F22.v3-11",{"title":2933,"path":2934,"stem":2935},"Nuxt: Looking forward","\u002Fblog\u002Flooking-forward-2024","blog\u002F23.looking-forward-2024",{"title":2937,"path":2938,"stem":2939},"Refreshed Nuxt ESLint Integrations","\u002Fblog\u002Feslint-module","blog\u002F24.eslint-module",{"title":2941,"path":2942,"stem":2943},"Nuxt 3.12","\u002Fblog\u002Fv3-12","blog\u002F25.v3-12",{"title":2945,"path":2946,"stem":2947},"Introducing Nuxt Scripts","\u002Fblog\u002Fnuxt-scripts","blog\u002F26.nuxt-scripts",{"title":2949,"path":2950,"stem":2951},"Nuxt 3.13","\u002Fblog\u002Fv3-13","blog\u002F27.v3-13",{"title":2953,"path":2954,"stem":2955},"Nuxt 3.14","\u002Fblog\u002Fv3-14","blog\u002F27.v3-14",{"title":2957,"path":2958,"stem":2959},"Introducing Nuxt Icon v1","\u002Fblog\u002Fnuxt-icon-v1-0","blog\u002F29.nuxt-icon-v1-0",{"title":2961,"path":2962,"stem":2963},"Introducing Nuxt DevTools","\u002Fblog\u002Fintroducing-nuxt-devtools","blog\u002F3.introducing-nuxt-devtools",{"title":2965,"path":2966,"stem":2967},"Announcing Nuxt 3 Release Candidate","\u002Fblog\u002Fnuxt3-rc","blog\u002F3.nuxt3-rc",{"title":2969,"path":2970,"stem":2971},"Nuxt 3.15","\u002Fblog\u002Fv3-15","blog\u002F30.v3-15",{"title":2973,"path":2974,"stem":2975},"Nuxt 3.16","\u002Fblog\u002Fv3-16","blog\u002F31.v3-16",{"title":2977,"path":2978,"stem":2979},"Nuxt UI v3","\u002Fblog\u002Fnuxt-ui-v3","blog\u002F32.nuxt-ui-v3",{"title":2981,"path":2982,"stem":2983},"Nuxt 3.17","\u002Fblog\u002Fv3-17","blog\u002F33.v3-17",{"title":2985,"path":2986,"stem":2987},"Roadmap to v4","\u002Fblog\u002Froadmap-v4","blog\u002F34.roadmap-v4",{"title":2989,"path":2990,"stem":2991},"Building a Privacy-First Feedback Widget","\u002Fblog\u002Fbuilding-a-feedback-widget","blog\u002F35.building-a-feedback-widget",{"title":2993,"path":2994,"stem":2995},"Announcing Nuxt 4.0","\u002Fblog\u002Fv4","blog\u002F36.v4",{"title":2997,"path":2998,"stem":2999},"Nuxt 3.18","\u002Fblog\u002Fv3-18","blog\u002F37.v3-18",{"title":3001,"path":3002,"stem":3003},"Nuxt 4.1","\u002Fblog\u002Fv4-1","blog\u002F38.v4-1",{"title":3005,"path":3006,"stem":3007},"Nuxt UI v4","\u002Fblog\u002Fnuxt-ui-v4","blog\u002F39.nuxt-ui-v4",{"title":3009,"path":3010,"stem":3011},"Nuxt 2 End-of-Life (EOL)","\u002Fblog\u002Fnuxt2-eol","blog\u002F4.nuxt2-eol",{"title":3013,"path":3014,"stem":3015},"Introducing Nuxt 3 Beta","\u002Fblog\u002Fnuxt3-beta","blog\u002F4.nuxt3-beta",{"title":3017,"path":3018,"stem":3019},"Building an MCP Server for Nuxt","\u002Fblog\u002Fbuilding-nuxt-mcp","blog\u002F40.building-nuxt-mcp",{"title":3021,"path":3022,"stem":3023},"Nuxt 4.2","\u002Fblog\u002Fv4-2","blog\u002F40.v4-2",{"title":3025,"path":3026,"stem":3027},"Nuxt Image v2","\u002Fblog\u002Fnuxt-image-v2","blog\u002F41.nuxt-image-v2",{"title":3029,"path":3030,"stem":3031},"Nuxt 4.3","\u002Fblog\u002Fv4-3","blog\u002F42.v4-3",{"title":3033,"path":3034,"stem":3035},"Nuxt 4.4","\u002Fblog\u002Fv4-4","blog\u002F43.v4-4",{"title":3037,"path":3038,"stem":3039},"Introducing the Nuxt Agent","\u002Fblog\u002Fintroducing-nuxt-agent","blog\u002F44.introducing-nuxt-agent",{"title":3041,"path":3042,"stem":3043},"Meet Nuxi","\u002Fblog\u002Fmeet-nuxi","blog\u002F45.meet-nuxi",{"title":3045,"path":3046,"stem":3047},"Nuxt 4.5","\u002Fblog\u002Fv4-5","blog\u002F46.v4-5",{"title":3049,"path":3050,"stem":3051},"Nuxt Security Patch Releases","\u002Fblog\u002Fv4-5-security","blog\u002F47.v4-5-security",{"title":3053,"path":3054,"stem":3055},"Going Full Static","\u002Fblog\u002Fgoing-full-static","blog\u002F5.going-full-static",{"title":3057,"path":3058,"stem":3059},"Introducing Smart Prefetching","\u002Fblog\u002Fintroducing-smart-prefetching","blog\u002F6.introducing-smart-prefetching",{"title":3061,"path":3062,"stem":3063},"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":3065,"path":3066,"stem":3067},"Nuxt 2 Static Improvements","\u002Fblog\u002Fnuxt-static-improvements","blog\u002F8.nuxt-static-improvements",{"title":3069,"path":3070,"stem":3071},"Nuxt 2: From Terminal to Browser","\u002Fblog\u002Fnuxtjs-from-terminal-to-browser","blog\u002F9.nuxtjs-from-terminal-to-browser",{"name":3073,"description":3074,"repo":3075,"npm":3076,"icon":3077,"github":3078,"website":3078,"learn_more":3079,"category":3080,"type":3081,"maintainers":3082,"compatibility":3088,"generatedAt":3091,"contributors":3092,"stats":3120,"readme":3128},"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",[3083],{"name":3084,"github":3085,"twitter":3086,"bluesky":3087},"rrd","rrd108","radharadhya","rrd108.bsky.social",{"nuxt":3089,"requires":3090},">=3.0.0",{},"2026-08-28T05:00:03.686Z",[3093,3096,3100,3104,3108,3111,3114,3117],{"id":3094,"username":3085,"contributions":3095},3147489,282,{"id":3097,"username":3098,"contributions":3099},31929574,"ravesandstorm",5,{"id":3101,"username":3102,"contributions":3103},28706372,"danielroe",2,{"id":3105,"username":3106,"contributions":3107},20068593,"kschnekenburger",1,{"id":3109,"username":3110,"contributions":3107},32599710,"simonmaass",{"id":3112,"username":3113,"contributions":3107},125942725,"nd2024",{"id":3115,"username":3116,"contributions":3107},10197526,"chachew",{"id":3118,"username":3119,"contributions":3107},55457896,"LeeKrane",{"version":3121,"downloads":3122,"stars":3123,"watchers":3107,"forks":3124,"defaultBranch":3125,"publishedAt":3126,"createdAt":3127},"1.0.0",14736,56,8,"main",1782038138831,1711731542236,{"data":3129,"body":3131,"toc":10742},{"title":3130,"description":3079},"Nuxt API Shield",{"type":3132,"children":3133},"root",[3134,3141,3186,3191,3217,3223,3474,3480,3494,3603,3628,3633,4048,4066,4487,4501,4530,4635,4654,4666,4830,4835,5044,5055,5121,5340,5345,5351,5370,5377,5390,5403,6072,6096,6102,6131,6142,7367,7407,7434,7440,7446,7472,7614,7633,7836,7850,7869,7886,7904,7909,7915,7935,7941,7967,8174,8179,8189,8195,8207,8241,8247,8259,8409,8451,8456,8486,8507,8513,8518,8530,8541,8648,8656,9070,9081,9086,9137,9143,9160,9188,9192,9198,9210,9688,9694,9707,9713,9804,9810,9839,9845,9883,9889,9908,9913,9918,10210,10216,10262,10268,10274,10284,10380,10386,10477,10490,10501,10521,10527,10736],{"type":3135,"tag":3136,"props":3137,"children":3138},"element","h1",{"id":3076},[3139],{"type":3140,"value":3130},"text",{"type":3135,"tag":3142,"props":3143,"children":3144},"p",{},[3145,3158,3167,3176],{"type":3135,"tag":3146,"props":3147,"children":3151},"a",{"href":3148,"rel":3149},"https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fnuxt-api-shield",[3150],"nofollow",[3152],{"type":3135,"tag":3153,"props":3154,"children":3157},"img",{"alt":3155,"src":3156},"npm version","https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002Fnuxt-api-shield\u002Flatest.svg?style=flat&colorA=020420&colorB=00DC82",[],{"type":3135,"tag":3146,"props":3159,"children":3161},{"href":3148,"rel":3160},[3150],[3162],{"type":3135,"tag":3153,"props":3163,"children":3166},{"alt":3164,"src":3165},"npm downloads","https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fdm\u002Fnuxt-api-shield.svg?style=flat&colorA=020420&colorB=00DC82",[],{"type":3135,"tag":3146,"props":3168,"children":3170},{"href":3148,"rel":3169},[3150],[3171],{"type":3135,"tag":3153,"props":3172,"children":3175},{"alt":3173,"src":3174},"License","https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fl\u002Fnuxt-api-shield.svg?style=flat&colorA=020420&colorB=00DC82",[],{"type":3135,"tag":3146,"props":3177,"children":3180},{"href":3178,"rel":3179},"https:\u002F\u002Fnuxt.com",[3150],[3181],{"type":3135,"tag":3153,"props":3182,"children":3185},{"alt":3183,"src":3184},"Nuxt","https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FNuxt-020420?logo=nuxt.js",[],{"type":3135,"tag":3142,"props":3187,"children":3188},{},[3189],{"type":3140,"value":3190},"This Nuxt module implements a rate limiting middleware to protect your API endpoints from excessive requests.",{"type":3135,"tag":3192,"props":3193,"children":3194},"ul",{},[3195],{"type":3135,"tag":3196,"props":3197,"children":3198},"li",{},[3199,3205],{"type":3135,"tag":3146,"props":3200,"children":3202},{"href":3201},"\u002FCHANGELOG.md",[3203],{"type":3140,"value":3204},"✨  Release Notes",{"type":3135,"tag":3192,"props":3206,"children":3207},{},[3208],{"type":3135,"tag":3196,"props":3209,"children":3210},{},[3211],{"type":3135,"tag":3146,"props":3212,"children":3214},{"href":3078,"rel":3213},[3150],[3215],{"type":3140,"value":3216},"📖  Documentation",{"type":3135,"tag":3218,"props":3219,"children":3221},"h2",{"id":3220},"features",[3222],{"type":3140,"value":399},{"type":3135,"tag":3192,"props":3224,"children":3225},{},[3226,3248,3305,3326,3347,3368,3400,3434],{"type":3135,"tag":3196,"props":3227,"children":3228},{},[3229,3235],{"type":3135,"tag":3230,"props":3231,"children":3232},"strong",{},[3233],{"type":3140,"value":3234},"IP-Based Rate limiting and Brute Force Protection",{"type":3135,"tag":3192,"props":3236,"children":3237},{},[3238,3243],{"type":3135,"tag":3196,"props":3239,"children":3240},{},[3241],{"type":3140,"value":3242},"Tracks and enforces rate limits for individual IP addresses.",{"type":3135,"tag":3196,"props":3244,"children":3245},{},[3246],{"type":3140,"value":3247},"Prevents malicious actors or excessive requests from a single source from overwhelming your API.",{"type":3135,"tag":3196,"props":3249,"children":3250},{},[3251,3256],{"type":3135,"tag":3230,"props":3252,"children":3253},{},[3254],{"type":3140,"value":3255},"Customizable Rate Limits",{"type":3135,"tag":3192,"props":3257,"children":3258},{},[3259,3264,3276,3281,3286,3300],{"type":3135,"tag":3196,"props":3260,"children":3261},{},[3262],{"type":3140,"value":3263},"Configure maximum request count, duration within which the limit applies, and a ban period for exceeding the limit.",{"type":3135,"tag":3196,"props":3265,"children":3266},{},[3267,3269,3274],{"type":3140,"value":3268},"If the request limit is exceeded, the user is banned for the configured ban period. During the ban period, ",{"type":3135,"tag":3230,"props":3270,"children":3271},{},[3272],{"type":3140,"value":3273},"all requests are blocked with a 429 error",{"type":3140,"value":3275},", regardless of the rate limit window.",{"type":3135,"tag":3196,"props":3277,"children":3278},{},[3279],{"type":3140,"value":3280},"Add a delay to responses when a user is banned to discourage further abuse (optional).",{"type":3135,"tag":3196,"props":3282,"children":3283},{},[3284],{"type":3140,"value":3285},"Customize the error message for banned users.",{"type":3135,"tag":3196,"props":3287,"children":3288},{},[3289,3291,3298],{"type":3140,"value":3290},"Optionally include the ",{"type":3135,"tag":3292,"props":3293,"children":3295},"code",{"className":3294},[],[3296],{"type":3140,"value":3297},"Retry-After",{"type":3140,"value":3299}," header in responses when a user is banned.",{"type":3135,"tag":3196,"props":3301,"children":3302},{},[3303],{"type":3140,"value":3304},"Tailor the rate-limiting behavior to align with your API's specific needs and usage patterns.",{"type":3135,"tag":3196,"props":3306,"children":3307},{},[3308,3313],{"type":3135,"tag":3230,"props":3309,"children":3310},{},[3311],{"type":3140,"value":3312},"Event-Driven Handling",{"type":3135,"tag":3192,"props":3314,"children":3315},{},[3316,3321],{"type":3135,"tag":3196,"props":3317,"children":3318},{},[3319],{"type":3140,"value":3320},"Intercepts incoming API requests efficiently using Nuxt's event system.",{"type":3135,"tag":3196,"props":3322,"children":3323},{},[3324],{"type":3140,"value":3325},"Ensures seamless integration with your Nuxt application's request lifecycle.",{"type":3135,"tag":3196,"props":3327,"children":3328},{},[3329,3334],{"type":3135,"tag":3230,"props":3330,"children":3331},{},[3332],{"type":3140,"value":3333},"Flexible Storage",{"type":3135,"tag":3192,"props":3335,"children":3336},{},[3337,3342],{"type":3135,"tag":3196,"props":3338,"children":3339},{},[3340],{"type":3140,"value":3341},"Utilizes Nuxt's unstorage abstraction for versatile storage options.",{"type":3135,"tag":3196,"props":3343,"children":3344},{},[3345],{"type":3140,"value":3346},"Store rate-limiting data in various storage providers (filesystem, memory, databases, etc.) based on your project's requirements.",{"type":3135,"tag":3196,"props":3348,"children":3349},{},[3350,3355],{"type":3135,"tag":3230,"props":3351,"children":3352},{},[3353],{"type":3140,"value":3354},"Configurable with Runtime Config",{"type":3135,"tag":3192,"props":3356,"children":3357},{},[3358,3363],{"type":3135,"tag":3196,"props":3359,"children":3360},{},[3361],{"type":3140,"value":3362},"Easily adjust rate-limiting parameters without code changes.",{"type":3135,"tag":3196,"props":3364,"children":3365},{},[3366],{"type":3140,"value":3367},"Adapt to dynamic needs and maintain control over rate-limiting behavior through Nuxt's runtime configuration.",{"type":3135,"tag":3196,"props":3369,"children":3370},{},[3371,3376],{"type":3135,"tag":3230,"props":3372,"children":3373},{},[3374],{"type":3140,"value":3375},"Bundled cleanup tasks",{"type":3135,"tag":3192,"props":3377,"children":3378},{},[3379],{"type":3135,"tag":3196,"props":3380,"children":3381},{},[3382,3384,3390,3392,3398],{"type":3140,"value":3383},"Registers Nitro tasks ",{"type":3135,"tag":3292,"props":3385,"children":3387},{"className":3386},[],[3388],{"type":3140,"value":3389},"shield:cleanBans",{"type":3140,"value":3391}," and ",{"type":3135,"tag":3292,"props":3393,"children":3395},{"className":3394},[],[3396],{"type":3140,"value":3397},"shield:cleanIpData",{"type":3140,"value":3399}," so you can schedule maintenance without adding task files (see setup step 4).",{"type":3135,"tag":3196,"props":3401,"children":3402},{},[3403,3408],{"type":3135,"tag":3230,"props":3404,"children":3405},{},[3406],{"type":3140,"value":3407},"Clear Error Handling",{"type":3135,"tag":3192,"props":3409,"children":3410},{},[3411,3416,3429],{"type":3135,"tag":3196,"props":3412,"children":3413},{},[3414],{"type":3140,"value":3415},"Returns a standardized 429 \"Too Many Requests\" error response when rate limits are exceeded or when a user is banned.",{"type":3135,"tag":3196,"props":3417,"children":3418},{},[3419,3421,3427],{"type":3140,"value":3420},"The 429 body is JSON (",{"type":3135,"tag":3292,"props":3422,"children":3424},{"className":3423},[],[3425],{"type":3140,"value":3426},"{ error, retryAfter }",{"type":3140,"value":3428},") for predictable client-side handling.",{"type":3135,"tag":3196,"props":3430,"children":3431},{},[3432],{"type":3140,"value":3433},"Facilitates proper error handling in client-side applications for a smooth user experience.",{"type":3135,"tag":3196,"props":3435,"children":3436},{},[3437,3442],{"type":3135,"tag":3230,"props":3438,"children":3439},{},[3440],{"type":3140,"value":3441},"Standard Rate-Limit Headers",{"type":3135,"tag":3192,"props":3443,"children":3444},{},[3445],{"type":3135,"tag":3196,"props":3446,"children":3447},{},[3448,3450,3456,3458,3464,3466,3472],{"type":3140,"value":3449},"Every response includes ",{"type":3135,"tag":3292,"props":3451,"children":3453},{"className":3452},[],[3454],{"type":3140,"value":3455},"X-RateLimit-Limit",{"type":3140,"value":3457},", ",{"type":3135,"tag":3292,"props":3459,"children":3461},{"className":3460},[],[3462],{"type":3140,"value":3463},"X-RateLimit-Remaining",{"type":3140,"value":3465},", and ",{"type":3135,"tag":3292,"props":3467,"children":3469},{"className":3468},[],[3470],{"type":3140,"value":3471},"X-RateLimit-Reset",{"type":3140,"value":3473}," headers so clients and CDNs can track usage without parsing response bodies.",{"type":3135,"tag":3218,"props":3475,"children":3477},{"id":3476},"quick-setup",[3478],{"type":3140,"value":3479},"Quick Setup",{"type":3135,"tag":3481,"props":3482,"children":3484},"h3",{"id":3483},"_1-add-nuxt-api-shield-dependency-to-your-project",[3485,3487,3492],{"type":3140,"value":3486},"1. Add ",{"type":3135,"tag":3292,"props":3488,"children":3490},{"className":3489},[],[3491],{"type":3140,"value":3076},{"type":3140,"value":3493}," dependency to your project",{"type":3135,"tag":3495,"props":3496,"children":3500},"pre",{"className":3497,"code":3498,"language":3499,"meta":3079,"style":3079},"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",[3501],{"type":3135,"tag":3292,"props":3502,"children":3503},{"__ignoreMap":3079},[3504,3515,3535,3544,3553,3569,3577,3586],{"type":3135,"tag":3505,"props":3506,"children":3508},"span",{"class":3507,"line":3107},"line",[3509],{"type":3135,"tag":3505,"props":3510,"children":3512},{"style":3511},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#90A4AE;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[3513],{"type":3140,"value":3514},"# Using pnpm\n",{"type":3135,"tag":3505,"props":3516,"children":3517},{"class":3507,"line":3103},[3518,3524,3530],{"type":3135,"tag":3505,"props":3519,"children":3521},{"style":3520},"--shiki-light:#E2931D;--shiki-default:#E2931D;--shiki-dark:#FFCB6B",[3522],{"type":3140,"value":3523},"pnpm",{"type":3135,"tag":3505,"props":3525,"children":3527},{"style":3526},"--shiki-light:#91B859;--shiki-default:#91B859;--shiki-dark:#C3E88D",[3528],{"type":3140,"value":3529}," add",{"type":3135,"tag":3505,"props":3531,"children":3532},{"style":3526},[3533],{"type":3140,"value":3534}," nuxt-api-shield\n",{"type":3135,"tag":3505,"props":3536,"children":3538},{"class":3507,"line":3537},3,[3539],{"type":3135,"tag":3505,"props":3540,"children":3541},{"emptyLinePlaceholder":1208},[3542],{"type":3140,"value":3543},"\n",{"type":3135,"tag":3505,"props":3545,"children":3547},{"class":3507,"line":3546},4,[3548],{"type":3135,"tag":3505,"props":3549,"children":3550},{"style":3511},[3551],{"type":3140,"value":3552},"# Using yarn\n",{"type":3135,"tag":3505,"props":3554,"children":3555},{"class":3507,"line":3099},[3556,3561,3565],{"type":3135,"tag":3505,"props":3557,"children":3558},{"style":3520},[3559],{"type":3140,"value":3560},"yarn",{"type":3135,"tag":3505,"props":3562,"children":3563},{"style":3526},[3564],{"type":3140,"value":3529},{"type":3135,"tag":3505,"props":3566,"children":3567},{"style":3526},[3568],{"type":3140,"value":3534},{"type":3135,"tag":3505,"props":3570,"children":3572},{"class":3507,"line":3571},6,[3573],{"type":3135,"tag":3505,"props":3574,"children":3575},{"emptyLinePlaceholder":1208},[3576],{"type":3140,"value":3543},{"type":3135,"tag":3505,"props":3578,"children":3580},{"class":3507,"line":3579},7,[3581],{"type":3135,"tag":3505,"props":3582,"children":3583},{"style":3511},[3584],{"type":3140,"value":3585},"# Using npm\n",{"type":3135,"tag":3505,"props":3587,"children":3588},{"class":3507,"line":3124},[3589,3594,3599],{"type":3135,"tag":3505,"props":3590,"children":3591},{"style":3520},[3592],{"type":3140,"value":3593},"npm",{"type":3135,"tag":3505,"props":3595,"children":3596},{"style":3526},[3597],{"type":3140,"value":3598}," install",{"type":3135,"tag":3505,"props":3600,"children":3601},{"style":3526},[3602],{"type":3140,"value":3534},{"type":3135,"tag":3481,"props":3604,"children":3606},{"id":3605},"_2-add-nuxt-api-shield-to-the-modules-section-of-nuxtconfigts",[3607,3609,3614,3616,3621,3623],{"type":3140,"value":3608},"2. Add ",{"type":3135,"tag":3292,"props":3610,"children":3612},{"className":3611},[],[3613],{"type":3140,"value":3076},{"type":3140,"value":3615}," to the ",{"type":3135,"tag":3292,"props":3617,"children":3619},{"className":3618},[],[3620],{"type":3140,"value":162},{"type":3140,"value":3622}," section of ",{"type":3135,"tag":3292,"props":3624,"children":3626},{"className":3625},[],[3627],{"type":3140,"value":233},{"type":3135,"tag":3142,"props":3629,"children":3630},{},[3631],{"type":3140,"value":3632},"You should add only the values you want to use differently from the default values.",{"type":3135,"tag":3495,"props":3634,"children":3638},{"className":3635,"code":3636,"language":3637,"meta":3079,"style":3079},"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: \"\", \u002F\u002F path to the log file, every day a new log file will be created, use \"\" to disable logging\n      attempts: 0,    \u002F\u002F if an IP reach 0 requests (disabled), all the requests will be logged, can be used for further analysis or blocking for example with fail2ban, use 0 to disable logging\n      fail2ban: false, \u002F\u002F enable fail2ban-compatible log format for ban events (see fail2ban section)\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    skipRoutes: [], \u002F\u002F specify routes to skip\u002Fexempt from rate limiting, supports wildcard patterns (*\u002F**)\n    \u002F\u002F Example:\n    \u002F\u002F skipRoutes: [\"\u002Fapi\u002Fhealth\", \"\u002Fapi\u002F_nuxt\u002F**\", \"\u002Fapi\u002Fwebhooks\u002Fstripe\"],\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: false, \u002F\u002F Default: false. Whether to trust X-Forwarded-For headers. See warning below.\n    },\n  },\n});\n","js",[3639],{"type":3135,"tag":3292,"props":3640,"children":3641},{"__ignoreMap":3079},[3642,3674,3716,3733,3741,3749,3757,3765,3773,3782,3791,3800,3809,3818,3827,3836,3845,3853,3862,3871,3885,3913,3921,3930,3958,3975,3984,4012,4020,4029],{"type":3135,"tag":3505,"props":3643,"children":3644},{"class":3507,"line":3107},[3645,3651,3656,3662,3668],{"type":3135,"tag":3505,"props":3646,"children":3648},{"style":3647},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#39ADB5;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[3649],{"type":3140,"value":3650},"export",{"type":3135,"tag":3505,"props":3652,"children":3653},{"style":3647},[3654],{"type":3140,"value":3655}," default",{"type":3135,"tag":3505,"props":3657,"children":3659},{"style":3658},"--shiki-light:#6182B8;--shiki-default:#6182B8;--shiki-dark:#82AAFF",[3660],{"type":3140,"value":3661}," defineNuxtConfig",{"type":3135,"tag":3505,"props":3663,"children":3665},{"style":3664},"--shiki-light:#90A4AE;--shiki-default:#90A4AE;--shiki-dark:#BABED8",[3666],{"type":3140,"value":3667},"(",{"type":3135,"tag":3505,"props":3669,"children":3671},{"style":3670},"--shiki-light:#39ADB5;--shiki-default:#39ADB5;--shiki-dark:#89DDFF",[3672],{"type":3140,"value":3673},"{\n",{"type":3135,"tag":3505,"props":3675,"children":3676},{"class":3507,"line":3103},[3677,3683,3688,3693,3698,3702,3706,3711],{"type":3135,"tag":3505,"props":3678,"children":3680},{"style":3679},"--shiki-light:#E53935;--shiki-default:#E53935;--shiki-dark:#F07178",[3681],{"type":3140,"value":3682},"  modules",{"type":3135,"tag":3505,"props":3684,"children":3685},{"style":3670},[3686],{"type":3140,"value":3687},":",{"type":3135,"tag":3505,"props":3689,"children":3690},{"style":3664},[3691],{"type":3140,"value":3692}," [",{"type":3135,"tag":3505,"props":3694,"children":3695},{"style":3670},[3696],{"type":3140,"value":3697},"\"",{"type":3135,"tag":3505,"props":3699,"children":3700},{"style":3526},[3701],{"type":3140,"value":3076},{"type":3135,"tag":3505,"props":3703,"children":3704},{"style":3670},[3705],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":3707,"children":3708},{"style":3664},[3709],{"type":3140,"value":3710},"]",{"type":3135,"tag":3505,"props":3712,"children":3713},{"style":3670},[3714],{"type":3140,"value":3715},",\n",{"type":3135,"tag":3505,"props":3717,"children":3718},{"class":3507,"line":3537},[3719,3724,3728],{"type":3135,"tag":3505,"props":3720,"children":3721},{"style":3679},[3722],{"type":3140,"value":3723},"  nuxtApiShield",{"type":3135,"tag":3505,"props":3725,"children":3726},{"style":3670},[3727],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":3729,"children":3730},{"style":3670},[3731],{"type":3140,"value":3732}," {\n",{"type":3135,"tag":3505,"props":3734,"children":3735},{"class":3507,"line":3546},[3736],{"type":3135,"tag":3505,"props":3737,"children":3738},{"style":3511},[3739],{"type":3140,"value":3740},"    \u002F*limit: {\n",{"type":3135,"tag":3505,"props":3742,"children":3743},{"class":3507,"line":3099},[3744],{"type":3135,"tag":3505,"props":3745,"children":3746},{"style":3511},[3747],{"type":3140,"value":3748},"      max: 12,        \u002F\u002F maximum requests per duration time, default is 12\u002Fduration\n",{"type":3135,"tag":3505,"props":3750,"children":3751},{"class":3507,"line":3571},[3752],{"type":3135,"tag":3505,"props":3753,"children":3754},{"style":3511},[3755],{"type":3140,"value":3756},"      duration: 108,   \u002F\u002F duration time in seconds, default is 108 seconds\n",{"type":3135,"tag":3505,"props":3758,"children":3759},{"class":3507,"line":3579},[3760],{"type":3135,"tag":3505,"props":3761,"children":3762},{"style":3511},[3763],{"type":3140,"value":3764},"      ban: 3600,      \u002F\u002F ban time in seconds, default is 3600 seconds = 1 hour\n",{"type":3135,"tag":3505,"props":3766,"children":3767},{"class":3507,"line":3124},[3768],{"type":3135,"tag":3505,"props":3769,"children":3770},{"style":3511},[3771],{"type":3140,"value":3772},"      \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":3135,"tag":3505,"props":3774,"children":3776},{"class":3507,"line":3775},9,[3777],{"type":3135,"tag":3505,"props":3778,"children":3779},{"style":3511},[3780],{"type":3140,"value":3781},"    },\n",{"type":3135,"tag":3505,"props":3783,"children":3785},{"class":3507,"line":3784},10,[3786],{"type":3135,"tag":3505,"props":3787,"children":3788},{"style":3511},[3789],{"type":3140,"value":3790},"    delayOnBan: true  \u002F\u002F delay every response with +1sec when the user is banned, default is true\n",{"type":3135,"tag":3505,"props":3792,"children":3794},{"class":3507,"line":3793},11,[3795],{"type":3135,"tag":3505,"props":3796,"children":3797},{"style":3511},[3798],{"type":3140,"value":3799},"    errorMessage: \"Too Many Requests\",  \u002F\u002F error message when the user is banned, default is \"Too Many Requests\"\n",{"type":3135,"tag":3505,"props":3801,"children":3803},{"class":3507,"line":3802},12,[3804],{"type":3135,"tag":3505,"props":3805,"children":3806},{"style":3511},[3807],{"type":3140,"value":3808},"    retryAfterHeader: false, \u002F\u002F when the user is banned add the Retry-After header to the response, default is false\n",{"type":3135,"tag":3505,"props":3810,"children":3812},{"class":3507,"line":3811},13,[3813],{"type":3135,"tag":3505,"props":3814,"children":3815},{"style":3511},[3816],{"type":3140,"value":3817},"    log: {\n",{"type":3135,"tag":3505,"props":3819,"children":3821},{"class":3507,"line":3820},14,[3822],{"type":3135,"tag":3505,"props":3823,"children":3824},{"style":3511},[3825],{"type":3140,"value":3826},"      path: \"\", \u002F\u002F path to the log file, every day a new log file will be created, use \"\" to disable logging\n",{"type":3135,"tag":3505,"props":3828,"children":3830},{"class":3507,"line":3829},15,[3831],{"type":3135,"tag":3505,"props":3832,"children":3833},{"style":3511},[3834],{"type":3140,"value":3835},"      attempts: 0,    \u002F\u002F if an IP reach 0 requests (disabled), 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":3135,"tag":3505,"props":3837,"children":3839},{"class":3507,"line":3838},16,[3840],{"type":3135,"tag":3505,"props":3841,"children":3842},{"style":3511},[3843],{"type":3140,"value":3844},"      fail2ban: false, \u002F\u002F enable fail2ban-compatible log format for ban events (see fail2ban section)\n",{"type":3135,"tag":3505,"props":3846,"children":3848},{"class":3507,"line":3847},17,[3849],{"type":3135,"tag":3505,"props":3850,"children":3851},{"style":3511},[3852],{"type":3140,"value":3781},{"type":3135,"tag":3505,"props":3854,"children":3856},{"class":3507,"line":3855},18,[3857],{"type":3135,"tag":3505,"props":3858,"children":3859},{"style":3511},[3860],{"type":3140,"value":3861},"    routes: [], \u002F\u002F specify routes to apply rate limiting to, default is an empty array meaning all routes are protected.\n",{"type":3135,"tag":3505,"props":3863,"children":3865},{"class":3507,"line":3864},19,[3866],{"type":3135,"tag":3505,"props":3867,"children":3868},{"style":3511},[3869],{"type":3140,"value":3870},"    \u002F\u002F Example:\n",{"type":3135,"tag":3505,"props":3872,"children":3874},{"class":3507,"line":3873},20,[3875,3880],{"type":3135,"tag":3505,"props":3876,"children":3877},{"style":3511},[3878],{"type":3140,"value":3879},"    \u002F\u002F routes: [\"\u002Fapi\u002Fv2\u002F\", \"\u002Fapi\u002Fv3\u002F\"],",{"type":3135,"tag":3505,"props":3881,"children":3882},{"style":3511},[3883],{"type":3140,"value":3884}," \u002F\u002F \u002Fapi\u002Fv1 will not be protected, \u002Fapi\u002Fv2\u002F and \u002Fapi\u002Fv3\u002F will be protected *\u002F\n",{"type":3135,"tag":3505,"props":3886,"children":3888},{"class":3507,"line":3887},21,[3889,3894,3898,3903,3908],{"type":3135,"tag":3505,"props":3890,"children":3891},{"style":3679},[3892],{"type":3140,"value":3893},"    skipRoutes",{"type":3135,"tag":3505,"props":3895,"children":3896},{"style":3670},[3897],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":3899,"children":3900},{"style":3664},[3901],{"type":3140,"value":3902}," []",{"type":3135,"tag":3505,"props":3904,"children":3905},{"style":3670},[3906],{"type":3140,"value":3907},",",{"type":3135,"tag":3505,"props":3909,"children":3910},{"style":3511},[3911],{"type":3140,"value":3912}," \u002F\u002F specify routes to skip\u002Fexempt from rate limiting, supports wildcard patterns (*\u002F**)\n",{"type":3135,"tag":3505,"props":3914,"children":3916},{"class":3507,"line":3915},22,[3917],{"type":3135,"tag":3505,"props":3918,"children":3919},{"style":3511},[3920],{"type":3140,"value":3870},{"type":3135,"tag":3505,"props":3922,"children":3924},{"class":3507,"line":3923},23,[3925],{"type":3135,"tag":3505,"props":3926,"children":3927},{"style":3511},[3928],{"type":3140,"value":3929},"    \u002F\u002F skipRoutes: [\"\u002Fapi\u002Fhealth\", \"\u002Fapi\u002F_nuxt\u002F**\", \"\u002Fapi\u002Fwebhooks\u002Fstripe\"],\n",{"type":3135,"tag":3505,"props":3931,"children":3933},{"class":3507,"line":3932},24,[3934,3939,3943,3949,3953],{"type":3135,"tag":3505,"props":3935,"children":3936},{"style":3679},[3937],{"type":3140,"value":3938},"    ipTTL",{"type":3135,"tag":3505,"props":3940,"children":3941},{"style":3670},[3942],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":3944,"children":3946},{"style":3945},"--shiki-light:#F76D47;--shiki-default:#F76D47;--shiki-dark:#F78C6C",[3947],{"type":3140,"value":3948}," 604800",{"type":3135,"tag":3505,"props":3950,"children":3951},{"style":3670},[3952],{"type":3140,"value":3907},{"type":3135,"tag":3505,"props":3954,"children":3955},{"style":3511},[3956],{"type":3140,"value":3957}," \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":3135,"tag":3505,"props":3959,"children":3961},{"class":3507,"line":3960},25,[3962,3967,3971],{"type":3135,"tag":3505,"props":3963,"children":3964},{"style":3679},[3965],{"type":3140,"value":3966},"    security",{"type":3135,"tag":3505,"props":3968,"children":3969},{"style":3670},[3970],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":3972,"children":3973},{"style":3670},[3974],{"type":3140,"value":3732},{"type":3135,"tag":3505,"props":3976,"children":3978},{"class":3507,"line":3977},26,[3979],{"type":3135,"tag":3505,"props":3980,"children":3981},{"style":3511},[3982],{"type":3140,"value":3983},"      \u002F\u002F Optional: Security-related configurations\n",{"type":3135,"tag":3505,"props":3985,"children":3987},{"class":3507,"line":3986},27,[3988,3993,3997,4003,4007],{"type":3135,"tag":3505,"props":3989,"children":3990},{"style":3679},[3991],{"type":3140,"value":3992},"      trustXForwardedFor",{"type":3135,"tag":3505,"props":3994,"children":3995},{"style":3670},[3996],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":3998,"children":4000},{"style":3999},"--shiki-light:#FF5370;--shiki-default:#FF5370;--shiki-dark:#FF9CAC",[4001],{"type":3140,"value":4002}," false",{"type":3135,"tag":3505,"props":4004,"children":4005},{"style":3670},[4006],{"type":3140,"value":3907},{"type":3135,"tag":3505,"props":4008,"children":4009},{"style":3511},[4010],{"type":3140,"value":4011}," \u002F\u002F Default: false. Whether to trust X-Forwarded-For headers. See warning below.\n",{"type":3135,"tag":3505,"props":4013,"children":4015},{"class":3507,"line":4014},28,[4016],{"type":3135,"tag":3505,"props":4017,"children":4018},{"style":3670},[4019],{"type":3140,"value":3781},{"type":3135,"tag":3505,"props":4021,"children":4023},{"class":3507,"line":4022},29,[4024],{"type":3135,"tag":3505,"props":4025,"children":4026},{"style":3670},[4027],{"type":3140,"value":4028},"  },\n",{"type":3135,"tag":3505,"props":4030,"children":4032},{"class":3507,"line":4031},30,[4033,4038,4043],{"type":3135,"tag":3505,"props":4034,"children":4035},{"style":3670},[4036],{"type":3140,"value":4037},"}",{"type":3135,"tag":3505,"props":4039,"children":4040},{"style":3664},[4041],{"type":3140,"value":4042},")",{"type":3135,"tag":3505,"props":4044,"children":4045},{"style":3670},[4046],{"type":3140,"value":4047},";\n",{"type":3135,"tag":3142,"props":4049,"children":4050},{},[4051,4056,4058,4064],{"type":3135,"tag":3230,"props":4052,"children":4053},{},[4054],{"type":3140,"value":4055},"Default Configuration Values:",{"type":3140,"value":4057},"\n(These are applied by the module if not specified in your ",{"type":3135,"tag":3292,"props":4059,"children":4061},{"className":4060},[],[4062],{"type":3140,"value":4063},"nuxtApiShield",{"type":3140,"value":4065}," config)",{"type":3135,"tag":3495,"props":4067,"children":4069},{"className":3635,"code":4068,"language":3637,"meta":3079,"style":3079},"{\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: \"\", \u002F\u002F Logging is disabled if path is empty\n    attempts: 0, \u002F\u002F Logging per IP is disabled if attempts is 0\n    fail2ban: false,\n  },\n  routes: [],\n  skipRoutes: [],\n  ipTTL: 7 * 24 * 60 * 60, \u002F\u002F 7 days in seconds\n  security: {\n    trustXForwardedFor: false,\n  }\n}\n",[4070],{"type":3135,"tag":3292,"props":4071,"children":4072},{"__ignoreMap":3079},[4073,4080,4096,4117,4143,4169,4176,4197,4227,4247,4263,4289,4315,4335,4342,4362,4382,4435,4451,4471,4479],{"type":3135,"tag":3505,"props":4074,"children":4075},{"class":3507,"line":3107},[4076],{"type":3135,"tag":3505,"props":4077,"children":4078},{"style":3670},[4079],{"type":3140,"value":3673},{"type":3135,"tag":3505,"props":4081,"children":4082},{"class":3507,"line":3103},[4083,4088,4092],{"type":3135,"tag":3505,"props":4084,"children":4085},{"style":3520},[4086],{"type":3140,"value":4087},"  limit",{"type":3135,"tag":3505,"props":4089,"children":4090},{"style":3670},[4091],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":4093,"children":4094},{"style":3670},[4095],{"type":3140,"value":3732},{"type":3135,"tag":3505,"props":4097,"children":4098},{"class":3507,"line":3537},[4099,4104,4108,4113],{"type":3135,"tag":3505,"props":4100,"children":4101},{"style":3520},[4102],{"type":3140,"value":4103},"    max",{"type":3135,"tag":3505,"props":4105,"children":4106},{"style":3670},[4107],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":4109,"children":4110},{"style":3945},[4111],{"type":3140,"value":4112}," 12",{"type":3135,"tag":3505,"props":4114,"children":4115},{"style":3670},[4116],{"type":3140,"value":3715},{"type":3135,"tag":3505,"props":4118,"children":4119},{"class":3507,"line":3546},[4120,4125,4129,4134,4138],{"type":3135,"tag":3505,"props":4121,"children":4122},{"style":3520},[4123],{"type":3140,"value":4124},"    duration",{"type":3135,"tag":3505,"props":4126,"children":4127},{"style":3670},[4128],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":4130,"children":4131},{"style":3945},[4132],{"type":3140,"value":4133}," 108",{"type":3135,"tag":3505,"props":4135,"children":4136},{"style":3670},[4137],{"type":3140,"value":3907},{"type":3135,"tag":3505,"props":4139,"children":4140},{"style":3511},[4141],{"type":3140,"value":4142}," \u002F\u002F seconds\n",{"type":3135,"tag":3505,"props":4144,"children":4145},{"class":3507,"line":3099},[4146,4151,4155,4160,4164],{"type":3135,"tag":3505,"props":4147,"children":4148},{"style":3520},[4149],{"type":3140,"value":4150},"    ban",{"type":3135,"tag":3505,"props":4152,"children":4153},{"style":3670},[4154],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":4156,"children":4157},{"style":3945},[4158],{"type":3140,"value":4159}," 3600",{"type":3135,"tag":3505,"props":4161,"children":4162},{"style":3670},[4163],{"type":3140,"value":3907},{"type":3135,"tag":3505,"props":4165,"children":4166},{"style":3511},[4167],{"type":3140,"value":4168},"     \u002F\u002F seconds\n",{"type":3135,"tag":3505,"props":4170,"children":4171},{"class":3507,"line":3571},[4172],{"type":3135,"tag":3505,"props":4173,"children":4174},{"style":3670},[4175],{"type":3140,"value":4028},{"type":3135,"tag":3505,"props":4177,"children":4178},{"class":3507,"line":3579},[4179,4184,4188,4193],{"type":3135,"tag":3505,"props":4180,"children":4181},{"style":3520},[4182],{"type":3140,"value":4183},"  delayOnBan",{"type":3135,"tag":3505,"props":4185,"children":4186},{"style":3670},[4187],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":4189,"children":4190},{"style":3999},[4191],{"type":3140,"value":4192}," true",{"type":3135,"tag":3505,"props":4194,"children":4195},{"style":3670},[4196],{"type":3140,"value":3715},{"type":3135,"tag":3505,"props":4198,"children":4199},{"class":3507,"line":3124},[4200,4205,4209,4214,4219,4223],{"type":3135,"tag":3505,"props":4201,"children":4202},{"style":3520},[4203],{"type":3140,"value":4204},"  errorMessage",{"type":3135,"tag":3505,"props":4206,"children":4207},{"style":3670},[4208],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":4210,"children":4211},{"style":3670},[4212],{"type":3140,"value":4213}," \"",{"type":3135,"tag":3505,"props":4215,"children":4216},{"style":3526},[4217],{"type":3140,"value":4218},"Too Many Requests",{"type":3135,"tag":3505,"props":4220,"children":4221},{"style":3670},[4222],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":4224,"children":4225},{"style":3670},[4226],{"type":3140,"value":3715},{"type":3135,"tag":3505,"props":4228,"children":4229},{"class":3507,"line":3775},[4230,4235,4239,4243],{"type":3135,"tag":3505,"props":4231,"children":4232},{"style":3520},[4233],{"type":3140,"value":4234},"  retryAfterHeader",{"type":3135,"tag":3505,"props":4236,"children":4237},{"style":3670},[4238],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":4240,"children":4241},{"style":3999},[4242],{"type":3140,"value":4002},{"type":3135,"tag":3505,"props":4244,"children":4245},{"style":3670},[4246],{"type":3140,"value":3715},{"type":3135,"tag":3505,"props":4248,"children":4249},{"class":3507,"line":3784},[4250,4255,4259],{"type":3135,"tag":3505,"props":4251,"children":4252},{"style":3520},[4253],{"type":3140,"value":4254},"  log",{"type":3135,"tag":3505,"props":4256,"children":4257},{"style":3670},[4258],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":4260,"children":4261},{"style":3670},[4262],{"type":3140,"value":3732},{"type":3135,"tag":3505,"props":4264,"children":4265},{"class":3507,"line":3793},[4266,4271,4275,4280,4284],{"type":3135,"tag":3505,"props":4267,"children":4268},{"style":3520},[4269],{"type":3140,"value":4270},"    path",{"type":3135,"tag":3505,"props":4272,"children":4273},{"style":3670},[4274],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":4276,"children":4277},{"style":3670},[4278],{"type":3140,"value":4279}," \"\"",{"type":3135,"tag":3505,"props":4281,"children":4282},{"style":3670},[4283],{"type":3140,"value":3907},{"type":3135,"tag":3505,"props":4285,"children":4286},{"style":3511},[4287],{"type":3140,"value":4288}," \u002F\u002F Logging is disabled if path is empty\n",{"type":3135,"tag":3505,"props":4290,"children":4291},{"class":3507,"line":3802},[4292,4297,4301,4306,4310],{"type":3135,"tag":3505,"props":4293,"children":4294},{"style":3520},[4295],{"type":3140,"value":4296},"    attempts",{"type":3135,"tag":3505,"props":4298,"children":4299},{"style":3670},[4300],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":4302,"children":4303},{"style":3945},[4304],{"type":3140,"value":4305}," 0",{"type":3135,"tag":3505,"props":4307,"children":4308},{"style":3670},[4309],{"type":3140,"value":3907},{"type":3135,"tag":3505,"props":4311,"children":4312},{"style":3511},[4313],{"type":3140,"value":4314}," \u002F\u002F Logging per IP is disabled if attempts is 0\n",{"type":3135,"tag":3505,"props":4316,"children":4317},{"class":3507,"line":3811},[4318,4323,4327,4331],{"type":3135,"tag":3505,"props":4319,"children":4320},{"style":3520},[4321],{"type":3140,"value":4322},"    fail2ban",{"type":3135,"tag":3505,"props":4324,"children":4325},{"style":3670},[4326],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":4328,"children":4329},{"style":3999},[4330],{"type":3140,"value":4002},{"type":3135,"tag":3505,"props":4332,"children":4333},{"style":3670},[4334],{"type":3140,"value":3715},{"type":3135,"tag":3505,"props":4336,"children":4337},{"class":3507,"line":3820},[4338],{"type":3135,"tag":3505,"props":4339,"children":4340},{"style":3670},[4341],{"type":3140,"value":4028},{"type":3135,"tag":3505,"props":4343,"children":4344},{"class":3507,"line":3829},[4345,4350,4354,4358],{"type":3135,"tag":3505,"props":4346,"children":4347},{"style":3520},[4348],{"type":3140,"value":4349},"  routes",{"type":3135,"tag":3505,"props":4351,"children":4352},{"style":3670},[4353],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":4355,"children":4356},{"style":3679},[4357],{"type":3140,"value":3902},{"type":3135,"tag":3505,"props":4359,"children":4360},{"style":3670},[4361],{"type":3140,"value":3715},{"type":3135,"tag":3505,"props":4363,"children":4364},{"class":3507,"line":3838},[4365,4370,4374,4378],{"type":3135,"tag":3505,"props":4366,"children":4367},{"style":3520},[4368],{"type":3140,"value":4369},"  skipRoutes",{"type":3135,"tag":3505,"props":4371,"children":4372},{"style":3670},[4373],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":4375,"children":4376},{"style":3679},[4377],{"type":3140,"value":3902},{"type":3135,"tag":3505,"props":4379,"children":4380},{"style":3670},[4381],{"type":3140,"value":3715},{"type":3135,"tag":3505,"props":4383,"children":4384},{"class":3507,"line":3847},[4385,4390,4394,4399,4404,4409,4413,4418,4422,4426,4430],{"type":3135,"tag":3505,"props":4386,"children":4387},{"style":3520},[4388],{"type":3140,"value":4389},"  ipTTL",{"type":3135,"tag":3505,"props":4391,"children":4392},{"style":3670},[4393],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":4395,"children":4396},{"style":3945},[4397],{"type":3140,"value":4398}," 7",{"type":3135,"tag":3505,"props":4400,"children":4401},{"style":3670},[4402],{"type":3140,"value":4403}," *",{"type":3135,"tag":3505,"props":4405,"children":4406},{"style":3945},[4407],{"type":3140,"value":4408}," 24",{"type":3135,"tag":3505,"props":4410,"children":4411},{"style":3670},[4412],{"type":3140,"value":4403},{"type":3135,"tag":3505,"props":4414,"children":4415},{"style":3945},[4416],{"type":3140,"value":4417}," 60",{"type":3135,"tag":3505,"props":4419,"children":4420},{"style":3670},[4421],{"type":3140,"value":4403},{"type":3135,"tag":3505,"props":4423,"children":4424},{"style":3945},[4425],{"type":3140,"value":4417},{"type":3135,"tag":3505,"props":4427,"children":4428},{"style":3670},[4429],{"type":3140,"value":3907},{"type":3135,"tag":3505,"props":4431,"children":4432},{"style":3511},[4433],{"type":3140,"value":4434}," \u002F\u002F 7 days in seconds\n",{"type":3135,"tag":3505,"props":4436,"children":4437},{"class":3507,"line":3855},[4438,4443,4447],{"type":3135,"tag":3505,"props":4439,"children":4440},{"style":3520},[4441],{"type":3140,"value":4442},"  security",{"type":3135,"tag":3505,"props":4444,"children":4445},{"style":3670},[4446],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":4448,"children":4449},{"style":3670},[4450],{"type":3140,"value":3732},{"type":3135,"tag":3505,"props":4452,"children":4453},{"class":3507,"line":3864},[4454,4459,4463,4467],{"type":3135,"tag":3505,"props":4455,"children":4456},{"style":3520},[4457],{"type":3140,"value":4458},"    trustXForwardedFor",{"type":3135,"tag":3505,"props":4460,"children":4461},{"style":3670},[4462],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":4464,"children":4465},{"style":3999},[4466],{"type":3140,"value":4002},{"type":3135,"tag":3505,"props":4468,"children":4469},{"style":3670},[4470],{"type":3140,"value":3715},{"type":3135,"tag":3505,"props":4472,"children":4473},{"class":3507,"line":3873},[4474],{"type":3135,"tag":3505,"props":4475,"children":4476},{"style":3670},[4477],{"type":3140,"value":4478},"  }\n",{"type":3135,"tag":3505,"props":4480,"children":4481},{"class":3507,"line":3887},[4482],{"type":3135,"tag":3505,"props":4483,"children":4484},{"style":3670},[4485],{"type":3140,"value":4486},"}\n",{"type":3135,"tag":3142,"props":4488,"children":4489},{},[4490],{"type":3135,"tag":3230,"props":4491,"children":4492},{},[4493,4495],{"type":3140,"value":4494},"Security Warning: ",{"type":3135,"tag":3292,"props":4496,"children":4498},{"className":4497},[],[4499],{"type":3140,"value":4500},"trustXForwardedFor",{"type":3135,"tag":3142,"props":4502,"children":4503},{},[4504,4506,4512,4514,4520,4522,4528],{"type":3140,"value":4505},"The ",{"type":3135,"tag":3292,"props":4507,"children":4509},{"className":4508},[],[4510],{"type":3140,"value":4511},"security.trustXForwardedFor",{"type":3140,"value":4513}," option (default is ",{"type":3135,"tag":3292,"props":4515,"children":4517},{"className":4516},[],[4518],{"type":3140,"value":4519},"false",{"type":3140,"value":4521},", set by the module) determines if the module uses the ",{"type":3135,"tag":3292,"props":4523,"children":4525},{"className":4524},[],[4526],{"type":3140,"value":4527},"X-Forwarded-For",{"type":3140,"value":4529}," HTTP header to identify the client's IP address.",{"type":3135,"tag":3192,"props":4531,"children":4532},{},[4533,4553,4591,4610],{"type":3135,"tag":3196,"props":4534,"children":4535},{},[4536,4538,4544,4546,4551],{"type":3140,"value":4537},"If set to ",{"type":3135,"tag":3292,"props":4539,"children":4541},{"className":4540},[],[4542],{"type":3140,"value":4543},"true",{"type":3140,"value":4545},": The module will use the IP address provided in the ",{"type":3135,"tag":3292,"props":4547,"children":4549},{"className":4548},[],[4550],{"type":3140,"value":4527},{"type":3140,"value":4552}," 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":3135,"tag":3196,"props":4554,"children":4555},{},[4556,4561,4563,4568,4570,4575,4577,4582,4584,4589],{"type":3135,"tag":3230,"props":4557,"children":4558},{},[4559],{"type":3140,"value":4560},"WARNING:",{"type":3140,"value":4562}," If ",{"type":3135,"tag":3292,"props":4564,"children":4566},{"className":4565},[],[4567],{"type":3140,"value":4500},{"type":3140,"value":4569}," is ",{"type":3135,"tag":3292,"props":4571,"children":4573},{"className":4572},[],[4574],{"type":3140,"value":4543},{"type":3140,"value":4576}," and your application is directly internet-facing OR your proxy is not configured to strip incoming ",{"type":3135,"tag":3292,"props":4578,"children":4580},{"className":4579},[],[4581],{"type":3140,"value":4527},{"type":3140,"value":4583}," headers from clients, malicious users can spoof their IP address by sending a fake ",{"type":3135,"tag":3292,"props":4585,"children":4587},{"className":4586},[],[4588],{"type":3140,"value":4527},{"type":3140,"value":4590}," header. This would allow them to bypass rate limits or cause other users to be incorrectly rate-limited.",{"type":3135,"tag":3196,"props":4592,"children":4593},{},[4594,4595,4600,4602,4608],{"type":3140,"value":4537},{"type":3135,"tag":3292,"props":4596,"children":4598},{"className":4597},[],[4599],{"type":3140,"value":4519},{"type":3140,"value":4601},": The module will use the direct IP address of the incoming connection (i.e., ",{"type":3135,"tag":3292,"props":4603,"children":4605},{"className":4604},[],[4606],{"type":3140,"value":4607},"event.node.req.socket.remoteAddress",{"type":3140,"value":4609},"). Use this setting if your application is directly internet-facing or if you are unsure about your proxy's configuration.",{"type":3135,"tag":3196,"props":4611,"children":4612},{},[4613,4618,4620,4626,4628,4633],{"type":3135,"tag":3230,"props":4614,"children":4615},{},[4616],{"type":3140,"value":4617},"Recommendation:",{"type":3140,"value":4619}," Only enable ",{"type":3135,"tag":3292,"props":4621,"children":4623},{"className":4622},[],[4624],{"type":3140,"value":4625},"trustXForwardedFor: true",{"type":3140,"value":4627}," 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":3135,"tag":3292,"props":4629,"children":4631},{"className":4630},[],[4632],{"type":3140,"value":4519},{"type":3140,"value":4634},".",{"type":3135,"tag":3481,"props":4636,"children":4638},{"id":4637},"_3-add-nitrostorage-to-nuxtconfigts",[4639,4641,4647,4649],{"type":3140,"value":4640},"3. Add ",{"type":3135,"tag":3292,"props":4642,"children":4644},{"className":4643},[],[4645],{"type":3140,"value":4646},"nitro\u002Fstorage",{"type":3140,"value":4648}," to ",{"type":3135,"tag":3292,"props":4650,"children":4652},{"className":4651},[],[4653],{"type":3140,"value":233},{"type":3135,"tag":3142,"props":4655,"children":4656},{},[4657,4659,4664],{"type":3140,"value":4658},"You can use any storage you want, but you have to use ",{"type":3135,"tag":3230,"props":4660,"children":4661},{},[4662],{"type":3140,"value":4663},"shield",{"type":3140,"value":4665}," as the name of the storage.",{"type":3135,"tag":3495,"props":4667,"children":4671},{"className":4668,"code":4669,"language":4670,"meta":3079,"style":3079},"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",[4672],{"type":3135,"tag":3292,"props":4673,"children":4674},{"__ignoreMap":3079},[4675,4682,4708,4733,4757,4765,4800,4808,4816,4823],{"type":3135,"tag":3505,"props":4676,"children":4677},{"class":3507,"line":3107},[4678],{"type":3135,"tag":3505,"props":4679,"children":4680},{"style":3670},[4681],{"type":3140,"value":3673},{"type":3135,"tag":3505,"props":4683,"children":4684},{"class":3507,"line":3103},[4685,4690,4696,4700,4704],{"type":3135,"tag":3505,"props":4686,"children":4687},{"style":3670},[4688],{"type":3140,"value":4689},"  \"",{"type":3135,"tag":3505,"props":4691,"children":4693},{"style":4692},"--shiki-light:#9C3EDA;--shiki-default:#9C3EDA;--shiki-dark:#C792EA",[4694],{"type":3140,"value":4695},"nitro",{"type":3135,"tag":3505,"props":4697,"children":4698},{"style":3670},[4699],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":4701,"children":4702},{"style":3670},[4703],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":4705,"children":4706},{"style":3670},[4707],{"type":3140,"value":3732},{"type":3135,"tag":3505,"props":4709,"children":4710},{"class":3507,"line":3537},[4711,4716,4721,4725,4729],{"type":3135,"tag":3505,"props":4712,"children":4713},{"style":3670},[4714],{"type":3140,"value":4715},"    \"",{"type":3135,"tag":3505,"props":4717,"children":4718},{"style":3520},[4719],{"type":3140,"value":4720},"storage",{"type":3135,"tag":3505,"props":4722,"children":4723},{"style":3670},[4724],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":4726,"children":4727},{"style":3670},[4728],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":4730,"children":4731},{"style":3670},[4732],{"type":3140,"value":3732},{"type":3135,"tag":3505,"props":4734,"children":4735},{"class":3507,"line":3546},[4736,4741,4745,4749,4753],{"type":3135,"tag":3505,"props":4737,"children":4738},{"style":3670},[4739],{"type":3140,"value":4740},"      \"",{"type":3135,"tag":3505,"props":4742,"children":4743},{"style":3945},[4744],{"type":3140,"value":4663},{"type":3135,"tag":3505,"props":4746,"children":4747},{"style":3670},[4748],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":4750,"children":4751},{"style":3670},[4752],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":4754,"children":4755},{"style":3670},[4756],{"type":3140,"value":3732},{"type":3135,"tag":3505,"props":4758,"children":4759},{"class":3507,"line":3099},[4760],{"type":3135,"tag":3505,"props":4761,"children":4762},{"style":3511},[4763],{"type":3140,"value":4764},"        \u002F\u002F storage name, you **must** use \"shield\" as the name\n",{"type":3135,"tag":3505,"props":4766,"children":4767},{"class":3507,"line":3571},[4768,4773,4778,4782,4786,4790,4795],{"type":3135,"tag":3505,"props":4769,"children":4770},{"style":3670},[4771],{"type":3140,"value":4772},"        \"",{"type":3135,"tag":3505,"props":4774,"children":4775},{"style":3679},[4776],{"type":3140,"value":4777},"driver",{"type":3135,"tag":3505,"props":4779,"children":4780},{"style":3670},[4781],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":4783,"children":4784},{"style":3670},[4785],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":4787,"children":4788},{"style":3670},[4789],{"type":3140,"value":4213},{"type":3135,"tag":3505,"props":4791,"children":4792},{"style":3526},[4793],{"type":3140,"value":4794},"memory",{"type":3135,"tag":3505,"props":4796,"children":4797},{"style":3670},[4798],{"type":3140,"value":4799},"\"\n",{"type":3135,"tag":3505,"props":4801,"children":4802},{"class":3507,"line":3579},[4803],{"type":3135,"tag":3505,"props":4804,"children":4805},{"style":3670},[4806],{"type":3140,"value":4807},"      }\n",{"type":3135,"tag":3505,"props":4809,"children":4810},{"class":3507,"line":3124},[4811],{"type":3135,"tag":3505,"props":4812,"children":4813},{"style":3670},[4814],{"type":3140,"value":4815},"    }\n",{"type":3135,"tag":3505,"props":4817,"children":4818},{"class":3507,"line":3775},[4819],{"type":3135,"tag":3505,"props":4820,"children":4821},{"style":3670},[4822],{"type":3140,"value":4478},{"type":3135,"tag":3505,"props":4824,"children":4825},{"class":3507,"line":3784},[4826],{"type":3135,"tag":3505,"props":4827,"children":4828},{"style":3670},[4829],{"type":3140,"value":4486},{"type":3135,"tag":3142,"props":4831,"children":4832},{},[4833],{"type":3140,"value":4834},"If you use for example redis, you can use the following configuration, define the host and port.",{"type":3135,"tag":3495,"props":4836,"children":4838},{"className":4668,"code":4837,"language":4670,"meta":3079,"style":3079},"{\n  \"nitro\": {\n    \"storage\": {\n      \"shield\": {\n        \"driver\": \"redis\",\n        \"host\": \"localhost\",\n        \"port\": 6379\n      }\n    }\n  }\n}\n",[4839],{"type":3135,"tag":3292,"props":4840,"children":4841},{"__ignoreMap":3079},[4842,4849,4872,4895,4918,4954,4991,5016,5023,5030,5037],{"type":3135,"tag":3505,"props":4843,"children":4844},{"class":3507,"line":3107},[4845],{"type":3135,"tag":3505,"props":4846,"children":4847},{"style":3670},[4848],{"type":3140,"value":3673},{"type":3135,"tag":3505,"props":4850,"children":4851},{"class":3507,"line":3103},[4852,4856,4860,4864,4868],{"type":3135,"tag":3505,"props":4853,"children":4854},{"style":3670},[4855],{"type":3140,"value":4689},{"type":3135,"tag":3505,"props":4857,"children":4858},{"style":4692},[4859],{"type":3140,"value":4695},{"type":3135,"tag":3505,"props":4861,"children":4862},{"style":3670},[4863],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":4865,"children":4866},{"style":3670},[4867],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":4869,"children":4870},{"style":3670},[4871],{"type":3140,"value":3732},{"type":3135,"tag":3505,"props":4873,"children":4874},{"class":3507,"line":3537},[4875,4879,4883,4887,4891],{"type":3135,"tag":3505,"props":4876,"children":4877},{"style":3670},[4878],{"type":3140,"value":4715},{"type":3135,"tag":3505,"props":4880,"children":4881},{"style":3520},[4882],{"type":3140,"value":4720},{"type":3135,"tag":3505,"props":4884,"children":4885},{"style":3670},[4886],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":4888,"children":4889},{"style":3670},[4890],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":4892,"children":4893},{"style":3670},[4894],{"type":3140,"value":3732},{"type":3135,"tag":3505,"props":4896,"children":4897},{"class":3507,"line":3546},[4898,4902,4906,4910,4914],{"type":3135,"tag":3505,"props":4899,"children":4900},{"style":3670},[4901],{"type":3140,"value":4740},{"type":3135,"tag":3505,"props":4903,"children":4904},{"style":3945},[4905],{"type":3140,"value":4663},{"type":3135,"tag":3505,"props":4907,"children":4908},{"style":3670},[4909],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":4911,"children":4912},{"style":3670},[4913],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":4915,"children":4916},{"style":3670},[4917],{"type":3140,"value":3732},{"type":3135,"tag":3505,"props":4919,"children":4920},{"class":3507,"line":3099},[4921,4925,4929,4933,4937,4941,4946,4950],{"type":3135,"tag":3505,"props":4922,"children":4923},{"style":3670},[4924],{"type":3140,"value":4772},{"type":3135,"tag":3505,"props":4926,"children":4927},{"style":3679},[4928],{"type":3140,"value":4777},{"type":3135,"tag":3505,"props":4930,"children":4931},{"style":3670},[4932],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":4934,"children":4935},{"style":3670},[4936],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":4938,"children":4939},{"style":3670},[4940],{"type":3140,"value":4213},{"type":3135,"tag":3505,"props":4942,"children":4943},{"style":3526},[4944],{"type":3140,"value":4945},"redis",{"type":3135,"tag":3505,"props":4947,"children":4948},{"style":3670},[4949],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":4951,"children":4952},{"style":3670},[4953],{"type":3140,"value":3715},{"type":3135,"tag":3505,"props":4955,"children":4956},{"class":3507,"line":3571},[4957,4961,4966,4970,4974,4978,4983,4987],{"type":3135,"tag":3505,"props":4958,"children":4959},{"style":3670},[4960],{"type":3140,"value":4772},{"type":3135,"tag":3505,"props":4962,"children":4963},{"style":3679},[4964],{"type":3140,"value":4965},"host",{"type":3135,"tag":3505,"props":4967,"children":4968},{"style":3670},[4969],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":4971,"children":4972},{"style":3670},[4973],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":4975,"children":4976},{"style":3670},[4977],{"type":3140,"value":4213},{"type":3135,"tag":3505,"props":4979,"children":4980},{"style":3526},[4981],{"type":3140,"value":4982},"localhost",{"type":3135,"tag":3505,"props":4984,"children":4985},{"style":3670},[4986],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":4988,"children":4989},{"style":3670},[4990],{"type":3140,"value":3715},{"type":3135,"tag":3505,"props":4992,"children":4993},{"class":3507,"line":3579},[4994,4998,5003,5007,5011],{"type":3135,"tag":3505,"props":4995,"children":4996},{"style":3670},[4997],{"type":3140,"value":4772},{"type":3135,"tag":3505,"props":4999,"children":5000},{"style":3679},[5001],{"type":3140,"value":5002},"port",{"type":3135,"tag":3505,"props":5004,"children":5005},{"style":3670},[5006],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":5008,"children":5009},{"style":3670},[5010],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":5012,"children":5013},{"style":3945},[5014],{"type":3140,"value":5015}," 6379\n",{"type":3135,"tag":3505,"props":5017,"children":5018},{"class":3507,"line":3124},[5019],{"type":3135,"tag":3505,"props":5020,"children":5021},{"style":3670},[5022],{"type":3140,"value":4807},{"type":3135,"tag":3505,"props":5024,"children":5025},{"class":3507,"line":3775},[5026],{"type":3135,"tag":3505,"props":5027,"children":5028},{"style":3670},[5029],{"type":3140,"value":4815},{"type":3135,"tag":3505,"props":5031,"children":5032},{"class":3507,"line":3784},[5033],{"type":3135,"tag":3505,"props":5034,"children":5035},{"style":3670},[5036],{"type":3140,"value":4478},{"type":3135,"tag":3505,"props":5038,"children":5039},{"class":3507,"line":3793},[5040],{"type":3135,"tag":3505,"props":5041,"children":5042},{"style":3670},[5043],{"type":3140,"value":4486},{"type":3135,"tag":3481,"props":5045,"children":5047},{"id":5046},"_4-schedule-bundled-cleanup-tasks-in-nuxtconfigts",[5048,5050],{"type":3140,"value":5049},"4. Schedule bundled cleanup tasks in ",{"type":3135,"tag":3292,"props":5051,"children":5053},{"className":5052},[],[5054],{"type":3140,"value":233},{"type":3135,"tag":3142,"props":5056,"children":5057},{},[5058,5060,5065,5067,5073,5075,5080,5082,5088,5090,5096,5098,5104,5106,5111,5113,5119],{"type":3140,"value":5059},"The module registers two Nitro tasks for you: ",{"type":3135,"tag":3292,"props":5061,"children":5063},{"className":5062},[],[5064],{"type":3140,"value":3389},{"type":3140,"value":5066}," (removes expired ",{"type":3135,"tag":3292,"props":5068,"children":5070},{"className":5069},[],[5071],{"type":3140,"value":5072},"ban:*",{"type":3140,"value":5074}," keys) and ",{"type":3135,"tag":3292,"props":5076,"children":5078},{"className":5077},[],[5079],{"type":3140,"value":3397},{"type":3140,"value":5081}," (removes stale ",{"type":3135,"tag":3292,"props":5083,"children":5085},{"className":5084},[],[5086],{"type":3140,"value":5087},"ip:*",{"type":3140,"value":5089}," keys using ",{"type":3135,"tag":3292,"props":5091,"children":5093},{"className":5092},[],[5094],{"type":3140,"value":5095},"ipTTL",{"type":3140,"value":5097},"). Turn on Nitro tasks and add ",{"type":3135,"tag":3292,"props":5099,"children":5101},{"className":5100},[],[5102],{"type":3140,"value":5103},"scheduledTasks",{"type":3140,"value":5105}," so they run on a cadence you choose. You do ",{"type":3135,"tag":3230,"props":5107,"children":5108},{},[5109],{"type":3140,"value":5110},"not",{"type":3140,"value":5112}," need files under ",{"type":3135,"tag":3292,"props":5114,"children":5116},{"className":5115},[],[5117],{"type":3140,"value":5118},"server\u002Ftasks\u002F",{"type":3140,"value":5120}," for this default setup.",{"type":3135,"tag":3495,"props":5122,"children":5124},{"className":4668,"code":5123,"language":4670,"meta":3079,"style":3079},"{\n  \"nitro\": {\n    \"experimental\": {\n      \"tasks\": true\n    },\n    \"scheduledTasks\": {\n      \"*\u002F15 * * * *\": [\"shield:cleanBans\"],\n      \"0 0 * * *\": [\"shield:cleanIpData\"]\n    }\n  }\n}\n",[5125],{"type":3135,"tag":3292,"props":5126,"children":5127},{"__ignoreMap":3079},[5128,5135,5158,5182,5207,5214,5237,5278,5319,5326,5333],{"type":3135,"tag":3505,"props":5129,"children":5130},{"class":3507,"line":3107},[5131],{"type":3135,"tag":3505,"props":5132,"children":5133},{"style":3670},[5134],{"type":3140,"value":3673},{"type":3135,"tag":3505,"props":5136,"children":5137},{"class":3507,"line":3103},[5138,5142,5146,5150,5154],{"type":3135,"tag":3505,"props":5139,"children":5140},{"style":3670},[5141],{"type":3140,"value":4689},{"type":3135,"tag":3505,"props":5143,"children":5144},{"style":4692},[5145],{"type":3140,"value":4695},{"type":3135,"tag":3505,"props":5147,"children":5148},{"style":3670},[5149],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":5151,"children":5152},{"style":3670},[5153],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":5155,"children":5156},{"style":3670},[5157],{"type":3140,"value":3732},{"type":3135,"tag":3505,"props":5159,"children":5160},{"class":3507,"line":3537},[5161,5165,5170,5174,5178],{"type":3135,"tag":3505,"props":5162,"children":5163},{"style":3670},[5164],{"type":3140,"value":4715},{"type":3135,"tag":3505,"props":5166,"children":5167},{"style":3520},[5168],{"type":3140,"value":5169},"experimental",{"type":3135,"tag":3505,"props":5171,"children":5172},{"style":3670},[5173],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":5175,"children":5176},{"style":3670},[5177],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":5179,"children":5180},{"style":3670},[5181],{"type":3140,"value":3732},{"type":3135,"tag":3505,"props":5183,"children":5184},{"class":3507,"line":3546},[5185,5189,5194,5198,5202],{"type":3135,"tag":3505,"props":5186,"children":5187},{"style":3670},[5188],{"type":3140,"value":4740},{"type":3135,"tag":3505,"props":5190,"children":5191},{"style":3945},[5192],{"type":3140,"value":5193},"tasks",{"type":3135,"tag":3505,"props":5195,"children":5196},{"style":3670},[5197],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":5199,"children":5200},{"style":3670},[5201],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":5203,"children":5204},{"style":3670},[5205],{"type":3140,"value":5206}," true\n",{"type":3135,"tag":3505,"props":5208,"children":5209},{"class":3507,"line":3099},[5210],{"type":3135,"tag":3505,"props":5211,"children":5212},{"style":3670},[5213],{"type":3140,"value":3781},{"type":3135,"tag":3505,"props":5215,"children":5216},{"class":3507,"line":3571},[5217,5221,5225,5229,5233],{"type":3135,"tag":3505,"props":5218,"children":5219},{"style":3670},[5220],{"type":3140,"value":4715},{"type":3135,"tag":3505,"props":5222,"children":5223},{"style":3520},[5224],{"type":3140,"value":5103},{"type":3135,"tag":3505,"props":5226,"children":5227},{"style":3670},[5228],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":5230,"children":5231},{"style":3670},[5232],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":5234,"children":5235},{"style":3670},[5236],{"type":3140,"value":3732},{"type":3135,"tag":3505,"props":5238,"children":5239},{"class":3507,"line":3579},[5240,5244,5249,5253,5257,5261,5265,5269,5273],{"type":3135,"tag":3505,"props":5241,"children":5242},{"style":3670},[5243],{"type":3140,"value":4740},{"type":3135,"tag":3505,"props":5245,"children":5246},{"style":3945},[5247],{"type":3140,"value":5248},"*\u002F15 * * * *",{"type":3135,"tag":3505,"props":5250,"children":5251},{"style":3670},[5252],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":5254,"children":5255},{"style":3670},[5256],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":5258,"children":5259},{"style":3670},[5260],{"type":3140,"value":3692},{"type":3135,"tag":3505,"props":5262,"children":5263},{"style":3670},[5264],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":5266,"children":5267},{"style":3526},[5268],{"type":3140,"value":3389},{"type":3135,"tag":3505,"props":5270,"children":5271},{"style":3670},[5272],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":5274,"children":5275},{"style":3670},[5276],{"type":3140,"value":5277},"],\n",{"type":3135,"tag":3505,"props":5279,"children":5280},{"class":3507,"line":3124},[5281,5285,5290,5294,5298,5302,5306,5310,5314],{"type":3135,"tag":3505,"props":5282,"children":5283},{"style":3670},[5284],{"type":3140,"value":4740},{"type":3135,"tag":3505,"props":5286,"children":5287},{"style":3945},[5288],{"type":3140,"value":5289},"0 0 * * *",{"type":3135,"tag":3505,"props":5291,"children":5292},{"style":3670},[5293],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":5295,"children":5296},{"style":3670},[5297],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":5299,"children":5300},{"style":3670},[5301],{"type":3140,"value":3692},{"type":3135,"tag":3505,"props":5303,"children":5304},{"style":3670},[5305],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":5307,"children":5308},{"style":3526},[5309],{"type":3140,"value":3397},{"type":3135,"tag":3505,"props":5311,"children":5312},{"style":3670},[5313],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":5315,"children":5316},{"style":3670},[5317],{"type":3140,"value":5318},"]\n",{"type":3135,"tag":3505,"props":5320,"children":5321},{"class":3507,"line":3775},[5322],{"type":3135,"tag":3505,"props":5323,"children":5324},{"style":3670},[5325],{"type":3140,"value":4815},{"type":3135,"tag":3505,"props":5327,"children":5328},{"class":3507,"line":3784},[5329],{"type":3135,"tag":3505,"props":5330,"children":5331},{"style":3670},[5332],{"type":3140,"value":4478},{"type":3135,"tag":3505,"props":5334,"children":5335},{"class":3507,"line":3793},[5336],{"type":3135,"tag":3505,"props":5337,"children":5338},{"style":3670},[5339],{"type":3140,"value":4486},{"type":3135,"tag":3142,"props":5341,"children":5342},{},[5343],{"type":3140,"value":5344},"Cron expressions are examples only: for instance, clean expired bans every 15 minutes and IP tracking data daily at midnight.",{"type":3135,"tag":3481,"props":5346,"children":5348},{"id":5347},"_5-optional-custom-cleanup-task-implementations",[5349],{"type":3140,"value":5350},"5. Optional: custom cleanup task implementations",{"type":3135,"tag":3142,"props":5352,"children":5353},{},[5354,5356,5361,5363,5368],{"type":3140,"value":5355},"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":3135,"tag":3230,"props":5357,"children":5358},{},[5359],{"type":3140,"value":5360},"another",{"type":3140,"value":5362}," task name and point ",{"type":3135,"tag":3292,"props":5364,"children":5366},{"className":5365},[],[5367],{"type":3140,"value":5103},{"type":3140,"value":5369}," at that name instead.",{"type":3135,"tag":5371,"props":5372,"children":5374},"h4",{"id":5373},"a-task-for-cleaning-expired-bans",[5375],{"type":3140,"value":5376},"a) Task for cleaning expired bans",{"type":3135,"tag":3142,"props":5378,"children":5379},{},[5380,5382,5388],{"type":3140,"value":5381},"Removes ban entries (",{"type":3135,"tag":3292,"props":5383,"children":5385},{"className":5384},[],[5386],{"type":3140,"value":5387},"ban:xxx.xxx.xxx.xxx",{"type":3140,"value":5389},") after the ban timestamp has passed.",{"type":3135,"tag":3142,"props":5391,"children":5392},{},[5393,5395,5401],{"type":3140,"value":5394},"Example ",{"type":3135,"tag":3292,"props":5396,"children":5398},{"className":5397},[],[5399],{"type":3140,"value":5400},"server\u002Ftasks\u002Fshield\u002FcleanBans.ts",{"type":3140,"value":5402}," (task name must match what you schedule):",{"type":3135,"tag":3495,"props":5404,"children":5408},{"className":5405,"code":5406,"language":5407,"meta":3079,"style":3079},"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",[5409],{"type":3135,"tag":3292,"props":5410,"children":5411},{"__ignoreMap":3079},[5412,5463,5470,5494,5510,5543,5572,5579,5601,5653,5660,5668,5727,5734,5759,5800,5851,5886,5923,5936,5943,5950,6012,6050,6057],{"type":3135,"tag":3505,"props":5413,"children":5414},{"class":3507,"line":3107},[5415,5420,5425,5430,5435,5440,5444,5449,5453,5458],{"type":3135,"tag":3505,"props":5416,"children":5417},{"style":3647},[5418],{"type":3140,"value":5419},"import",{"type":3135,"tag":3505,"props":5421,"children":5422},{"style":3670},[5423],{"type":3140,"value":5424}," {",{"type":3135,"tag":3505,"props":5426,"children":5427},{"style":3664},[5428],{"type":3140,"value":5429}," isActualBanTimestampExpired",{"type":3135,"tag":3505,"props":5431,"children":5432},{"style":3670},[5433],{"type":3140,"value":5434}," }",{"type":3135,"tag":3505,"props":5436,"children":5437},{"style":3647},[5438],{"type":3140,"value":5439}," from",{"type":3135,"tag":3505,"props":5441,"children":5442},{"style":3670},[5443],{"type":3140,"value":4213},{"type":3135,"tag":3505,"props":5445,"children":5446},{"style":3526},[5447],{"type":3140,"value":5448},"#imports",{"type":3135,"tag":3505,"props":5450,"children":5451},{"style":3670},[5452],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":5454,"children":5455},{"style":3670},[5456],{"type":3140,"value":5457},";",{"type":3135,"tag":3505,"props":5459,"children":5460},{"style":3511},[5461],{"type":3140,"value":5462}," \u002F\u002F Auto-imported utility from nuxt-api-shield\n",{"type":3135,"tag":3505,"props":5464,"children":5465},{"class":3507,"line":3103},[5466],{"type":3135,"tag":3505,"props":5467,"children":5468},{"emptyLinePlaceholder":1208},[5469],{"type":3140,"value":3543},{"type":3135,"tag":3505,"props":5471,"children":5472},{"class":3507,"line":3537},[5473,5477,5481,5486,5490],{"type":3135,"tag":3505,"props":5474,"children":5475},{"style":3647},[5476],{"type":3140,"value":3650},{"type":3135,"tag":3505,"props":5478,"children":5479},{"style":3647},[5480],{"type":3140,"value":3655},{"type":3135,"tag":3505,"props":5482,"children":5483},{"style":3658},[5484],{"type":3140,"value":5485}," defineTask",{"type":3135,"tag":3505,"props":5487,"children":5488},{"style":3664},[5489],{"type":3140,"value":3667},{"type":3135,"tag":3505,"props":5491,"children":5492},{"style":3670},[5493],{"type":3140,"value":3673},{"type":3135,"tag":3505,"props":5495,"children":5496},{"class":3507,"line":3546},[5497,5502,5506],{"type":3135,"tag":3505,"props":5498,"children":5499},{"style":3679},[5500],{"type":3140,"value":5501},"  meta",{"type":3135,"tag":3505,"props":5503,"children":5504},{"style":3670},[5505],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":5507,"children":5508},{"style":3670},[5509],{"type":3140,"value":3732},{"type":3135,"tag":3505,"props":5511,"children":5512},{"class":3507,"line":3099},[5513,5518,5522,5526,5530,5534,5538],{"type":3135,"tag":3505,"props":5514,"children":5515},{"style":3679},[5516],{"type":3140,"value":5517},"    name",{"type":3135,"tag":3505,"props":5519,"children":5520},{"style":3670},[5521],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":5523,"children":5524},{"style":3670},[5525],{"type":3140,"value":4213},{"type":3135,"tag":3505,"props":5527,"children":5528},{"style":3526},[5529],{"type":3140,"value":3389},{"type":3135,"tag":3505,"props":5531,"children":5532},{"style":3670},[5533],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":5535,"children":5536},{"style":3670},[5537],{"type":3140,"value":3907},{"type":3135,"tag":3505,"props":5539,"children":5540},{"style":3511},[5541],{"type":3140,"value":5542}," \u002F\u002F Match the name in scheduledTasks\n",{"type":3135,"tag":3505,"props":5544,"children":5545},{"class":3507,"line":3571},[5546,5551,5555,5559,5564,5568],{"type":3135,"tag":3505,"props":5547,"children":5548},{"style":3679},[5549],{"type":3140,"value":5550},"    description",{"type":3135,"tag":3505,"props":5552,"children":5553},{"style":3670},[5554],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":5556,"children":5557},{"style":3670},[5558],{"type":3140,"value":4213},{"type":3135,"tag":3505,"props":5560,"children":5561},{"style":3526},[5562],{"type":3140,"value":5563},"Clean expired bans from nuxt-api-shield storage.",{"type":3135,"tag":3505,"props":5565,"children":5566},{"style":3670},[5567],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":5569,"children":5570},{"style":3670},[5571],{"type":3140,"value":3715},{"type":3135,"tag":3505,"props":5573,"children":5574},{"class":3507,"line":3579},[5575],{"type":3135,"tag":3505,"props":5576,"children":5577},{"style":3670},[5578],{"type":3140,"value":4028},{"type":3135,"tag":3505,"props":5580,"children":5581},{"class":3507,"line":3124},[5582,5587,5592,5597],{"type":3135,"tag":3505,"props":5583,"children":5584},{"style":4692},[5585],{"type":3140,"value":5586},"  async",{"type":3135,"tag":3505,"props":5588,"children":5589},{"style":3679},[5590],{"type":3140,"value":5591}," run",{"type":3135,"tag":3505,"props":5593,"children":5594},{"style":3670},[5595],{"type":3140,"value":5596},"()",{"type":3135,"tag":3505,"props":5598,"children":5599},{"style":3670},[5600],{"type":3140,"value":3732},{"type":3135,"tag":3505,"props":5602,"children":5603},{"class":3507,"line":3775},[5604,5609,5614,5619,5624,5628,5632,5636,5640,5644,5648],{"type":3135,"tag":3505,"props":5605,"children":5606},{"style":4692},[5607],{"type":3140,"value":5608},"    const",{"type":3135,"tag":3505,"props":5610,"children":5611},{"style":3664},[5612],{"type":3140,"value":5613}," shieldStorage",{"type":3135,"tag":3505,"props":5615,"children":5616},{"style":3670},[5617],{"type":3140,"value":5618}," =",{"type":3135,"tag":3505,"props":5620,"children":5621},{"style":3658},[5622],{"type":3140,"value":5623}," useStorage",{"type":3135,"tag":3505,"props":5625,"children":5626},{"style":3679},[5627],{"type":3140,"value":3667},{"type":3135,"tag":3505,"props":5629,"children":5630},{"style":3670},[5631],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":5633,"children":5634},{"style":3526},[5635],{"type":3140,"value":4663},{"type":3135,"tag":3505,"props":5637,"children":5638},{"style":3670},[5639],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":5641,"children":5642},{"style":3679},[5643],{"type":3140,"value":4042},{"type":3135,"tag":3505,"props":5645,"children":5646},{"style":3670},[5647],{"type":3140,"value":5457},{"type":3135,"tag":3505,"props":5649,"children":5650},{"style":3511},[5651],{"type":3140,"value":5652}," \u002F\u002F Use your configured storage name\n",{"type":3135,"tag":3505,"props":5654,"children":5655},{"class":3507,"line":3784},[5656],{"type":3135,"tag":3505,"props":5657,"children":5658},{"emptyLinePlaceholder":1208},[5659],{"type":3140,"value":3543},{"type":3135,"tag":3505,"props":5661,"children":5662},{"class":3507,"line":3793},[5663],{"type":3135,"tag":3505,"props":5664,"children":5665},{"style":3511},[5666],{"type":3140,"value":5667},"    \u002F\u002F Only fetch keys that start with the 'ban:' prefix\n",{"type":3135,"tag":3505,"props":5669,"children":5670},{"class":3507,"line":3802},[5671,5675,5680,5684,5689,5693,5697,5702,5706,5710,5715,5719,5723],{"type":3135,"tag":3505,"props":5672,"children":5673},{"style":4692},[5674],{"type":3140,"value":5608},{"type":3135,"tag":3505,"props":5676,"children":5677},{"style":3664},[5678],{"type":3140,"value":5679}," banKeys",{"type":3135,"tag":3505,"props":5681,"children":5682},{"style":3670},[5683],{"type":3140,"value":5618},{"type":3135,"tag":3505,"props":5685,"children":5686},{"style":3647},[5687],{"type":3140,"value":5688}," await",{"type":3135,"tag":3505,"props":5690,"children":5691},{"style":3664},[5692],{"type":3140,"value":5613},{"type":3135,"tag":3505,"props":5694,"children":5695},{"style":3670},[5696],{"type":3140,"value":4634},{"type":3135,"tag":3505,"props":5698,"children":5699},{"style":3658},[5700],{"type":3140,"value":5701},"getKeys",{"type":3135,"tag":3505,"props":5703,"children":5704},{"style":3679},[5705],{"type":3140,"value":3667},{"type":3135,"tag":3505,"props":5707,"children":5708},{"style":3670},[5709],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":5711,"children":5712},{"style":3526},[5713],{"type":3140,"value":5714},"ban:",{"type":3135,"tag":3505,"props":5716,"children":5717},{"style":3670},[5718],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":5720,"children":5721},{"style":3679},[5722],{"type":3140,"value":4042},{"type":3135,"tag":3505,"props":5724,"children":5725},{"style":3670},[5726],{"type":3140,"value":4047},{"type":3135,"tag":3505,"props":5728,"children":5729},{"class":3507,"line":3811},[5730],{"type":3135,"tag":3505,"props":5731,"children":5732},{"emptyLinePlaceholder":1208},[5733],{"type":3140,"value":3543},{"type":3135,"tag":3505,"props":5735,"children":5736},{"class":3507,"line":3820},[5737,5742,5747,5751,5755],{"type":3135,"tag":3505,"props":5738,"children":5739},{"style":4692},[5740],{"type":3140,"value":5741},"    let",{"type":3135,"tag":3505,"props":5743,"children":5744},{"style":3664},[5745],{"type":3140,"value":5746}," cleanedCount",{"type":3135,"tag":3505,"props":5748,"children":5749},{"style":3670},[5750],{"type":3140,"value":5618},{"type":3135,"tag":3505,"props":5752,"children":5753},{"style":3945},[5754],{"type":3140,"value":4305},{"type":3135,"tag":3505,"props":5756,"children":5757},{"style":3670},[5758],{"type":3140,"value":4047},{"type":3135,"tag":3505,"props":5760,"children":5761},{"class":3507,"line":3829},[5762,5767,5772,5777,5782,5787,5791,5796],{"type":3135,"tag":3505,"props":5763,"children":5764},{"style":3647},[5765],{"type":3140,"value":5766},"    for",{"type":3135,"tag":3505,"props":5768,"children":5769},{"style":3679},[5770],{"type":3140,"value":5771}," (",{"type":3135,"tag":3505,"props":5773,"children":5774},{"style":4692},[5775],{"type":3140,"value":5776},"const",{"type":3135,"tag":3505,"props":5778,"children":5779},{"style":3664},[5780],{"type":3140,"value":5781}," key",{"type":3135,"tag":3505,"props":5783,"children":5784},{"style":3670},[5785],{"type":3140,"value":5786}," of",{"type":3135,"tag":3505,"props":5788,"children":5789},{"style":3664},[5790],{"type":3140,"value":5679},{"type":3135,"tag":3505,"props":5792,"children":5793},{"style":3679},[5794],{"type":3140,"value":5795},") ",{"type":3135,"tag":3505,"props":5797,"children":5798},{"style":3670},[5799],{"type":3140,"value":3673},{"type":3135,"tag":3505,"props":5801,"children":5802},{"class":3507,"line":3838},[5803,5808,5813,5817,5821,5825,5829,5834,5838,5843,5847],{"type":3135,"tag":3505,"props":5804,"children":5805},{"style":4692},[5806],{"type":3140,"value":5807},"      const",{"type":3135,"tag":3505,"props":5809,"children":5810},{"style":3664},[5811],{"type":3140,"value":5812}," bannedUntilRaw",{"type":3135,"tag":3505,"props":5814,"children":5815},{"style":3670},[5816],{"type":3140,"value":5618},{"type":3135,"tag":3505,"props":5818,"children":5819},{"style":3647},[5820],{"type":3140,"value":5688},{"type":3135,"tag":3505,"props":5822,"children":5823},{"style":3664},[5824],{"type":3140,"value":5613},{"type":3135,"tag":3505,"props":5826,"children":5827},{"style":3670},[5828],{"type":3140,"value":4634},{"type":3135,"tag":3505,"props":5830,"children":5831},{"style":3658},[5832],{"type":3140,"value":5833},"getItem",{"type":3135,"tag":3505,"props":5835,"children":5836},{"style":3679},[5837],{"type":3140,"value":3667},{"type":3135,"tag":3505,"props":5839,"children":5840},{"style":3664},[5841],{"type":3140,"value":5842},"key",{"type":3135,"tag":3505,"props":5844,"children":5845},{"style":3679},[5846],{"type":3140,"value":4042},{"type":3135,"tag":3505,"props":5848,"children":5849},{"style":3670},[5850],{"type":3140,"value":4047},{"type":3135,"tag":3505,"props":5852,"children":5853},{"class":3507,"line":3847},[5854,5859,5863,5868,5872,5877,5882],{"type":3135,"tag":3505,"props":5855,"children":5856},{"style":3647},[5857],{"type":3140,"value":5858},"      if",{"type":3135,"tag":3505,"props":5860,"children":5861},{"style":3679},[5862],{"type":3140,"value":5771},{"type":3135,"tag":3505,"props":5864,"children":5865},{"style":3658},[5866],{"type":3140,"value":5867},"isActualBanTimestampExpired",{"type":3135,"tag":3505,"props":5869,"children":5870},{"style":3679},[5871],{"type":3140,"value":3667},{"type":3135,"tag":3505,"props":5873,"children":5874},{"style":3664},[5875],{"type":3140,"value":5876},"bannedUntilRaw",{"type":3135,"tag":3505,"props":5878,"children":5879},{"style":3679},[5880],{"type":3140,"value":5881},")) ",{"type":3135,"tag":3505,"props":5883,"children":5884},{"style":3670},[5885],{"type":3140,"value":3673},{"type":3135,"tag":3505,"props":5887,"children":5888},{"class":3507,"line":3855},[5889,5894,5898,5902,5907,5911,5915,5919],{"type":3135,"tag":3505,"props":5890,"children":5891},{"style":3647},[5892],{"type":3140,"value":5893},"        await",{"type":3135,"tag":3505,"props":5895,"children":5896},{"style":3664},[5897],{"type":3140,"value":5613},{"type":3135,"tag":3505,"props":5899,"children":5900},{"style":3670},[5901],{"type":3140,"value":4634},{"type":3135,"tag":3505,"props":5903,"children":5904},{"style":3658},[5905],{"type":3140,"value":5906},"removeItem",{"type":3135,"tag":3505,"props":5908,"children":5909},{"style":3679},[5910],{"type":3140,"value":3667},{"type":3135,"tag":3505,"props":5912,"children":5913},{"style":3664},[5914],{"type":3140,"value":5842},{"type":3135,"tag":3505,"props":5916,"children":5917},{"style":3679},[5918],{"type":3140,"value":4042},{"type":3135,"tag":3505,"props":5920,"children":5921},{"style":3670},[5922],{"type":3140,"value":4047},{"type":3135,"tag":3505,"props":5924,"children":5925},{"class":3507,"line":3864},[5926,5931],{"type":3135,"tag":3505,"props":5927,"children":5928},{"style":3664},[5929],{"type":3140,"value":5930},"        cleanedCount",{"type":3135,"tag":3505,"props":5932,"children":5933},{"style":3670},[5934],{"type":3140,"value":5935},"++;\n",{"type":3135,"tag":3505,"props":5937,"children":5938},{"class":3507,"line":3873},[5939],{"type":3135,"tag":3505,"props":5940,"children":5941},{"style":3670},[5942],{"type":3140,"value":4807},{"type":3135,"tag":3505,"props":5944,"children":5945},{"class":3507,"line":3887},[5946],{"type":3135,"tag":3505,"props":5947,"children":5948},{"style":3670},[5949],{"type":3140,"value":4815},{"type":3135,"tag":3505,"props":5951,"children":5952},{"class":3507,"line":3915},[5953,5958,5962,5967,5971,5976,5981,5986,5991,5995,6000,6004,6008],{"type":3135,"tag":3505,"props":5954,"children":5955},{"style":3664},[5956],{"type":3140,"value":5957},"    console",{"type":3135,"tag":3505,"props":5959,"children":5960},{"style":3670},[5961],{"type":3140,"value":4634},{"type":3135,"tag":3505,"props":5963,"children":5964},{"style":3658},[5965],{"type":3140,"value":5966},"log",{"type":3135,"tag":3505,"props":5968,"children":5969},{"style":3679},[5970],{"type":3140,"value":3667},{"type":3135,"tag":3505,"props":5972,"children":5973},{"style":3670},[5974],{"type":3140,"value":5975},"`",{"type":3135,"tag":3505,"props":5977,"children":5978},{"style":3526},[5979],{"type":3140,"value":5980},"[nuxt-api-shield] Cleaned ",{"type":3135,"tag":3505,"props":5982,"children":5983},{"style":3670},[5984],{"type":3140,"value":5985},"${",{"type":3135,"tag":3505,"props":5987,"children":5988},{"style":3664},[5989],{"type":3140,"value":5990},"cleanedCount",{"type":3135,"tag":3505,"props":5992,"children":5993},{"style":3670},[5994],{"type":3140,"value":4037},{"type":3135,"tag":3505,"props":5996,"children":5997},{"style":3526},[5998],{"type":3140,"value":5999}," expired ban(s).",{"type":3135,"tag":3505,"props":6001,"children":6002},{"style":3670},[6003],{"type":3140,"value":5975},{"type":3135,"tag":3505,"props":6005,"children":6006},{"style":3679},[6007],{"type":3140,"value":4042},{"type":3135,"tag":3505,"props":6009,"children":6010},{"style":3670},[6011],{"type":3140,"value":4047},{"type":3135,"tag":3505,"props":6013,"children":6014},{"class":3507,"line":3923},[6015,6020,6024,6029,6033,6037,6041,6045],{"type":3135,"tag":3505,"props":6016,"children":6017},{"style":3647},[6018],{"type":3140,"value":6019},"    return",{"type":3135,"tag":3505,"props":6021,"children":6022},{"style":3670},[6023],{"type":3140,"value":5424},{"type":3135,"tag":3505,"props":6025,"children":6026},{"style":3679},[6027],{"type":3140,"value":6028}," result",{"type":3135,"tag":3505,"props":6030,"children":6031},{"style":3670},[6032],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":6034,"children":6035},{"style":3670},[6036],{"type":3140,"value":5424},{"type":3135,"tag":3505,"props":6038,"children":6039},{"style":3664},[6040],{"type":3140,"value":5746},{"type":3135,"tag":3505,"props":6042,"children":6043},{"style":3670},[6044],{"type":3140,"value":5434},{"type":3135,"tag":3505,"props":6046,"children":6047},{"style":3670},[6048],{"type":3140,"value":6049}," };\n",{"type":3135,"tag":3505,"props":6051,"children":6052},{"class":3507,"line":3932},[6053],{"type":3135,"tag":3505,"props":6054,"children":6055},{"style":3670},[6056],{"type":3140,"value":4028},{"type":3135,"tag":3505,"props":6058,"children":6059},{"class":3507,"line":3960},[6060,6064,6068],{"type":3135,"tag":3505,"props":6061,"children":6062},{"style":3670},[6063],{"type":3140,"value":4037},{"type":3135,"tag":3505,"props":6065,"children":6066},{"style":3664},[6067],{"type":3140,"value":4042},{"type":3135,"tag":3505,"props":6069,"children":6070},{"style":3670},[6071],{"type":3140,"value":4047},{"type":3135,"tag":3142,"props":6073,"children":6074},{},[6075,6076,6081,6083,6088,6090,6095],{"type":3140,"value":4505},{"type":3135,"tag":3292,"props":6077,"children":6079},{"className":6078},[],[6080],{"type":3140,"value":5867},{"type":3140,"value":6082}," utility is provided by ",{"type":3135,"tag":3292,"props":6084,"children":6086},{"className":6085},[],[6087],{"type":3140,"value":3076},{"type":3140,"value":6089}," and should be available via ",{"type":3135,"tag":3292,"props":6091,"children":6093},{"className":6092},[],[6094],{"type":3140,"value":5448},{"type":3140,"value":4634},{"type":3135,"tag":5371,"props":6097,"children":6099},{"id":6098},"b-task-for-cleaning-old-ip-tracking-data",[6100],{"type":3140,"value":6101},"b) Task for cleaning old IP tracking data",{"type":3135,"tag":3142,"props":6103,"children":6104},{},[6105,6107,6113,6115,6121,6123,6129],{"type":3140,"value":6106},"Cleans IP tracking entries (",{"type":3135,"tag":3292,"props":6108,"children":6110},{"className":6109},[],[6111],{"type":3140,"value":6112},"ip:xxx.xxx.xxx.xxx",{"type":3140,"value":6114},") whose ",{"type":3135,"tag":3292,"props":6116,"children":6118},{"className":6117},[],[6119],{"type":3140,"value":6120},"time",{"type":3140,"value":6122}," is older than ",{"type":3135,"tag":3292,"props":6124,"children":6126},{"className":6125},[],[6127],{"type":3140,"value":6128},"nuxtApiShield.ipTTL",{"type":3140,"value":6130}," (default 7 days), and drops malformed entries. That keeps storage from growing with one-off IPs that were never banned.",{"type":3135,"tag":3142,"props":6132,"children":6133},{},[6134,6135,6141],{"type":3140,"value":5394},{"type":3135,"tag":3292,"props":6136,"children":6138},{"className":6137},[],[6139],{"type":3140,"value":6140},"server\u002Ftasks\u002Fshield\u002FcleanIpData.ts",{"type":3140,"value":3687},{"type":3135,"tag":3495,"props":6143,"children":6145},{"className":5405,"code":6144,"language":5407,"meta":3079,"style":3079},"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",[6146],{"type":3135,"tag":3292,"props":6147,"children":6148},{"__ignoreMap":3079},[6149,6194,6234,6241,6264,6279,6310,6338,6345,6364,6407,6451,6458,6466,6498,6505,6553,6574,6590,6602,6669,6676,6709,6716,6773,6811,6834,6841,6876,6948,6955,6964,7029,7081,7118,7131,7140,7158,7167,7203,7215,7223,7231,7239,7259,7294,7307,7343,7351],{"type":3135,"tag":3505,"props":6150,"children":6151},{"class":3507,"line":3107},[6152,6156,6161,6165,6170,6174,6178,6182,6186,6190],{"type":3135,"tag":3505,"props":6153,"children":6154},{"style":3647},[6155],{"type":3140,"value":5419},{"type":3135,"tag":3505,"props":6157,"children":6158},{"style":3647},[6159],{"type":3140,"value":6160}," type",{"type":3135,"tag":3505,"props":6162,"children":6163},{"style":3670},[6164],{"type":3140,"value":5424},{"type":3135,"tag":3505,"props":6166,"children":6167},{"style":3664},[6168],{"type":3140,"value":6169}," RateLimit",{"type":3135,"tag":3505,"props":6171,"children":6172},{"style":3670},[6173],{"type":3140,"value":5434},{"type":3135,"tag":3505,"props":6175,"children":6176},{"style":3647},[6177],{"type":3140,"value":5439},{"type":3135,"tag":3505,"props":6179,"children":6180},{"style":3670},[6181],{"type":3140,"value":4213},{"type":3135,"tag":3505,"props":6183,"children":6184},{"style":3526},[6185],{"type":3140,"value":3076},{"type":3135,"tag":3505,"props":6187,"children":6188},{"style":3670},[6189],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":6191,"children":6192},{"style":3670},[6193],{"type":3140,"value":4047},{"type":3135,"tag":3505,"props":6195,"children":6196},{"class":3507,"line":3103},[6197,6201,6205,6210,6214,6218,6222,6226,6230],{"type":3135,"tag":3505,"props":6198,"children":6199},{"style":3647},[6200],{"type":3140,"value":5419},{"type":3135,"tag":3505,"props":6202,"children":6203},{"style":3670},[6204],{"type":3140,"value":5424},{"type":3135,"tag":3505,"props":6206,"children":6207},{"style":3664},[6208],{"type":3140,"value":6209}," useRuntimeConfig",{"type":3135,"tag":3505,"props":6211,"children":6212},{"style":3670},[6213],{"type":3140,"value":5434},{"type":3135,"tag":3505,"props":6215,"children":6216},{"style":3647},[6217],{"type":3140,"value":5439},{"type":3135,"tag":3505,"props":6219,"children":6220},{"style":3670},[6221],{"type":3140,"value":4213},{"type":3135,"tag":3505,"props":6223,"children":6224},{"style":3526},[6225],{"type":3140,"value":5448},{"type":3135,"tag":3505,"props":6227,"children":6228},{"style":3670},[6229],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":6231,"children":6232},{"style":3670},[6233],{"type":3140,"value":4047},{"type":3135,"tag":3505,"props":6235,"children":6236},{"class":3507,"line":3537},[6237],{"type":3135,"tag":3505,"props":6238,"children":6239},{"emptyLinePlaceholder":1208},[6240],{"type":3140,"value":3543},{"type":3135,"tag":3505,"props":6242,"children":6243},{"class":3507,"line":3546},[6244,6248,6252,6256,6260],{"type":3135,"tag":3505,"props":6245,"children":6246},{"style":3647},[6247],{"type":3140,"value":3650},{"type":3135,"tag":3505,"props":6249,"children":6250},{"style":3647},[6251],{"type":3140,"value":3655},{"type":3135,"tag":3505,"props":6253,"children":6254},{"style":3658},[6255],{"type":3140,"value":5485},{"type":3135,"tag":3505,"props":6257,"children":6258},{"style":3664},[6259],{"type":3140,"value":3667},{"type":3135,"tag":3505,"props":6261,"children":6262},{"style":3670},[6263],{"type":3140,"value":3673},{"type":3135,"tag":3505,"props":6265,"children":6266},{"class":3507,"line":3099},[6267,6271,6275],{"type":3135,"tag":3505,"props":6268,"children":6269},{"style":3679},[6270],{"type":3140,"value":5501},{"type":3135,"tag":3505,"props":6272,"children":6273},{"style":3670},[6274],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":6276,"children":6277},{"style":3670},[6278],{"type":3140,"value":3732},{"type":3135,"tag":3505,"props":6280,"children":6281},{"class":3507,"line":3571},[6282,6286,6290,6294,6298,6302,6306],{"type":3135,"tag":3505,"props":6283,"children":6284},{"style":3679},[6285],{"type":3140,"value":5517},{"type":3135,"tag":3505,"props":6287,"children":6288},{"style":3670},[6289],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":6291,"children":6292},{"style":3670},[6293],{"type":3140,"value":4213},{"type":3135,"tag":3505,"props":6295,"children":6296},{"style":3526},[6297],{"type":3140,"value":3397},{"type":3135,"tag":3505,"props":6299,"children":6300},{"style":3670},[6301],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":6303,"children":6304},{"style":3670},[6305],{"type":3140,"value":3907},{"type":3135,"tag":3505,"props":6307,"children":6308},{"style":3511},[6309],{"type":3140,"value":5542},{"type":3135,"tag":3505,"props":6311,"children":6312},{"class":3507,"line":3579},[6313,6317,6321,6325,6330,6334],{"type":3135,"tag":3505,"props":6314,"children":6315},{"style":3679},[6316],{"type":3140,"value":5550},{"type":3135,"tag":3505,"props":6318,"children":6319},{"style":3670},[6320],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":6322,"children":6323},{"style":3670},[6324],{"type":3140,"value":4213},{"type":3135,"tag":3505,"props":6326,"children":6327},{"style":3526},[6328],{"type":3140,"value":6329},"Clean old IP tracking data from nuxt-api-shield storage.",{"type":3135,"tag":3505,"props":6331,"children":6332},{"style":3670},[6333],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":6335,"children":6336},{"style":3670},[6337],{"type":3140,"value":3715},{"type":3135,"tag":3505,"props":6339,"children":6340},{"class":3507,"line":3124},[6341],{"type":3135,"tag":3505,"props":6342,"children":6343},{"style":3670},[6344],{"type":3140,"value":4028},{"type":3135,"tag":3505,"props":6346,"children":6347},{"class":3507,"line":3775},[6348,6352,6356,6360],{"type":3135,"tag":3505,"props":6349,"children":6350},{"style":4692},[6351],{"type":3140,"value":5586},{"type":3135,"tag":3505,"props":6353,"children":6354},{"style":3679},[6355],{"type":3140,"value":5591},{"type":3135,"tag":3505,"props":6357,"children":6358},{"style":3670},[6359],{"type":3140,"value":5596},{"type":3135,"tag":3505,"props":6361,"children":6362},{"style":3670},[6363],{"type":3140,"value":3732},{"type":3135,"tag":3505,"props":6365,"children":6366},{"class":3507,"line":3784},[6367,6371,6375,6379,6383,6387,6391,6395,6399,6403],{"type":3135,"tag":3505,"props":6368,"children":6369},{"style":4692},[6370],{"type":3140,"value":5608},{"type":3135,"tag":3505,"props":6372,"children":6373},{"style":3664},[6374],{"type":3140,"value":5613},{"type":3135,"tag":3505,"props":6376,"children":6377},{"style":3670},[6378],{"type":3140,"value":5618},{"type":3135,"tag":3505,"props":6380,"children":6381},{"style":3658},[6382],{"type":3140,"value":5623},{"type":3135,"tag":3505,"props":6384,"children":6385},{"style":3679},[6386],{"type":3140,"value":3667},{"type":3135,"tag":3505,"props":6388,"children":6389},{"style":3670},[6390],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":6392,"children":6393},{"style":3526},[6394],{"type":3140,"value":4663},{"type":3135,"tag":3505,"props":6396,"children":6397},{"style":3670},[6398],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":6400,"children":6401},{"style":3679},[6402],{"type":3140,"value":4042},{"type":3135,"tag":3505,"props":6404,"children":6405},{"style":3670},[6406],{"type":3140,"value":4047},{"type":3135,"tag":3505,"props":6408,"children":6409},{"class":3507,"line":3793},[6410,6414,6419,6423,6427,6431,6435,6439,6443,6447],{"type":3135,"tag":3505,"props":6411,"children":6412},{"style":4692},[6413],{"type":3140,"value":5608},{"type":3135,"tag":3505,"props":6415,"children":6416},{"style":3664},[6417],{"type":3140,"value":6418}," config",{"type":3135,"tag":3505,"props":6420,"children":6421},{"style":3670},[6422],{"type":3140,"value":5618},{"type":3135,"tag":3505,"props":6424,"children":6425},{"style":3658},[6426],{"type":3140,"value":6209},{"type":3135,"tag":3505,"props":6428,"children":6429},{"style":3679},[6430],{"type":3140,"value":5596},{"type":3135,"tag":3505,"props":6432,"children":6433},{"style":3670},[6434],{"type":3140,"value":4634},{"type":3135,"tag":3505,"props":6436,"children":6437},{"style":3664},[6438],{"type":3140,"value":180},{"type":3135,"tag":3505,"props":6440,"children":6441},{"style":3670},[6442],{"type":3140,"value":4634},{"type":3135,"tag":3505,"props":6444,"children":6445},{"style":3664},[6446],{"type":3140,"value":4063},{"type":3135,"tag":3505,"props":6448,"children":6449},{"style":3670},[6450],{"type":3140,"value":4047},{"type":3135,"tag":3505,"props":6452,"children":6453},{"class":3507,"line":3802},[6454],{"type":3135,"tag":3505,"props":6455,"children":6456},{"emptyLinePlaceholder":1208},[6457],{"type":3140,"value":3543},{"type":3135,"tag":3505,"props":6459,"children":6460},{"class":3507,"line":3811},[6461],{"type":3135,"tag":3505,"props":6462,"children":6463},{"style":3511},[6464],{"type":3140,"value":6465},"    \u002F\u002F ipTTL is expected to be in seconds from config (module applies default if not set by user)\n",{"type":3135,"tag":3505,"props":6467,"children":6468},{"class":3507,"line":3820},[6469,6473,6478,6482,6486,6490,6494],{"type":3135,"tag":3505,"props":6470,"children":6471},{"style":4692},[6472],{"type":3140,"value":5608},{"type":3135,"tag":3505,"props":6474,"children":6475},{"style":3664},[6476],{"type":3140,"value":6477}," ipTTLseconds",{"type":3135,"tag":3505,"props":6479,"children":6480},{"style":3670},[6481],{"type":3140,"value":5618},{"type":3135,"tag":3505,"props":6483,"children":6484},{"style":3664},[6485],{"type":3140,"value":6418},{"type":3135,"tag":3505,"props":6487,"children":6488},{"style":3670},[6489],{"type":3140,"value":4634},{"type":3135,"tag":3505,"props":6491,"children":6492},{"style":3664},[6493],{"type":3140,"value":5095},{"type":3135,"tag":3505,"props":6495,"children":6496},{"style":3670},[6497],{"type":3140,"value":4047},{"type":3135,"tag":3505,"props":6499,"children":6500},{"class":3507,"line":3829},[6501],{"type":3135,"tag":3505,"props":6502,"children":6503},{"emptyLinePlaceholder":1208},[6504],{"type":3140,"value":3543},{"type":3135,"tag":3505,"props":6506,"children":6507},{"class":3507,"line":3838},[6508,6513,6517,6522,6527,6532,6536,6541,6545,6549],{"type":3135,"tag":3505,"props":6509,"children":6510},{"style":3647},[6511],{"type":3140,"value":6512},"    if",{"type":3135,"tag":3505,"props":6514,"children":6515},{"style":3679},[6516],{"type":3140,"value":5771},{"type":3135,"tag":3505,"props":6518,"children":6519},{"style":3670},[6520],{"type":3140,"value":6521},"!",{"type":3135,"tag":3505,"props":6523,"children":6524},{"style":3664},[6525],{"type":3140,"value":6526},"ipTTLseconds",{"type":3135,"tag":3505,"props":6528,"children":6529},{"style":3670},[6530],{"type":3140,"value":6531}," ||",{"type":3135,"tag":3505,"props":6533,"children":6534},{"style":3664},[6535],{"type":3140,"value":6477},{"type":3135,"tag":3505,"props":6537,"children":6538},{"style":3670},[6539],{"type":3140,"value":6540}," \u003C=",{"type":3135,"tag":3505,"props":6542,"children":6543},{"style":3945},[6544],{"type":3140,"value":4305},{"type":3135,"tag":3505,"props":6546,"children":6547},{"style":3679},[6548],{"type":3140,"value":5795},{"type":3135,"tag":3505,"props":6550,"children":6551},{"style":3670},[6552],{"type":3140,"value":3673},{"type":3135,"tag":3505,"props":6554,"children":6555},{"class":3507,"line":3847},[6556,6561,6565,6569],{"type":3135,"tag":3505,"props":6557,"children":6558},{"style":3664},[6559],{"type":3140,"value":6560},"      console",{"type":3135,"tag":3505,"props":6562,"children":6563},{"style":3670},[6564],{"type":3140,"value":4634},{"type":3135,"tag":3505,"props":6566,"children":6567},{"style":3658},[6568],{"type":3140,"value":5966},{"type":3135,"tag":3505,"props":6570,"children":6571},{"style":3679},[6572],{"type":3140,"value":6573},"(\n",{"type":3135,"tag":3505,"props":6575,"children":6576},{"class":3507,"line":3855},[6577,6581,6586],{"type":3135,"tag":3505,"props":6578,"children":6579},{"style":3670},[6580],{"type":3140,"value":4772},{"type":3135,"tag":3505,"props":6582,"children":6583},{"style":3526},[6584],{"type":3140,"value":6585},"[nuxt-api-shield] IP data cleanup (ipTTL) is disabled or invalid.",{"type":3135,"tag":3505,"props":6587,"children":6588},{"style":3670},[6589],{"type":3140,"value":4799},{"type":3135,"tag":3505,"props":6591,"children":6592},{"class":3507,"line":3864},[6593,6598],{"type":3135,"tag":3505,"props":6594,"children":6595},{"style":3679},[6596],{"type":3140,"value":6597},"      )",{"type":3135,"tag":3505,"props":6599,"children":6600},{"style":3670},[6601],{"type":3140,"value":4047},{"type":3135,"tag":3505,"props":6603,"children":6604},{"class":3507,"line":3873},[6605,6610,6614,6618,6622,6626,6630,6634,6638,6643,6648,6652,6656,6661,6665],{"type":3135,"tag":3505,"props":6606,"children":6607},{"style":3647},[6608],{"type":3140,"value":6609},"      return",{"type":3135,"tag":3505,"props":6611,"children":6612},{"style":3670},[6613],{"type":3140,"value":5424},{"type":3135,"tag":3505,"props":6615,"children":6616},{"style":3679},[6617],{"type":3140,"value":6028},{"type":3135,"tag":3505,"props":6619,"children":6620},{"style":3670},[6621],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":6623,"children":6624},{"style":3670},[6625],{"type":3140,"value":5424},{"type":3135,"tag":3505,"props":6627,"children":6628},{"style":3679},[6629],{"type":3140,"value":5746},{"type":3135,"tag":3505,"props":6631,"children":6632},{"style":3670},[6633],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":6635,"children":6636},{"style":3945},[6637],{"type":3140,"value":4305},{"type":3135,"tag":3505,"props":6639,"children":6640},{"style":3670},[6641],{"type":3140,"value":6642}," },",{"type":3135,"tag":3505,"props":6644,"children":6645},{"style":3679},[6646],{"type":3140,"value":6647}," status",{"type":3135,"tag":3505,"props":6649,"children":6650},{"style":3670},[6651],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":6653,"children":6654},{"style":3670},[6655],{"type":3140,"value":4213},{"type":3135,"tag":3505,"props":6657,"children":6658},{"style":3526},[6659],{"type":3140,"value":6660},"disabled_or_invalid_ttl",{"type":3135,"tag":3505,"props":6662,"children":6663},{"style":3670},[6664],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":6666,"children":6667},{"style":3670},[6668],{"type":3140,"value":6049},{"type":3135,"tag":3505,"props":6670,"children":6671},{"class":3507,"line":3887},[6672],{"type":3135,"tag":3505,"props":6673,"children":6674},{"style":3670},[6675],{"type":3140,"value":4815},{"type":3135,"tag":3505,"props":6677,"children":6678},{"class":3507,"line":3915},[6679,6683,6688,6692,6696,6700,6705],{"type":3135,"tag":3505,"props":6680,"children":6681},{"style":4692},[6682],{"type":3140,"value":5608},{"type":3135,"tag":3505,"props":6684,"children":6685},{"style":3664},[6686],{"type":3140,"value":6687}," ipTTLms",{"type":3135,"tag":3505,"props":6689,"children":6690},{"style":3670},[6691],{"type":3140,"value":5618},{"type":3135,"tag":3505,"props":6693,"children":6694},{"style":3664},[6695],{"type":3140,"value":6477},{"type":3135,"tag":3505,"props":6697,"children":6698},{"style":3670},[6699],{"type":3140,"value":4403},{"type":3135,"tag":3505,"props":6701,"children":6702},{"style":3945},[6703],{"type":3140,"value":6704}," 1000",{"type":3135,"tag":3505,"props":6706,"children":6707},{"style":3670},[6708],{"type":3140,"value":4047},{"type":3135,"tag":3505,"props":6710,"children":6711},{"class":3507,"line":3923},[6712],{"type":3135,"tag":3505,"props":6713,"children":6714},{"emptyLinePlaceholder":1208},[6715],{"type":3140,"value":3543},{"type":3135,"tag":3505,"props":6717,"children":6718},{"class":3507,"line":3932},[6719,6723,6728,6732,6736,6740,6744,6748,6752,6756,6761,6765,6769],{"type":3135,"tag":3505,"props":6720,"children":6721},{"style":4692},[6722],{"type":3140,"value":5608},{"type":3135,"tag":3505,"props":6724,"children":6725},{"style":3664},[6726],{"type":3140,"value":6727}," ipKeys",{"type":3135,"tag":3505,"props":6729,"children":6730},{"style":3670},[6731],{"type":3140,"value":5618},{"type":3135,"tag":3505,"props":6733,"children":6734},{"style":3647},[6735],{"type":3140,"value":5688},{"type":3135,"tag":3505,"props":6737,"children":6738},{"style":3664},[6739],{"type":3140,"value":5613},{"type":3135,"tag":3505,"props":6741,"children":6742},{"style":3670},[6743],{"type":3140,"value":4634},{"type":3135,"tag":3505,"props":6745,"children":6746},{"style":3658},[6747],{"type":3140,"value":5701},{"type":3135,"tag":3505,"props":6749,"children":6750},{"style":3679},[6751],{"type":3140,"value":3667},{"type":3135,"tag":3505,"props":6753,"children":6754},{"style":3670},[6755],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":6757,"children":6758},{"style":3526},[6759],{"type":3140,"value":6760},"ip:",{"type":3135,"tag":3505,"props":6762,"children":6763},{"style":3670},[6764],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":6766,"children":6767},{"style":3679},[6768],{"type":3140,"value":4042},{"type":3135,"tag":3505,"props":6770,"children":6771},{"style":3670},[6772],{"type":3140,"value":4047},{"type":3135,"tag":3505,"props":6774,"children":6775},{"class":3507,"line":3960},[6776,6780,6785,6789,6794,6798,6803,6807],{"type":3135,"tag":3505,"props":6777,"children":6778},{"style":4692},[6779],{"type":3140,"value":5608},{"type":3135,"tag":3505,"props":6781,"children":6782},{"style":3664},[6783],{"type":3140,"value":6784}," currentTime",{"type":3135,"tag":3505,"props":6786,"children":6787},{"style":3670},[6788],{"type":3140,"value":5618},{"type":3135,"tag":3505,"props":6790,"children":6791},{"style":3664},[6792],{"type":3140,"value":6793}," Date",{"type":3135,"tag":3505,"props":6795,"children":6796},{"style":3670},[6797],{"type":3140,"value":4634},{"type":3135,"tag":3505,"props":6799,"children":6800},{"style":3658},[6801],{"type":3140,"value":6802},"now",{"type":3135,"tag":3505,"props":6804,"children":6805},{"style":3679},[6806],{"type":3140,"value":5596},{"type":3135,"tag":3505,"props":6808,"children":6809},{"style":3670},[6810],{"type":3140,"value":4047},{"type":3135,"tag":3505,"props":6812,"children":6813},{"class":3507,"line":3977},[6814,6818,6822,6826,6830],{"type":3135,"tag":3505,"props":6815,"children":6816},{"style":4692},[6817],{"type":3140,"value":5741},{"type":3135,"tag":3505,"props":6819,"children":6820},{"style":3664},[6821],{"type":3140,"value":5746},{"type":3135,"tag":3505,"props":6823,"children":6824},{"style":3670},[6825],{"type":3140,"value":5618},{"type":3135,"tag":3505,"props":6827,"children":6828},{"style":3945},[6829],{"type":3140,"value":4305},{"type":3135,"tag":3505,"props":6831,"children":6832},{"style":3670},[6833],{"type":3140,"value":4047},{"type":3135,"tag":3505,"props":6835,"children":6836},{"class":3507,"line":3986},[6837],{"type":3135,"tag":3505,"props":6838,"children":6839},{"emptyLinePlaceholder":1208},[6840],{"type":3140,"value":3543},{"type":3135,"tag":3505,"props":6842,"children":6843},{"class":3507,"line":4014},[6844,6848,6852,6856,6860,6864,6868,6872],{"type":3135,"tag":3505,"props":6845,"children":6846},{"style":3647},[6847],{"type":3140,"value":5766},{"type":3135,"tag":3505,"props":6849,"children":6850},{"style":3679},[6851],{"type":3140,"value":5771},{"type":3135,"tag":3505,"props":6853,"children":6854},{"style":4692},[6855],{"type":3140,"value":5776},{"type":3135,"tag":3505,"props":6857,"children":6858},{"style":3664},[6859],{"type":3140,"value":5781},{"type":3135,"tag":3505,"props":6861,"children":6862},{"style":3670},[6863],{"type":3140,"value":5786},{"type":3135,"tag":3505,"props":6865,"children":6866},{"style":3664},[6867],{"type":3140,"value":6727},{"type":3135,"tag":3505,"props":6869,"children":6870},{"style":3679},[6871],{"type":3140,"value":5795},{"type":3135,"tag":3505,"props":6873,"children":6874},{"style":3670},[6875],{"type":3140,"value":3673},{"type":3135,"tag":3505,"props":6877,"children":6878},{"class":3507,"line":4022},[6879,6883,6888,6892,6896,6901,6905,6909,6913,6917,6921,6925,6930,6934,6939,6944],{"type":3135,"tag":3505,"props":6880,"children":6881},{"style":4692},[6882],{"type":3140,"value":5807},{"type":3135,"tag":3505,"props":6884,"children":6885},{"style":3664},[6886],{"type":3140,"value":6887}," entry",{"type":3135,"tag":3505,"props":6889,"children":6890},{"style":3670},[6891],{"type":3140,"value":5618},{"type":3135,"tag":3505,"props":6893,"children":6894},{"style":3679},[6895],{"type":3140,"value":5771},{"type":3135,"tag":3505,"props":6897,"children":6898},{"style":3647},[6899],{"type":3140,"value":6900},"await",{"type":3135,"tag":3505,"props":6902,"children":6903},{"style":3664},[6904],{"type":3140,"value":5613},{"type":3135,"tag":3505,"props":6906,"children":6907},{"style":3670},[6908],{"type":3140,"value":4634},{"type":3135,"tag":3505,"props":6910,"children":6911},{"style":3658},[6912],{"type":3140,"value":5833},{"type":3135,"tag":3505,"props":6914,"children":6915},{"style":3679},[6916],{"type":3140,"value":3667},{"type":3135,"tag":3505,"props":6918,"children":6919},{"style":3664},[6920],{"type":3140,"value":5842},{"type":3135,"tag":3505,"props":6922,"children":6923},{"style":3679},[6924],{"type":3140,"value":5881},{"type":3135,"tag":3505,"props":6926,"children":6927},{"style":3647},[6928],{"type":3140,"value":6929},"as",{"type":3135,"tag":3505,"props":6931,"children":6932},{"style":3520},[6933],{"type":3140,"value":6169},{"type":3135,"tag":3505,"props":6935,"children":6936},{"style":3670},[6937],{"type":3140,"value":6938}," |",{"type":3135,"tag":3505,"props":6940,"children":6941},{"style":3520},[6942],{"type":3140,"value":6943}," null",{"type":3135,"tag":3505,"props":6945,"children":6946},{"style":3670},[6947],{"type":3140,"value":4047},{"type":3135,"tag":3505,"props":6949,"children":6950},{"class":3507,"line":4031},[6951],{"type":3135,"tag":3505,"props":6952,"children":6953},{"emptyLinePlaceholder":1208},[6954],{"type":3140,"value":3543},{"type":3135,"tag":3505,"props":6956,"children":6958},{"class":3507,"line":6957},31,[6959],{"type":3135,"tag":3505,"props":6960,"children":6961},{"style":3511},[6962],{"type":3140,"value":6963},"      \u002F\u002F Check if entry exists and has a numeric 'time' property\n",{"type":3135,"tag":3505,"props":6965,"children":6967},{"class":3507,"line":6966},32,[6968,6972,6976,6981,6986,6991,6995,6999,7003,7008,7012,7017,7021,7025],{"type":3135,"tag":3505,"props":6969,"children":6970},{"style":3647},[6971],{"type":3140,"value":5858},{"type":3135,"tag":3505,"props":6973,"children":6974},{"style":3679},[6975],{"type":3140,"value":5771},{"type":3135,"tag":3505,"props":6977,"children":6978},{"style":3664},[6979],{"type":3140,"value":6980},"entry",{"type":3135,"tag":3505,"props":6982,"children":6983},{"style":3670},[6984],{"type":3140,"value":6985}," &&",{"type":3135,"tag":3505,"props":6987,"children":6988},{"style":3670},[6989],{"type":3140,"value":6990}," typeof",{"type":3135,"tag":3505,"props":6992,"children":6993},{"style":3664},[6994],{"type":3140,"value":6887},{"type":3135,"tag":3505,"props":6996,"children":6997},{"style":3670},[6998],{"type":3140,"value":4634},{"type":3135,"tag":3505,"props":7000,"children":7001},{"style":3664},[7002],{"type":3140,"value":6120},{"type":3135,"tag":3505,"props":7004,"children":7005},{"style":3670},[7006],{"type":3140,"value":7007}," ===",{"type":3135,"tag":3505,"props":7009,"children":7010},{"style":3670},[7011],{"type":3140,"value":4213},{"type":3135,"tag":3505,"props":7013,"children":7014},{"style":3526},[7015],{"type":3140,"value":7016},"number",{"type":3135,"tag":3505,"props":7018,"children":7019},{"style":3670},[7020],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":7022,"children":7023},{"style":3679},[7024],{"type":3140,"value":5795},{"type":3135,"tag":3505,"props":7026,"children":7027},{"style":3670},[7028],{"type":3140,"value":3673},{"type":3135,"tag":3505,"props":7030,"children":7032},{"class":3507,"line":7031},33,[7033,7038,7042,7047,7052,7056,7060,7064,7069,7073,7077],{"type":3135,"tag":3505,"props":7034,"children":7035},{"style":3647},[7036],{"type":3140,"value":7037},"        if",{"type":3135,"tag":3505,"props":7039,"children":7040},{"style":3679},[7041],{"type":3140,"value":5771},{"type":3135,"tag":3505,"props":7043,"children":7044},{"style":3664},[7045],{"type":3140,"value":7046},"currentTime",{"type":3135,"tag":3505,"props":7048,"children":7049},{"style":3670},[7050],{"type":3140,"value":7051}," -",{"type":3135,"tag":3505,"props":7053,"children":7054},{"style":3664},[7055],{"type":3140,"value":6887},{"type":3135,"tag":3505,"props":7057,"children":7058},{"style":3670},[7059],{"type":3140,"value":4634},{"type":3135,"tag":3505,"props":7061,"children":7062},{"style":3664},[7063],{"type":3140,"value":6120},{"type":3135,"tag":3505,"props":7065,"children":7066},{"style":3670},[7067],{"type":3140,"value":7068}," >",{"type":3135,"tag":3505,"props":7070,"children":7071},{"style":3664},[7072],{"type":3140,"value":6687},{"type":3135,"tag":3505,"props":7074,"children":7075},{"style":3679},[7076],{"type":3140,"value":5795},{"type":3135,"tag":3505,"props":7078,"children":7079},{"style":3670},[7080],{"type":3140,"value":3673},{"type":3135,"tag":3505,"props":7082,"children":7084},{"class":3507,"line":7083},34,[7085,7090,7094,7098,7102,7106,7110,7114],{"type":3135,"tag":3505,"props":7086,"children":7087},{"style":3647},[7088],{"type":3140,"value":7089},"          await",{"type":3135,"tag":3505,"props":7091,"children":7092},{"style":3664},[7093],{"type":3140,"value":5613},{"type":3135,"tag":3505,"props":7095,"children":7096},{"style":3670},[7097],{"type":3140,"value":4634},{"type":3135,"tag":3505,"props":7099,"children":7100},{"style":3658},[7101],{"type":3140,"value":5906},{"type":3135,"tag":3505,"props":7103,"children":7104},{"style":3679},[7105],{"type":3140,"value":3667},{"type":3135,"tag":3505,"props":7107,"children":7108},{"style":3664},[7109],{"type":3140,"value":5842},{"type":3135,"tag":3505,"props":7111,"children":7112},{"style":3679},[7113],{"type":3140,"value":4042},{"type":3135,"tag":3505,"props":7115,"children":7116},{"style":3670},[7117],{"type":3140,"value":4047},{"type":3135,"tag":3505,"props":7119,"children":7121},{"class":3507,"line":7120},35,[7122,7127],{"type":3135,"tag":3505,"props":7123,"children":7124},{"style":3664},[7125],{"type":3140,"value":7126},"          cleanedCount",{"type":3135,"tag":3505,"props":7128,"children":7129},{"style":3670},[7130],{"type":3140,"value":5935},{"type":3135,"tag":3505,"props":7132,"children":7134},{"class":3507,"line":7133},36,[7135],{"type":3135,"tag":3505,"props":7136,"children":7137},{"style":3670},[7138],{"type":3140,"value":7139},"        }\n",{"type":3135,"tag":3505,"props":7141,"children":7143},{"class":3507,"line":7142},37,[7144,7149,7154],{"type":3135,"tag":3505,"props":7145,"children":7146},{"style":3670},[7147],{"type":3140,"value":7148},"      }",{"type":3135,"tag":3505,"props":7150,"children":7151},{"style":3647},[7152],{"type":3140,"value":7153}," else",{"type":3135,"tag":3505,"props":7155,"children":7156},{"style":3670},[7157],{"type":3140,"value":3732},{"type":3135,"tag":3505,"props":7159,"children":7161},{"class":3507,"line":7160},38,[7162],{"type":3135,"tag":3505,"props":7163,"children":7164},{"style":3511},[7165],{"type":3140,"value":7166},"        \u002F\u002F Clean up entries that are null, not an object, or missing a numeric 'time'\n",{"type":3135,"tag":3505,"props":7168,"children":7170},{"class":3507,"line":7169},39,[7171,7175,7179,7183,7187,7191,7195,7199],{"type":3135,"tag":3505,"props":7172,"children":7173},{"style":3647},[7174],{"type":3140,"value":5893},{"type":3135,"tag":3505,"props":7176,"children":7177},{"style":3664},[7178],{"type":3140,"value":5613},{"type":3135,"tag":3505,"props":7180,"children":7181},{"style":3670},[7182],{"type":3140,"value":4634},{"type":3135,"tag":3505,"props":7184,"children":7185},{"style":3658},[7186],{"type":3140,"value":5906},{"type":3135,"tag":3505,"props":7188,"children":7189},{"style":3679},[7190],{"type":3140,"value":3667},{"type":3135,"tag":3505,"props":7192,"children":7193},{"style":3664},[7194],{"type":3140,"value":5842},{"type":3135,"tag":3505,"props":7196,"children":7197},{"style":3679},[7198],{"type":3140,"value":4042},{"type":3135,"tag":3505,"props":7200,"children":7201},{"style":3670},[7202],{"type":3140,"value":4047},{"type":3135,"tag":3505,"props":7204,"children":7206},{"class":3507,"line":7205},40,[7207,7211],{"type":3135,"tag":3505,"props":7208,"children":7209},{"style":3664},[7210],{"type":3140,"value":5930},{"type":3135,"tag":3505,"props":7212,"children":7213},{"style":3670},[7214],{"type":3140,"value":5935},{"type":3135,"tag":3505,"props":7216,"children":7218},{"class":3507,"line":7217},41,[7219],{"type":3135,"tag":3505,"props":7220,"children":7221},{"style":3670},[7222],{"type":3140,"value":4807},{"type":3135,"tag":3505,"props":7224,"children":7226},{"class":3507,"line":7225},42,[7227],{"type":3135,"tag":3505,"props":7228,"children":7229},{"style":3670},[7230],{"type":3140,"value":4815},{"type":3135,"tag":3505,"props":7232,"children":7234},{"class":3507,"line":7233},43,[7235],{"type":3135,"tag":3505,"props":7236,"children":7237},{"emptyLinePlaceholder":1208},[7238],{"type":3140,"value":3543},{"type":3135,"tag":3505,"props":7240,"children":7242},{"class":3507,"line":7241},44,[7243,7247,7251,7255],{"type":3135,"tag":3505,"props":7244,"children":7245},{"style":3664},[7246],{"type":3140,"value":5957},{"type":3135,"tag":3505,"props":7248,"children":7249},{"style":3670},[7250],{"type":3140,"value":4634},{"type":3135,"tag":3505,"props":7252,"children":7253},{"style":3658},[7254],{"type":3140,"value":5966},{"type":3135,"tag":3505,"props":7256,"children":7257},{"style":3679},[7258],{"type":3140,"value":6573},{"type":3135,"tag":3505,"props":7260,"children":7262},{"class":3507,"line":7261},45,[7263,7268,7272,7276,7280,7284,7289],{"type":3135,"tag":3505,"props":7264,"children":7265},{"style":3670},[7266],{"type":3140,"value":7267},"      `",{"type":3135,"tag":3505,"props":7269,"children":7270},{"style":3526},[7271],{"type":3140,"value":5980},{"type":3135,"tag":3505,"props":7273,"children":7274},{"style":3670},[7275],{"type":3140,"value":5985},{"type":3135,"tag":3505,"props":7277,"children":7278},{"style":3664},[7279],{"type":3140,"value":5990},{"type":3135,"tag":3505,"props":7281,"children":7282},{"style":3670},[7283],{"type":3140,"value":4037},{"type":3135,"tag":3505,"props":7285,"children":7286},{"style":3526},[7287],{"type":3140,"value":7288}," old\u002Fmalformed IP data entries.",{"type":3135,"tag":3505,"props":7290,"children":7291},{"style":3670},[7292],{"type":3140,"value":7293},"`\n",{"type":3135,"tag":3505,"props":7295,"children":7297},{"class":3507,"line":7296},46,[7298,7303],{"type":3135,"tag":3505,"props":7299,"children":7300},{"style":3679},[7301],{"type":3140,"value":7302},"    )",{"type":3135,"tag":3505,"props":7304,"children":7305},{"style":3670},[7306],{"type":3140,"value":4047},{"type":3135,"tag":3505,"props":7308,"children":7310},{"class":3507,"line":7309},47,[7311,7315,7319,7323,7327,7331,7335,7339],{"type":3135,"tag":3505,"props":7312,"children":7313},{"style":3647},[7314],{"type":3140,"value":6019},{"type":3135,"tag":3505,"props":7316,"children":7317},{"style":3670},[7318],{"type":3140,"value":5424},{"type":3135,"tag":3505,"props":7320,"children":7321},{"style":3679},[7322],{"type":3140,"value":6028},{"type":3135,"tag":3505,"props":7324,"children":7325},{"style":3670},[7326],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":7328,"children":7329},{"style":3670},[7330],{"type":3140,"value":5424},{"type":3135,"tag":3505,"props":7332,"children":7333},{"style":3664},[7334],{"type":3140,"value":5746},{"type":3135,"tag":3505,"props":7336,"children":7337},{"style":3670},[7338],{"type":3140,"value":5434},{"type":3135,"tag":3505,"props":7340,"children":7341},{"style":3670},[7342],{"type":3140,"value":6049},{"type":3135,"tag":3505,"props":7344,"children":7346},{"class":3507,"line":7345},48,[7347],{"type":3135,"tag":3505,"props":7348,"children":7349},{"style":3670},[7350],{"type":3140,"value":4028},{"type":3135,"tag":3505,"props":7352,"children":7354},{"class":3507,"line":7353},49,[7355,7359,7363],{"type":3135,"tag":3505,"props":7356,"children":7357},{"style":3670},[7358],{"type":3140,"value":4037},{"type":3135,"tag":3505,"props":7360,"children":7361},{"style":3664},[7362],{"type":3140,"value":4042},{"type":3135,"tag":3505,"props":7364,"children":7365},{"style":3670},[7366],{"type":3140,"value":4047},{"type":3135,"tag":3142,"props":7368,"children":7369},{},[7370,7372,7377,7379,7384,7386,7391,7392,7398,7400,7405],{"type":3140,"value":7371},"Configure ",{"type":3135,"tag":3292,"props":7373,"children":7375},{"className":7374},[],[7376],{"type":3140,"value":5095},{"type":3140,"value":7378}," under ",{"type":3135,"tag":3292,"props":7380,"children":7382},{"className":7381},[],[7383],{"type":3140,"value":4063},{"type":3140,"value":7385}," if you want a TTL other than the default. Setting ",{"type":3135,"tag":3292,"props":7387,"children":7389},{"className":7388},[],[7390],{"type":3140,"value":5095},{"type":3140,"value":4648},{"type":3135,"tag":3292,"props":7393,"children":7395},{"className":7394},[],[7396],{"type":3140,"value":7397},"0",{"type":3140,"value":7399}," (or any non-positive value) makes the bundled ",{"type":3135,"tag":3292,"props":7401,"children":7403},{"className":7402},[],[7404],{"type":3140,"value":3397},{"type":3140,"value":7406}," task skip IP cleanup (it logs and exits).",{"type":3135,"tag":3142,"props":7408,"children":7409},{},[7410,7412,7418,7420,7425,7427,7432],{"type":3140,"value":7411},"If you add your own task file with the same ",{"type":3135,"tag":3292,"props":7413,"children":7415},{"className":7414},[],[7416],{"type":3140,"value":7417},"meta.name",{"type":3140,"value":7419}," as a bundled task (",{"type":3135,"tag":3292,"props":7421,"children":7423},{"className":7422},[],[7424],{"type":3140,"value":3389},{"type":3140,"value":7426}," or ",{"type":3135,"tag":3292,"props":7428,"children":7430},{"className":7429},[],[7431],{"type":3140,"value":3397},{"type":3140,"value":7433},"), Nitro may prefer your project file over the module—avoid duplicate names unless you intend to override.",{"type":3135,"tag":3218,"props":7435,"children":7437},{"id":7436},"production-deployment",[7438],{"type":3140,"value":7439},"Production Deployment",{"type":3135,"tag":3481,"props":7441,"children":7443},{"id":7442},"use-redis-as-the-storage-driver",[7444],{"type":3140,"value":7445},"Use Redis as the storage driver",{"type":3135,"tag":3142,"props":7447,"children":7448},{},[7449,7451,7456,7458,7463,7464,7470],{"type":3140,"value":7450},"For production deployments — especially with multiple server instances or significant traffic — ",{"type":3135,"tag":3230,"props":7452,"children":7453},{},[7454],{"type":3140,"value":7455},"Redis is the recommended storage driver",{"type":3140,"value":7457},". The ",{"type":3135,"tag":3292,"props":7459,"children":7461},{"className":7460},[],[7462],{"type":3140,"value":4794},{"type":3140,"value":3391},{"type":3135,"tag":3292,"props":7465,"children":7467},{"className":7466},[],[7468],{"type":3140,"value":7469},"fs",{"type":3140,"value":7471}," drivers have important limitations:",{"type":3135,"tag":7473,"props":7474,"children":7475},"table",{},[7476,7510],{"type":3135,"tag":7477,"props":7478,"children":7479},"thead",{},[7480],{"type":3135,"tag":7481,"props":7482,"children":7483},"tr",{},[7484,7490,7505],{"type":3135,"tag":7485,"props":7486,"children":7487},"th",{},[7488],{"type":3140,"value":7489},"Area",{"type":3135,"tag":7485,"props":7491,"children":7492},{},[7493,7498,7500],{"type":3135,"tag":3292,"props":7494,"children":7496},{"className":7495},[],[7497],{"type":3140,"value":4794},{"type":3140,"value":7499}," \u002F ",{"type":3135,"tag":3292,"props":7501,"children":7503},{"className":7502},[],[7504],{"type":3140,"value":7469},{"type":3135,"tag":7485,"props":7506,"children":7507},{},[7508],{"type":3140,"value":7509},"Redis",{"type":3135,"tag":7511,"props":7512,"children":7513},"tbody",{},[7514,7536,7557],{"type":3135,"tag":7481,"props":7515,"children":7516},{},[7517,7526,7531],{"type":3135,"tag":7518,"props":7519,"children":7520},"td",{},[7521],{"type":3135,"tag":3230,"props":7522,"children":7523},{},[7524],{"type":3140,"value":7525},"Multi-instance",{"type":3135,"tag":7518,"props":7527,"children":7528},{},[7529],{"type":3140,"value":7530},"Each process has its own isolated state. Rate limits reset per instance, allowing bypass.",{"type":3135,"tag":7518,"props":7532,"children":7533},{},[7534],{"type":3140,"value":7535},"Shared state across all instances.",{"type":3135,"tag":7481,"props":7537,"children":7538},{},[7539,7547,7552],{"type":3135,"tag":7518,"props":7540,"children":7541},{},[7542],{"type":3135,"tag":3230,"props":7543,"children":7544},{},[7545],{"type":3140,"value":7546},"Atomic operations",{"type":3135,"tag":7518,"props":7548,"children":7549},{},[7550],{"type":3140,"value":7551},"Read → increment → write is not atomic. Concurrent requests can both read the same count and exceed the limit simultaneously.",{"type":3135,"tag":7518,"props":7553,"children":7554},{},[7555],{"type":3140,"value":7556},"Single-threaded — reads and writes are naturally atomic. No race conditions.",{"type":3135,"tag":7481,"props":7558,"children":7559},{},[7560,7568,7594],{"type":3135,"tag":7518,"props":7561,"children":7562},{},[7563],{"type":3135,"tag":3230,"props":7564,"children":7565},{},[7566],{"type":3140,"value":7567},"Cleanup",{"type":3135,"tag":7518,"props":7569,"children":7570},{},[7571,7573,7578,7579,7584,7586,7592],{"type":3140,"value":7572},"Cleanup tasks (",{"type":3135,"tag":3292,"props":7574,"children":7576},{"className":7575},[],[7577],{"type":3140,"value":3389},{"type":3140,"value":3457},{"type":3135,"tag":3292,"props":7580,"children":7582},{"className":7581},[],[7583],{"type":3140,"value":3397},{"type":3140,"value":7585},") must scan all keys with ",{"type":3135,"tag":3292,"props":7587,"children":7589},{"className":7588},[],[7590],{"type":3140,"value":7591},"getKeys()",{"type":3140,"value":7593},". At scale this blocks the event loop.",{"type":3135,"tag":7518,"props":7595,"children":7596},{},[7597,7599,7605,7606,7612],{"type":3140,"value":7598},"Use ",{"type":3135,"tag":3292,"props":7600,"children":7602},{"className":7601},[],[7603],{"type":3140,"value":7604},"EXPIRE",{"type":3140,"value":7426},{"type":3135,"tag":3292,"props":7607,"children":7609},{"className":7608},[],[7610],{"type":3140,"value":7611},"TTL",{"type":3140,"value":7613}," natively — expired keys are reclaimed automatically without scanning.",{"type":3135,"tag":3142,"props":7615,"children":7616},{},[7617,7619,7624,7626,7631],{"type":3140,"value":7618},"To use Redis, configure the ",{"type":3135,"tag":3292,"props":7620,"children":7622},{"className":7621},[],[7623],{"type":3140,"value":4663},{"type":3140,"value":7625}," storage with the ",{"type":3135,"tag":3292,"props":7627,"children":7629},{"className":7628},[],[7630],{"type":3140,"value":4945},{"type":3140,"value":7632}," driver:",{"type":3135,"tag":3495,"props":7634,"children":7635},{"className":4668,"code":4837,"language":4670,"meta":3079,"style":3079},[7636],{"type":3135,"tag":3292,"props":7637,"children":7638},{"__ignoreMap":3079},[7639,7646,7669,7692,7715,7750,7785,7808,7815,7822,7829],{"type":3135,"tag":3505,"props":7640,"children":7641},{"class":3507,"line":3107},[7642],{"type":3135,"tag":3505,"props":7643,"children":7644},{"style":3670},[7645],{"type":3140,"value":3673},{"type":3135,"tag":3505,"props":7647,"children":7648},{"class":3507,"line":3103},[7649,7653,7657,7661,7665],{"type":3135,"tag":3505,"props":7650,"children":7651},{"style":3670},[7652],{"type":3140,"value":4689},{"type":3135,"tag":3505,"props":7654,"children":7655},{"style":4692},[7656],{"type":3140,"value":4695},{"type":3135,"tag":3505,"props":7658,"children":7659},{"style":3670},[7660],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":7662,"children":7663},{"style":3670},[7664],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":7666,"children":7667},{"style":3670},[7668],{"type":3140,"value":3732},{"type":3135,"tag":3505,"props":7670,"children":7671},{"class":3507,"line":3537},[7672,7676,7680,7684,7688],{"type":3135,"tag":3505,"props":7673,"children":7674},{"style":3670},[7675],{"type":3140,"value":4715},{"type":3135,"tag":3505,"props":7677,"children":7678},{"style":3520},[7679],{"type":3140,"value":4720},{"type":3135,"tag":3505,"props":7681,"children":7682},{"style":3670},[7683],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":7685,"children":7686},{"style":3670},[7687],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":7689,"children":7690},{"style":3670},[7691],{"type":3140,"value":3732},{"type":3135,"tag":3505,"props":7693,"children":7694},{"class":3507,"line":3546},[7695,7699,7703,7707,7711],{"type":3135,"tag":3505,"props":7696,"children":7697},{"style":3670},[7698],{"type":3140,"value":4740},{"type":3135,"tag":3505,"props":7700,"children":7701},{"style":3945},[7702],{"type":3140,"value":4663},{"type":3135,"tag":3505,"props":7704,"children":7705},{"style":3670},[7706],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":7708,"children":7709},{"style":3670},[7710],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":7712,"children":7713},{"style":3670},[7714],{"type":3140,"value":3732},{"type":3135,"tag":3505,"props":7716,"children":7717},{"class":3507,"line":3099},[7718,7722,7726,7730,7734,7738,7742,7746],{"type":3135,"tag":3505,"props":7719,"children":7720},{"style":3670},[7721],{"type":3140,"value":4772},{"type":3135,"tag":3505,"props":7723,"children":7724},{"style":3679},[7725],{"type":3140,"value":4777},{"type":3135,"tag":3505,"props":7727,"children":7728},{"style":3670},[7729],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":7731,"children":7732},{"style":3670},[7733],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":7735,"children":7736},{"style":3670},[7737],{"type":3140,"value":4213},{"type":3135,"tag":3505,"props":7739,"children":7740},{"style":3526},[7741],{"type":3140,"value":4945},{"type":3135,"tag":3505,"props":7743,"children":7744},{"style":3670},[7745],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":7747,"children":7748},{"style":3670},[7749],{"type":3140,"value":3715},{"type":3135,"tag":3505,"props":7751,"children":7752},{"class":3507,"line":3571},[7753,7757,7761,7765,7769,7773,7777,7781],{"type":3135,"tag":3505,"props":7754,"children":7755},{"style":3670},[7756],{"type":3140,"value":4772},{"type":3135,"tag":3505,"props":7758,"children":7759},{"style":3679},[7760],{"type":3140,"value":4965},{"type":3135,"tag":3505,"props":7762,"children":7763},{"style":3670},[7764],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":7766,"children":7767},{"style":3670},[7768],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":7770,"children":7771},{"style":3670},[7772],{"type":3140,"value":4213},{"type":3135,"tag":3505,"props":7774,"children":7775},{"style":3526},[7776],{"type":3140,"value":4982},{"type":3135,"tag":3505,"props":7778,"children":7779},{"style":3670},[7780],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":7782,"children":7783},{"style":3670},[7784],{"type":3140,"value":3715},{"type":3135,"tag":3505,"props":7786,"children":7787},{"class":3507,"line":3579},[7788,7792,7796,7800,7804],{"type":3135,"tag":3505,"props":7789,"children":7790},{"style":3670},[7791],{"type":3140,"value":4772},{"type":3135,"tag":3505,"props":7793,"children":7794},{"style":3679},[7795],{"type":3140,"value":5002},{"type":3135,"tag":3505,"props":7797,"children":7798},{"style":3670},[7799],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":7801,"children":7802},{"style":3670},[7803],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":7805,"children":7806},{"style":3945},[7807],{"type":3140,"value":5015},{"type":3135,"tag":3505,"props":7809,"children":7810},{"class":3507,"line":3124},[7811],{"type":3135,"tag":3505,"props":7812,"children":7813},{"style":3670},[7814],{"type":3140,"value":4807},{"type":3135,"tag":3505,"props":7816,"children":7817},{"class":3507,"line":3775},[7818],{"type":3135,"tag":3505,"props":7819,"children":7820},{"style":3670},[7821],{"type":3140,"value":4815},{"type":3135,"tag":3505,"props":7823,"children":7824},{"class":3507,"line":3784},[7825],{"type":3135,"tag":3505,"props":7826,"children":7827},{"style":3670},[7828],{"type":3140,"value":4478},{"type":3135,"tag":3505,"props":7830,"children":7831},{"class":3507,"line":3793},[7832],{"type":3135,"tag":3505,"props":7833,"children":7834},{"style":3670},[7835],{"type":3140,"value":4486},{"type":3135,"tag":3142,"props":7837,"children":7838},{},[7839,7841,7848],{"type":3140,"value":7840},"See the ",{"type":3135,"tag":3146,"props":7842,"children":7845},{"href":7843,"rel":7844},"https:\u002F\u002Funstorage.unjs.io\u002Fdrivers\u002Fredis",[3150],[7846],{"type":3140,"value":7847},"unstorage Redis driver docs",{"type":3140,"value":7849}," for all available options.",{"type":3135,"tag":3481,"props":7851,"children":7853},{"id":7852},"when-memory-fs-is-acceptable",[7854,7856,7861,7862,7867],{"type":3140,"value":7855},"When ",{"type":3135,"tag":3292,"props":7857,"children":7859},{"className":7858},[],[7860],{"type":3140,"value":4794},{"type":3140,"value":7499},{"type":3135,"tag":3292,"props":7863,"children":7865},{"className":7864},[],[7866],{"type":3140,"value":7469},{"type":3140,"value":7868}," is acceptable",{"type":3135,"tag":3142,"props":7870,"children":7871},{},[7872,7873,7878,7879,7884],{"type":3140,"value":4505},{"type":3135,"tag":3292,"props":7874,"children":7876},{"className":7875},[],[7877],{"type":3140,"value":4794},{"type":3140,"value":3391},{"type":3135,"tag":3292,"props":7880,"children":7882},{"className":7881},[],[7883],{"type":3140,"value":7469},{"type":3140,"value":7885}," drivers are fine for:",{"type":3135,"tag":3192,"props":7887,"children":7888},{},[7889,7894,7899],{"type":3135,"tag":3196,"props":7890,"children":7891},{},[7892],{"type":3140,"value":7893},"Single-instance deployments",{"type":3135,"tag":3196,"props":7895,"children":7896},{},[7897],{"type":3140,"value":7898},"Development environments",{"type":3135,"tag":3196,"props":7900,"children":7901},{},[7902],{"type":3140,"value":7903},"Low-traffic applications where occasional race conditions are acceptable",{"type":3135,"tag":3142,"props":7905,"children":7906},{},[7907],{"type":3140,"value":7908},"For everything else, use Redis.",{"type":3135,"tag":3218,"props":7910,"children":7912},{"id":7911},"fail2ban-integration",[7913],{"type":3140,"value":7914},"Fail2ban Integration",{"type":3135,"tag":3142,"props":7916,"children":7917},{},[7918,7920,7925,7927,7933],{"type":3140,"value":7919},"When a user exceeds the rate limit and gets banned, ",{"type":3135,"tag":3292,"props":7921,"children":7923},{"className":7922},[],[7924],{"type":3140,"value":3076},{"type":3140,"value":7926}," can write ban events to the log file in a ",{"type":3135,"tag":3292,"props":7928,"children":7930},{"className":7929},[],[7931],{"type":3140,"value":7932},"fail2ban",{"type":3140,"value":7934},"-compatible format. You can then configure fail2ban to watch these logs and automatically block the IP at the firewall level.",{"type":3135,"tag":3481,"props":7936,"children":7938},{"id":7937},"setup",[7939],{"type":3140,"value":7940},"Setup",{"type":3135,"tag":3142,"props":7942,"children":7943},{},[7944,7946,7952,7953,7958,7960,7966],{"type":3140,"value":7945},"Enable fail2ban logging by setting ",{"type":3135,"tag":3292,"props":7947,"children":7949},{"className":7948},[],[7950],{"type":3140,"value":7951},"log.fail2ban",{"type":3140,"value":4648},{"type":3135,"tag":3292,"props":7954,"children":7956},{"className":7955},[],[7957],{"type":3140,"value":4543},{"type":3140,"value":7959}," and configuring the ",{"type":3135,"tag":3292,"props":7961,"children":7963},{"className":7962},[],[7964],{"type":3140,"value":7965},"log.path",{"type":3140,"value":3687},{"type":3135,"tag":3495,"props":7968,"children":7970},{"className":3635,"code":7969,"language":3637,"meta":3079,"style":3079},"export default defineNuxtConfig({\n  modules: [\"nuxt-api-shield\"],\n  nuxtApiShield: {\n    log: {\n      path: \"\u002Fvar\u002Flog\u002Fnuxt-api-shield\", \u002F\u002F required — must be set\n      attempts: 1,                       \u002F\u002F optional — threshold for regular request logging\n      fail2ban: true,                     \u002F\u002F enable fail2ban format\n    },\n  },\n})\n",[7971],{"type":3135,"tag":3292,"props":7972,"children":7973},{"__ignoreMap":3079},[7974,7997,8032,8047,8063,8097,8123,8148,8155,8162],{"type":3135,"tag":3505,"props":7975,"children":7976},{"class":3507,"line":3107},[7977,7981,7985,7989,7993],{"type":3135,"tag":3505,"props":7978,"children":7979},{"style":3647},[7980],{"type":3140,"value":3650},{"type":3135,"tag":3505,"props":7982,"children":7983},{"style":3647},[7984],{"type":3140,"value":3655},{"type":3135,"tag":3505,"props":7986,"children":7987},{"style":3658},[7988],{"type":3140,"value":3661},{"type":3135,"tag":3505,"props":7990,"children":7991},{"style":3664},[7992],{"type":3140,"value":3667},{"type":3135,"tag":3505,"props":7994,"children":7995},{"style":3670},[7996],{"type":3140,"value":3673},{"type":3135,"tag":3505,"props":7998,"children":7999},{"class":3507,"line":3103},[8000,8004,8008,8012,8016,8020,8024,8028],{"type":3135,"tag":3505,"props":8001,"children":8002},{"style":3679},[8003],{"type":3140,"value":3682},{"type":3135,"tag":3505,"props":8005,"children":8006},{"style":3670},[8007],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":8009,"children":8010},{"style":3664},[8011],{"type":3140,"value":3692},{"type":3135,"tag":3505,"props":8013,"children":8014},{"style":3670},[8015],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":8017,"children":8018},{"style":3526},[8019],{"type":3140,"value":3076},{"type":3135,"tag":3505,"props":8021,"children":8022},{"style":3670},[8023],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":8025,"children":8026},{"style":3664},[8027],{"type":3140,"value":3710},{"type":3135,"tag":3505,"props":8029,"children":8030},{"style":3670},[8031],{"type":3140,"value":3715},{"type":3135,"tag":3505,"props":8033,"children":8034},{"class":3507,"line":3537},[8035,8039,8043],{"type":3135,"tag":3505,"props":8036,"children":8037},{"style":3679},[8038],{"type":3140,"value":3723},{"type":3135,"tag":3505,"props":8040,"children":8041},{"style":3670},[8042],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":8044,"children":8045},{"style":3670},[8046],{"type":3140,"value":3732},{"type":3135,"tag":3505,"props":8048,"children":8049},{"class":3507,"line":3546},[8050,8055,8059],{"type":3135,"tag":3505,"props":8051,"children":8052},{"style":3679},[8053],{"type":3140,"value":8054},"    log",{"type":3135,"tag":3505,"props":8056,"children":8057},{"style":3670},[8058],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":8060,"children":8061},{"style":3670},[8062],{"type":3140,"value":3732},{"type":3135,"tag":3505,"props":8064,"children":8065},{"class":3507,"line":3099},[8066,8071,8075,8079,8084,8088,8092],{"type":3135,"tag":3505,"props":8067,"children":8068},{"style":3679},[8069],{"type":3140,"value":8070},"      path",{"type":3135,"tag":3505,"props":8072,"children":8073},{"style":3670},[8074],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":8076,"children":8077},{"style":3670},[8078],{"type":3140,"value":4213},{"type":3135,"tag":3505,"props":8080,"children":8081},{"style":3526},[8082],{"type":3140,"value":8083},"\u002Fvar\u002Flog\u002Fnuxt-api-shield",{"type":3135,"tag":3505,"props":8085,"children":8086},{"style":3670},[8087],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":8089,"children":8090},{"style":3670},[8091],{"type":3140,"value":3907},{"type":3135,"tag":3505,"props":8093,"children":8094},{"style":3511},[8095],{"type":3140,"value":8096}," \u002F\u002F required — must be set\n",{"type":3135,"tag":3505,"props":8098,"children":8099},{"class":3507,"line":3571},[8100,8105,8109,8114,8118],{"type":3135,"tag":3505,"props":8101,"children":8102},{"style":3679},[8103],{"type":3140,"value":8104},"      attempts",{"type":3135,"tag":3505,"props":8106,"children":8107},{"style":3670},[8108],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":8110,"children":8111},{"style":3945},[8112],{"type":3140,"value":8113}," 1",{"type":3135,"tag":3505,"props":8115,"children":8116},{"style":3670},[8117],{"type":3140,"value":3907},{"type":3135,"tag":3505,"props":8119,"children":8120},{"style":3511},[8121],{"type":3140,"value":8122},"                       \u002F\u002F optional — threshold for regular request logging\n",{"type":3135,"tag":3505,"props":8124,"children":8125},{"class":3507,"line":3579},[8126,8131,8135,8139,8143],{"type":3135,"tag":3505,"props":8127,"children":8128},{"style":3679},[8129],{"type":3140,"value":8130},"      fail2ban",{"type":3135,"tag":3505,"props":8132,"children":8133},{"style":3670},[8134],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":8136,"children":8137},{"style":3999},[8138],{"type":3140,"value":4192},{"type":3135,"tag":3505,"props":8140,"children":8141},{"style":3670},[8142],{"type":3140,"value":3907},{"type":3135,"tag":3505,"props":8144,"children":8145},{"style":3511},[8146],{"type":3140,"value":8147},"                     \u002F\u002F enable fail2ban format\n",{"type":3135,"tag":3505,"props":8149,"children":8150},{"class":3507,"line":3124},[8151],{"type":3135,"tag":3505,"props":8152,"children":8153},{"style":3670},[8154],{"type":3140,"value":3781},{"type":3135,"tag":3505,"props":8156,"children":8157},{"class":3507,"line":3775},[8158],{"type":3135,"tag":3505,"props":8159,"children":8160},{"style":3670},[8161],{"type":3140,"value":4028},{"type":3135,"tag":3505,"props":8163,"children":8164},{"class":3507,"line":3784},[8165,8169],{"type":3135,"tag":3505,"props":8166,"children":8167},{"style":3670},[8168],{"type":3140,"value":4037},{"type":3135,"tag":3505,"props":8170,"children":8171},{"style":3664},[8172],{"type":3140,"value":8173},")\n",{"type":3135,"tag":3142,"props":8175,"children":8176},{},[8177],{"type":3140,"value":8178},"When enabled, every ban event writes a line like:",{"type":3135,"tag":3495,"props":8180,"children":8184},{"className":8181,"code":8183,"language":3140},[8182],"language-text","2026-06-21 12:34:56,789 nuxt-api-shield ban 192.168.1.100 — \u002Fapi\u002Fv3\u002Flogin exceeded limit (12 requests in 108s)\n",[8185],{"type":3135,"tag":3292,"props":8186,"children":8187},{"__ignoreMap":3079},[8188],{"type":3140,"value":8183},{"type":3135,"tag":3481,"props":8190,"children":8192},{"id":8191},"fail2ban-filter-configuration",[8193],{"type":3140,"value":8194},"Fail2ban filter configuration",{"type":3135,"tag":3142,"props":8196,"children":8197},{},[8198,8200,8206],{"type":3140,"value":8199},"Create ",{"type":3135,"tag":3292,"props":8201,"children":8203},{"className":8202},[],[8204],{"type":3140,"value":8205},"\u002Fetc\u002Ffail2ban\u002Ffilter.d\u002Fnuxt-api-shield.conf",{"type":3140,"value":3687},{"type":3135,"tag":3495,"props":8208,"children":8212},{"className":8209,"code":8210,"language":8211,"meta":3079,"style":3079},"language-ini shiki shiki-themes material-theme-lighter material-theme-lighter material-theme-palenight","[Definition]\nfailregex = ^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2},\\d{3} nuxt-api-shield ban \u003CHOST>\n","ini",[8213],{"type":3135,"tag":3292,"props":8214,"children":8215},{"__ignoreMap":3079},[8216,8224],{"type":3135,"tag":3505,"props":8217,"children":8218},{"class":3507,"line":3107},[8219],{"type":3135,"tag":3505,"props":8220,"children":8221},{"style":3670},[8222],{"type":3140,"value":8223},"[Definition]\n",{"type":3135,"tag":3505,"props":8225,"children":8226},{"class":3507,"line":3103},[8227,8232,8236],{"type":3135,"tag":3505,"props":8228,"children":8229},{"style":3679},[8230],{"type":3140,"value":8231},"failregex",{"type":3135,"tag":3505,"props":8233,"children":8234},{"style":3670},[8235],{"type":3140,"value":5618},{"type":3135,"tag":3505,"props":8237,"children":8238},{"style":3664},[8239],{"type":3140,"value":8240}," ^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2},\\d{3} nuxt-api-shield ban \u003CHOST>\n",{"type":3135,"tag":3481,"props":8242,"children":8244},{"id":8243},"jail-configuration",[8245],{"type":3140,"value":8246},"Jail configuration",{"type":3135,"tag":3142,"props":8248,"children":8249},{},[8250,8252,8258],{"type":3140,"value":8251},"Add a jail entry in ",{"type":3135,"tag":3292,"props":8253,"children":8255},{"className":8254},[],[8256],{"type":3140,"value":8257},"\u002Fetc\u002Ffail2ban\u002Fjail.local",{"type":3140,"value":3687},{"type":3135,"tag":3495,"props":8260,"children":8262},{"className":8209,"code":8261,"language":8211,"meta":3079,"style":3079},"[nuxt-api-shield]\nenabled  = true\nfilter   = nuxt-api-shield\nlogpath  = \u002Fvar\u002Flog\u002Fnuxt-api-shield\u002Fshield-*.log\nport     = http,https\nbanaction = iptables-multiport\nmaxretry = 1\nfindtime = 1\nbantime  = 3600\n",[8263],{"type":3135,"tag":3292,"props":8264,"children":8265},{"__ignoreMap":3079},[8266,8274,8291,8308,8325,8342,8359,8376,8392],{"type":3135,"tag":3505,"props":8267,"children":8268},{"class":3507,"line":3107},[8269],{"type":3135,"tag":3505,"props":8270,"children":8271},{"style":3670},[8272],{"type":3140,"value":8273},"[nuxt-api-shield]\n",{"type":3135,"tag":3505,"props":8275,"children":8276},{"class":3507,"line":3103},[8277,8282,8287],{"type":3135,"tag":3505,"props":8278,"children":8279},{"style":3679},[8280],{"type":3140,"value":8281},"enabled",{"type":3135,"tag":3505,"props":8283,"children":8284},{"style":3670},[8285],{"type":3140,"value":8286},"  =",{"type":3135,"tag":3505,"props":8288,"children":8289},{"style":3664},[8290],{"type":3140,"value":5206},{"type":3135,"tag":3505,"props":8292,"children":8293},{"class":3507,"line":3537},[8294,8299,8304],{"type":3135,"tag":3505,"props":8295,"children":8296},{"style":3679},[8297],{"type":3140,"value":8298},"filter",{"type":3135,"tag":3505,"props":8300,"children":8301},{"style":3670},[8302],{"type":3140,"value":8303},"   =",{"type":3135,"tag":3505,"props":8305,"children":8306},{"style":3664},[8307],{"type":3140,"value":3534},{"type":3135,"tag":3505,"props":8309,"children":8310},{"class":3507,"line":3546},[8311,8316,8320],{"type":3135,"tag":3505,"props":8312,"children":8313},{"style":3679},[8314],{"type":3140,"value":8315},"logpath",{"type":3135,"tag":3505,"props":8317,"children":8318},{"style":3670},[8319],{"type":3140,"value":8286},{"type":3135,"tag":3505,"props":8321,"children":8322},{"style":3664},[8323],{"type":3140,"value":8324}," \u002Fvar\u002Flog\u002Fnuxt-api-shield\u002Fshield-*.log\n",{"type":3135,"tag":3505,"props":8326,"children":8327},{"class":3507,"line":3099},[8328,8332,8337],{"type":3135,"tag":3505,"props":8329,"children":8330},{"style":3679},[8331],{"type":3140,"value":5002},{"type":3135,"tag":3505,"props":8333,"children":8334},{"style":3670},[8335],{"type":3140,"value":8336},"     =",{"type":3135,"tag":3505,"props":8338,"children":8339},{"style":3664},[8340],{"type":3140,"value":8341}," http,https\n",{"type":3135,"tag":3505,"props":8343,"children":8344},{"class":3507,"line":3571},[8345,8350,8354],{"type":3135,"tag":3505,"props":8346,"children":8347},{"style":3679},[8348],{"type":3140,"value":8349},"banaction",{"type":3135,"tag":3505,"props":8351,"children":8352},{"style":3670},[8353],{"type":3140,"value":5618},{"type":3135,"tag":3505,"props":8355,"children":8356},{"style":3664},[8357],{"type":3140,"value":8358}," iptables-multiport\n",{"type":3135,"tag":3505,"props":8360,"children":8361},{"class":3507,"line":3579},[8362,8367,8371],{"type":3135,"tag":3505,"props":8363,"children":8364},{"style":3679},[8365],{"type":3140,"value":8366},"maxretry",{"type":3135,"tag":3505,"props":8368,"children":8369},{"style":3670},[8370],{"type":3140,"value":5618},{"type":3135,"tag":3505,"props":8372,"children":8373},{"style":3664},[8374],{"type":3140,"value":8375}," 1\n",{"type":3135,"tag":3505,"props":8377,"children":8378},{"class":3507,"line":3124},[8379,8384,8388],{"type":3135,"tag":3505,"props":8380,"children":8381},{"style":3679},[8382],{"type":3140,"value":8383},"findtime",{"type":3135,"tag":3505,"props":8385,"children":8386},{"style":3670},[8387],{"type":3140,"value":5618},{"type":3135,"tag":3505,"props":8389,"children":8390},{"style":3664},[8391],{"type":3140,"value":8375},{"type":3135,"tag":3505,"props":8393,"children":8394},{"class":3507,"line":3775},[8395,8400,8404],{"type":3135,"tag":3505,"props":8396,"children":8397},{"style":3679},[8398],{"type":3140,"value":8399},"bantime",{"type":3135,"tag":3505,"props":8401,"children":8402},{"style":3670},[8403],{"type":3140,"value":8286},{"type":3135,"tag":3505,"props":8405,"children":8406},{"style":3664},[8407],{"type":3140,"value":8408}," 3600\n",{"type":3135,"tag":3142,"props":8410,"children":8411},{},[8412,8414,8419,8421,8427,8429,8435,8436,8442,8444,8449],{"type":3140,"value":8413},"Since ",{"type":3135,"tag":3292,"props":8415,"children":8417},{"className":8416},[],[8418],{"type":3140,"value":3076},{"type":3140,"value":8420}," already applies its own ban logic (configurable via ",{"type":3135,"tag":3292,"props":8422,"children":8424},{"className":8423},[],[8425],{"type":3140,"value":8426},"limit.ban",{"type":3140,"value":8428},"), set ",{"type":3135,"tag":3292,"props":8430,"children":8432},{"className":8431},[],[8433],{"type":3140,"value":8434},"maxretry = 1",{"type":3140,"value":3391},{"type":3135,"tag":3292,"props":8437,"children":8439},{"className":8438},[],[8440],{"type":3140,"value":8441},"findtime = 1",{"type":3140,"value":8443}," so fail2ban acts immediately on each ban log entry. Adjust ",{"type":3135,"tag":3292,"props":8445,"children":8447},{"className":8446},[],[8448],{"type":3140,"value":8399},{"type":3140,"value":8450}," to match or extend your module-level ban duration.",{"type":3135,"tag":3142,"props":8452,"children":8453},{},[8454],{"type":3140,"value":8455},"Restart fail2ban after adding the config:",{"type":3135,"tag":3495,"props":8457,"children":8459},{"className":3497,"code":8458,"language":3499,"meta":3079,"style":3079},"sudo systemctl restart fail2ban\n",[8460],{"type":3135,"tag":3292,"props":8461,"children":8462},{"__ignoreMap":3079},[8463],{"type":3135,"tag":3505,"props":8464,"children":8465},{"class":3507,"line":3107},[8466,8471,8476,8481],{"type":3135,"tag":3505,"props":8467,"children":8468},{"style":3520},[8469],{"type":3140,"value":8470},"sudo",{"type":3135,"tag":3505,"props":8472,"children":8473},{"style":3526},[8474],{"type":3140,"value":8475}," systemctl",{"type":3135,"tag":3505,"props":8477,"children":8478},{"style":3526},[8479],{"type":3140,"value":8480}," restart",{"type":3135,"tag":3505,"props":8482,"children":8483},{"style":3526},[8484],{"type":3140,"value":8485}," fail2ban\n",{"type":3135,"tag":8487,"props":8488,"children":8489},"blockquote",{},[8490],{"type":3135,"tag":3142,"props":8491,"children":8492},{},[8493,8498,8500,8505],{"type":3135,"tag":3230,"props":8494,"children":8495},{},[8496],{"type":3140,"value":8497},"Note:",{"type":3140,"value":8499}," The ",{"type":3135,"tag":3292,"props":8501,"children":8503},{"className":8502},[],[8504],{"type":3140,"value":7965},{"type":3140,"value":8506}," directory must be readable by the fail2ban service. Ensure permissions are set accordingly.",{"type":3135,"tag":3218,"props":8508,"children":8510},{"id":8509},"typescript-types",[8511],{"type":3140,"value":8512},"TypeScript Types",{"type":3135,"tag":3142,"props":8514,"children":8515},{},[8516],{"type":3140,"value":8517},"The module exports TypeScript types that you can use in your application:",{"type":3135,"tag":3481,"props":8519,"children":8521},{"id":8520},"ratelimit-type",[8522,8528],{"type":3135,"tag":3292,"props":8523,"children":8525},{"className":8524},[],[8526],{"type":3140,"value":8527},"RateLimit",{"type":3140,"value":8529}," Type",{"type":3135,"tag":3142,"props":8531,"children":8532},{},[8533,8534,8539],{"type":3140,"value":4505},{"type":3135,"tag":3292,"props":8535,"children":8537},{"className":8536},[],[8538],{"type":3140,"value":8527},{"type":3140,"value":8540}," type represents the structure of rate limit data stored for each IP address:",{"type":3135,"tag":3495,"props":8542,"children":8544},{"className":5405,"code":8543,"language":5407,"meta":3079,"style":3079},"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",[8545],{"type":3135,"tag":3292,"props":8546,"children":8547},{"__ignoreMap":3079},[8548,8591,8598,8606,8614,8627,8640],{"type":3135,"tag":3505,"props":8549,"children":8550},{"class":3507,"line":3107},[8551,8555,8559,8563,8567,8571,8575,8579,8583,8587],{"type":3135,"tag":3505,"props":8552,"children":8553},{"style":3647},[8554],{"type":3140,"value":5419},{"type":3135,"tag":3505,"props":8556,"children":8557},{"style":3647},[8558],{"type":3140,"value":6160},{"type":3135,"tag":3505,"props":8560,"children":8561},{"style":3670},[8562],{"type":3140,"value":5424},{"type":3135,"tag":3505,"props":8564,"children":8565},{"style":3664},[8566],{"type":3140,"value":6169},{"type":3135,"tag":3505,"props":8568,"children":8569},{"style":3670},[8570],{"type":3140,"value":5434},{"type":3135,"tag":3505,"props":8572,"children":8573},{"style":3647},[8574],{"type":3140,"value":5439},{"type":3135,"tag":3505,"props":8576,"children":8577},{"style":3670},[8578],{"type":3140,"value":4213},{"type":3135,"tag":3505,"props":8580,"children":8581},{"style":3526},[8582],{"type":3140,"value":3076},{"type":3135,"tag":3505,"props":8584,"children":8585},{"style":3670},[8586],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":8588,"children":8589},{"style":3670},[8590],{"type":3140,"value":4047},{"type":3135,"tag":3505,"props":8592,"children":8593},{"class":3507,"line":3103},[8594],{"type":3135,"tag":3505,"props":8595,"children":8596},{"emptyLinePlaceholder":1208},[8597],{"type":3140,"value":3543},{"type":3135,"tag":3505,"props":8599,"children":8600},{"class":3507,"line":3537},[8601],{"type":3135,"tag":3505,"props":8602,"children":8603},{"style":3511},[8604],{"type":3140,"value":8605},"\u002F\u002F RateLimit structure:\n",{"type":3135,"tag":3505,"props":8607,"children":8608},{"class":3507,"line":3546},[8609],{"type":3135,"tag":3505,"props":8610,"children":8611},{"style":3511},[8612],{"type":3140,"value":8613},"\u002F\u002F {\n",{"type":3135,"tag":3505,"props":8615,"children":8616},{"class":3507,"line":3099},[8617,8622],{"type":3135,"tag":3505,"props":8618,"children":8619},{"style":3511},[8620],{"type":3140,"value":8621},"\u002F\u002F   count: number",{"type":3135,"tag":3505,"props":8623,"children":8624},{"style":3511},[8625],{"type":3140,"value":8626},"  \u002F\u002F Number of requests made\n",{"type":3135,"tag":3505,"props":8628,"children":8629},{"class":3507,"line":3571},[8630,8635],{"type":3135,"tag":3505,"props":8631,"children":8632},{"style":3511},[8633],{"type":3140,"value":8634},"\u002F\u002F   time: number",{"type":3135,"tag":3505,"props":8636,"children":8637},{"style":3511},[8638],{"type":3140,"value":8639},"   \u002F\u002F Timestamp of the last request\n",{"type":3135,"tag":3505,"props":8641,"children":8642},{"class":3507,"line":3579},[8643],{"type":3135,"tag":3505,"props":8644,"children":8645},{"style":3511},[8646],{"type":3140,"value":8647},"\u002F\u002F }\n",{"type":3135,"tag":3142,"props":8649,"children":8650},{},[8651],{"type":3135,"tag":3230,"props":8652,"children":8653},{},[8654],{"type":3140,"value":8655},"Usage Example:",{"type":3135,"tag":3495,"props":8657,"children":8659},{"className":5405,"code":8658,"language":5407,"meta":3079,"style":3079},"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",[8660],{"type":3135,"tag":3292,"props":8661,"children":8662},{"__ignoreMap":3079},[8663,8706,8745,8752,8797,8830,8891,8898,8915,8982,9063],{"type":3135,"tag":3505,"props":8664,"children":8665},{"class":3507,"line":3107},[8666,8670,8674,8678,8682,8686,8690,8694,8698,8702],{"type":3135,"tag":3505,"props":8667,"children":8668},{"style":3647},[8669],{"type":3140,"value":5419},{"type":3135,"tag":3505,"props":8671,"children":8672},{"style":3647},[8673],{"type":3140,"value":6160},{"type":3135,"tag":3505,"props":8675,"children":8676},{"style":3670},[8677],{"type":3140,"value":5424},{"type":3135,"tag":3505,"props":8679,"children":8680},{"style":3664},[8681],{"type":3140,"value":6169},{"type":3135,"tag":3505,"props":8683,"children":8684},{"style":3670},[8685],{"type":3140,"value":5434},{"type":3135,"tag":3505,"props":8687,"children":8688},{"style":3647},[8689],{"type":3140,"value":5439},{"type":3135,"tag":3505,"props":8691,"children":8692},{"style":3670},[8693],{"type":3140,"value":4213},{"type":3135,"tag":3505,"props":8695,"children":8696},{"style":3526},[8697],{"type":3140,"value":3076},{"type":3135,"tag":3505,"props":8699,"children":8700},{"style":3670},[8701],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":8703,"children":8704},{"style":3670},[8705],{"type":3140,"value":4047},{"type":3135,"tag":3505,"props":8707,"children":8708},{"class":3507,"line":3103},[8709,8713,8717,8721,8725,8729,8733,8737,8741],{"type":3135,"tag":3505,"props":8710,"children":8711},{"style":3647},[8712],{"type":3140,"value":5419},{"type":3135,"tag":3505,"props":8714,"children":8715},{"style":3670},[8716],{"type":3140,"value":5424},{"type":3135,"tag":3505,"props":8718,"children":8719},{"style":3664},[8720],{"type":3140,"value":5623},{"type":3135,"tag":3505,"props":8722,"children":8723},{"style":3670},[8724],{"type":3140,"value":5434},{"type":3135,"tag":3505,"props":8726,"children":8727},{"style":3647},[8728],{"type":3140,"value":5439},{"type":3135,"tag":3505,"props":8730,"children":8731},{"style":3670},[8732],{"type":3140,"value":4213},{"type":3135,"tag":3505,"props":8734,"children":8735},{"style":3526},[8736],{"type":3140,"value":5448},{"type":3135,"tag":3505,"props":8738,"children":8739},{"style":3670},[8740],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":8742,"children":8743},{"style":3670},[8744],{"type":3140,"value":4047},{"type":3135,"tag":3505,"props":8746,"children":8747},{"class":3507,"line":3537},[8748],{"type":3135,"tag":3505,"props":8749,"children":8750},{"emptyLinePlaceholder":1208},[8751],{"type":3140,"value":3543},{"type":3135,"tag":3505,"props":8753,"children":8754},{"class":3507,"line":3546},[8755,8759,8764,8769,8773,8777,8781,8785,8789,8793],{"type":3135,"tag":3505,"props":8756,"children":8757},{"style":4692},[8758],{"type":3140,"value":5776},{"type":3135,"tag":3505,"props":8760,"children":8761},{"style":3664},[8762],{"type":3140,"value":8763}," shieldStorage ",{"type":3135,"tag":3505,"props":8765,"children":8766},{"style":3670},[8767],{"type":3140,"value":8768},"=",{"type":3135,"tag":3505,"props":8770,"children":8771},{"style":3658},[8772],{"type":3140,"value":5623},{"type":3135,"tag":3505,"props":8774,"children":8775},{"style":3664},[8776],{"type":3140,"value":3667},{"type":3135,"tag":3505,"props":8778,"children":8779},{"style":3670},[8780],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":8782,"children":8783},{"style":3526},[8784],{"type":3140,"value":4663},{"type":3135,"tag":3505,"props":8786,"children":8787},{"style":3670},[8788],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":8790,"children":8791},{"style":3664},[8792],{"type":3140,"value":4042},{"type":3135,"tag":3505,"props":8794,"children":8795},{"style":3670},[8796],{"type":3140,"value":4047},{"type":3135,"tag":3505,"props":8798,"children":8799},{"class":3507,"line":3099},[8800,8804,8809,8813,8817,8822,8826],{"type":3135,"tag":3505,"props":8801,"children":8802},{"style":4692},[8803],{"type":3140,"value":5776},{"type":3135,"tag":3505,"props":8805,"children":8806},{"style":3664},[8807],{"type":3140,"value":8808}," ipKey ",{"type":3135,"tag":3505,"props":8810,"children":8811},{"style":3670},[8812],{"type":3140,"value":8768},{"type":3135,"tag":3505,"props":8814,"children":8815},{"style":3670},[8816],{"type":3140,"value":4213},{"type":3135,"tag":3505,"props":8818,"children":8819},{"style":3526},[8820],{"type":3140,"value":8821},"ip:192.168.1.1",{"type":3135,"tag":3505,"props":8823,"children":8824},{"style":3670},[8825],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":8827,"children":8828},{"style":3670},[8829],{"type":3140,"value":4047},{"type":3135,"tag":3505,"props":8831,"children":8832},{"class":3507,"line":3571},[8833,8837,8842,8846,8850,8854,8858,8862,8866,8871,8875,8879,8883,8887],{"type":3135,"tag":3505,"props":8834,"children":8835},{"style":4692},[8836],{"type":3140,"value":5776},{"type":3135,"tag":3505,"props":8838,"children":8839},{"style":3664},[8840],{"type":3140,"value":8841}," entry ",{"type":3135,"tag":3505,"props":8843,"children":8844},{"style":3670},[8845],{"type":3140,"value":8768},{"type":3135,"tag":3505,"props":8847,"children":8848},{"style":3664},[8849],{"type":3140,"value":5771},{"type":3135,"tag":3505,"props":8851,"children":8852},{"style":3647},[8853],{"type":3140,"value":6900},{"type":3135,"tag":3505,"props":8855,"children":8856},{"style":3664},[8857],{"type":3140,"value":5613},{"type":3135,"tag":3505,"props":8859,"children":8860},{"style":3670},[8861],{"type":3140,"value":4634},{"type":3135,"tag":3505,"props":8863,"children":8864},{"style":3658},[8865],{"type":3140,"value":5833},{"type":3135,"tag":3505,"props":8867,"children":8868},{"style":3664},[8869],{"type":3140,"value":8870},"(ipKey)) ",{"type":3135,"tag":3505,"props":8872,"children":8873},{"style":3647},[8874],{"type":3140,"value":6929},{"type":3135,"tag":3505,"props":8876,"children":8877},{"style":3520},[8878],{"type":3140,"value":6169},{"type":3135,"tag":3505,"props":8880,"children":8881},{"style":3670},[8882],{"type":3140,"value":6938},{"type":3135,"tag":3505,"props":8884,"children":8885},{"style":3520},[8886],{"type":3140,"value":6943},{"type":3135,"tag":3505,"props":8888,"children":8889},{"style":3670},[8890],{"type":3140,"value":4047},{"type":3135,"tag":3505,"props":8892,"children":8893},{"class":3507,"line":3579},[8894],{"type":3135,"tag":3505,"props":8895,"children":8896},{"emptyLinePlaceholder":1208},[8897],{"type":3140,"value":3543},{"type":3135,"tag":3505,"props":8899,"children":8900},{"class":3507,"line":3124},[8901,8906,8911],{"type":3135,"tag":3505,"props":8902,"children":8903},{"style":3647},[8904],{"type":3140,"value":8905},"if",{"type":3135,"tag":3505,"props":8907,"children":8908},{"style":3664},[8909],{"type":3140,"value":8910}," (entry) ",{"type":3135,"tag":3505,"props":8912,"children":8913},{"style":3670},[8914],{"type":3140,"value":3673},{"type":3135,"tag":3505,"props":8916,"children":8917},{"class":3507,"line":3775},[8918,8923,8927,8931,8935,8939,8944,8948,8952,8956,8961,8965,8970,8974,8978],{"type":3135,"tag":3505,"props":8919,"children":8920},{"style":3664},[8921],{"type":3140,"value":8922},"  console",{"type":3135,"tag":3505,"props":8924,"children":8925},{"style":3670},[8926],{"type":3140,"value":4634},{"type":3135,"tag":3505,"props":8928,"children":8929},{"style":3658},[8930],{"type":3140,"value":5966},{"type":3135,"tag":3505,"props":8932,"children":8933},{"style":3679},[8934],{"type":3140,"value":3667},{"type":3135,"tag":3505,"props":8936,"children":8937},{"style":3670},[8938],{"type":3140,"value":5975},{"type":3135,"tag":3505,"props":8940,"children":8941},{"style":3526},[8942],{"type":3140,"value":8943},"IP has made ",{"type":3135,"tag":3505,"props":8945,"children":8946},{"style":3670},[8947],{"type":3140,"value":5985},{"type":3135,"tag":3505,"props":8949,"children":8950},{"style":3664},[8951],{"type":3140,"value":6980},{"type":3135,"tag":3505,"props":8953,"children":8954},{"style":3670},[8955],{"type":3140,"value":4634},{"type":3135,"tag":3505,"props":8957,"children":8958},{"style":3664},[8959],{"type":3140,"value":8960},"count",{"type":3135,"tag":3505,"props":8962,"children":8963},{"style":3670},[8964],{"type":3140,"value":4037},{"type":3135,"tag":3505,"props":8966,"children":8967},{"style":3526},[8968],{"type":3140,"value":8969}," requests",{"type":3135,"tag":3505,"props":8971,"children":8972},{"style":3670},[8973],{"type":3140,"value":5975},{"type":3135,"tag":3505,"props":8975,"children":8976},{"style":3679},[8977],{"type":3140,"value":4042},{"type":3135,"tag":3505,"props":8979,"children":8980},{"style":3670},[8981],{"type":3140,"value":4047},{"type":3135,"tag":3505,"props":8983,"children":8984},{"class":3507,"line":3784},[8985,8989,8993,8997,9001,9005,9010,9014,9019,9023,9028,9032,9037,9041,9046,9050,9055,9059],{"type":3135,"tag":3505,"props":8986,"children":8987},{"style":3664},[8988],{"type":3140,"value":8922},{"type":3135,"tag":3505,"props":8990,"children":8991},{"style":3670},[8992],{"type":3140,"value":4634},{"type":3135,"tag":3505,"props":8994,"children":8995},{"style":3658},[8996],{"type":3140,"value":5966},{"type":3135,"tag":3505,"props":8998,"children":8999},{"style":3679},[9000],{"type":3140,"value":3667},{"type":3135,"tag":3505,"props":9002,"children":9003},{"style":3670},[9004],{"type":3140,"value":5975},{"type":3135,"tag":3505,"props":9006,"children":9007},{"style":3526},[9008],{"type":3140,"value":9009},"Last request at: ",{"type":3135,"tag":3505,"props":9011,"children":9012},{"style":3670},[9013],{"type":3140,"value":5985},{"type":3135,"tag":3505,"props":9015,"children":9016},{"style":3670},[9017],{"type":3140,"value":9018},"new",{"type":3135,"tag":3505,"props":9020,"children":9021},{"style":3658},[9022],{"type":3140,"value":6793},{"type":3135,"tag":3505,"props":9024,"children":9025},{"style":3664},[9026],{"type":3140,"value":9027},"(entry",{"type":3135,"tag":3505,"props":9029,"children":9030},{"style":3670},[9031],{"type":3140,"value":4634},{"type":3135,"tag":3505,"props":9033,"children":9034},{"style":3664},[9035],{"type":3140,"value":9036},"time)",{"type":3135,"tag":3505,"props":9038,"children":9039},{"style":3670},[9040],{"type":3140,"value":4634},{"type":3135,"tag":3505,"props":9042,"children":9043},{"style":3658},[9044],{"type":3140,"value":9045},"toISOString",{"type":3135,"tag":3505,"props":9047,"children":9048},{"style":3664},[9049],{"type":3140,"value":5596},{"type":3135,"tag":3505,"props":9051,"children":9052},{"style":3670},[9053],{"type":3140,"value":9054},"}`",{"type":3135,"tag":3505,"props":9056,"children":9057},{"style":3679},[9058],{"type":3140,"value":4042},{"type":3135,"tag":3505,"props":9060,"children":9061},{"style":3670},[9062],{"type":3140,"value":4047},{"type":3135,"tag":3505,"props":9064,"children":9065},{"class":3507,"line":3793},[9066],{"type":3135,"tag":3505,"props":9067,"children":9068},{"style":3670},[9069],{"type":3140,"value":4486},{"type":3135,"tag":3481,"props":9071,"children":9073},{"id":9072},"moduleoptions-type",[9074,9080],{"type":3135,"tag":3292,"props":9075,"children":9077},{"className":9076},[],[9078],{"type":3140,"value":9079},"ModuleOptions",{"type":3140,"value":8529},{"type":3135,"tag":3142,"props":9082,"children":9083},{},[9084],{"type":3140,"value":9085},"You can also import the module configuration type:",{"type":3135,"tag":3495,"props":9087,"children":9089},{"className":5405,"code":9088,"language":5407,"meta":3079,"style":3079},"import type { ModuleOptions } from \"nuxt-api-shield\";\n",[9090],{"type":3135,"tag":3292,"props":9091,"children":9092},{"__ignoreMap":3079},[9093],{"type":3135,"tag":3505,"props":9094,"children":9095},{"class":3507,"line":3107},[9096,9100,9104,9108,9113,9117,9121,9125,9129,9133],{"type":3135,"tag":3505,"props":9097,"children":9098},{"style":3647},[9099],{"type":3140,"value":5419},{"type":3135,"tag":3505,"props":9101,"children":9102},{"style":3647},[9103],{"type":3140,"value":6160},{"type":3135,"tag":3505,"props":9105,"children":9106},{"style":3670},[9107],{"type":3140,"value":5424},{"type":3135,"tag":3505,"props":9109,"children":9110},{"style":3664},[9111],{"type":3140,"value":9112}," ModuleOptions",{"type":3135,"tag":3505,"props":9114,"children":9115},{"style":3670},[9116],{"type":3140,"value":5434},{"type":3135,"tag":3505,"props":9118,"children":9119},{"style":3647},[9120],{"type":3140,"value":5439},{"type":3135,"tag":3505,"props":9122,"children":9123},{"style":3670},[9124],{"type":3140,"value":4213},{"type":3135,"tag":3505,"props":9126,"children":9127},{"style":3526},[9128],{"type":3140,"value":3076},{"type":3135,"tag":3505,"props":9130,"children":9131},{"style":3670},[9132],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":9134,"children":9135},{"style":3670},[9136],{"type":3140,"value":4047},{"type":3135,"tag":3218,"props":9138,"children":9140},{"id":9139},"per-route-rate-limiting",[9141],{"type":3140,"value":9142},"Per-Route Rate Limiting",{"type":3135,"tag":3142,"props":9144,"children":9145},{},[9146,9151,9153,9158],{"type":3135,"tag":3292,"props":9147,"children":9149},{"className":9148},[],[9150],{"type":3140,"value":3076},{"type":3140,"value":9152}," supports ",{"type":3135,"tag":3230,"props":9154,"children":9155},{},[9156],{"type":3140,"value":9157},"per-route rate limiting",{"type":3140,"value":9159},", allowing you to define custom limits for specific API endpoints while keeping a global default configuration for all other routes.",{"type":3135,"tag":3142,"props":9161,"children":9162},{},[9163,9165,9171,9172,9178,9180,9186],{"type":3140,"value":9164},"This is useful when certain endpoints (such as ",{"type":3135,"tag":3292,"props":9166,"children":9168},{"className":9167},[],[9169],{"type":3140,"value":9170},"\u002Fapi\u002Flogin",{"type":3140,"value":3457},{"type":3135,"tag":3292,"props":9173,"children":9175},{"className":9174},[],[9176],{"type":3140,"value":9177},"\u002Fapi\u002Fauth",{"type":3140,"value":9179},", or ",{"type":3135,"tag":3292,"props":9181,"children":9183},{"className":9182},[],[9184],{"type":3140,"value":9185},"\u002Fapi\u002Fpayment",{"type":3140,"value":9187},") require stricter protection.",{"type":3135,"tag":9189,"props":9190,"children":9191},"hr",{},[],{"type":3135,"tag":3481,"props":9193,"children":9195},{"id":9194},"configuration-example",[9196],{"type":3140,"value":9197},"Configuration Example",{"type":3135,"tag":3142,"props":9199,"children":9200},{},[9201,9202,9208],{"type":3140,"value":4505},{"type":3135,"tag":3292,"props":9203,"children":9205},{"className":9204},[],[9206],{"type":3140,"value":9207},"routes",{"type":3140,"value":9209}," option accepts a mixed array of strings (exact matches) and objects (custom limits or patterns).",{"type":3135,"tag":3495,"props":9211,"children":9213},{"className":5405,"code":9212,"language":5407,"meta":3079,"style":3079},"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\" can also be overridden per route\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",[9214],{"type":3135,"tag":3292,"props":9215,"children":9216},{"__ignoreMap":3079},[9217,9240,9275,9282,9297,9313,9333,9353,9373,9380,9387,9404,9412,9432,9439,9447,9455,9484,9505,9526,9534,9542,9549,9557,9564,9592,9612,9631,9647,9654,9666,9673],{"type":3135,"tag":3505,"props":9218,"children":9219},{"class":3507,"line":3107},[9220,9224,9228,9232,9236],{"type":3135,"tag":3505,"props":9221,"children":9222},{"style":3647},[9223],{"type":3140,"value":3650},{"type":3135,"tag":3505,"props":9225,"children":9226},{"style":3647},[9227],{"type":3140,"value":3655},{"type":3135,"tag":3505,"props":9229,"children":9230},{"style":3658},[9231],{"type":3140,"value":3661},{"type":3135,"tag":3505,"props":9233,"children":9234},{"style":3664},[9235],{"type":3140,"value":3667},{"type":3135,"tag":3505,"props":9237,"children":9238},{"style":3670},[9239],{"type":3140,"value":3673},{"type":3135,"tag":3505,"props":9241,"children":9242},{"class":3507,"line":3103},[9243,9247,9251,9255,9259,9263,9267,9271],{"type":3135,"tag":3505,"props":9244,"children":9245},{"style":3679},[9246],{"type":3140,"value":3682},{"type":3135,"tag":3505,"props":9248,"children":9249},{"style":3670},[9250],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":9252,"children":9253},{"style":3664},[9254],{"type":3140,"value":3692},{"type":3135,"tag":3505,"props":9256,"children":9257},{"style":3670},[9258],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":9260,"children":9261},{"style":3526},[9262],{"type":3140,"value":3076},{"type":3135,"tag":3505,"props":9264,"children":9265},{"style":3670},[9266],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":9268,"children":9269},{"style":3664},[9270],{"type":3140,"value":3710},{"type":3135,"tag":3505,"props":9272,"children":9273},{"style":3670},[9274],{"type":3140,"value":3715},{"type":3135,"tag":3505,"props":9276,"children":9277},{"class":3507,"line":3537},[9278],{"type":3135,"tag":3505,"props":9279,"children":9280},{"emptyLinePlaceholder":1208},[9281],{"type":3140,"value":3543},{"type":3135,"tag":3505,"props":9283,"children":9284},{"class":3507,"line":3546},[9285,9289,9293],{"type":3135,"tag":3505,"props":9286,"children":9287},{"style":3679},[9288],{"type":3140,"value":3723},{"type":3135,"tag":3505,"props":9290,"children":9291},{"style":3670},[9292],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":9294,"children":9295},{"style":3670},[9296],{"type":3140,"value":3732},{"type":3135,"tag":3505,"props":9298,"children":9299},{"class":3507,"line":3099},[9300,9305,9309],{"type":3135,"tag":3505,"props":9301,"children":9302},{"style":3679},[9303],{"type":3140,"value":9304},"    limit",{"type":3135,"tag":3505,"props":9306,"children":9307},{"style":3670},[9308],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":9310,"children":9311},{"style":3670},[9312],{"type":3140,"value":3732},{"type":3135,"tag":3505,"props":9314,"children":9315},{"class":3507,"line":3571},[9316,9321,9325,9329],{"type":3135,"tag":3505,"props":9317,"children":9318},{"style":3679},[9319],{"type":3140,"value":9320},"      max",{"type":3135,"tag":3505,"props":9322,"children":9323},{"style":3670},[9324],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":9326,"children":9327},{"style":3945},[9328],{"type":3140,"value":4112},{"type":3135,"tag":3505,"props":9330,"children":9331},{"style":3670},[9332],{"type":3140,"value":3715},{"type":3135,"tag":3505,"props":9334,"children":9335},{"class":3507,"line":3579},[9336,9341,9345,9349],{"type":3135,"tag":3505,"props":9337,"children":9338},{"style":3679},[9339],{"type":3140,"value":9340},"      duration",{"type":3135,"tag":3505,"props":9342,"children":9343},{"style":3670},[9344],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":9346,"children":9347},{"style":3945},[9348],{"type":3140,"value":4133},{"type":3135,"tag":3505,"props":9350,"children":9351},{"style":3670},[9352],{"type":3140,"value":3715},{"type":3135,"tag":3505,"props":9354,"children":9355},{"class":3507,"line":3124},[9356,9361,9365,9369],{"type":3135,"tag":3505,"props":9357,"children":9358},{"style":3679},[9359],{"type":3140,"value":9360},"      ban",{"type":3135,"tag":3505,"props":9362,"children":9363},{"style":3670},[9364],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":9366,"children":9367},{"style":3945},[9368],{"type":3140,"value":4159},{"type":3135,"tag":3505,"props":9370,"children":9371},{"style":3670},[9372],{"type":3140,"value":3715},{"type":3135,"tag":3505,"props":9374,"children":9375},{"class":3507,"line":3775},[9376],{"type":3135,"tag":3505,"props":9377,"children":9378},{"style":3670},[9379],{"type":3140,"value":3781},{"type":3135,"tag":3505,"props":9381,"children":9382},{"class":3507,"line":3784},[9383],{"type":3135,"tag":3505,"props":9384,"children":9385},{"emptyLinePlaceholder":1208},[9386],{"type":3140,"value":3543},{"type":3135,"tag":3505,"props":9388,"children":9389},{"class":3507,"line":3793},[9390,9395,9399],{"type":3135,"tag":3505,"props":9391,"children":9392},{"style":3679},[9393],{"type":3140,"value":9394},"    routes",{"type":3135,"tag":3505,"props":9396,"children":9397},{"style":3670},[9398],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":9400,"children":9401},{"style":3664},[9402],{"type":3140,"value":9403}," [\n",{"type":3135,"tag":3505,"props":9405,"children":9406},{"class":3507,"line":3802},[9407],{"type":3135,"tag":3505,"props":9408,"children":9409},{"style":3511},[9410],{"type":3140,"value":9411},"      \u002F\u002F 1. String: uses the global default limit (exact match)\n",{"type":3135,"tag":3505,"props":9413,"children":9414},{"class":3507,"line":3811},[9415,9419,9424,9428],{"type":3135,"tag":3505,"props":9416,"children":9417},{"style":3670},[9418],{"type":3140,"value":4740},{"type":3135,"tag":3505,"props":9420,"children":9421},{"style":3526},[9422],{"type":3140,"value":9423},"\u002Fapi\u002Fexample",{"type":3135,"tag":3505,"props":9425,"children":9426},{"style":3670},[9427],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":9429,"children":9430},{"style":3670},[9431],{"type":3140,"value":3715},{"type":3135,"tag":3505,"props":9433,"children":9434},{"class":3507,"line":3820},[9435],{"type":3135,"tag":3505,"props":9436,"children":9437},{"emptyLinePlaceholder":1208},[9438],{"type":3140,"value":3543},{"type":3135,"tag":3505,"props":9440,"children":9441},{"class":3507,"line":3829},[9442],{"type":3135,"tag":3505,"props":9443,"children":9444},{"style":3511},[9445],{"type":3140,"value":9446},"      \u002F\u002F 2. Object: custom rate limit for a specific route (exact match)\n",{"type":3135,"tag":3505,"props":9448,"children":9449},{"class":3507,"line":3838},[9450],{"type":3135,"tag":3505,"props":9451,"children":9452},{"style":3670},[9453],{"type":3140,"value":9454},"      {\n",{"type":3135,"tag":3505,"props":9456,"children":9457},{"class":3507,"line":3847},[9458,9463,9467,9471,9476,9480],{"type":3135,"tag":3505,"props":9459,"children":9460},{"style":3679},[9461],{"type":3140,"value":9462},"        path",{"type":3135,"tag":3505,"props":9464,"children":9465},{"style":3670},[9466],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":9468,"children":9469},{"style":3670},[9470],{"type":3140,"value":4213},{"type":3135,"tag":3505,"props":9472,"children":9473},{"style":3526},[9474],{"type":3140,"value":9475},"\u002Fapi\u002Fexample-per-route",{"type":3135,"tag":3505,"props":9477,"children":9478},{"style":3670},[9479],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":9481,"children":9482},{"style":3670},[9483],{"type":3140,"value":3715},{"type":3135,"tag":3505,"props":9485,"children":9486},{"class":3507,"line":3855},[9487,9492,9496,9501],{"type":3135,"tag":3505,"props":9488,"children":9489},{"style":3679},[9490],{"type":3140,"value":9491},"        max",{"type":3135,"tag":3505,"props":9493,"children":9494},{"style":3670},[9495],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":9497,"children":9498},{"style":3945},[9499],{"type":3140,"value":9500}," 5",{"type":3135,"tag":3505,"props":9502,"children":9503},{"style":3670},[9504],{"type":3140,"value":3715},{"type":3135,"tag":3505,"props":9506,"children":9507},{"class":3507,"line":3864},[9508,9513,9517,9522],{"type":3135,"tag":3505,"props":9509,"children":9510},{"style":3679},[9511],{"type":3140,"value":9512},"        duration",{"type":3135,"tag":3505,"props":9514,"children":9515},{"style":3670},[9516],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":9518,"children":9519},{"style":3945},[9520],{"type":3140,"value":9521}," 10",{"type":3135,"tag":3505,"props":9523,"children":9524},{"style":3670},[9525],{"type":3140,"value":3715},{"type":3135,"tag":3505,"props":9527,"children":9528},{"class":3507,"line":3873},[9529],{"type":3135,"tag":3505,"props":9530,"children":9531},{"style":3511},[9532],{"type":3140,"value":9533},"        \u002F\u002F \"ban\" can also be overridden per route\n",{"type":3135,"tag":3505,"props":9535,"children":9536},{"class":3507,"line":3887},[9537],{"type":3135,"tag":3505,"props":9538,"children":9539},{"style":3670},[9540],{"type":3140,"value":9541},"      },\n",{"type":3135,"tag":3505,"props":9543,"children":9544},{"class":3507,"line":3915},[9545],{"type":3135,"tag":3505,"props":9546,"children":9547},{"emptyLinePlaceholder":1208},[9548],{"type":3140,"value":3543},{"type":3135,"tag":3505,"props":9550,"children":9551},{"class":3507,"line":3923},[9552],{"type":3135,"tag":3505,"props":9553,"children":9554},{"style":3511},[9555],{"type":3140,"value":9556},"      \u002F\u002F 3. Object: Wildcard pattern\n",{"type":3135,"tag":3505,"props":9558,"children":9559},{"class":3507,"line":3932},[9560],{"type":3135,"tag":3505,"props":9561,"children":9562},{"style":3670},[9563],{"type":3140,"value":9454},{"type":3135,"tag":3505,"props":9565,"children":9566},{"class":3507,"line":3960},[9567,9571,9575,9579,9584,9588],{"type":3135,"tag":3505,"props":9568,"children":9569},{"style":3679},[9570],{"type":3140,"value":9462},{"type":3135,"tag":3505,"props":9572,"children":9573},{"style":3670},[9574],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":9576,"children":9577},{"style":3670},[9578],{"type":3140,"value":4213},{"type":3135,"tag":3505,"props":9580,"children":9581},{"style":3526},[9582],{"type":3140,"value":9583},"\u002Fapi\u002Fusers\u002F*\u002Fprofile",{"type":3135,"tag":3505,"props":9585,"children":9586},{"style":3670},[9587],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":9589,"children":9590},{"style":3670},[9591],{"type":3140,"value":3715},{"type":3135,"tag":3505,"props":9593,"children":9594},{"class":3507,"line":3977},[9595,9600,9604,9608],{"type":3135,"tag":3505,"props":9596,"children":9597},{"style":3679},[9598],{"type":3140,"value":9599},"        pattern",{"type":3135,"tag":3505,"props":9601,"children":9602},{"style":3670},[9603],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":9605,"children":9606},{"style":3999},[9607],{"type":3140,"value":4192},{"type":3135,"tag":3505,"props":9609,"children":9610},{"style":3670},[9611],{"type":3140,"value":3715},{"type":3135,"tag":3505,"props":9613,"children":9614},{"class":3507,"line":3986},[9615,9619,9623,9627],{"type":3135,"tag":3505,"props":9616,"children":9617},{"style":3679},[9618],{"type":3140,"value":9491},{"type":3135,"tag":3505,"props":9620,"children":9621},{"style":3670},[9622],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":9624,"children":9625},{"style":3945},[9626],{"type":3140,"value":9521},{"type":3135,"tag":3505,"props":9628,"children":9629},{"style":3670},[9630],{"type":3140,"value":3715},{"type":3135,"tag":3505,"props":9632,"children":9633},{"class":3507,"line":4014},[9634,9638,9642],{"type":3135,"tag":3505,"props":9635,"children":9636},{"style":3679},[9637],{"type":3140,"value":9512},{"type":3135,"tag":3505,"props":9639,"children":9640},{"style":3670},[9641],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":9643,"children":9644},{"style":3945},[9645],{"type":3140,"value":9646}," 60\n",{"type":3135,"tag":3505,"props":9648,"children":9649},{"class":3507,"line":4022},[9650],{"type":3135,"tag":3505,"props":9651,"children":9652},{"style":3670},[9653],{"type":3140,"value":4807},{"type":3135,"tag":3505,"props":9655,"children":9656},{"class":3507,"line":4031},[9657,9662],{"type":3135,"tag":3505,"props":9658,"children":9659},{"style":3664},[9660],{"type":3140,"value":9661},"    ]",{"type":3135,"tag":3505,"props":9663,"children":9664},{"style":3670},[9665],{"type":3140,"value":3715},{"type":3135,"tag":3505,"props":9667,"children":9668},{"class":3507,"line":6957},[9669],{"type":3135,"tag":3505,"props":9670,"children":9671},{"style":3670},[9672],{"type":3140,"value":4028},{"type":3135,"tag":3505,"props":9674,"children":9675},{"class":3507,"line":6966},[9676,9680,9684],{"type":3135,"tag":3505,"props":9677,"children":9678},{"style":3670},[9679],{"type":3140,"value":4037},{"type":3135,"tag":3505,"props":9681,"children":9682},{"style":3664},[9683],{"type":3140,"value":4042},{"type":3135,"tag":3505,"props":9685,"children":9686},{"style":3670},[9687],{"type":3140,"value":4047},{"type":3135,"tag":3481,"props":9689,"children":9691},{"id":9690},"wildcard-route-support",[9692],{"type":3140,"value":9693},"Wildcard Route Support",{"type":3135,"tag":3142,"props":9695,"children":9696},{},[9697,9699,9705],{"type":3140,"value":9698},"Wildcard patterns allow you to apply the same limits to groups of related API endpoints. Enable them by setting ",{"type":3135,"tag":3292,"props":9700,"children":9702},{"className":9701},[],[9703],{"type":3140,"value":9704},"pattern: true",{"type":3140,"value":9706}," in your route configuration.",{"type":3135,"tag":5371,"props":9708,"children":9710},{"id":9709},"wildcard-pattern-syntax",[9711],{"type":3140,"value":9712},"Wildcard Pattern Syntax",{"type":3135,"tag":3192,"props":9714,"children":9715},{},[9716,9760],{"type":3135,"tag":3196,"props":9717,"children":9718},{},[9719,9731,9733],{"type":3135,"tag":3230,"props":9720,"children":9721},{},[9722,9724,9730],{"type":3140,"value":9723},"Single-Segment Wildcard (",{"type":3135,"tag":3292,"props":9725,"children":9727},{"className":9726},[],[9728],{"type":3140,"value":9729},"*",{"type":3140,"value":4042},{"type":3140,"value":9732},": Matches exactly one path segment.\n",{"type":3135,"tag":3192,"props":9734,"children":9735},{},[9736],{"type":3135,"tag":3196,"props":9737,"children":9738},{},[9739,9744,9746,9752,9753,9759],{"type":3135,"tag":3292,"props":9740,"children":9742},{"className":9741},[],[9743],{"type":3140,"value":9583},{"type":3140,"value":9745}," matches ",{"type":3135,"tag":3292,"props":9747,"children":9749},{"className":9748},[],[9750],{"type":3140,"value":9751},"\u002Fapi\u002Fusers\u002F123\u002Fprofile",{"type":3140,"value":7426},{"type":3135,"tag":3292,"props":9754,"children":9756},{"className":9755},[],[9757],{"type":3140,"value":9758},"\u002Fapi\u002Fusers\u002Fadmin\u002Fprofile",{"type":3140,"value":4634},{"type":3135,"tag":3196,"props":9761,"children":9762},{},[9763,9775,9777],{"type":3135,"tag":3230,"props":9764,"children":9765},{},[9766,9768,9774],{"type":3140,"value":9767},"Multi-Segment Wildcard (",{"type":3135,"tag":3292,"props":9769,"children":9771},{"className":9770},[],[9772],{"type":3140,"value":9773},"**",{"type":3140,"value":4042},{"type":3140,"value":9776},": Matches zero or more path segments.\n",{"type":3135,"tag":3192,"props":9778,"children":9779},{},[9780],{"type":3135,"tag":3196,"props":9781,"children":9782},{},[9783,9789,9790,9796,9797,9803],{"type":3135,"tag":3292,"props":9784,"children":9786},{"className":9785},[],[9787],{"type":3140,"value":9788},"\u002Fapi\u002Freports\u002F**\u002Fsummary",{"type":3140,"value":9745},{"type":3135,"tag":3292,"props":9791,"children":9793},{"className":9792},[],[9794],{"type":3140,"value":9795},"\u002Fapi\u002Freports\u002Fmonthly\u002F2023\u002Fsummary",{"type":3140,"value":7426},{"type":3135,"tag":3292,"props":9798,"children":9800},{"className":9799},[],[9801],{"type":3140,"value":9802},"\u002Fapi\u002Freports\u002Fsummary",{"type":3140,"value":4634},{"type":3135,"tag":5371,"props":9805,"children":9807},{"id":9806},"pattern-precedence",[9808],{"type":3140,"value":9809},"Pattern Precedence",{"type":3135,"tag":9811,"props":9812,"children":9813},"ol",{},[9814,9824,9834],{"type":3135,"tag":3196,"props":9815,"children":9816},{},[9817,9822],{"type":3135,"tag":3230,"props":9818,"children":9819},{},[9820],{"type":3140,"value":9821},"Exact matches",{"type":3140,"value":9823}," always take precedence over wildcard patterns.",{"type":3135,"tag":3196,"props":9825,"children":9826},{},[9827,9832],{"type":3135,"tag":3230,"props":9828,"children":9829},{},[9830],{"type":3140,"value":9831},"More specific wildcards",{"type":3140,"value":9833}," take precedence over less specific ones.",{"type":3135,"tag":3196,"props":9835,"children":9836},{},[9837],{"type":3140,"value":9838},"When multiple wildcard patterns match, the most specific one is used.",{"type":3135,"tag":5371,"props":9840,"children":9842},{"id":9841},"important-notes",[9843],{"type":3140,"value":9844},"Important Notes",{"type":3135,"tag":3192,"props":9846,"children":9847},{},[9848,9858],{"type":3135,"tag":3196,"props":9849,"children":9850},{},[9851,9856],{"type":3135,"tag":3230,"props":9852,"children":9853},{},[9854],{"type":3140,"value":9855},"Shared Rate Limits:",{"type":3140,"value":9857}," All requests that match the same wildcard pattern share the same rate limit counter.",{"type":3135,"tag":3196,"props":9859,"children":9860},{},[9861,9866,9868,9874,9875,9881],{"type":3135,"tag":3230,"props":9862,"children":9863},{},[9864],{"type":3140,"value":9865},"Security:",{"type":3140,"value":9867}," Broad or dangerous patterns like ",{"type":3135,"tag":3292,"props":9869,"children":9871},{"className":9870},[],[9872],{"type":3140,"value":9873},"\u002F**",{"type":3140,"value":7426},{"type":3135,"tag":3292,"props":9876,"children":9878},{"className":9877},[],[9879],{"type":3140,"value":9880},"\u002F*",{"type":3140,"value":9882}," are automatically rejected to prevent accidental global blocking.",{"type":3135,"tag":3218,"props":9884,"children":9886},{"id":9885},"skipping-routes",[9887],{"type":3140,"value":9888},"Skipping Routes",{"type":3135,"tag":3142,"props":9890,"children":9891},{},[9892,9893,9899,9901,9906],{"type":3140,"value":4505},{"type":3135,"tag":3292,"props":9894,"children":9896},{"className":9895},[],[9897],{"type":3140,"value":9898},"skipRoutes",{"type":3140,"value":9900}," option lets you exempt specific paths from all shield processing (ban check, rate limit counter, and logging) without needing to list every protected route in the ",{"type":3135,"tag":3292,"props":9902,"children":9904},{"className":9903},[],[9905],{"type":3140,"value":9207},{"type":3140,"value":9907}," array.",{"type":3135,"tag":3142,"props":9909,"children":9910},{},[9911],{"type":3140,"value":9912},"This is useful for health checks, webhook endpoints, monitoring probes, or internal status routes that should always respond regardless of traffic.",{"type":3135,"tag":3481,"props":9914,"children":9916},{"id":9915},"configuration-example-1",[9917],{"type":3140,"value":9197},{"type":3135,"tag":3495,"props":9919,"children":9921},{"className":5405,"code":9920,"language":5407,"meta":3079,"style":3079},"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    skipRoutes: [\n      \"\u002Fapi\u002Fhealth\",          \u002F\u002F exact match\n      \"\u002Fapi\u002F_nuxt\u002F**\",        \u002F\u002F multi-segment wildcard\n      \"\u002Fapi\u002Fwebhooks\u002Fstripe\", \u002F\u002F exact match\n    ],\n  },\n})\n",[9922],{"type":3135,"tag":3292,"props":9923,"children":9924},{"__ignoreMap":3079},[9925,9948,9983,9990,10005,10020,10039,10058,10077,10084,10091,10106,10131,10156,10181,10192,10199],{"type":3135,"tag":3505,"props":9926,"children":9927},{"class":3507,"line":3107},[9928,9932,9936,9940,9944],{"type":3135,"tag":3505,"props":9929,"children":9930},{"style":3647},[9931],{"type":3140,"value":3650},{"type":3135,"tag":3505,"props":9933,"children":9934},{"style":3647},[9935],{"type":3140,"value":3655},{"type":3135,"tag":3505,"props":9937,"children":9938},{"style":3658},[9939],{"type":3140,"value":3661},{"type":3135,"tag":3505,"props":9941,"children":9942},{"style":3664},[9943],{"type":3140,"value":3667},{"type":3135,"tag":3505,"props":9945,"children":9946},{"style":3670},[9947],{"type":3140,"value":3673},{"type":3135,"tag":3505,"props":9949,"children":9950},{"class":3507,"line":3103},[9951,9955,9959,9963,9967,9971,9975,9979],{"type":3135,"tag":3505,"props":9952,"children":9953},{"style":3679},[9954],{"type":3140,"value":3682},{"type":3135,"tag":3505,"props":9956,"children":9957},{"style":3670},[9958],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":9960,"children":9961},{"style":3664},[9962],{"type":3140,"value":3692},{"type":3135,"tag":3505,"props":9964,"children":9965},{"style":3670},[9966],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":9968,"children":9969},{"style":3526},[9970],{"type":3140,"value":3076},{"type":3135,"tag":3505,"props":9972,"children":9973},{"style":3670},[9974],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":9976,"children":9977},{"style":3664},[9978],{"type":3140,"value":3710},{"type":3135,"tag":3505,"props":9980,"children":9981},{"style":3670},[9982],{"type":3140,"value":3715},{"type":3135,"tag":3505,"props":9984,"children":9985},{"class":3507,"line":3537},[9986],{"type":3135,"tag":3505,"props":9987,"children":9988},{"emptyLinePlaceholder":1208},[9989],{"type":3140,"value":3543},{"type":3135,"tag":3505,"props":9991,"children":9992},{"class":3507,"line":3546},[9993,9997,10001],{"type":3135,"tag":3505,"props":9994,"children":9995},{"style":3679},[9996],{"type":3140,"value":3723},{"type":3135,"tag":3505,"props":9998,"children":9999},{"style":3670},[10000],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":10002,"children":10003},{"style":3670},[10004],{"type":3140,"value":3732},{"type":3135,"tag":3505,"props":10006,"children":10007},{"class":3507,"line":3099},[10008,10012,10016],{"type":3135,"tag":3505,"props":10009,"children":10010},{"style":3679},[10011],{"type":3140,"value":9304},{"type":3135,"tag":3505,"props":10013,"children":10014},{"style":3670},[10015],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":10017,"children":10018},{"style":3670},[10019],{"type":3140,"value":3732},{"type":3135,"tag":3505,"props":10021,"children":10022},{"class":3507,"line":3571},[10023,10027,10031,10035],{"type":3135,"tag":3505,"props":10024,"children":10025},{"style":3679},[10026],{"type":3140,"value":9320},{"type":3135,"tag":3505,"props":10028,"children":10029},{"style":3670},[10030],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":10032,"children":10033},{"style":3945},[10034],{"type":3140,"value":4112},{"type":3135,"tag":3505,"props":10036,"children":10037},{"style":3670},[10038],{"type":3140,"value":3715},{"type":3135,"tag":3505,"props":10040,"children":10041},{"class":3507,"line":3579},[10042,10046,10050,10054],{"type":3135,"tag":3505,"props":10043,"children":10044},{"style":3679},[10045],{"type":3140,"value":9340},{"type":3135,"tag":3505,"props":10047,"children":10048},{"style":3670},[10049],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":10051,"children":10052},{"style":3945},[10053],{"type":3140,"value":4133},{"type":3135,"tag":3505,"props":10055,"children":10056},{"style":3670},[10057],{"type":3140,"value":3715},{"type":3135,"tag":3505,"props":10059,"children":10060},{"class":3507,"line":3124},[10061,10065,10069,10073],{"type":3135,"tag":3505,"props":10062,"children":10063},{"style":3679},[10064],{"type":3140,"value":9360},{"type":3135,"tag":3505,"props":10066,"children":10067},{"style":3670},[10068],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":10070,"children":10071},{"style":3945},[10072],{"type":3140,"value":4159},{"type":3135,"tag":3505,"props":10074,"children":10075},{"style":3670},[10076],{"type":3140,"value":3715},{"type":3135,"tag":3505,"props":10078,"children":10079},{"class":3507,"line":3775},[10080],{"type":3135,"tag":3505,"props":10081,"children":10082},{"style":3670},[10083],{"type":3140,"value":3781},{"type":3135,"tag":3505,"props":10085,"children":10086},{"class":3507,"line":3784},[10087],{"type":3135,"tag":3505,"props":10088,"children":10089},{"emptyLinePlaceholder":1208},[10090],{"type":3140,"value":3543},{"type":3135,"tag":3505,"props":10092,"children":10093},{"class":3507,"line":3793},[10094,10098,10102],{"type":3135,"tag":3505,"props":10095,"children":10096},{"style":3679},[10097],{"type":3140,"value":3893},{"type":3135,"tag":3505,"props":10099,"children":10100},{"style":3670},[10101],{"type":3140,"value":3687},{"type":3135,"tag":3505,"props":10103,"children":10104},{"style":3664},[10105],{"type":3140,"value":9403},{"type":3135,"tag":3505,"props":10107,"children":10108},{"class":3507,"line":3802},[10109,10113,10118,10122,10126],{"type":3135,"tag":3505,"props":10110,"children":10111},{"style":3670},[10112],{"type":3140,"value":4740},{"type":3135,"tag":3505,"props":10114,"children":10115},{"style":3526},[10116],{"type":3140,"value":10117},"\u002Fapi\u002Fhealth",{"type":3135,"tag":3505,"props":10119,"children":10120},{"style":3670},[10121],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":10123,"children":10124},{"style":3670},[10125],{"type":3140,"value":3907},{"type":3135,"tag":3505,"props":10127,"children":10128},{"style":3511},[10129],{"type":3140,"value":10130},"          \u002F\u002F exact match\n",{"type":3135,"tag":3505,"props":10132,"children":10133},{"class":3507,"line":3811},[10134,10138,10143,10147,10151],{"type":3135,"tag":3505,"props":10135,"children":10136},{"style":3670},[10137],{"type":3140,"value":4740},{"type":3135,"tag":3505,"props":10139,"children":10140},{"style":3526},[10141],{"type":3140,"value":10142},"\u002Fapi\u002F_nuxt\u002F**",{"type":3135,"tag":3505,"props":10144,"children":10145},{"style":3670},[10146],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":10148,"children":10149},{"style":3670},[10150],{"type":3140,"value":3907},{"type":3135,"tag":3505,"props":10152,"children":10153},{"style":3511},[10154],{"type":3140,"value":10155},"        \u002F\u002F multi-segment wildcard\n",{"type":3135,"tag":3505,"props":10157,"children":10158},{"class":3507,"line":3820},[10159,10163,10168,10172,10176],{"type":3135,"tag":3505,"props":10160,"children":10161},{"style":3670},[10162],{"type":3140,"value":4740},{"type":3135,"tag":3505,"props":10164,"children":10165},{"style":3526},[10166],{"type":3140,"value":10167},"\u002Fapi\u002Fwebhooks\u002Fstripe",{"type":3135,"tag":3505,"props":10169,"children":10170},{"style":3670},[10171],{"type":3140,"value":3697},{"type":3135,"tag":3505,"props":10173,"children":10174},{"style":3670},[10175],{"type":3140,"value":3907},{"type":3135,"tag":3505,"props":10177,"children":10178},{"style":3511},[10179],{"type":3140,"value":10180}," \u002F\u002F exact match\n",{"type":3135,"tag":3505,"props":10182,"children":10183},{"class":3507,"line":3829},[10184,10188],{"type":3135,"tag":3505,"props":10185,"children":10186},{"style":3664},[10187],{"type":3140,"value":9661},{"type":3135,"tag":3505,"props":10189,"children":10190},{"style":3670},[10191],{"type":3140,"value":3715},{"type":3135,"tag":3505,"props":10193,"children":10194},{"class":3507,"line":3838},[10195],{"type":3135,"tag":3505,"props":10196,"children":10197},{"style":3670},[10198],{"type":3140,"value":4028},{"type":3135,"tag":3505,"props":10200,"children":10201},{"class":3507,"line":3847},[10202,10206],{"type":3135,"tag":3505,"props":10203,"children":10204},{"style":3670},[10205],{"type":3140,"value":4037},{"type":3135,"tag":3505,"props":10207,"children":10208},{"style":3664},[10209],{"type":3140,"value":8173},{"type":3135,"tag":3481,"props":10211,"children":10213},{"id":10212},"how-it-works",[10214],{"type":3140,"value":10215},"How It Works",{"type":3135,"tag":3192,"props":10217,"children":10218},{},[10219,10231,10243],{"type":3135,"tag":3196,"props":10220,"children":10221},{},[10222,10224,10229],{"type":3140,"value":10223},"Routes in ",{"type":3135,"tag":3292,"props":10225,"children":10227},{"className":10226},[],[10228],{"type":3140,"value":9898},{"type":3140,"value":10230}," bypass the middleware entirely — no ban check, no rate limit counter, no log entry.",{"type":3135,"tag":3196,"props":10232,"children":10233},{},[10234,10236,10241],{"type":3140,"value":10235},"The rest of your API routes (those matching the global defaults or the ",{"type":3135,"tag":3292,"props":10237,"children":10239},{"className":10238},[],[10240],{"type":3140,"value":9207},{"type":3140,"value":10242}," option) continue to be rate limited normally.",{"type":3135,"tag":3196,"props":10244,"children":10245},{},[10246,10248,10253,10255,10260],{"type":3140,"value":10247},"Supports the same wildcard syntax as per-route patterns: ",{"type":3135,"tag":3292,"props":10249,"children":10251},{"className":10250},[],[10252],{"type":3140,"value":9729},{"type":3140,"value":10254}," for single segment, ",{"type":3135,"tag":3292,"props":10256,"children":10258},{"className":10257},[],[10259],{"type":3140,"value":9773},{"type":3140,"value":10261}," for multi-segment.",{"type":3135,"tag":3218,"props":10263,"children":10265},{"id":10264},"important-considerations",[10266],{"type":3140,"value":10267},"Important Considerations",{"type":3135,"tag":3481,"props":10269,"children":10271},{"id":10270},"data-privacy-ip-address-storage",[10272],{"type":3140,"value":10273},"Data Privacy (IP Address Storage)",{"type":3135,"tag":3142,"props":10275,"children":10276},{},[10277,10282],{"type":3135,"tag":3292,"props":10278,"children":10280},{"className":10279},[],[10281],{"type":3140,"value":3076},{"type":3140,"value":10283}," 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":3135,"tag":3192,"props":10285,"children":10286},{},[10287,10328,10338],{"type":3135,"tag":3196,"props":10288,"children":10289},{},[10290,10295],{"type":3135,"tag":3230,"props":10291,"children":10292},{},[10293],{"type":3140,"value":10294},"Data Stored:",{"type":3135,"tag":3192,"props":10296,"children":10297},{},[10298,10317],{"type":3135,"tag":3196,"props":10299,"children":10300},{},[10301,10307,10309,10315],{"type":3135,"tag":3292,"props":10302,"children":10304},{"className":10303},[],[10305],{"type":3140,"value":10306},"ip:\u003CIP_ADDRESS>",{"type":3140,"value":10308},": Stores ",{"type":3135,"tag":3292,"props":10310,"children":10312},{"className":10311},[],[10313],{"type":3140,"value":10314},"{ count: number, time: number }",{"type":3140,"value":10316}," for tracking request rates.",{"type":3135,"tag":3196,"props":10318,"children":10319},{},[10320,10326],{"type":3135,"tag":3292,"props":10321,"children":10323},{"className":10322},[],[10324],{"type":3140,"value":10325},"ban:\u003CIP_ADDRESS>",{"type":3140,"value":10327},": Stores a timestamp indicating when a ban on an IP address expires.",{"type":3135,"tag":3196,"props":10329,"children":10330},{},[10331,10336],{"type":3135,"tag":3230,"props":10332,"children":10333},{},[10334],{"type":3140,"value":10335},"Compliance:",{"type":3140,"value":10337}," 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":3135,"tag":3196,"props":10339,"children":10340},{},[10341,10346],{"type":3135,"tag":3230,"props":10342,"children":10343},{},[10344],{"type":3140,"value":10345},"Data Retention:",{"type":3135,"tag":3192,"props":10347,"children":10348},{},[10349,10361],{"type":3135,"tag":3196,"props":10350,"children":10351},{},[10352,10354,10359],{"type":3140,"value":10353},"Ban entries are cleaned up by the ",{"type":3135,"tag":3292,"props":10355,"children":10357},{"className":10356},[],[10358],{"type":3140,"value":3389},{"type":3140,"value":10360}," task after expiry.",{"type":3135,"tag":3196,"props":10362,"children":10363},{},[10364,10366,10371,10373,10378],{"type":3140,"value":10365},"IP tracking entries are cleaned up by the ",{"type":3135,"tag":3292,"props":10367,"children":10369},{"className":10368},[],[10370],{"type":3140,"value":3397},{"type":3140,"value":10372}," task based on the ",{"type":3135,"tag":3292,"props":10374,"children":10376},{"className":10375},[],[10377],{"type":3140,"value":5095},{"type":3140,"value":10379}," setting.",{"type":3135,"tag":3481,"props":10381,"children":10383},{"id":10382},"storage-security",[10384],{"type":3140,"value":10385},"Storage Security",{"type":3135,"tag":3192,"props":10387,"children":10388},{},[10389,10467],{"type":3135,"tag":3196,"props":10390,"children":10391},{},[10392,10405,10407,10413,10415,10420,10421,10427,10429,10435,10437,10442,10444],{"type":3135,"tag":3230,"props":10393,"children":10394},{},[10395,10397,10403],{"type":3140,"value":10396},"Filesystem Driver (",{"type":3135,"tag":3292,"props":10398,"children":10400},{"className":10399},[],[10401],{"type":3140,"value":10402},"driver: 'fs'",{"type":3140,"value":10404},"):",{"type":3140,"value":10406}," If you use the filesystem driver for ",{"type":3135,"tag":3292,"props":10408,"children":10410},{"className":10409},[],[10411],{"type":3140,"value":10412},"unstorage",{"type":3140,"value":10414}," (e.g., ",{"type":3135,"tag":3292,"props":10416,"children":10418},{"className":10417},[],[10419],{"type":3140,"value":10402},{"type":3140,"value":3457},{"type":3135,"tag":3292,"props":10422,"children":10424},{"className":10423},[],[10425],{"type":3140,"value":10426},"base: '.shield'",{"type":3140,"value":10428},"), ensure that the storage directory (and the ",{"type":3135,"tag":3292,"props":10430,"children":10432},{"className":10431},[],[10433],{"type":3140,"value":10434},"logs",{"type":3140,"value":10436}," directory if logging is enabled via ",{"type":3135,"tag":3292,"props":10438,"children":10440},{"className":10439},[],[10441],{"type":3140,"value":7965},{"type":3140,"value":10443},") is:\n",{"type":3135,"tag":3192,"props":10445,"children":10446},{},[10447,10457],{"type":3135,"tag":3196,"props":10448,"children":10449},{},[10450,10455],{"type":3135,"tag":3230,"props":10451,"children":10452},{},[10453],{"type":3140,"value":10454},"Not web-accessible:",{"type":3140,"value":10456}," Your web server should not be configured to serve files from these directories.",{"type":3135,"tag":3196,"props":10458,"children":10459},{},[10460,10465],{"type":3135,"tag":3230,"props":10461,"children":10462},{},[10463],{"type":3140,"value":10464},"Properly permissioned:",{"type":3140,"value":10466}," The directories should have appropriate server-side file permissions to prevent unauthorized reading or writing.",{"type":3135,"tag":3196,"props":10468,"children":10469},{},[10470,10475],{"type":3135,"tag":3230,"props":10471,"children":10472},{},[10473],{"type":3140,"value":10474},"Other Drivers (Redis, etc.):",{"type":3140,"value":10476}," If using database drivers like Redis, ensure your database server itself is secured (e.g., authentication, network access controls).",{"type":3135,"tag":3481,"props":10478,"children":10480},{"id":10479},"error-message-errormessage",[10481,10483,10489],{"type":3140,"value":10482},"Error Message (",{"type":3135,"tag":3292,"props":10484,"children":10486},{"className":10485},[],[10487],{"type":3140,"value":10488},"errorMessage",{"type":3140,"value":4042},{"type":3135,"tag":3142,"props":10491,"children":10492},{},[10493,10494,10499],{"type":3140,"value":4505},{"type":3135,"tag":3292,"props":10495,"children":10497},{"className":10496},[],[10498],{"type":3140,"value":10488},{"type":3140,"value":10500}," option in the module configuration is returned in the body of a 429 response.",{"type":3135,"tag":3192,"props":10502,"children":10503},{},[10504,10509],{"type":3135,"tag":3196,"props":10505,"children":10506},{},[10507],{"type":3140,"value":10508},"It's recommended to use a plain text message.",{"type":3135,"tag":3196,"props":10510,"children":10511},{},[10512,10514,10519],{"type":3140,"value":10513},"If you choose to use HTML in your ",{"type":3135,"tag":3292,"props":10515,"children":10517},{"className":10516},[],[10518],{"type":3140,"value":10488},{"type":3140,"value":10520},", 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":3135,"tag":3218,"props":10522,"children":10524},{"id":10523},"development",[10525],{"type":3140,"value":10526},"Development",{"type":3135,"tag":3495,"props":10528,"children":10530},{"className":3497,"code":10529,"language":3499,"meta":3079,"style":3079},"# 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",[10531],{"type":3135,"tag":3292,"props":10532,"children":10533},{"__ignoreMap":3079},[10534,10542,10550,10557,10565,10577,10584,10592,10604,10611,10619,10631,10638,10646,10658,10665,10673,10685,10697,10704,10712,10724],{"type":3135,"tag":3505,"props":10535,"children":10536},{"class":3507,"line":3107},[10537],{"type":3135,"tag":3505,"props":10538,"children":10539},{"style":3511},[10540],{"type":3140,"value":10541},"# Install dependencies\n",{"type":3135,"tag":3505,"props":10543,"children":10544},{"class":3507,"line":3103},[10545],{"type":3135,"tag":3505,"props":10546,"children":10547},{"style":3520},[10548],{"type":3140,"value":10549},"yarn\n",{"type":3135,"tag":3505,"props":10551,"children":10552},{"class":3507,"line":3537},[10553],{"type":3135,"tag":3505,"props":10554,"children":10555},{"emptyLinePlaceholder":1208},[10556],{"type":3140,"value":3543},{"type":3135,"tag":3505,"props":10558,"children":10559},{"class":3507,"line":3546},[10560],{"type":3135,"tag":3505,"props":10561,"children":10562},{"style":3511},[10563],{"type":3140,"value":10564},"# Generate type stubs\n",{"type":3135,"tag":3505,"props":10566,"children":10567},{"class":3507,"line":3099},[10568,10572],{"type":3135,"tag":3505,"props":10569,"children":10570},{"style":3520},[10571],{"type":3140,"value":3560},{"type":3135,"tag":3505,"props":10573,"children":10574},{"style":3526},[10575],{"type":3140,"value":10576}," dev:prepare\n",{"type":3135,"tag":3505,"props":10578,"children":10579},{"class":3507,"line":3571},[10580],{"type":3135,"tag":3505,"props":10581,"children":10582},{"emptyLinePlaceholder":1208},[10583],{"type":3140,"value":3543},{"type":3135,"tag":3505,"props":10585,"children":10586},{"class":3507,"line":3579},[10587],{"type":3135,"tag":3505,"props":10588,"children":10589},{"style":3511},[10590],{"type":3140,"value":10591},"# Develop with the playground\n",{"type":3135,"tag":3505,"props":10593,"children":10594},{"class":3507,"line":3124},[10595,10599],{"type":3135,"tag":3505,"props":10596,"children":10597},{"style":3520},[10598],{"type":3140,"value":3560},{"type":3135,"tag":3505,"props":10600,"children":10601},{"style":3526},[10602],{"type":3140,"value":10603}," dev\n",{"type":3135,"tag":3505,"props":10605,"children":10606},{"class":3507,"line":3775},[10607],{"type":3135,"tag":3505,"props":10608,"children":10609},{"emptyLinePlaceholder":1208},[10610],{"type":3140,"value":3543},{"type":3135,"tag":3505,"props":10612,"children":10613},{"class":3507,"line":3784},[10614],{"type":3135,"tag":3505,"props":10615,"children":10616},{"style":3511},[10617],{"type":3140,"value":10618},"# Build the playground\n",{"type":3135,"tag":3505,"props":10620,"children":10621},{"class":3507,"line":3793},[10622,10626],{"type":3135,"tag":3505,"props":10623,"children":10624},{"style":3520},[10625],{"type":3140,"value":3560},{"type":3135,"tag":3505,"props":10627,"children":10628},{"style":3526},[10629],{"type":3140,"value":10630}," dev:build\n",{"type":3135,"tag":3505,"props":10632,"children":10633},{"class":3507,"line":3802},[10634],{"type":3135,"tag":3505,"props":10635,"children":10636},{"emptyLinePlaceholder":1208},[10637],{"type":3140,"value":3543},{"type":3135,"tag":3505,"props":10639,"children":10640},{"class":3507,"line":3811},[10641],{"type":3135,"tag":3505,"props":10642,"children":10643},{"style":3511},[10644],{"type":3140,"value":10645},"# Run ESLint\n",{"type":3135,"tag":3505,"props":10647,"children":10648},{"class":3507,"line":3820},[10649,10653],{"type":3135,"tag":3505,"props":10650,"children":10651},{"style":3520},[10652],{"type":3140,"value":3560},{"type":3135,"tag":3505,"props":10654,"children":10655},{"style":3526},[10656],{"type":3140,"value":10657}," lint\n",{"type":3135,"tag":3505,"props":10659,"children":10660},{"class":3507,"line":3829},[10661],{"type":3135,"tag":3505,"props":10662,"children":10663},{"emptyLinePlaceholder":1208},[10664],{"type":3140,"value":3543},{"type":3135,"tag":3505,"props":10666,"children":10667},{"class":3507,"line":3838},[10668],{"type":3135,"tag":3505,"props":10669,"children":10670},{"style":3511},[10671],{"type":3140,"value":10672},"# Run Vitest\n",{"type":3135,"tag":3505,"props":10674,"children":10675},{"class":3507,"line":3847},[10676,10680],{"type":3135,"tag":3505,"props":10677,"children":10678},{"style":3520},[10679],{"type":3140,"value":3560},{"type":3135,"tag":3505,"props":10681,"children":10682},{"style":3526},[10683],{"type":3140,"value":10684}," test\n",{"type":3135,"tag":3505,"props":10686,"children":10687},{"class":3507,"line":3855},[10688,10692],{"type":3135,"tag":3505,"props":10689,"children":10690},{"style":3520},[10691],{"type":3140,"value":3560},{"type":3135,"tag":3505,"props":10693,"children":10694},{"style":3526},[10695],{"type":3140,"value":10696}," test:watch\n",{"type":3135,"tag":3505,"props":10698,"children":10699},{"class":3507,"line":3864},[10700],{"type":3135,"tag":3505,"props":10701,"children":10702},{"emptyLinePlaceholder":1208},[10703],{"type":3140,"value":3543},{"type":3135,"tag":3505,"props":10705,"children":10706},{"class":3507,"line":3873},[10707],{"type":3135,"tag":3505,"props":10708,"children":10709},{"style":3511},[10710],{"type":3140,"value":10711},"# Release new version\n",{"type":3135,"tag":3505,"props":10713,"children":10714},{"class":3507,"line":3887},[10715,10719],{"type":3135,"tag":3505,"props":10716,"children":10717},{"style":3520},[10718],{"type":3140,"value":3560},{"type":3135,"tag":3505,"props":10720,"children":10721},{"style":3526},[10722],{"type":3140,"value":10723}," release:patch\n",{"type":3135,"tag":3505,"props":10725,"children":10726},{"class":3507,"line":3915},[10727,10731],{"type":3135,"tag":3505,"props":10728,"children":10729},{"style":3520},[10730],{"type":3140,"value":3560},{"type":3135,"tag":3505,"props":10732,"children":10733},{"style":3526},[10734],{"type":3140,"value":10735}," release:minor\n",{"type":3135,"tag":10737,"props":10738,"children":10739},"style",{},[10740],{"type":3140,"value":10741},"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":3079,"searchDepth":3103,"depth":3103,"links":10743},[10744,10745,10756,10761,10766,10772,10776,10780,10786],{"id":3220,"depth":3103,"text":399},{"id":3476,"depth":3103,"text":3479,"children":10746},[10747,10749,10751,10753,10755],{"id":3483,"depth":3537,"text":10748},"1. Add nuxt-api-shield dependency to your project",{"id":3605,"depth":3537,"text":10750},"2. Add nuxt-api-shield to the modules section of nuxt.config.ts",{"id":4637,"depth":3537,"text":10752},"3. Add nitro\u002Fstorage to nuxt.config.ts",{"id":5046,"depth":3537,"text":10754},"4. Schedule bundled cleanup tasks in nuxt.config.ts",{"id":5347,"depth":3537,"text":5350},{"id":7436,"depth":3103,"text":7439,"children":10757},[10758,10759],{"id":7442,"depth":3537,"text":7445},{"id":7852,"depth":3537,"text":10760},"When memory \u002F fs is acceptable",{"id":7911,"depth":3103,"text":7914,"children":10762},[10763,10764,10765],{"id":7937,"depth":3537,"text":7940},{"id":8191,"depth":3537,"text":8194},{"id":8243,"depth":3537,"text":8246},{"id":8509,"depth":3103,"text":8512,"children":10767},[10768,10770],{"id":8520,"depth":3537,"text":10769},"RateLimit Type",{"id":9072,"depth":3537,"text":10771},"ModuleOptions Type",{"id":9139,"depth":3103,"text":9142,"children":10773},[10774,10775],{"id":9194,"depth":3537,"text":9197},{"id":9690,"depth":3537,"text":9693},{"id":9885,"depth":3103,"text":9888,"children":10777},[10778,10779],{"id":9915,"depth":3537,"text":9197},{"id":10212,"depth":3537,"text":10215},{"id":10264,"depth":3103,"text":10267,"children":10781},[10782,10783,10784],{"id":10270,"depth":3537,"text":10273},{"id":10382,"depth":3537,"text":10385},{"id":10479,"depth":3537,"text":10785},"Error Message (errorMessage)",{"id":10523,"depth":3103,"text":10526},{"v5":10788,"v4":10789,"v3":10790,"v2":10791},"5 (nightly)","4.5.2","3.21.11","2.18.1"]