[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f30r277ag21rfj":3,"module-api-shield":3040,"versions":10755},[4,1124,1988,2834],{"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,911,1003,1040,1082],{"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,820,893,906],{"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},"Commands","%s · Nuxt Commands","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],{"title":757,"path":758,"stem":759,"titleTemplate":6},"nuxt add","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fadd","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fadd",{"title":761,"path":762,"stem":763,"titleTemplate":6},"nuxt analyze","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fanalyze","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fanalyze",{"title":765,"path":766,"stem":767,"titleTemplate":6},"nuxt build","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fbuild","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fbuild",{"title":769,"path":770,"stem":771,"titleTemplate":6},"nuxt build-module","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fbuild-module","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fbuild-module",{"title":773,"path":774,"stem":775,"titleTemplate":6},"nuxt cleanup","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fcleanup","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fcleanup",{"title":777,"path":778,"stem":779,"titleTemplate":6},"nuxt dev","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fdev","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fdev",{"title":781,"path":782,"stem":783,"titleTemplate":6},"nuxt devtools","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fdevtools","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fdevtools",{"title":785,"path":786,"stem":787,"titleTemplate":6},"nuxt generate","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fgenerate","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fgenerate",{"title":789,"path":790,"stem":791,"titleTemplate":6},"nuxt info","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Finfo","docs\u002F3.x\u002F4.api\u002F4.commands\u002Finfo",{"title":793,"path":794,"stem":795,"titleTemplate":6},"create nuxt","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Finit","docs\u002F3.x\u002F4.api\u002F4.commands\u002Finit",{"title":797,"path":798,"stem":799,"titleTemplate":6},"nuxt module","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fmodule","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fmodule",{"title":801,"path":802,"stem":803,"titleTemplate":6},"nuxt prepare","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fprepare","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fprepare",{"title":805,"path":806,"stem":807,"titleTemplate":6},"nuxt preview","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fpreview","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fpreview",{"title":809,"path":810,"stem":811,"titleTemplate":6},"nuxt test","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Ftest","docs\u002F3.x\u002F4.api\u002F4.commands\u002Ftest",{"title":813,"path":814,"stem":815,"titleTemplate":6},"nuxt typecheck","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Ftypecheck","docs\u002F3.x\u002F4.api\u002F4.commands\u002Ftypecheck",{"title":817,"path":818,"stem":819,"titleTemplate":6},"nuxt upgrade","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fupgrade","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fupgrade",{"title":415,"titleTemplate":821,"icon":822,"path":823,"stem":824,"children":825,"page":108},"%s · Nuxt Kit","i-lucide-package","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit","docs\u002F3.x\u002F4.api\u002F5.kit",[826,829,832,836,840,844,848,852,856,859,863,867,870,873,877,881,885,889],{"title":276,"path":827,"stem":828,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fmodules","docs\u002F3.x\u002F4.api\u002F5.kit\u002F1.modules",{"title":403,"path":830,"stem":831,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fruntime-config","docs\u002F3.x\u002F4.api\u002F5.kit\u002F10.runtime-config",{"title":833,"path":834,"stem":835,"titleTemplate":6},"Templates","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Ftemplates","docs\u002F3.x\u002F4.api\u002F5.kit\u002F10.templates",{"title":837,"path":838,"stem":839,"titleTemplate":6},"Nitro","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fnitro","docs\u002F3.x\u002F4.api\u002F5.kit\u002F11.nitro",{"title":841,"path":842,"stem":843,"titleTemplate":6},"Resolving","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fresolving","docs\u002F3.x\u002F4.api\u002F5.kit\u002F12.resolving",{"title":845,"path":846,"stem":847,"titleTemplate":6},"Logging","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Flogging","docs\u002F3.x\u002F4.api\u002F5.kit\u002F13.logging",{"title":849,"path":850,"stem":851,"titleTemplate":6},"Builder","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fbuilder","docs\u002F3.x\u002F4.api\u002F5.kit\u002F14.builder",{"title":853,"path":854,"stem":855,"titleTemplate":6},"Examples","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fexamples","docs\u002F3.x\u002F4.api\u002F5.kit\u002F15.examples",{"title":84,"path":857,"stem":858,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Flayers","docs\u002F3.x\u002F4.api\u002F5.kit\u002F16.layers",{"title":860,"path":861,"stem":862,"titleTemplate":6},"Programmatic Usage","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fprogrammatic","docs\u002F3.x\u002F4.api\u002F5.kit\u002F2.programmatic",{"title":864,"path":865,"stem":866,"titleTemplate":6},"Compatibility","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fcompatibility","docs\u002F3.x\u002F4.api\u002F5.kit\u002F3.compatibility",{"title":268,"path":868,"stem":869,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fautoimports","docs\u002F3.x\u002F4.api\u002F5.kit\u002F4.autoimports",{"title":438,"path":871,"stem":872,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fcomponents","docs\u002F3.x\u002F4.api\u002F5.kit\u002F5.components",{"title":874,"path":875,"stem":876,"titleTemplate":6},"Context","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fcontext","docs\u002F3.x\u002F4.api\u002F5.kit\u002F6.context",{"title":878,"path":879,"stem":880,"titleTemplate":6},"Pages","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fpages","docs\u002F3.x\u002F4.api\u002F5.kit\u002F7.pages",{"title":882,"path":883,"stem":884,"titleTemplate":6},"Layout","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Flayout","docs\u002F3.x\u002F4.api\u002F5.kit\u002F8.layout",{"title":886,"path":887,"stem":888,"titleTemplate":6},"Head","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fhead","docs\u002F3.x\u002F4.api\u002F5.kit\u002F9.head",{"title":890,"path":891,"stem":892,"titleTemplate":6},"Plugins","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fplugins","docs\u002F3.x\u002F4.api\u002F5.kit\u002F9.plugins",{"title":894,"titleTemplate":6,"icon":895,"path":896,"stem":897,"children":898,"page":108},"Advanced","i-lucide-brain","\u002Fdocs\u002F3.x\u002Fapi\u002Fadvanced","docs\u002F3.x\u002F4.api\u002F6.advanced",[899,902],{"title":411,"path":900,"stem":901,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fapi\u002Fadvanced\u002Fhooks","docs\u002F3.x\u002F4.api\u002F6.advanced\u002F1.hooks",{"title":903,"path":904,"stem":905,"titleTemplate":6},"Import meta","\u002Fdocs\u002F3.x\u002Fapi\u002Fadvanced\u002Fimport-meta","docs\u002F3.x\u002F4.api\u002F6.advanced\u002F2.import-meta",{"title":907,"path":908,"stem":909,"titleTemplate":910,"icon":32},"Nuxt Configuration","\u002Fdocs\u002F3.x\u002Fapi\u002Fnuxt-config","docs\u002F3.x\u002F4.api\u002F6.nuxt-config","%s",{"title":853,"titleTemplate":912,"icon":913,"path":914,"stem":915,"children":916,"page":108},"%s · Nuxt Examples","i-lucide-app-window-mac","\u002Fdocs\u002F3.x\u002Fexamples","docs\u002F3.x\u002F4.examples",[917,921,943,958,994],{"title":918,"path":919,"stem":920,"titleTemplate":6},"Hello World","\u002Fdocs\u002F3.x\u002Fexamples\u002Fhello-world","docs\u002F3.x\u002F4.examples\u002F0.hello-world",{"title":399,"path":922,"stem":923,"children":924,"page":108},"\u002Fdocs\u002F3.x\u002Fexamples\u002Ffeatures","docs\u002F3.x\u002F4.examples\u002F1.features",[925,929,932,935,939],{"title":926,"path":927,"stem":928,"titleTemplate":6},"Auto Imports","\u002Fdocs\u002F3.x\u002Fexamples\u002Ffeatures\u002Fauto-imports","docs\u002F3.x\u002F4.examples\u002F1.features\u002F1.auto-imports",{"title":64,"path":930,"stem":931,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fexamples\u002Ffeatures\u002Fdata-fetching","docs\u002F3.x\u002F4.examples\u002F1.features\u002F2.data-fetching",{"title":69,"path":933,"stem":934,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fexamples\u002Ffeatures\u002Fstate-management","docs\u002F3.x\u002F4.examples\u002F1.features\u002F3.state-management",{"title":936,"path":937,"stem":938,"titleTemplate":6},"Meta Tags","\u002Fdocs\u002F3.x\u002Fexamples\u002Ffeatures\u002Fmeta-tags","docs\u002F3.x\u002F4.examples\u002F1.features\u002F4.meta-tags",{"title":940,"path":941,"stem":942,"titleTemplate":6},"Layouts","\u002Fdocs\u002F3.x\u002Fexamples\u002Ffeatures\u002Flayouts","docs\u002F3.x\u002F4.examples\u002F1.features\u002F5.layouts",{"title":49,"path":944,"stem":945,"children":946,"page":108},"\u002Fdocs\u002F3.x\u002Fexamples\u002Frouting","docs\u002F3.x\u002F4.examples\u002F2.routing",[947,951,954],{"title":948,"path":949,"stem":950,"titleTemplate":6},"Middleware","\u002Fdocs\u002F3.x\u002Fexamples\u002Frouting\u002Fmiddleware","docs\u002F3.x\u002F4.examples\u002F2.routing\u002Fmiddleware",{"title":878,"path":952,"stem":953,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fexamples\u002Frouting\u002Fpages","docs\u002F3.x\u002F4.examples\u002F2.routing\u002Fpages",{"title":955,"path":956,"stem":957,"titleTemplate":6},"Universal Router","\u002Fdocs\u002F3.x\u002Fexamples\u002Frouting\u002Funiversal-router","docs\u002F3.x\u002F4.examples\u002F2.routing\u002Funiversal-router",{"title":894,"path":959,"stem":960,"children":961,"page":108},"\u002Fdocs\u002F3.x\u002Fexamples\u002Fadvanced","docs\u002F3.x\u002F4.examples\u002F4.advanced",[962,965,968,972,976,980,984,987,990],{"title":84,"path":963,"stem":964,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fexamples\u002Fadvanced\u002Fconfig-extends","docs\u002F3.x\u002F4.examples\u002F4.advanced\u002Fconfig-extends",{"title":74,"path":966,"stem":967,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fexamples\u002Fadvanced\u002Ferror-handling","docs\u002F3.x\u002F4.examples\u002F4.advanced\u002Ferror-handling",{"title":969,"path":970,"stem":971,"titleTemplate":6},"JSX \u002F TSX","\u002Fdocs\u002F3.x\u002Fexamples\u002Fadvanced\u002Fjsx","docs\u002F3.x\u002F4.examples\u002F4.advanced\u002Fjsx",{"title":973,"path":974,"stem":975,"titleTemplate":6},"Locale","\u002Fdocs\u002F3.x\u002Fexamples\u002Fadvanced\u002Flocale","docs\u002F3.x\u002F4.examples\u002F4.advanced\u002Flocale",{"title":977,"path":978,"stem":979,"titleTemplate":6},"Module Extend Pages","\u002Fdocs\u002F3.x\u002Fexamples\u002Fadvanced\u002Fmodule-extend-pages","docs\u002F3.x\u002F4.examples\u002F4.advanced\u002Fmodule-extend-pages",{"title":981,"path":982,"stem":983,"titleTemplate":6},"Teleport","\u002Fdocs\u002F3.x\u002Fexamples\u002Fadvanced\u002Fteleport","docs\u002F3.x\u002F4.examples\u002F4.advanced\u002Fteleport",{"title":99,"path":985,"stem":986,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fexamples\u002Fadvanced\u002Ftesting","docs\u002F3.x\u002F4.examples\u002F4.advanced\u002Ftesting",{"title":523,"path":988,"stem":989,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fexamples\u002Fadvanced\u002Fuse-cookie","docs\u002F3.x\u002F4.examples\u002F4.advanced\u002Fuse-cookie",{"title":991,"path":992,"stem":993,"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":995,"path":996,"stem":997,"children":998,"page":108},"Experimental","\u002Fdocs\u002F3.x\u002Fexamples\u002Fexperimental","docs\u002F3.x\u002F4.examples\u002F7.experimental",[999],{"title":1000,"path":1001,"stem":1002,"titleTemplate":6},"WASM","\u002Fdocs\u002F3.x\u002Fexamples\u002Fexperimental\u002Fwasm","docs\u002F3.x\u002F4.examples\u002F7.experimental\u002Fwasm",{"title":1004,"titleTemplate":1005,"icon":1006,"path":1007,"stem":1008,"children":1009,"page":108},"Community","%s · Nuxt Community","i-lucide-messages-square","\u002Fdocs\u002F3.x\u002Fcommunity","docs\u002F3.x\u002F5.community",[1010,1015,1020,1025,1030,1035],{"title":1011,"path":1012,"stem":1013,"titleTemplate":6,"icon":1014},"Getting Help","\u002Fdocs\u002F3.x\u002Fcommunity\u002Fgetting-help","docs\u002F3.x\u002F5.community\u002F2.getting-help","i-lucide-life-buoy",{"title":1016,"path":1017,"stem":1018,"titleTemplate":6,"icon":1019},"Reporting Bugs","\u002Fdocs\u002F3.x\u002Fcommunity\u002Freporting-bugs","docs\u002F3.x\u002F5.community\u002F3.reporting-bugs","i-lucide-bug",{"title":1021,"path":1022,"stem":1023,"titleTemplate":6,"icon":1024},"Contribution","\u002Fdocs\u002F3.x\u002Fcommunity\u002Fcontribution","docs\u002F3.x\u002F5.community\u002F4.contribution","i-lucide-git-pull-request",{"title":1026,"path":1027,"stem":1028,"titleTemplate":6,"icon":1029},"Framework","\u002Fdocs\u002F3.x\u002Fcommunity\u002Fframework-contribution","docs\u002F3.x\u002F5.community\u002F5.framework-contribution","i-lucide-github",{"title":1031,"path":1032,"stem":1033,"titleTemplate":6,"icon":1034},"Roadmap","\u002Fdocs\u002F3.x\u002Fcommunity\u002Froadmap","docs\u002F3.x\u002F5.community\u002F6.roadmap","i-lucide-map",{"title":1036,"path":1037,"stem":1038,"titleTemplate":6,"icon":1039},"Releases","\u002Fdocs\u002F3.x\u002Fcommunity\u002Fchangelog","docs\u002F3.x\u002F5.community\u002F7.changelog","i-lucide-bell-dot",{"title":1041,"titleTemplate":1042,"icon":1043,"path":1044,"stem":1045,"children":1046,"page":108},"Migrate to Nuxt Bridge","Migrate to Nuxt Bridge: %s","i-lucide-ship","\u002Fdocs\u002F3.x\u002Fbridge","docs\u002F3.x\u002F6.bridge",[1047,1051,1054,1057,1061,1065,1069,1072,1075,1078],{"title":1048,"path":1049,"stem":1050,"titleTemplate":6},"Overview","\u002Fdocs\u002F3.x\u002Fbridge\u002Foverview","docs\u002F3.x\u002F6.bridge\u002F1.overview",{"title":29,"path":1052,"stem":1053,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fbridge\u002Fconfiguration","docs\u002F3.x\u002F6.bridge\u002F10.configuration",{"title":280,"path":1055,"stem":1056,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fbridge\u002Ftypescript","docs\u002F3.x\u002F6.bridge\u002F2.typescript",{"title":1058,"path":1059,"stem":1060,"titleTemplate":6},"Legacy Composition API","\u002Fdocs\u002F3.x\u002Fbridge\u002Fbridge-composition-api","docs\u002F3.x\u002F6.bridge\u002F3.bridge-composition-api",{"title":1062,"path":1063,"stem":1064,"titleTemplate":6},"Plugins and Middleware","\u002Fdocs\u002F3.x\u002Fbridge\u002Fplugins-and-middleware","docs\u002F3.x\u002F6.bridge\u002F4.plugins-and-middleware",{"title":1066,"path":1067,"stem":1068,"titleTemplate":6},"New Composition API","\u002Fdocs\u002F3.x\u002Fbridge\u002Fnuxt3-compatible-api","docs\u002F3.x\u002F6.bridge\u002F5.nuxt3-compatible-api",{"title":936,"path":1070,"stem":1071,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fbridge\u002Fmeta","docs\u002F3.x\u002F6.bridge\u002F6.meta",{"title":403,"path":1073,"stem":1074,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fbridge\u002Fruntime-config","docs\u002F3.x\u002F6.bridge\u002F7.runtime-config",{"title":837,"path":1076,"stem":1077,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fbridge\u002Fnitro","docs\u002F3.x\u002F6.bridge\u002F8.nitro",{"title":1079,"path":1080,"stem":1081,"titleTemplate":6},"Vite","\u002Fdocs\u002F3.x\u002Fbridge\u002Fvite","docs\u002F3.x\u002F6.bridge\u002F9.vite",{"title":1083,"titleTemplate":1084,"icon":107,"path":1085,"stem":1086,"children":1087,"page":108},"Migrate to Nuxt 3","Migrate to Nuxt 3: %s","\u002Fdocs\u002F3.x\u002Fmigration","docs\u002F3.x\u002F7.migration",[1088,1091,1095,1098,1101,1104,1107,1110,1113,1117,1121],{"title":1048,"path":1089,"stem":1090,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fmigration\u002Foverview","docs\u002F3.x\u002F7.migration\u002F1.overview",{"title":1092,"path":1093,"stem":1094,"titleTemplate":6},"Build Tooling","\u002Fdocs\u002F3.x\u002Fmigration\u002Fbundling","docs\u002F3.x\u002F7.migration\u002F10.bundling",{"title":79,"path":1096,"stem":1097,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fmigration\u002Fserver","docs\u002F3.x\u002F7.migration\u002F11.server",{"title":29,"path":1099,"stem":1100,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fmigration\u002Fconfiguration","docs\u002F3.x\u002F7.migration\u002F2.configuration",{"title":276,"path":1102,"stem":1103,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fmigration\u002Fmodule-authors","docs\u002F3.x\u002F7.migration\u002F20.module-authors",{"title":926,"path":1105,"stem":1106,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fmigration\u002Fauto-imports","docs\u002F3.x\u002F7.migration\u002F3.auto-imports",{"title":936,"path":1108,"stem":1109,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fmigration\u002Fmeta","docs\u002F3.x\u002F7.migration\u002F4.meta",{"title":1062,"path":1111,"stem":1112,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fmigration\u002Fplugins-and-middleware","docs\u002F3.x\u002F7.migration\u002F5.plugins-and-middleware",{"title":1114,"path":1115,"stem":1116,"titleTemplate":6},"Pages and Layouts","\u002Fdocs\u002F3.x\u002Fmigration\u002Fpages-and-layouts","docs\u002F3.x\u002F7.migration\u002F6.pages-and-layouts",{"title":1118,"path":1119,"stem":1120,"titleTemplate":6},"Component Options","\u002Fdocs\u002F3.x\u002Fmigration\u002Fcomponent-options","docs\u002F3.x\u002F7.migration\u002F7.component-options",{"title":403,"path":1122,"stem":1123,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fmigration\u002Fruntime-config","docs\u002F3.x\u002F7.migration\u002F8.runtime-config",{"title":5,"titleTemplate":6,"icon":7,"path":1125,"stem":1126,"children":1127,"page":108},"\u002Fdocs\u002F4.x","docs\u002F4.x",[1128,1186,1285,1436,1818,1895,1917,1951],{"title":12,"titleTemplate":13,"icon":14,"path":1129,"stem":1130,"children":1131,"page":108},"\u002Fdocs\u002F4.x\u002Fgetting-started","docs\u002F4.x\u002F1.getting-started",[1132,1135,1138,1141,1144,1147,1150,1153,1156,1159,1162,1165,1168,1171,1174,1177,1180,1183],{"title":19,"path":1133,"stem":1134,"titleTemplate":6,"icon":22},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fintroduction","docs\u002F4.x\u002F1.getting-started\u002F01.introduction",{"title":24,"path":1136,"stem":1137,"titleTemplate":6,"icon":27},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Finstallation","docs\u002F4.x\u002F1.getting-started\u002F02.installation",{"title":29,"path":1139,"stem":1140,"titleTemplate":6,"icon":32},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fconfiguration","docs\u002F4.x\u002F1.getting-started\u002F03.configuration",{"title":34,"path":1142,"stem":1143,"titleTemplate":6,"icon":37},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fviews","docs\u002F4.x\u002F1.getting-started\u002F04.views",{"title":39,"path":1145,"stem":1146,"titleTemplate":6,"icon":42},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fassets","docs\u002F4.x\u002F1.getting-started\u002F05.assets",{"title":44,"path":1148,"stem":1149,"titleTemplate":6,"icon":47},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fstyling","docs\u002F4.x\u002F1.getting-started\u002F06.styling",{"title":49,"path":1151,"stem":1152,"titleTemplate":6,"icon":52},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Frouting","docs\u002F4.x\u002F1.getting-started\u002F07.routing",{"title":54,"path":1154,"stem":1155,"titleTemplate":6,"icon":57},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fseo-meta","docs\u002F4.x\u002F1.getting-started\u002F08.seo-meta",{"title":59,"path":1157,"stem":1158,"titleTemplate":6,"icon":62},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Ftransitions","docs\u002F4.x\u002F1.getting-started\u002F09.transitions",{"title":64,"path":1160,"stem":1161,"titleTemplate":6,"icon":67},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fdata-fetching","docs\u002F4.x\u002F1.getting-started\u002F10.data-fetching",{"title":69,"path":1163,"stem":1164,"titleTemplate":6,"icon":72},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fstate-management","docs\u002F4.x\u002F1.getting-started\u002F11.state-management",{"title":74,"path":1166,"stem":1167,"titleTemplate":6,"icon":77},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Ferror-handling","docs\u002F4.x\u002F1.getting-started\u002F12.error-handling",{"title":79,"path":1169,"stem":1170,"titleTemplate":6,"icon":82},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fserver","docs\u002F4.x\u002F1.getting-started\u002F13.server",{"title":84,"path":1172,"stem":1173,"titleTemplate":6,"icon":87},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Flayers","docs\u002F4.x\u002F1.getting-started\u002F14.layers",{"title":89,"path":1175,"stem":1176,"titleTemplate":6,"icon":92},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fprerendering","docs\u002F4.x\u002F1.getting-started\u002F15.prerendering",{"title":94,"path":1178,"stem":1179,"titleTemplate":6,"icon":97},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fdeployment","docs\u002F4.x\u002F1.getting-started\u002F16.deployment",{"title":99,"path":1181,"stem":1182,"titleTemplate":6,"icon":102},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Ftesting","docs\u002F4.x\u002F1.getting-started\u002F17.testing",{"title":104,"path":1184,"stem":1185,"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":1187,"stem":1188,"children":1189,"page":108},"\u002Fdocs\u002F4.x\u002Fdirectory-structure","docs\u002F4.x\u002F2.directory-structure",[1190,1193,1196,1238,1241,1244,1247,1250,1253,1256,1259,1264,1267,1270,1273,1276,1279,1282],{"title":117,"path":1191,"stem":1192,"titleTemplate":6,"icon":120},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fnuxt","docs\u002F4.x\u002F2.directory-structure\u002F0.nuxt",{"title":122,"path":1194,"stem":1195,"titleTemplate":6,"icon":125},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Foutput","docs\u002F4.x\u002F2.directory-structure\u002F0.output",{"title":1197,"titleTemplate":111,"head":1198,"defaultOpen":1200,"icon":1201,"path":1202,"stem":1203,"children":1204,"page":108},"app",{"title":1199},"app\u002F",true,"i-vscode-icons-folder-type-app","\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp","docs\u002F4.x\u002F2.directory-structure\u002F1.app",[1205,1208,1211,1214,1217,1220,1223,1226,1229,1232,1235],{"title":127,"path":1206,"stem":1207,"titleTemplate":6,"icon":130},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Fassets","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F1.assets",{"title":132,"path":1209,"stem":1210,"titleTemplate":6,"icon":135},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Fcomponents","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F1.components",{"title":137,"path":1212,"stem":1213,"titleTemplate":6,"icon":140},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Fcomposables","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F1.composables",{"title":152,"path":1215,"stem":1216,"titleTemplate":6,"icon":155},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Flayouts","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F1.layouts",{"title":157,"path":1218,"stem":1219,"titleTemplate":6,"icon":160},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Fmiddleware","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F1.middleware",{"title":171,"path":1221,"stem":1222,"titleTemplate":6,"icon":155},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Fpages","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F1.pages",{"title":175,"path":1224,"stem":1225,"titleTemplate":6,"icon":178},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Fplugins","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F1.plugins",{"title":195,"path":1227,"stem":1228,"titleTemplate":6,"icon":198},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Futils","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F1.utils",{"title":219,"path":1230,"stem":1231,"titleTemplate":6,"icon":222},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Fapp","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F3.app",{"title":224,"path":1233,"stem":1234,"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":1236,"stem":1237,"titleTemplate":6,"icon":222},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Ferror","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F3.error",{"title":142,"path":1239,"stem":1240,"titleTemplate":6,"icon":145},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fcontent","docs\u002F4.x\u002F2.directory-structure\u002F1.content",{"title":147,"path":1242,"stem":1243,"titleTemplate":6,"icon":150},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Flayers","docs\u002F4.x\u002F2.directory-structure\u002F1.layers",{"title":162,"path":1245,"stem":1246,"titleTemplate":6,"icon":150},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fmodules","docs\u002F4.x\u002F2.directory-structure\u002F1.modules",{"title":166,"path":1248,"stem":1249,"titleTemplate":6,"icon":169},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fnode_modules","docs\u002F4.x\u002F2.directory-structure\u002F1.node_modules",{"title":180,"path":1251,"stem":1252,"titleTemplate":6,"icon":183},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fpublic","docs\u002F4.x\u002F2.directory-structure\u002F1.public",{"title":185,"path":1254,"stem":1255,"titleTemplate":6,"icon":188},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fserver","docs\u002F4.x\u002F2.directory-structure\u002F1.server",{"title":190,"path":1257,"stem":1258,"titleTemplate":6,"icon":193},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fshared","docs\u002F4.x\u002F2.directory-structure\u002F1.shared",{"title":1260,"path":1261,"stem":1262,"titleTemplate":6,"icon":1263},"test","\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Ftest","docs\u002F4.x\u002F2.directory-structure\u002F1.test","i-vscode-icons-folder-type-test",{"title":200,"path":1265,"stem":1266,"titleTemplate":6,"icon":203},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fenv","docs\u002F4.x\u002F2.directory-structure\u002F2.env",{"title":205,"path":1268,"stem":1269,"titleTemplate":6,"icon":208},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fgitignore","docs\u002F4.x\u002F2.directory-structure\u002F2.gitignore",{"title":210,"path":1271,"stem":1272,"titleTemplate":6,"icon":213},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fnuxtignore","docs\u002F4.x\u002F2.directory-structure\u002F2.nuxtignore",{"title":215,"path":1274,"stem":1275,"titleTemplate":6,"icon":213},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fnuxtrc","docs\u002F4.x\u002F2.directory-structure\u002F2.nuxtrc",{"title":233,"path":1277,"stem":1278,"titleTemplate":6,"icon":213},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fnuxt-config","docs\u002F4.x\u002F2.directory-structure\u002F3.nuxt-config",{"title":237,"path":1280,"stem":1281,"titleTemplate":6,"icon":240},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fpackage","docs\u002F4.x\u002F2.directory-structure\u002F3.package",{"title":242,"path":1283,"stem":1284,"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":1286,"stem":1287,"children":1288,"page":108},"\u002Fdocs\u002F4.x\u002Fguide","docs\u002F4.x\u002F3.guide",[1289,1318,1340,1350,1378,1398],{"title":253,"titleTemplate":254,"icon":255,"path":1290,"stem":1291,"children":1292,"page":108},"\u002Fdocs\u002F4.x\u002Fguide\u002Fconcepts","docs\u002F4.x\u002F3.guide\u002F1.concepts",[1293,1296,1299,1302,1305,1308,1312,1315],{"title":260,"path":1294,"stem":1295,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fconcepts\u002Frendering","docs\u002F4.x\u002F3.guide\u002F1.concepts\u002F1.rendering",{"title":264,"path":1297,"stem":1298,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fconcepts\u002Fnuxt-lifecycle","docs\u002F4.x\u002F3.guide\u002F1.concepts\u002F2.nuxt-lifecycle",{"title":268,"path":1300,"stem":1301,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fconcepts\u002Fauto-imports","docs\u002F4.x\u002F3.guide\u002F1.concepts\u002F3.auto-imports",{"title":272,"path":1303,"stem":1304,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fconcepts\u002Fserver-engine","docs\u002F4.x\u002F3.guide\u002F1.concepts\u002F4.server-engine",{"title":276,"path":1306,"stem":1307,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fconcepts\u002Fmodules","docs\u002F4.x\u002F3.guide\u002F1.concepts\u002F5.modules",{"title":1309,"path":1310,"stem":1311,"titleTemplate":6},"Server Components","\u002Fdocs\u002F4.x\u002Fguide\u002Fconcepts\u002Fserver-components","docs\u002F4.x\u002F3.guide\u002F1.concepts\u002F6.server-components",{"title":280,"path":1313,"stem":1314,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fconcepts\u002Ftypescript","docs\u002F4.x\u002F3.guide\u002F1.concepts\u002F8.typescript",{"title":284,"path":1316,"stem":1317,"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":1319,"stem":1320,"children":1321,"page":108},"\u002Fdocs\u002F4.x\u002Fguide\u002Fbest-practices","docs\u002F4.x\u002F3.guide\u002F2.best-practices",[1322,1326,1330,1334,1337],{"title":1323,"path":1324,"stem":1325,"titleTemplate":6},"Accessibility","\u002Fdocs\u002F4.x\u002Fguide\u002Fbest-practices\u002Faccessibility","docs\u002F4.x\u002F3.guide\u002F2.best-practices\u002Faccessibility",{"title":1327,"path":1328,"stem":1329,"titleTemplate":6},"Dev Containers","\u002Fdocs\u002F4.x\u002Fguide\u002Fbest-practices\u002Fdevcontainers","docs\u002F4.x\u002F3.guide\u002F2.best-practices\u002Fdevcontainers",{"title":1331,"path":1332,"stem":1333,"titleTemplate":6},"Nuxt and Hydration","\u002Fdocs\u002F4.x\u002Fguide\u002Fbest-practices\u002Fhydration","docs\u002F4.x\u002F3.guide\u002F2.best-practices\u002Fhydration",{"title":299,"path":1335,"stem":1336,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fbest-practices\u002Fperformance","docs\u002F4.x\u002F3.guide\u002F2.best-practices\u002Fperformance",{"title":303,"path":1338,"stem":1339,"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":1341,"stem":1342,"children":1343,"page":108},"\u002Fdocs\u002F4.x\u002Fguide\u002Fai","docs\u002F4.x\u002F3.guide\u002F3.ai",[1344,1347],{"title":314,"path":1345,"stem":1346,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fai\u002Fmcp","docs\u002F4.x\u002F3.guide\u002F3.ai\u002F1.mcp",{"title":318,"path":1348,"stem":1349,"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":1351,"stem":1352,"children":1353,"page":108},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules","docs\u002F4.x\u002F3.guide\u002F4.modules",[1354,1357,1360,1363,1366,1369,1372,1375],{"title":329,"path":1355,"stem":1356,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Fgetting-started","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F1.getting-started",{"title":333,"path":1358,"stem":1359,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Fmodule-anatomy","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F2.module-anatomy",{"title":337,"path":1361,"stem":1362,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Frecipes-basics","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F3.recipes-basics",{"title":341,"path":1364,"stem":1365,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Fmodule-dependencies","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F4.module-dependencies",{"title":345,"path":1367,"stem":1368,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Frecipes-advanced","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F5.recipes-advanced",{"title":349,"path":1370,"stem":1371,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Ftesting","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F6.testing",{"title":353,"path":1373,"stem":1374,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Fbest-practices","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F7.best-practices",{"title":357,"path":1376,"stem":1377,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Fecosystem","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F8.ecosystem",{"title":361,"titleTemplate":362,"icon":363,"path":1379,"stem":1380,"children":1381,"page":108},"\u002Fdocs\u002F4.x\u002Fguide\u002Frecipes","docs\u002F4.x\u002F3.guide\u002F5.recipes",[1382,1385,1388,1391,1394],{"title":368,"path":1383,"stem":1384,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Frecipes\u002Fcustom-routing","docs\u002F4.x\u002F3.guide\u002F5.recipes\u002F1.custom-routing",{"title":372,"path":1386,"stem":1387,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Frecipes\u002Fvite-plugin","docs\u002F4.x\u002F3.guide\u002F5.recipes\u002F2.vite-plugin",{"title":376,"path":1389,"stem":1390,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Frecipes\u002Fcustom-usefetch","docs\u002F4.x\u002F3.guide\u002F5.recipes\u002F3.custom-usefetch",{"title":380,"path":1392,"stem":1393,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Frecipes\u002Fsessions-and-authentication","docs\u002F4.x\u002F3.guide\u002F5.recipes\u002F4.sessions-and-authentication",{"title":1395,"path":1396,"stem":1397,"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":1399,"stem":1400,"children":1401,"page":108},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further","docs\u002F4.x\u002F3.guide\u002F6.going-further",[1402,1405,1408,1411,1414,1417,1420,1423,1426,1429,1433],{"title":391,"path":1403,"stem":1404,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fevents","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F1.events",{"title":395,"path":1406,"stem":1407,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fexperimental-features","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F1.experimental-features",{"title":399,"path":1409,"stem":1410,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Ffeatures","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F1.features",{"title":403,"path":1412,"stem":1413,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fruntime-config","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F10.runtime-config",{"title":407,"path":1415,"stem":1416,"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":1418,"stem":1419,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fhooks","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F2.hooks",{"title":415,"path":1421,"stem":1422,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fkit","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F4.kit",{"title":419,"path":1424,"stem":1425,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fnuxt-app","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F6.nuxt-app",{"title":423,"path":1427,"stem":1428,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Flayers","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F7.layers",{"title":1430,"path":1431,"stem":1432,"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":1434,"stem":1435,"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":1437,"stem":1438,"children":1439,"page":108},"\u002Fdocs\u002F4.x\u002Fapi","docs\u002F4.x\u002F4.api",[1440,1493,1600,1691,1743,1805,1815],{"title":438,"titleTemplate":439,"icon":324,"path":1441,"stem":1442,"children":1443,"page":108},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents","docs\u002F4.x\u002F4.api\u002F1.components",[1444,1447,1450,1453,1456,1459,1462,1465,1469,1472,1475,1478,1481,1484,1487,1490],{"title":444,"path":1445,"stem":1446,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fclient-only","docs\u002F4.x\u002F4.api\u002F1.components\u002F1.client-only",{"title":448,"path":1448,"stem":1449,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fdev-only","docs\u002F4.x\u002F4.api\u002F1.components\u002F1.dev-only",{"title":452,"path":1451,"stem":1452,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-client-fallback","docs\u002F4.x\u002F4.api\u002F1.components\u002F1.nuxt-client-fallback",{"title":456,"path":1454,"stem":1455,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-picture","docs\u002F4.x\u002F4.api\u002F1.components\u002F10.nuxt-picture",{"title":460,"path":1457,"stem":1458,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fteleports","docs\u002F4.x\u002F4.api\u002F1.components\u002F11.teleports",{"title":464,"path":1460,"stem":1461,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-route-announcer","docs\u002F4.x\u002F4.api\u002F1.components\u002F12.nuxt-route-announcer",{"title":468,"path":1463,"stem":1464,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-time","docs\u002F4.x\u002F4.api\u002F1.components\u002F13.nuxt-time",{"title":1466,"path":1467,"stem":1468,"titleTemplate":6},"\u003CNuxtAnnouncer>","\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-announcer","docs\u002F4.x\u002F4.api\u002F1.components\u002F14.nuxt-announcer",{"title":472,"path":1470,"stem":1471,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-page","docs\u002F4.x\u002F4.api\u002F1.components\u002F2.nuxt-page",{"title":476,"path":1473,"stem":1474,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-layout","docs\u002F4.x\u002F4.api\u002F1.components\u002F3.nuxt-layout",{"title":480,"path":1476,"stem":1477,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-link","docs\u002F4.x\u002F4.api\u002F1.components\u002F4.nuxt-link",{"title":484,"path":1479,"stem":1480,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-loading-indicator","docs\u002F4.x\u002F4.api\u002F1.components\u002F5.nuxt-loading-indicator",{"title":488,"path":1482,"stem":1483,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-error-boundary","docs\u002F4.x\u002F4.api\u002F1.components\u002F6.nuxt-error-boundary",{"title":492,"path":1485,"stem":1486,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-welcome","docs\u002F4.x\u002F4.api\u002F1.components\u002F7.nuxt-welcome",{"title":496,"path":1488,"stem":1489,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-island","docs\u002F4.x\u002F4.api\u002F1.components\u002F8.nuxt-island",{"title":500,"path":1491,"stem":1492,"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":1494,"stem":1495,"children":1496,"page":108},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables","docs\u002F4.x\u002F4.api\u002F2.composables",[1497,1501,1505,1508,1512,1515,1518,1521,1524,1527,1530,1533,1536,1540,1543,1546,1549,1552,1555,1558,1561,1564,1567,1570,1573,1576,1579,1582,1585,1588,1591,1594,1597],{"title":1498,"path":1499,"stem":1500,"titleTemplate":6},"createUseAsyncData","\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fcreate-use-async-data","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fcreate-use-async-data",{"title":1502,"path":1503,"stem":1504,"titleTemplate":6},"createUseFetch","\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fcreate-use-fetch","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fcreate-use-fetch",{"title":511,"path":1506,"stem":1507,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fon-prehydrate","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fon-prehydrate",{"title":1509,"path":1510,"stem":1511,"titleTemplate":6},"useAnnouncer","\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-announcer","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-announcer",{"title":515,"path":1513,"stem":1514,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-app-config","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-app-config",{"title":519,"path":1516,"stem":1517,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-async-data","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-async-data",{"title":523,"path":1519,"stem":1520,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-cookie","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-cookie",{"title":527,"path":1522,"stem":1523,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-error","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-error",{"title":531,"path":1525,"stem":1526,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-fetch","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-fetch",{"title":535,"path":1528,"stem":1529,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-head","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-head",{"title":539,"path":1531,"stem":1532,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-head-safe","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-head-safe",{"title":543,"path":1534,"stem":1535,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-hydration","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-hydration",{"title":1537,"path":1538,"stem":1539,"titleTemplate":6},"useLayout","\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-layout","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-layout",{"title":547,"path":1541,"stem":1542,"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":1544,"stem":1545,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-lazy-fetch","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-lazy-fetch",{"title":555,"path":1547,"stem":1548,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-loading-indicator","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-loading-indicator",{"title":559,"path":1550,"stem":1551,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-nuxt-app","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-nuxt-app",{"title":563,"path":1553,"stem":1554,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-nuxt-data","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-nuxt-data",{"title":567,"path":1556,"stem":1557,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-preview-mode","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-preview-mode",{"title":571,"path":1559,"stem":1560,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-request-event","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-request-event",{"title":575,"path":1562,"stem":1563,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-request-fetch","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-request-fetch",{"title":579,"path":1565,"stem":1566,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-request-header","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-request-header",{"title":583,"path":1568,"stem":1569,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-request-headers","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-request-headers",{"title":587,"path":1571,"stem":1572,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-request-url","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-request-url",{"title":591,"path":1574,"stem":1575,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-response-header","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-response-header",{"title":595,"path":1577,"stem":1578,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-route","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-route",{"title":599,"path":1580,"stem":1581,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-route-announcer","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-route-announcer",{"title":603,"path":1583,"stem":1584,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-router","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-router",{"title":607,"path":1586,"stem":1587,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-runtime-config","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-runtime-config",{"title":611,"path":1589,"stem":1590,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-runtime-hook","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-runtime-hook",{"title":615,"path":1592,"stem":1593,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-seo-meta","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-seo-meta",{"title":619,"path":1595,"stem":1596,"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":1598,"stem":1599,"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":1601,"stem":1602,"children":1603,"page":108},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils","docs\u002F4.x\u002F4.api\u002F3.utils",[1604,1607,1610,1613,1616,1619,1622,1625,1628,1631,1634,1637,1640,1643,1646,1649,1652,1655,1658,1661,1664,1667,1670,1673,1676,1679,1682,1685,1688],{"title":634,"path":1605,"stem":1606,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fdollarfetch","docs\u002F4.x\u002F4.api\u002F3.utils\u002F$fetch",{"title":638,"path":1608,"stem":1609,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fabort-navigation","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fabort-navigation",{"title":642,"path":1611,"stem":1612,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fadd-route-middleware","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fadd-route-middleware",{"title":646,"path":1614,"stem":1615,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fcall-once","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fcall-once",{"title":650,"path":1617,"stem":1618,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fclear-error","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fclear-error",{"title":654,"path":1620,"stem":1621,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fclear-nuxt-data","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fclear-nuxt-data",{"title":658,"path":1623,"stem":1624,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fclear-nuxt-state","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fclear-nuxt-state",{"title":662,"path":1626,"stem":1627,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fcreate-error","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fcreate-error",{"title":666,"path":1629,"stem":1630,"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":1632,"stem":1633,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fdefine-nuxt-component","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fdefine-nuxt-component",{"title":674,"path":1635,"stem":1636,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fdefine-nuxt-plugin","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fdefine-nuxt-plugin",{"title":678,"path":1638,"stem":1639,"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":1641,"stem":1642,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fdefine-page-meta","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fdefine-page-meta",{"title":686,"path":1644,"stem":1645,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fdefine-route-rules","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fdefine-route-rules",{"title":690,"path":1647,"stem":1648,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fnavigate-to","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fnavigate-to",{"title":694,"path":1650,"stem":1651,"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":1653,"stem":1654,"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":1656,"stem":1657,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fon-nuxt-ready","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fon-nuxt-ready",{"title":706,"path":1659,"stem":1660,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fprefetch-components","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fprefetch-components",{"title":710,"path":1662,"stem":1663,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fpreload-components","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fpreload-components",{"title":714,"path":1665,"stem":1666,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fpreload-route-components","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fpreload-route-components",{"title":718,"path":1668,"stem":1669,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fprerender-routes","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fprerender-routes",{"title":722,"path":1671,"stem":1672,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Frefresh-cookie","docs\u002F4.x\u002F4.api\u002F3.utils\u002Frefresh-cookie",{"title":726,"path":1674,"stem":1675,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Frefresh-nuxt-data","docs\u002F4.x\u002F4.api\u002F3.utils\u002Frefresh-nuxt-data",{"title":730,"path":1677,"stem":1678,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Freload-nuxt-app","docs\u002F4.x\u002F4.api\u002F3.utils\u002Freload-nuxt-app",{"title":734,"path":1680,"stem":1681,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fset-page-layout","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fset-page-layout",{"title":738,"path":1683,"stem":1684,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fset-response-status","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fset-response-status",{"title":742,"path":1686,"stem":1687,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fshow-error","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fshow-error",{"title":746,"path":1689,"stem":1690,"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":1692,"stem":1693,"children":1694,"page":108},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands","docs\u002F4.x\u002F4.api\u002F4.commands",[1695,1698,1701,1704,1707,1710,1713,1716,1719,1722,1725,1728,1731,1734,1737,1740],{"title":757,"path":1696,"stem":1697,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fadd","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fadd",{"title":761,"path":1699,"stem":1700,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fanalyze","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fanalyze",{"title":765,"path":1702,"stem":1703,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fbuild","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fbuild",{"title":769,"path":1705,"stem":1706,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fbuild-module","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fbuild-module",{"title":773,"path":1708,"stem":1709,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fcleanup","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fcleanup",{"title":777,"path":1711,"stem":1712,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fdev","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fdev",{"title":781,"path":1714,"stem":1715,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fdevtools","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fdevtools",{"title":785,"path":1717,"stem":1718,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fgenerate","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fgenerate",{"title":789,"path":1720,"stem":1721,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Finfo","docs\u002F4.x\u002F4.api\u002F4.commands\u002Finfo",{"title":793,"path":1723,"stem":1724,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Finit","docs\u002F4.x\u002F4.api\u002F4.commands\u002Finit",{"title":797,"path":1726,"stem":1727,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fmodule","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fmodule",{"title":801,"path":1729,"stem":1730,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fprepare","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fprepare",{"title":805,"path":1732,"stem":1733,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fpreview","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fpreview",{"title":809,"path":1735,"stem":1736,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Ftest","docs\u002F4.x\u002F4.api\u002F4.commands\u002Ftest",{"title":813,"path":1738,"stem":1739,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Ftypecheck","docs\u002F4.x\u002F4.api\u002F4.commands\u002Ftypecheck",{"title":817,"path":1741,"stem":1742,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fupgrade","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fupgrade",{"title":415,"titleTemplate":821,"icon":822,"path":1744,"stem":1745,"children":1746,"page":108},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit","docs\u002F4.x\u002F4.api\u002F5.kit",[1747,1750,1753,1756,1760,1763,1766,1769,1772,1775,1778,1781,1784,1787,1790,1793,1796,1799,1802],{"title":276,"path":1748,"stem":1749,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fmodules","docs\u002F4.x\u002F4.api\u002F5.kit\u002F1.modules",{"title":403,"path":1751,"stem":1752,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fruntime-config","docs\u002F4.x\u002F4.api\u002F5.kit\u002F10.runtime-config",{"title":833,"path":1754,"stem":1755,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Ftemplates","docs\u002F4.x\u002F4.api\u002F5.kit\u002F10.templates",{"title":1757,"path":1758,"stem":1759,"titleTemplate":6},"App Config","\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fapp-config","docs\u002F4.x\u002F4.api\u002F5.kit\u002F11.app-config",{"title":837,"path":1761,"stem":1762,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fnitro","docs\u002F4.x\u002F4.api\u002F5.kit\u002F12.nitro",{"title":841,"path":1764,"stem":1765,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fresolving","docs\u002F4.x\u002F4.api\u002F5.kit\u002F13.resolving",{"title":845,"path":1767,"stem":1768,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Flogging","docs\u002F4.x\u002F4.api\u002F5.kit\u002F14.logging",{"title":849,"path":1770,"stem":1771,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fbuilder","docs\u002F4.x\u002F4.api\u002F5.kit\u002F15.builder",{"title":853,"path":1773,"stem":1774,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fexamples","docs\u002F4.x\u002F4.api\u002F5.kit\u002F16.examples",{"title":84,"path":1776,"stem":1777,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Flayers","docs\u002F4.x\u002F4.api\u002F5.kit\u002F17.layers",{"title":860,"path":1779,"stem":1780,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fprogrammatic","docs\u002F4.x\u002F4.api\u002F5.kit\u002F2.programmatic",{"title":864,"path":1782,"stem":1783,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fcompatibility","docs\u002F4.x\u002F4.api\u002F5.kit\u002F3.compatibility",{"title":268,"path":1785,"stem":1786,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fautoimports","docs\u002F4.x\u002F4.api\u002F5.kit\u002F4.autoimports",{"title":438,"path":1788,"stem":1789,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fcomponents","docs\u002F4.x\u002F4.api\u002F5.kit\u002F5.components",{"title":874,"path":1791,"stem":1792,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fcontext","docs\u002F4.x\u002F4.api\u002F5.kit\u002F6.context",{"title":878,"path":1794,"stem":1795,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fpages","docs\u002F4.x\u002F4.api\u002F5.kit\u002F7.pages",{"title":882,"path":1797,"stem":1798,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Flayout","docs\u002F4.x\u002F4.api\u002F5.kit\u002F8.layout",{"title":886,"path":1800,"stem":1801,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fhead","docs\u002F4.x\u002F4.api\u002F5.kit\u002F9.head",{"title":890,"path":1803,"stem":1804,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fplugins","docs\u002F4.x\u002F4.api\u002F5.kit\u002F9.plugins",{"title":894,"titleTemplate":6,"icon":895,"path":1806,"stem":1807,"children":1808,"page":108},"\u002Fdocs\u002F4.x\u002Fapi\u002Fadvanced","docs\u002F4.x\u002F4.api\u002F6.advanced",[1809,1812],{"title":411,"path":1810,"stem":1811,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fadvanced\u002Fhooks","docs\u002F4.x\u002F4.api\u002F6.advanced\u002F1.hooks",{"title":903,"path":1813,"stem":1814,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fadvanced\u002Fimport-meta","docs\u002F4.x\u002F4.api\u002F6.advanced\u002F2.import-meta",{"title":907,"path":1816,"stem":1817,"titleTemplate":910,"icon":32},"\u002Fdocs\u002F4.x\u002Fapi\u002Fnuxt-config","docs\u002F4.x\u002F4.api\u002F6.nuxt-config",{"title":853,"titleTemplate":912,"icon":913,"path":1819,"stem":1820,"children":1821,"page":108},"\u002Fdocs\u002F4.x\u002Fexamples","docs\u002F4.x\u002F4.examples",[1822,1825,1844,1857,1888],{"title":918,"path":1823,"stem":1824,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fhello-world","docs\u002F4.x\u002F4.examples\u002F0.hello-world",{"title":399,"path":1826,"stem":1827,"children":1828,"page":108},"\u002Fdocs\u002F4.x\u002Fexamples\u002Ffeatures","docs\u002F4.x\u002F4.examples\u002F1.features",[1829,1832,1835,1838,1841],{"title":926,"path":1830,"stem":1831,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Ffeatures\u002Fauto-imports","docs\u002F4.x\u002F4.examples\u002F1.features\u002F1.auto-imports",{"title":64,"path":1833,"stem":1834,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Ffeatures\u002Fdata-fetching","docs\u002F4.x\u002F4.examples\u002F1.features\u002F2.data-fetching",{"title":69,"path":1836,"stem":1837,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Ffeatures\u002Fstate-management","docs\u002F4.x\u002F4.examples\u002F1.features\u002F3.state-management",{"title":936,"path":1839,"stem":1840,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Ffeatures\u002Fmeta-tags","docs\u002F4.x\u002F4.examples\u002F1.features\u002F4.meta-tags",{"title":940,"path":1842,"stem":1843,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Ffeatures\u002Flayouts","docs\u002F4.x\u002F4.examples\u002F1.features\u002F5.layouts",{"title":49,"path":1845,"stem":1846,"children":1847,"page":108},"\u002Fdocs\u002F4.x\u002Fexamples\u002Frouting","docs\u002F4.x\u002F4.examples\u002F2.routing",[1848,1851,1854],{"title":948,"path":1849,"stem":1850,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Frouting\u002Fmiddleware","docs\u002F4.x\u002F4.examples\u002F2.routing\u002Fmiddleware",{"title":878,"path":1852,"stem":1853,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Frouting\u002Fpages","docs\u002F4.x\u002F4.examples\u002F2.routing\u002Fpages",{"title":955,"path":1855,"stem":1856,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Frouting\u002Funiversal-router","docs\u002F4.x\u002F4.examples\u002F2.routing\u002Funiversal-router",{"title":894,"path":1858,"stem":1859,"children":1860,"page":108},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced","docs\u002F4.x\u002F4.examples\u002F4.advanced",[1861,1864,1867,1870,1873,1876,1879,1882,1885],{"title":84,"path":1862,"stem":1863,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Fconfig-extends","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Fconfig-extends",{"title":74,"path":1865,"stem":1866,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Ferror-handling","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Ferror-handling",{"title":969,"path":1868,"stem":1869,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Fjsx","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Fjsx",{"title":973,"path":1871,"stem":1872,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Flocale","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Flocale",{"title":977,"path":1874,"stem":1875,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Fmodule-extend-pages","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Fmodule-extend-pages",{"title":981,"path":1877,"stem":1878,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Fteleport","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Fteleport",{"title":99,"path":1880,"stem":1881,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Ftesting","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Ftesting",{"title":523,"path":1883,"stem":1884,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Fuse-cookie","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Fuse-cookie",{"title":991,"path":1886,"stem":1887,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Fuse-custom-fetch-composable","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Fuse-custom-fetch-composable",{"title":995,"path":1889,"stem":1890,"children":1891,"page":108},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fexperimental","docs\u002F4.x\u002F4.examples\u002F7.experimental",[1892],{"title":1000,"path":1893,"stem":1894,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fexperimental\u002Fwasm","docs\u002F4.x\u002F4.examples\u002F7.experimental\u002Fwasm",{"title":1004,"titleTemplate":1005,"icon":1006,"path":1896,"stem":1897,"children":1898,"page":108},"\u002Fdocs\u002F4.x\u002Fcommunity","docs\u002F4.x\u002F5.community",[1899,1902,1905,1908,1911,1914],{"title":1011,"path":1900,"stem":1901,"titleTemplate":6,"icon":1014},"\u002Fdocs\u002F4.x\u002Fcommunity\u002Fgetting-help","docs\u002F4.x\u002F5.community\u002F2.getting-help",{"title":1016,"path":1903,"stem":1904,"titleTemplate":6,"icon":1019},"\u002Fdocs\u002F4.x\u002Fcommunity\u002Freporting-bugs","docs\u002F4.x\u002F5.community\u002F3.reporting-bugs",{"title":1021,"path":1906,"stem":1907,"titleTemplate":6,"icon":1024},"\u002Fdocs\u002F4.x\u002Fcommunity\u002Fcontribution","docs\u002F4.x\u002F5.community\u002F4.contribution",{"title":1026,"path":1909,"stem":1910,"titleTemplate":6,"icon":1029},"\u002Fdocs\u002F4.x\u002Fcommunity\u002Fframework-contribution","docs\u002F4.x\u002F5.community\u002F5.framework-contribution",{"title":1031,"path":1912,"stem":1913,"titleTemplate":6,"icon":1034},"\u002Fdocs\u002F4.x\u002Fcommunity\u002Froadmap","docs\u002F4.x\u002F5.community\u002F6.roadmap",{"title":1036,"path":1915,"stem":1916,"titleTemplate":6,"icon":1039},"\u002Fdocs\u002F4.x\u002Fcommunity\u002Fchangelog","docs\u002F4.x\u002F5.community\u002F7.changelog",{"title":1041,"titleTemplate":1042,"icon":1043,"path":1918,"stem":1919,"children":1920,"page":108},"\u002Fdocs\u002F4.x\u002Fbridge","docs\u002F4.x\u002F6.bridge",[1921,1924,1927,1930,1933,1936,1939,1942,1945,1948],{"title":1048,"path":1922,"stem":1923,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Foverview","docs\u002F4.x\u002F6.bridge\u002F1.overview",{"title":29,"path":1925,"stem":1926,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fconfiguration","docs\u002F4.x\u002F6.bridge\u002F10.configuration",{"title":280,"path":1928,"stem":1929,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Ftypescript","docs\u002F4.x\u002F6.bridge\u002F2.typescript",{"title":1058,"path":1931,"stem":1932,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fbridge-composition-api","docs\u002F4.x\u002F6.bridge\u002F3.bridge-composition-api",{"title":1062,"path":1934,"stem":1935,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fplugins-and-middleware","docs\u002F4.x\u002F6.bridge\u002F4.plugins-and-middleware",{"title":1066,"path":1937,"stem":1938,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fnuxt3-compatible-api","docs\u002F4.x\u002F6.bridge\u002F5.nuxt3-compatible-api",{"title":936,"path":1940,"stem":1941,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fmeta","docs\u002F4.x\u002F6.bridge\u002F6.meta",{"title":403,"path":1943,"stem":1944,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fruntime-config","docs\u002F4.x\u002F6.bridge\u002F7.runtime-config",{"title":837,"path":1946,"stem":1947,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fnitro","docs\u002F4.x\u002F6.bridge\u002F8.nitro",{"title":1079,"path":1949,"stem":1950,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fvite","docs\u002F4.x\u002F6.bridge\u002F9.vite",{"title":1083,"titleTemplate":1084,"icon":107,"path":1952,"stem":1953,"children":1954,"page":108},"\u002Fdocs\u002F4.x\u002Fmigration","docs\u002F4.x\u002F7.migration",[1955,1958,1961,1964,1967,1970,1973,1976,1979,1982,1985],{"title":1048,"path":1956,"stem":1957,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Foverview","docs\u002F4.x\u002F7.migration\u002F1.overview",{"title":1092,"path":1959,"stem":1960,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fbundling","docs\u002F4.x\u002F7.migration\u002F10.bundling",{"title":79,"path":1962,"stem":1963,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fserver","docs\u002F4.x\u002F7.migration\u002F11.server",{"title":29,"path":1965,"stem":1966,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fconfiguration","docs\u002F4.x\u002F7.migration\u002F2.configuration",{"title":276,"path":1968,"stem":1969,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fmodule-authors","docs\u002F4.x\u002F7.migration\u002F20.module-authors",{"title":926,"path":1971,"stem":1972,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fauto-imports","docs\u002F4.x\u002F7.migration\u002F3.auto-imports",{"title":936,"path":1974,"stem":1975,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fmeta","docs\u002F4.x\u002F7.migration\u002F4.meta",{"title":1062,"path":1977,"stem":1978,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fplugins-and-middleware","docs\u002F4.x\u002F7.migration\u002F5.plugins-and-middleware",{"title":1114,"path":1980,"stem":1981,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fpages-and-layouts","docs\u002F4.x\u002F7.migration\u002F6.pages-and-layouts",{"title":1118,"path":1983,"stem":1984,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fcomponent-options","docs\u002F4.x\u002F7.migration\u002F7.component-options",{"title":403,"path":1986,"stem":1987,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fruntime-config","docs\u002F4.x\u002F7.migration\u002F8.runtime-config",{"title":5,"titleTemplate":6,"icon":7,"path":1989,"stem":1990,"children":1991,"page":108},"\u002Fdocs\u002F5.x","docs\u002F5.x",[1992,2050,2143,2288,2664,2741,2763,2797],{"title":12,"titleTemplate":13,"icon":14,"path":1993,"stem":1994,"children":1995,"page":108},"\u002Fdocs\u002F5.x\u002Fgetting-started","docs\u002F5.x\u002F1.getting-started",[1996,1999,2002,2005,2008,2011,2014,2017,2020,2023,2026,2029,2032,2035,2038,2041,2044,2047],{"title":19,"path":1997,"stem":1998,"titleTemplate":6,"icon":22},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fintroduction","docs\u002F5.x\u002F1.getting-started\u002F01.introduction",{"title":24,"path":2000,"stem":2001,"titleTemplate":6,"icon":27},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Finstallation","docs\u002F5.x\u002F1.getting-started\u002F02.installation",{"title":29,"path":2003,"stem":2004,"titleTemplate":6,"icon":32},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fconfiguration","docs\u002F5.x\u002F1.getting-started\u002F03.configuration",{"title":34,"path":2006,"stem":2007,"titleTemplate":6,"icon":37},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fviews","docs\u002F5.x\u002F1.getting-started\u002F04.views",{"title":39,"path":2009,"stem":2010,"titleTemplate":6,"icon":42},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fassets","docs\u002F5.x\u002F1.getting-started\u002F05.assets",{"title":44,"path":2012,"stem":2013,"titleTemplate":6,"icon":47},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fstyling","docs\u002F5.x\u002F1.getting-started\u002F06.styling",{"title":49,"path":2015,"stem":2016,"titleTemplate":6,"icon":52},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Frouting","docs\u002F5.x\u002F1.getting-started\u002F07.routing",{"title":54,"path":2018,"stem":2019,"titleTemplate":6,"icon":57},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fseo-meta","docs\u002F5.x\u002F1.getting-started\u002F08.seo-meta",{"title":59,"path":2021,"stem":2022,"titleTemplate":6,"icon":62},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Ftransitions","docs\u002F5.x\u002F1.getting-started\u002F09.transitions",{"title":64,"path":2024,"stem":2025,"titleTemplate":6,"icon":67},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fdata-fetching","docs\u002F5.x\u002F1.getting-started\u002F10.data-fetching",{"title":69,"path":2027,"stem":2028,"titleTemplate":6,"icon":72},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fstate-management","docs\u002F5.x\u002F1.getting-started\u002F11.state-management",{"title":74,"path":2030,"stem":2031,"titleTemplate":6,"icon":77},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Ferror-handling","docs\u002F5.x\u002F1.getting-started\u002F12.error-handling",{"title":79,"path":2033,"stem":2034,"titleTemplate":6,"icon":82},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fserver","docs\u002F5.x\u002F1.getting-started\u002F13.server",{"title":84,"path":2036,"stem":2037,"titleTemplate":6,"icon":87},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Flayers","docs\u002F5.x\u002F1.getting-started\u002F14.layers",{"title":89,"path":2039,"stem":2040,"titleTemplate":6,"icon":92},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fprerendering","docs\u002F5.x\u002F1.getting-started\u002F15.prerendering",{"title":94,"path":2042,"stem":2043,"titleTemplate":6,"icon":97},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fdeployment","docs\u002F5.x\u002F1.getting-started\u002F16.deployment",{"title":99,"path":2045,"stem":2046,"titleTemplate":6,"icon":102},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Ftesting","docs\u002F5.x\u002F1.getting-started\u002F17.testing",{"title":104,"path":2048,"stem":2049,"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":2051,"stem":2052,"children":2053,"page":108},"\u002Fdocs\u002F5.x\u002Fdirectory-structure","docs\u002F5.x\u002F2.directory-structure",[2054,2057,2060,2098,2101,2104,2107,2110,2113,2116,2119,2122,2125,2128,2131,2134,2137,2140],{"title":117,"path":2055,"stem":2056,"titleTemplate":6,"icon":120},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fnuxt","docs\u002F5.x\u002F2.directory-structure\u002F0.nuxt",{"title":122,"path":2058,"stem":2059,"titleTemplate":6,"icon":125},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Foutput","docs\u002F5.x\u002F2.directory-structure\u002F0.output",{"title":1197,"titleTemplate":111,"head":2061,"defaultOpen":1200,"icon":1201,"path":2062,"stem":2063,"children":2064,"page":108},{"title":1199},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp","docs\u002F5.x\u002F2.directory-structure\u002F1.app",[2065,2068,2071,2074,2077,2080,2083,2086,2089,2092,2095],{"title":127,"path":2066,"stem":2067,"titleTemplate":6,"icon":130},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fassets","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.assets",{"title":132,"path":2069,"stem":2070,"titleTemplate":6,"icon":135},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fcomponents","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.components",{"title":137,"path":2072,"stem":2073,"titleTemplate":6,"icon":140},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fcomposables","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.composables",{"title":152,"path":2075,"stem":2076,"titleTemplate":6,"icon":155},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Flayouts","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.layouts",{"title":157,"path":2078,"stem":2079,"titleTemplate":6,"icon":160},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fmiddleware","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.middleware",{"title":171,"path":2081,"stem":2082,"titleTemplate":6,"icon":155},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fpages","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.pages",{"title":175,"path":2084,"stem":2085,"titleTemplate":6,"icon":178},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fplugins","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.plugins",{"title":195,"path":2087,"stem":2088,"titleTemplate":6,"icon":198},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Futils","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.utils",{"title":219,"path":2090,"stem":2091,"titleTemplate":6,"icon":222},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fapp","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F3.app",{"title":224,"path":2093,"stem":2094,"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":2096,"stem":2097,"titleTemplate":6,"icon":222},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Ferror","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F3.error",{"title":142,"path":2099,"stem":2100,"titleTemplate":6,"icon":145},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fcontent","docs\u002F5.x\u002F2.directory-structure\u002F1.content",{"title":147,"path":2102,"stem":2103,"titleTemplate":6,"icon":150},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Flayers","docs\u002F5.x\u002F2.directory-structure\u002F1.layers",{"title":162,"path":2105,"stem":2106,"titleTemplate":6,"icon":150},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fmodules","docs\u002F5.x\u002F2.directory-structure\u002F1.modules",{"title":166,"path":2108,"stem":2109,"titleTemplate":6,"icon":169},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fnode_modules","docs\u002F5.x\u002F2.directory-structure\u002F1.node_modules",{"title":180,"path":2111,"stem":2112,"titleTemplate":6,"icon":183},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fpublic","docs\u002F5.x\u002F2.directory-structure\u002F1.public",{"title":185,"path":2114,"stem":2115,"titleTemplate":6,"icon":188},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fserver","docs\u002F5.x\u002F2.directory-structure\u002F1.server",{"title":190,"path":2117,"stem":2118,"titleTemplate":6,"icon":193},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fshared","docs\u002F5.x\u002F2.directory-structure\u002F1.shared",{"title":1260,"path":2120,"stem":2121,"titleTemplate":6,"icon":1263},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Ftest","docs\u002F5.x\u002F2.directory-structure\u002F1.test",{"title":200,"path":2123,"stem":2124,"titleTemplate":6,"icon":203},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fenv","docs\u002F5.x\u002F2.directory-structure\u002F2.env",{"title":205,"path":2126,"stem":2127,"titleTemplate":6,"icon":208},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fgitignore","docs\u002F5.x\u002F2.directory-structure\u002F2.gitignore",{"title":210,"path":2129,"stem":2130,"titleTemplate":6,"icon":213},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fnuxtignore","docs\u002F5.x\u002F2.directory-structure\u002F2.nuxtignore",{"title":215,"path":2132,"stem":2133,"titleTemplate":6,"icon":213},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fnuxtrc","docs\u002F5.x\u002F2.directory-structure\u002F2.nuxtrc",{"title":233,"path":2135,"stem":2136,"titleTemplate":6,"icon":213},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fnuxt-config","docs\u002F5.x\u002F2.directory-structure\u002F3.nuxt-config",{"title":237,"path":2138,"stem":2139,"titleTemplate":6,"icon":240},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fpackage","docs\u002F5.x\u002F2.directory-structure\u002F3.package",{"title":242,"path":2141,"stem":2142,"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":2144,"stem":2145,"children":2146,"page":108},"\u002Fdocs\u002F5.x\u002Fguide","docs\u002F5.x\u002F3.guide",[2147,2175,2194,2204,2232,2251],{"title":253,"titleTemplate":254,"icon":255,"path":2148,"stem":2149,"children":2150,"page":108},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts","docs\u002F5.x\u002F3.guide\u002F1.concepts",[2151,2154,2157,2160,2163,2166,2169,2172],{"title":260,"path":2152,"stem":2153,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts\u002Frendering","docs\u002F5.x\u002F3.guide\u002F1.concepts\u002F1.rendering",{"title":264,"path":2155,"stem":2156,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts\u002Fnuxt-lifecycle","docs\u002F5.x\u002F3.guide\u002F1.concepts\u002F2.nuxt-lifecycle",{"title":268,"path":2158,"stem":2159,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts\u002Fauto-imports","docs\u002F5.x\u002F3.guide\u002F1.concepts\u002F3.auto-imports",{"title":272,"path":2161,"stem":2162,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts\u002Fserver-engine","docs\u002F5.x\u002F3.guide\u002F1.concepts\u002F4.server-engine",{"title":276,"path":2164,"stem":2165,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts\u002Fmodules","docs\u002F5.x\u002F3.guide\u002F1.concepts\u002F5.modules",{"title":1309,"path":2167,"stem":2168,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts\u002Fserver-components","docs\u002F5.x\u002F3.guide\u002F1.concepts\u002F6.server-components",{"title":280,"path":2170,"stem":2171,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts\u002Ftypescript","docs\u002F5.x\u002F3.guide\u002F1.concepts\u002F8.typescript",{"title":284,"path":2173,"stem":2174,"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":2176,"stem":2177,"children":2178,"page":108},"\u002Fdocs\u002F5.x\u002Fguide\u002Fbest-practices","docs\u002F5.x\u002F3.guide\u002F2.best-practices",[2179,2182,2185,2188,2191],{"title":1323,"path":2180,"stem":2181,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fbest-practices\u002Faccessibility","docs\u002F5.x\u002F3.guide\u002F2.best-practices\u002Faccessibility",{"title":1327,"path":2183,"stem":2184,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fbest-practices\u002Fdevcontainers","docs\u002F5.x\u002F3.guide\u002F2.best-practices\u002Fdevcontainers",{"title":1331,"path":2186,"stem":2187,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fbest-practices\u002Fhydration","docs\u002F5.x\u002F3.guide\u002F2.best-practices\u002Fhydration",{"title":299,"path":2189,"stem":2190,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fbest-practices\u002Fperformance","docs\u002F5.x\u002F3.guide\u002F2.best-practices\u002Fperformance",{"title":303,"path":2192,"stem":2193,"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":2195,"stem":2196,"children":2197,"page":108},"\u002Fdocs\u002F5.x\u002Fguide\u002Fai","docs\u002F5.x\u002F3.guide\u002F3.ai",[2198,2201],{"title":314,"path":2199,"stem":2200,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fai\u002Fmcp","docs\u002F5.x\u002F3.guide\u002F3.ai\u002F1.mcp",{"title":318,"path":2202,"stem":2203,"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":2205,"stem":2206,"children":2207,"page":108},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules","docs\u002F5.x\u002F3.guide\u002F4.modules",[2208,2211,2214,2217,2220,2223,2226,2229],{"title":329,"path":2209,"stem":2210,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Fgetting-started","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F1.getting-started",{"title":333,"path":2212,"stem":2213,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Fmodule-anatomy","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F2.module-anatomy",{"title":337,"path":2215,"stem":2216,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Frecipes-basics","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F3.recipes-basics",{"title":341,"path":2218,"stem":2219,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Fmodule-dependencies","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F4.module-dependencies",{"title":345,"path":2221,"stem":2222,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Frecipes-advanced","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F5.recipes-advanced",{"title":349,"path":2224,"stem":2225,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Ftesting","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F6.testing",{"title":353,"path":2227,"stem":2228,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Fbest-practices","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F7.best-practices",{"title":357,"path":2230,"stem":2231,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Fecosystem","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F8.ecosystem",{"title":361,"titleTemplate":362,"icon":363,"path":2233,"stem":2234,"children":2235,"page":108},"\u002Fdocs\u002F5.x\u002Fguide\u002Frecipes","docs\u002F5.x\u002F3.guide\u002F5.recipes",[2236,2239,2242,2245,2248],{"title":368,"path":2237,"stem":2238,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Frecipes\u002Fcustom-routing","docs\u002F5.x\u002F3.guide\u002F5.recipes\u002F1.custom-routing",{"title":372,"path":2240,"stem":2241,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Frecipes\u002Fvite-plugin","docs\u002F5.x\u002F3.guide\u002F5.recipes\u002F2.vite-plugin",{"title":376,"path":2243,"stem":2244,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Frecipes\u002Fcustom-usefetch","docs\u002F5.x\u002F3.guide\u002F5.recipes\u002F3.custom-usefetch",{"title":380,"path":2246,"stem":2247,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Frecipes\u002Fsessions-and-authentication","docs\u002F5.x\u002F3.guide\u002F5.recipes\u002F4.sessions-and-authentication",{"title":1395,"path":2249,"stem":2250,"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":2252,"stem":2253,"children":2254,"page":108},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further","docs\u002F5.x\u002F3.guide\u002F6.going-further",[2255,2258,2261,2264,2267,2270,2273,2276,2279,2282,2285],{"title":391,"path":2256,"stem":2257,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fevents","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F1.events",{"title":395,"path":2259,"stem":2260,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fexperimental-features","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F1.experimental-features",{"title":399,"path":2262,"stem":2263,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Ffeatures","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F1.features",{"title":403,"path":2265,"stem":2266,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fruntime-config","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F10.runtime-config",{"title":407,"path":2268,"stem":2269,"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":2271,"stem":2272,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fhooks","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F2.hooks",{"title":415,"path":2274,"stem":2275,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fkit","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F4.kit",{"title":419,"path":2277,"stem":2278,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fnuxt-app","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F6.nuxt-app",{"title":423,"path":2280,"stem":2281,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Flayers","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F7.layers",{"title":1430,"path":2283,"stem":2284,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fbuilders","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F8.builders",{"title":427,"path":2286,"stem":2287,"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":2289,"stem":2290,"children":2291,"page":108},"\u002Fdocs\u002F5.x\u002Fapi","docs\u002F5.x\u002F4.api",[2292,2344,2447,2538,2590,2651,2661],{"title":438,"titleTemplate":439,"icon":324,"path":2293,"stem":2294,"children":2295,"page":108},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents","docs\u002F5.x\u002F4.api\u002F1.components",[2296,2299,2302,2305,2308,2311,2314,2317,2320,2323,2326,2329,2332,2335,2338,2341],{"title":444,"path":2297,"stem":2298,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fclient-only","docs\u002F5.x\u002F4.api\u002F1.components\u002F1.client-only",{"title":448,"path":2300,"stem":2301,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fdev-only","docs\u002F5.x\u002F4.api\u002F1.components\u002F1.dev-only",{"title":452,"path":2303,"stem":2304,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-client-fallback","docs\u002F5.x\u002F4.api\u002F1.components\u002F1.nuxt-client-fallback",{"title":456,"path":2306,"stem":2307,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-picture","docs\u002F5.x\u002F4.api\u002F1.components\u002F10.nuxt-picture",{"title":460,"path":2309,"stem":2310,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fteleports","docs\u002F5.x\u002F4.api\u002F1.components\u002F11.teleports",{"title":464,"path":2312,"stem":2313,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-route-announcer","docs\u002F5.x\u002F4.api\u002F1.components\u002F12.nuxt-route-announcer",{"title":468,"path":2315,"stem":2316,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-time","docs\u002F5.x\u002F4.api\u002F1.components\u002F13.nuxt-time",{"title":1466,"path":2318,"stem":2319,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-announcer","docs\u002F5.x\u002F4.api\u002F1.components\u002F14.nuxt-announcer",{"title":472,"path":2321,"stem":2322,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-page","docs\u002F5.x\u002F4.api\u002F1.components\u002F2.nuxt-page",{"title":476,"path":2324,"stem":2325,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-layout","docs\u002F5.x\u002F4.api\u002F1.components\u002F3.nuxt-layout",{"title":480,"path":2327,"stem":2328,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-link","docs\u002F5.x\u002F4.api\u002F1.components\u002F4.nuxt-link",{"title":484,"path":2330,"stem":2331,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-loading-indicator","docs\u002F5.x\u002F4.api\u002F1.components\u002F5.nuxt-loading-indicator",{"title":488,"path":2333,"stem":2334,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-error-boundary","docs\u002F5.x\u002F4.api\u002F1.components\u002F6.nuxt-error-boundary",{"title":492,"path":2336,"stem":2337,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-welcome","docs\u002F5.x\u002F4.api\u002F1.components\u002F7.nuxt-welcome",{"title":496,"path":2339,"stem":2340,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-island","docs\u002F5.x\u002F4.api\u002F1.components\u002F8.nuxt-island",{"title":500,"path":2342,"stem":2343,"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":2345,"stem":2346,"children":2347,"page":108},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables","docs\u002F5.x\u002F4.api\u002F2.composables",[2348,2351,2354,2357,2360,2363,2366,2369,2372,2375,2378,2381,2384,2387,2390,2393,2396,2399,2402,2405,2408,2411,2414,2417,2420,2423,2426,2429,2432,2435,2438,2441,2444],{"title":1498,"path":2349,"stem":2350,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fcreate-use-async-data","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fcreate-use-async-data",{"title":1502,"path":2352,"stem":2353,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fcreate-use-fetch","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fcreate-use-fetch",{"title":511,"path":2355,"stem":2356,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fon-prehydrate","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fon-prehydrate",{"title":1509,"path":2358,"stem":2359,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-announcer","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-announcer",{"title":515,"path":2361,"stem":2362,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-app-config","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-app-config",{"title":519,"path":2364,"stem":2365,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-async-data","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-async-data",{"title":523,"path":2367,"stem":2368,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-cookie","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-cookie",{"title":527,"path":2370,"stem":2371,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-error","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-error",{"title":531,"path":2373,"stem":2374,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-fetch","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-fetch",{"title":535,"path":2376,"stem":2377,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-head","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-head",{"title":539,"path":2379,"stem":2380,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-head-safe","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-head-safe",{"title":543,"path":2382,"stem":2383,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-hydration","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-hydration",{"title":1537,"path":2385,"stem":2386,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-layout","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-layout",{"title":547,"path":2388,"stem":2389,"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":2391,"stem":2392,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-lazy-fetch","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-lazy-fetch",{"title":555,"path":2394,"stem":2395,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-loading-indicator","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-loading-indicator",{"title":559,"path":2397,"stem":2398,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-nuxt-app","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-nuxt-app",{"title":563,"path":2400,"stem":2401,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-nuxt-data","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-nuxt-data",{"title":567,"path":2403,"stem":2404,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-preview-mode","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-preview-mode",{"title":571,"path":2406,"stem":2407,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-request-event","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-request-event",{"title":575,"path":2409,"stem":2410,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-request-fetch","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-request-fetch",{"title":579,"path":2412,"stem":2413,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-request-header","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-request-header",{"title":583,"path":2415,"stem":2416,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-request-headers","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-request-headers",{"title":587,"path":2418,"stem":2419,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-request-url","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-request-url",{"title":591,"path":2421,"stem":2422,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-response-header","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-response-header",{"title":595,"path":2424,"stem":2425,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-route","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-route",{"title":599,"path":2427,"stem":2428,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-route-announcer","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-route-announcer",{"title":603,"path":2430,"stem":2431,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-router","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-router",{"title":607,"path":2433,"stem":2434,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-runtime-config","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-runtime-config",{"title":611,"path":2436,"stem":2437,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-runtime-hook","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-runtime-hook",{"title":615,"path":2439,"stem":2440,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-seo-meta","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-seo-meta",{"title":619,"path":2442,"stem":2443,"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":2445,"stem":2446,"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":2448,"stem":2449,"children":2450,"page":108},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils","docs\u002F5.x\u002F4.api\u002F3.utils",[2451,2454,2457,2460,2463,2466,2469,2472,2475,2478,2481,2484,2487,2490,2493,2496,2499,2502,2505,2508,2511,2514,2517,2520,2523,2526,2529,2532,2535],{"title":634,"path":2452,"stem":2453,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fdollarfetch","docs\u002F5.x\u002F4.api\u002F3.utils\u002F$fetch",{"title":638,"path":2455,"stem":2456,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fabort-navigation","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fabort-navigation",{"title":642,"path":2458,"stem":2459,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fadd-route-middleware","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fadd-route-middleware",{"title":646,"path":2461,"stem":2462,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fcall-once","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fcall-once",{"title":650,"path":2464,"stem":2465,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fclear-error","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fclear-error",{"title":654,"path":2467,"stem":2468,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fclear-nuxt-data","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fclear-nuxt-data",{"title":658,"path":2470,"stem":2471,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fclear-nuxt-state","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fclear-nuxt-state",{"title":662,"path":2473,"stem":2474,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fcreate-error","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fcreate-error",{"title":666,"path":2476,"stem":2477,"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":2479,"stem":2480,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fdefine-nuxt-component","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fdefine-nuxt-component",{"title":674,"path":2482,"stem":2483,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fdefine-nuxt-plugin","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fdefine-nuxt-plugin",{"title":678,"path":2485,"stem":2486,"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":2488,"stem":2489,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fdefine-page-meta","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fdefine-page-meta",{"title":686,"path":2491,"stem":2492,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fdefine-route-rules","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fdefine-route-rules",{"title":690,"path":2494,"stem":2495,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fnavigate-to","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fnavigate-to",{"title":694,"path":2497,"stem":2498,"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":2500,"stem":2501,"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":2503,"stem":2504,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fon-nuxt-ready","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fon-nuxt-ready",{"title":706,"path":2506,"stem":2507,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fprefetch-components","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fprefetch-components",{"title":710,"path":2509,"stem":2510,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fpreload-components","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fpreload-components",{"title":714,"path":2512,"stem":2513,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fpreload-route-components","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fpreload-route-components",{"title":718,"path":2515,"stem":2516,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fprerender-routes","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fprerender-routes",{"title":722,"path":2518,"stem":2519,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Frefresh-cookie","docs\u002F5.x\u002F4.api\u002F3.utils\u002Frefresh-cookie",{"title":726,"path":2521,"stem":2522,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Frefresh-nuxt-data","docs\u002F5.x\u002F4.api\u002F3.utils\u002Frefresh-nuxt-data",{"title":730,"path":2524,"stem":2525,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Freload-nuxt-app","docs\u002F5.x\u002F4.api\u002F3.utils\u002Freload-nuxt-app",{"title":734,"path":2527,"stem":2528,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fset-page-layout","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fset-page-layout",{"title":738,"path":2530,"stem":2531,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fset-response-status","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fset-response-status",{"title":742,"path":2533,"stem":2534,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fshow-error","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fshow-error",{"title":746,"path":2536,"stem":2537,"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":2539,"stem":2540,"children":2541,"page":108},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands","docs\u002F5.x\u002F4.api\u002F4.commands",[2542,2545,2548,2551,2554,2557,2560,2563,2566,2569,2572,2575,2578,2581,2584,2587],{"title":757,"path":2543,"stem":2544,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fadd","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fadd",{"title":761,"path":2546,"stem":2547,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fanalyze","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fanalyze",{"title":765,"path":2549,"stem":2550,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fbuild","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fbuild",{"title":769,"path":2552,"stem":2553,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fbuild-module","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fbuild-module",{"title":773,"path":2555,"stem":2556,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fcleanup","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fcleanup",{"title":777,"path":2558,"stem":2559,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fdev","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fdev",{"title":781,"path":2561,"stem":2562,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fdevtools","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fdevtools",{"title":785,"path":2564,"stem":2565,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fgenerate","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fgenerate",{"title":789,"path":2567,"stem":2568,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Finfo","docs\u002F5.x\u002F4.api\u002F4.commands\u002Finfo",{"title":793,"path":2570,"stem":2571,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Finit","docs\u002F5.x\u002F4.api\u002F4.commands\u002Finit",{"title":797,"path":2573,"stem":2574,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fmodule","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fmodule",{"title":801,"path":2576,"stem":2577,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fprepare","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fprepare",{"title":805,"path":2579,"stem":2580,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fpreview","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fpreview",{"title":809,"path":2582,"stem":2583,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Ftest","docs\u002F5.x\u002F4.api\u002F4.commands\u002Ftest",{"title":813,"path":2585,"stem":2586,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Ftypecheck","docs\u002F5.x\u002F4.api\u002F4.commands\u002Ftypecheck",{"title":817,"path":2588,"stem":2589,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fupgrade","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fupgrade",{"title":415,"titleTemplate":821,"icon":822,"path":2591,"stem":2592,"children":2593,"page":108},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit","docs\u002F5.x\u002F4.api\u002F5.kit",[2594,2597,2600,2603,2606,2609,2612,2615,2618,2621,2624,2627,2630,2633,2636,2639,2642,2645,2648],{"title":276,"path":2595,"stem":2596,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fmodules","docs\u002F5.x\u002F4.api\u002F5.kit\u002F1.modules",{"title":403,"path":2598,"stem":2599,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fruntime-config","docs\u002F5.x\u002F4.api\u002F5.kit\u002F10.runtime-config",{"title":833,"path":2601,"stem":2602,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Ftemplates","docs\u002F5.x\u002F4.api\u002F5.kit\u002F10.templates",{"title":1757,"path":2604,"stem":2605,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fapp-config","docs\u002F5.x\u002F4.api\u002F5.kit\u002F11.app-config",{"title":837,"path":2607,"stem":2608,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fnitro","docs\u002F5.x\u002F4.api\u002F5.kit\u002F12.nitro",{"title":841,"path":2610,"stem":2611,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fresolving","docs\u002F5.x\u002F4.api\u002F5.kit\u002F13.resolving",{"title":845,"path":2613,"stem":2614,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Flogging","docs\u002F5.x\u002F4.api\u002F5.kit\u002F14.logging",{"title":849,"path":2616,"stem":2617,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fbuilder","docs\u002F5.x\u002F4.api\u002F5.kit\u002F15.builder",{"title":853,"path":2619,"stem":2620,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fexamples","docs\u002F5.x\u002F4.api\u002F5.kit\u002F16.examples",{"title":84,"path":2622,"stem":2623,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Flayers","docs\u002F5.x\u002F4.api\u002F5.kit\u002F17.layers",{"title":860,"path":2625,"stem":2626,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fprogrammatic","docs\u002F5.x\u002F4.api\u002F5.kit\u002F2.programmatic",{"title":864,"path":2628,"stem":2629,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fcompatibility","docs\u002F5.x\u002F4.api\u002F5.kit\u002F3.compatibility",{"title":268,"path":2631,"stem":2632,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fautoimports","docs\u002F5.x\u002F4.api\u002F5.kit\u002F4.autoimports",{"title":438,"path":2634,"stem":2635,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fcomponents","docs\u002F5.x\u002F4.api\u002F5.kit\u002F5.components",{"title":874,"path":2637,"stem":2638,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fcontext","docs\u002F5.x\u002F4.api\u002F5.kit\u002F6.context",{"title":878,"path":2640,"stem":2641,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fpages","docs\u002F5.x\u002F4.api\u002F5.kit\u002F7.pages",{"title":882,"path":2643,"stem":2644,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Flayout","docs\u002F5.x\u002F4.api\u002F5.kit\u002F8.layout",{"title":886,"path":2646,"stem":2647,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fhead","docs\u002F5.x\u002F4.api\u002F5.kit\u002F9.head",{"title":890,"path":2649,"stem":2650,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fplugins","docs\u002F5.x\u002F4.api\u002F5.kit\u002F9.plugins",{"title":894,"titleTemplate":6,"icon":895,"path":2652,"stem":2653,"children":2654,"page":108},"\u002Fdocs\u002F5.x\u002Fapi\u002Fadvanced","docs\u002F5.x\u002F4.api\u002F6.advanced",[2655,2658],{"title":411,"path":2656,"stem":2657,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fadvanced\u002Fhooks","docs\u002F5.x\u002F4.api\u002F6.advanced\u002F1.hooks",{"title":903,"path":2659,"stem":2660,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fadvanced\u002Fimport-meta","docs\u002F5.x\u002F4.api\u002F6.advanced\u002F2.import-meta",{"title":907,"path":2662,"stem":2663,"titleTemplate":910,"icon":32},"\u002Fdocs\u002F5.x\u002Fapi\u002Fnuxt-config","docs\u002F5.x\u002F4.api\u002F6.nuxt-config",{"title":853,"titleTemplate":912,"icon":913,"path":2665,"stem":2666,"children":2667,"page":108},"\u002Fdocs\u002F5.x\u002Fexamples","docs\u002F5.x\u002F4.examples",[2668,2671,2690,2703,2734],{"title":918,"path":2669,"stem":2670,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fhello-world","docs\u002F5.x\u002F4.examples\u002F0.hello-world",{"title":399,"path":2672,"stem":2673,"children":2674,"page":108},"\u002Fdocs\u002F5.x\u002Fexamples\u002Ffeatures","docs\u002F5.x\u002F4.examples\u002F1.features",[2675,2678,2681,2684,2687],{"title":926,"path":2676,"stem":2677,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Ffeatures\u002Fauto-imports","docs\u002F5.x\u002F4.examples\u002F1.features\u002F1.auto-imports",{"title":64,"path":2679,"stem":2680,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Ffeatures\u002Fdata-fetching","docs\u002F5.x\u002F4.examples\u002F1.features\u002F2.data-fetching",{"title":69,"path":2682,"stem":2683,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Ffeatures\u002Fstate-management","docs\u002F5.x\u002F4.examples\u002F1.features\u002F3.state-management",{"title":936,"path":2685,"stem":2686,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Ffeatures\u002Fmeta-tags","docs\u002F5.x\u002F4.examples\u002F1.features\u002F4.meta-tags",{"title":940,"path":2688,"stem":2689,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Ffeatures\u002Flayouts","docs\u002F5.x\u002F4.examples\u002F1.features\u002F5.layouts",{"title":49,"path":2691,"stem":2692,"children":2693,"page":108},"\u002Fdocs\u002F5.x\u002Fexamples\u002Frouting","docs\u002F5.x\u002F4.examples\u002F2.routing",[2694,2697,2700],{"title":948,"path":2695,"stem":2696,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Frouting\u002Fmiddleware","docs\u002F5.x\u002F4.examples\u002F2.routing\u002Fmiddleware",{"title":878,"path":2698,"stem":2699,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Frouting\u002Fpages","docs\u002F5.x\u002F4.examples\u002F2.routing\u002Fpages",{"title":955,"path":2701,"stem":2702,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Frouting\u002Funiversal-router","docs\u002F5.x\u002F4.examples\u002F2.routing\u002Funiversal-router",{"title":894,"path":2704,"stem":2705,"children":2706,"page":108},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced","docs\u002F5.x\u002F4.examples\u002F4.advanced",[2707,2710,2713,2716,2719,2722,2725,2728,2731],{"title":84,"path":2708,"stem":2709,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Fconfig-extends","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Fconfig-extends",{"title":74,"path":2711,"stem":2712,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Ferror-handling","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Ferror-handling",{"title":969,"path":2714,"stem":2715,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Fjsx","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Fjsx",{"title":973,"path":2717,"stem":2718,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Flocale","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Flocale",{"title":977,"path":2720,"stem":2721,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Fmodule-extend-pages","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Fmodule-extend-pages",{"title":981,"path":2723,"stem":2724,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Fteleport","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Fteleport",{"title":99,"path":2726,"stem":2727,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Ftesting","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Ftesting",{"title":523,"path":2729,"stem":2730,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Fuse-cookie","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Fuse-cookie",{"title":991,"path":2732,"stem":2733,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Fuse-custom-fetch-composable","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Fuse-custom-fetch-composable",{"title":995,"path":2735,"stem":2736,"children":2737,"page":108},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fexperimental","docs\u002F5.x\u002F4.examples\u002F7.experimental",[2738],{"title":1000,"path":2739,"stem":2740,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fexperimental\u002Fwasm","docs\u002F5.x\u002F4.examples\u002F7.experimental\u002Fwasm",{"title":1004,"titleTemplate":1005,"icon":1006,"path":2742,"stem":2743,"children":2744,"page":108},"\u002Fdocs\u002F5.x\u002Fcommunity","docs\u002F5.x\u002F5.community",[2745,2748,2751,2754,2757,2760],{"title":1011,"path":2746,"stem":2747,"titleTemplate":6,"icon":1014},"\u002Fdocs\u002F5.x\u002Fcommunity\u002Fgetting-help","docs\u002F5.x\u002F5.community\u002F2.getting-help",{"title":1016,"path":2749,"stem":2750,"titleTemplate":6,"icon":1019},"\u002Fdocs\u002F5.x\u002Fcommunity\u002Freporting-bugs","docs\u002F5.x\u002F5.community\u002F3.reporting-bugs",{"title":1021,"path":2752,"stem":2753,"titleTemplate":6,"icon":1024},"\u002Fdocs\u002F5.x\u002Fcommunity\u002Fcontribution","docs\u002F5.x\u002F5.community\u002F4.contribution",{"title":1026,"path":2755,"stem":2756,"titleTemplate":6,"icon":1029},"\u002Fdocs\u002F5.x\u002Fcommunity\u002Fframework-contribution","docs\u002F5.x\u002F5.community\u002F5.framework-contribution",{"title":1031,"path":2758,"stem":2759,"titleTemplate":6,"icon":1034},"\u002Fdocs\u002F5.x\u002Fcommunity\u002Froadmap","docs\u002F5.x\u002F5.community\u002F6.roadmap",{"title":1036,"path":2761,"stem":2762,"titleTemplate":6,"icon":1039},"\u002Fdocs\u002F5.x\u002Fcommunity\u002Fchangelog","docs\u002F5.x\u002F5.community\u002F7.changelog",{"title":1041,"titleTemplate":1042,"icon":1043,"path":2764,"stem":2765,"children":2766,"page":108},"\u002Fdocs\u002F5.x\u002Fbridge","docs\u002F5.x\u002F6.bridge",[2767,2770,2773,2776,2779,2782,2785,2788,2791,2794],{"title":1048,"path":2768,"stem":2769,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Foverview","docs\u002F5.x\u002F6.bridge\u002F1.overview",{"title":29,"path":2771,"stem":2772,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fconfiguration","docs\u002F5.x\u002F6.bridge\u002F10.configuration",{"title":280,"path":2774,"stem":2775,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Ftypescript","docs\u002F5.x\u002F6.bridge\u002F2.typescript",{"title":1058,"path":2777,"stem":2778,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fbridge-composition-api","docs\u002F5.x\u002F6.bridge\u002F3.bridge-composition-api",{"title":1062,"path":2780,"stem":2781,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fplugins-and-middleware","docs\u002F5.x\u002F6.bridge\u002F4.plugins-and-middleware",{"title":1066,"path":2783,"stem":2784,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fnuxt3-compatible-api","docs\u002F5.x\u002F6.bridge\u002F5.nuxt3-compatible-api",{"title":936,"path":2786,"stem":2787,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fmeta","docs\u002F5.x\u002F6.bridge\u002F6.meta",{"title":403,"path":2789,"stem":2790,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fruntime-config","docs\u002F5.x\u002F6.bridge\u002F7.runtime-config",{"title":837,"path":2792,"stem":2793,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fnitro","docs\u002F5.x\u002F6.bridge\u002F8.nitro",{"title":1079,"path":2795,"stem":2796,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fvite","docs\u002F5.x\u002F6.bridge\u002F9.vite",{"title":1083,"titleTemplate":1084,"icon":107,"path":2798,"stem":2799,"children":2800,"page":108},"\u002Fdocs\u002F5.x\u002Fmigration","docs\u002F5.x\u002F7.migration",[2801,2804,2807,2810,2813,2816,2819,2822,2825,2828,2831],{"title":1048,"path":2802,"stem":2803,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Foverview","docs\u002F5.x\u002F7.migration\u002F1.overview",{"title":1092,"path":2805,"stem":2806,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fbundling","docs\u002F5.x\u002F7.migration\u002F10.bundling",{"title":79,"path":2808,"stem":2809,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fserver","docs\u002F5.x\u002F7.migration\u002F11.server",{"title":29,"path":2811,"stem":2812,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fconfiguration","docs\u002F5.x\u002F7.migration\u002F2.configuration",{"title":276,"path":2814,"stem":2815,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fmodule-authors","docs\u002F5.x\u002F7.migration\u002F20.module-authors",{"title":926,"path":2817,"stem":2818,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fauto-imports","docs\u002F5.x\u002F7.migration\u002F3.auto-imports",{"title":936,"path":2820,"stem":2821,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fmeta","docs\u002F5.x\u002F7.migration\u002F4.meta",{"title":1062,"path":2823,"stem":2824,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fplugins-and-middleware","docs\u002F5.x\u002F7.migration\u002F5.plugins-and-middleware",{"title":1114,"path":2826,"stem":2827,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fpages-and-layouts","docs\u002F5.x\u002F7.migration\u002F6.pages-and-layouts",{"title":1118,"path":2829,"stem":2830,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fcomponent-options","docs\u002F5.x\u002F7.migration\u002F7.component-options",{"title":403,"path":2832,"stem":2833,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fruntime-config","docs\u002F5.x\u002F7.migration\u002F8.runtime-config",{"title":2835,"icon":2836,"path":2837,"stem":2838,"children":2839,"page":108},"Blog","i-lucide-newspaper","\u002Fblog","blog",[2840,2844,2848,2852,2856,2860,2864,2868,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],{"title":2841,"path":2842,"stem":2843},"Announcing 3.0","\u002Fblog\u002Fv3","blog\u002F1.v3",{"title":2845,"path":2846,"stem":2847},"Nuxt 3.3","\u002Fblog\u002Fv3-3","blog\u002F10.v3-3",{"title":2849,"path":2850,"stem":2851},"Nuxt 3.4","\u002Fblog\u002Fv3-4","blog\u002F11.v3-4",{"title":2853,"path":2854,"stem":2855},"Nuxt 3.5","\u002Fblog\u002Fv3-5","blog\u002F12.v3-5",{"title":2857,"path":2858,"stem":2859},"Nuxt 3.6","\u002Fblog\u002Fv3-6","blog\u002F13.v3-6",{"title":2861,"path":2862,"stem":2863},"Nuxt on the Edge","\u002Fblog\u002Fnuxt-on-the-edge","blog\u002F14.nuxt-on-the-edge",{"title":2865,"path":2866,"stem":2867},"Nuxt 3.7","\u002Fblog\u002Fv3-7","blog\u002F15.v3-7",{"title":2869,"path":2870,"stem":2871},"A New Website","\u002Fblog\u002Fnew-website","blog\u002F16.new-website",{"title":2873,"path":2874,"stem":2875},"Nuxt 3.8","\u002Fblog\u002Fv3-8","blog\u002F17.v3-8",{"title":2877,"path":2878,"stem":2879},"Nuxt DevTools v1.0","\u002Fblog\u002Fnuxt-devtools-v1-0","blog\u002F18.nuxt-devtools-v1-0",{"title":2881,"path":2882,"stem":2883},"Nuxt 3.9","\u002Fblog\u002Fv3-9","blog\u002F19.v3-9",{"title":2885,"path":2886,"stem":2887},"Nuxt: A vision for 2023","\u002Fblog\u002Fvision-2023","blog\u002F2.vision-2023",{"title":2889,"path":2890,"stem":2891},"Nuxt 3.10","\u002Fblog\u002Fv3-10","blog\u002F20.v3-10",{"title":2893,"path":2894,"stem":2895},"The Evolution of Shiki v1.0","\u002Fblog\u002Fshiki-v1","blog\u002F21.shiki-v1",{"title":2897,"path":2898,"stem":2899},"Nuxt 3.11","\u002Fblog\u002Fv3-11","blog\u002F22.v3-11",{"title":2901,"path":2902,"stem":2903},"Nuxt: Looking forward","\u002Fblog\u002Flooking-forward-2024","blog\u002F23.looking-forward-2024",{"title":2905,"path":2906,"stem":2907},"Refreshed Nuxt ESLint Integrations","\u002Fblog\u002Feslint-module","blog\u002F24.eslint-module",{"title":2909,"path":2910,"stem":2911},"Nuxt 3.12","\u002Fblog\u002Fv3-12","blog\u002F25.v3-12",{"title":2913,"path":2914,"stem":2915},"Introducing Nuxt Scripts","\u002Fblog\u002Fnuxt-scripts","blog\u002F26.nuxt-scripts",{"title":2917,"path":2918,"stem":2919},"Nuxt 3.13","\u002Fblog\u002Fv3-13","blog\u002F27.v3-13",{"title":2921,"path":2922,"stem":2923},"Nuxt 3.14","\u002Fblog\u002Fv3-14","blog\u002F27.v3-14",{"title":2925,"path":2926,"stem":2927},"Introducing Nuxt Icon v1","\u002Fblog\u002Fnuxt-icon-v1-0","blog\u002F29.nuxt-icon-v1-0",{"title":2929,"path":2930,"stem":2931},"Introducing Nuxt DevTools","\u002Fblog\u002Fintroducing-nuxt-devtools","blog\u002F3.introducing-nuxt-devtools",{"title":2933,"path":2934,"stem":2935},"Announcing Nuxt 3 Release Candidate","\u002Fblog\u002Fnuxt3-rc","blog\u002F3.nuxt3-rc",{"title":2937,"path":2938,"stem":2939},"Nuxt 3.15","\u002Fblog\u002Fv3-15","blog\u002F30.v3-15",{"title":2941,"path":2942,"stem":2943},"Nuxt 3.16","\u002Fblog\u002Fv3-16","blog\u002F31.v3-16",{"title":2945,"path":2946,"stem":2947},"Nuxt UI v3","\u002Fblog\u002Fnuxt-ui-v3","blog\u002F32.nuxt-ui-v3",{"title":2949,"path":2950,"stem":2951},"Nuxt 3.17","\u002Fblog\u002Fv3-17","blog\u002F33.v3-17",{"title":2953,"path":2954,"stem":2955},"Roadmap to v4","\u002Fblog\u002Froadmap-v4","blog\u002F34.roadmap-v4",{"title":2957,"path":2958,"stem":2959},"Building a Privacy-First Feedback Widget","\u002Fblog\u002Fbuilding-a-feedback-widget","blog\u002F35.building-a-feedback-widget",{"title":2961,"path":2962,"stem":2963},"Announcing Nuxt 4.0","\u002Fblog\u002Fv4","blog\u002F36.v4",{"title":2965,"path":2966,"stem":2967},"Nuxt 3.18","\u002Fblog\u002Fv3-18","blog\u002F37.v3-18",{"title":2969,"path":2970,"stem":2971},"Nuxt 4.1","\u002Fblog\u002Fv4-1","blog\u002F38.v4-1",{"title":2973,"path":2974,"stem":2975},"Nuxt UI v4","\u002Fblog\u002Fnuxt-ui-v4","blog\u002F39.nuxt-ui-v4",{"title":2977,"path":2978,"stem":2979},"Nuxt 2 End-of-Life (EOL)","\u002Fblog\u002Fnuxt2-eol","blog\u002F4.nuxt2-eol",{"title":2981,"path":2982,"stem":2983},"Introducing Nuxt 3 Beta","\u002Fblog\u002Fnuxt3-beta","blog\u002F4.nuxt3-beta",{"title":2985,"path":2986,"stem":2987},"Building an MCP Server for Nuxt","\u002Fblog\u002Fbuilding-nuxt-mcp","blog\u002F40.building-nuxt-mcp",{"title":2989,"path":2990,"stem":2991},"Nuxt 4.2","\u002Fblog\u002Fv4-2","blog\u002F40.v4-2",{"title":2993,"path":2994,"stem":2995},"Nuxt Image v2","\u002Fblog\u002Fnuxt-image-v2","blog\u002F41.nuxt-image-v2",{"title":2997,"path":2998,"stem":2999},"Nuxt 4.3","\u002Fblog\u002Fv4-3","blog\u002F42.v4-3",{"title":3001,"path":3002,"stem":3003},"Nuxt 4.4","\u002Fblog\u002Fv4-4","blog\u002F43.v4-4",{"title":3005,"path":3006,"stem":3007},"Introducing the Nuxt Agent","\u002Fblog\u002Fintroducing-nuxt-agent","blog\u002F44.introducing-nuxt-agent",{"title":3009,"path":3010,"stem":3011},"Meet Nuxi","\u002Fblog\u002Fmeet-nuxi","blog\u002F45.meet-nuxi",{"title":3013,"path":3014,"stem":3015},"Nuxt 4.5","\u002Fblog\u002Fv4-5","blog\u002F46.v4-5",{"title":3017,"path":3018,"stem":3019},"Nuxt Security Patch Releases","\u002Fblog\u002Fv4-5-security","blog\u002F47.v4-5-security",{"title":3021,"path":3022,"stem":3023},"Going Full Static","\u002Fblog\u002Fgoing-full-static","blog\u002F5.going-full-static",{"title":3025,"path":3026,"stem":3027},"Introducing Smart Prefetching","\u002Fblog\u002Fintroducing-smart-prefetching","blog\u002F6.introducing-smart-prefetching",{"title":3029,"path":3030,"stem":3031},"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":3033,"path":3034,"stem":3035},"Nuxt 2 Static Improvements","\u002Fblog\u002Fnuxt-static-improvements","blog\u002F8.nuxt-static-improvements",{"title":3037,"path":3038,"stem":3039},"Nuxt 2: From Terminal to Browser","\u002Fblog\u002Fnuxtjs-from-terminal-to-browser","blog\u002F9.nuxtjs-from-terminal-to-browser",{"name":3041,"description":3042,"repo":3043,"npm":3044,"icon":3045,"github":3046,"website":3046,"learn_more":3047,"category":3048,"type":3049,"maintainers":3050,"compatibility":3056,"generatedAt":3059,"contributors":3060,"stats":3088,"readme":3096},"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",[3051],{"name":3052,"github":3053,"twitter":3054,"bluesky":3055},"rrd","rrd108","radharadhya","rrd108.bsky.social",{"nuxt":3057,"requires":3058},">=3.0.0",{},"2026-08-08T09:34:11.823Z",[3061,3064,3068,3072,3076,3079,3082,3085],{"id":3062,"username":3053,"contributions":3063},3147489,282,{"id":3065,"username":3066,"contributions":3067},31929574,"ravesandstorm",5,{"id":3069,"username":3070,"contributions":3071},28706372,"danielroe",2,{"id":3073,"username":3074,"contributions":3075},20068593,"kschnekenburger",1,{"id":3077,"username":3078,"contributions":3075},32599710,"simonmaass",{"id":3080,"username":3081,"contributions":3075},125942725,"nd2024",{"id":3083,"username":3084,"contributions":3075},10197526,"chachew",{"id":3086,"username":3087,"contributions":3075},55457896,"LeeKrane",{"version":3089,"downloads":3090,"stars":3091,"watchers":3091,"forks":3092,"defaultBranch":3093,"publishedAt":3094,"createdAt":3095},"1.0.0",12025,56,8,"main",1782038138831,1711731542236,{"data":3097,"body":3099,"toc":10710},{"title":3098,"description":3047},"Nuxt API Shield",{"type":3100,"children":3101},"root",[3102,3109,3154,3159,3185,3191,3442,3448,3462,3571,3596,3601,4016,4034,4455,4469,4498,4603,4622,4634,4798,4803,5012,5023,5089,5308,5313,5319,5338,5345,5358,5371,6040,6064,6070,6099,6110,7335,7375,7402,7408,7414,7440,7582,7601,7804,7818,7837,7854,7872,7877,7883,7903,7909,7935,8142,8147,8157,8163,8175,8209,8215,8227,8377,8419,8424,8454,8475,8481,8486,8498,8509,8616,8624,9038,9049,9054,9105,9111,9128,9156,9160,9166,9178,9656,9662,9675,9681,9772,9778,9807,9813,9851,9857,9876,9881,9886,10178,10184,10230,10236,10242,10252,10348,10354,10445,10458,10469,10489,10495,10704],{"type":3103,"tag":3104,"props":3105,"children":3106},"element","h1",{"id":3044},[3107],{"type":3108,"value":3098},"text",{"type":3103,"tag":3110,"props":3111,"children":3112},"p",{},[3113,3126,3135,3144],{"type":3103,"tag":3114,"props":3115,"children":3119},"a",{"href":3116,"rel":3117},"https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fnuxt-api-shield",[3118],"nofollow",[3120],{"type":3103,"tag":3121,"props":3122,"children":3125},"img",{"alt":3123,"src":3124},"npm version","https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002Fnuxt-api-shield\u002Flatest.svg?style=flat&colorA=020420&colorB=00DC82",[],{"type":3103,"tag":3114,"props":3127,"children":3129},{"href":3116,"rel":3128},[3118],[3130],{"type":3103,"tag":3121,"props":3131,"children":3134},{"alt":3132,"src":3133},"npm downloads","https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fdm\u002Fnuxt-api-shield.svg?style=flat&colorA=020420&colorB=00DC82",[],{"type":3103,"tag":3114,"props":3136,"children":3138},{"href":3116,"rel":3137},[3118],[3139],{"type":3103,"tag":3121,"props":3140,"children":3143},{"alt":3141,"src":3142},"License","https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fl\u002Fnuxt-api-shield.svg?style=flat&colorA=020420&colorB=00DC82",[],{"type":3103,"tag":3114,"props":3145,"children":3148},{"href":3146,"rel":3147},"https:\u002F\u002Fnuxt.com",[3118],[3149],{"type":3103,"tag":3121,"props":3150,"children":3153},{"alt":3151,"src":3152},"Nuxt","https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FNuxt-020420?logo=nuxt.js",[],{"type":3103,"tag":3110,"props":3155,"children":3156},{},[3157],{"type":3108,"value":3158},"This Nuxt module implements a rate limiting middleware to protect your API endpoints from excessive requests.",{"type":3103,"tag":3160,"props":3161,"children":3162},"ul",{},[3163],{"type":3103,"tag":3164,"props":3165,"children":3166},"li",{},[3167,3173],{"type":3103,"tag":3114,"props":3168,"children":3170},{"href":3169},"\u002FCHANGELOG.md",[3171],{"type":3108,"value":3172},"✨  Release Notes",{"type":3103,"tag":3160,"props":3174,"children":3175},{},[3176],{"type":3103,"tag":3164,"props":3177,"children":3178},{},[3179],{"type":3103,"tag":3114,"props":3180,"children":3182},{"href":3046,"rel":3181},[3118],[3183],{"type":3108,"value":3184},"📖  Documentation",{"type":3103,"tag":3186,"props":3187,"children":3189},"h2",{"id":3188},"features",[3190],{"type":3108,"value":399},{"type":3103,"tag":3160,"props":3192,"children":3193},{},[3194,3216,3273,3294,3315,3336,3368,3402],{"type":3103,"tag":3164,"props":3195,"children":3196},{},[3197,3203],{"type":3103,"tag":3198,"props":3199,"children":3200},"strong",{},[3201],{"type":3108,"value":3202},"IP-Based Rate limiting and Brute Force Protection",{"type":3103,"tag":3160,"props":3204,"children":3205},{},[3206,3211],{"type":3103,"tag":3164,"props":3207,"children":3208},{},[3209],{"type":3108,"value":3210},"Tracks and enforces rate limits for individual IP addresses.",{"type":3103,"tag":3164,"props":3212,"children":3213},{},[3214],{"type":3108,"value":3215},"Prevents malicious actors or excessive requests from a single source from overwhelming your API.",{"type":3103,"tag":3164,"props":3217,"children":3218},{},[3219,3224],{"type":3103,"tag":3198,"props":3220,"children":3221},{},[3222],{"type":3108,"value":3223},"Customizable Rate Limits",{"type":3103,"tag":3160,"props":3225,"children":3226},{},[3227,3232,3244,3249,3254,3268],{"type":3103,"tag":3164,"props":3228,"children":3229},{},[3230],{"type":3108,"value":3231},"Configure maximum request count, duration within which the limit applies, and a ban period for exceeding the limit.",{"type":3103,"tag":3164,"props":3233,"children":3234},{},[3235,3237,3242],{"type":3108,"value":3236},"If the request limit is exceeded, the user is banned for the configured ban period. During the ban period, ",{"type":3103,"tag":3198,"props":3238,"children":3239},{},[3240],{"type":3108,"value":3241},"all requests are blocked with a 429 error",{"type":3108,"value":3243},", regardless of the rate limit window.",{"type":3103,"tag":3164,"props":3245,"children":3246},{},[3247],{"type":3108,"value":3248},"Add a delay to responses when a user is banned to discourage further abuse (optional).",{"type":3103,"tag":3164,"props":3250,"children":3251},{},[3252],{"type":3108,"value":3253},"Customize the error message for banned users.",{"type":3103,"tag":3164,"props":3255,"children":3256},{},[3257,3259,3266],{"type":3108,"value":3258},"Optionally include the ",{"type":3103,"tag":3260,"props":3261,"children":3263},"code",{"className":3262},[],[3264],{"type":3108,"value":3265},"Retry-After",{"type":3108,"value":3267}," header in responses when a user is banned.",{"type":3103,"tag":3164,"props":3269,"children":3270},{},[3271],{"type":3108,"value":3272},"Tailor the rate-limiting behavior to align with your API's specific needs and usage patterns.",{"type":3103,"tag":3164,"props":3274,"children":3275},{},[3276,3281],{"type":3103,"tag":3198,"props":3277,"children":3278},{},[3279],{"type":3108,"value":3280},"Event-Driven Handling",{"type":3103,"tag":3160,"props":3282,"children":3283},{},[3284,3289],{"type":3103,"tag":3164,"props":3285,"children":3286},{},[3287],{"type":3108,"value":3288},"Intercepts incoming API requests efficiently using Nuxt's event system.",{"type":3103,"tag":3164,"props":3290,"children":3291},{},[3292],{"type":3108,"value":3293},"Ensures seamless integration with your Nuxt application's request lifecycle.",{"type":3103,"tag":3164,"props":3295,"children":3296},{},[3297,3302],{"type":3103,"tag":3198,"props":3298,"children":3299},{},[3300],{"type":3108,"value":3301},"Flexible Storage",{"type":3103,"tag":3160,"props":3303,"children":3304},{},[3305,3310],{"type":3103,"tag":3164,"props":3306,"children":3307},{},[3308],{"type":3108,"value":3309},"Utilizes Nuxt's unstorage abstraction for versatile storage options.",{"type":3103,"tag":3164,"props":3311,"children":3312},{},[3313],{"type":3108,"value":3314},"Store rate-limiting data in various storage providers (filesystem, memory, databases, etc.) based on your project's requirements.",{"type":3103,"tag":3164,"props":3316,"children":3317},{},[3318,3323],{"type":3103,"tag":3198,"props":3319,"children":3320},{},[3321],{"type":3108,"value":3322},"Configurable with Runtime Config",{"type":3103,"tag":3160,"props":3324,"children":3325},{},[3326,3331],{"type":3103,"tag":3164,"props":3327,"children":3328},{},[3329],{"type":3108,"value":3330},"Easily adjust rate-limiting parameters without code changes.",{"type":3103,"tag":3164,"props":3332,"children":3333},{},[3334],{"type":3108,"value":3335},"Adapt to dynamic needs and maintain control over rate-limiting behavior through Nuxt's runtime configuration.",{"type":3103,"tag":3164,"props":3337,"children":3338},{},[3339,3344],{"type":3103,"tag":3198,"props":3340,"children":3341},{},[3342],{"type":3108,"value":3343},"Bundled cleanup tasks",{"type":3103,"tag":3160,"props":3345,"children":3346},{},[3347],{"type":3103,"tag":3164,"props":3348,"children":3349},{},[3350,3352,3358,3360,3366],{"type":3108,"value":3351},"Registers Nitro tasks ",{"type":3103,"tag":3260,"props":3353,"children":3355},{"className":3354},[],[3356],{"type":3108,"value":3357},"shield:cleanBans",{"type":3108,"value":3359}," and ",{"type":3103,"tag":3260,"props":3361,"children":3363},{"className":3362},[],[3364],{"type":3108,"value":3365},"shield:cleanIpData",{"type":3108,"value":3367}," so you can schedule maintenance without adding task files (see setup step 4).",{"type":3103,"tag":3164,"props":3369,"children":3370},{},[3371,3376],{"type":3103,"tag":3198,"props":3372,"children":3373},{},[3374],{"type":3108,"value":3375},"Clear Error Handling",{"type":3103,"tag":3160,"props":3377,"children":3378},{},[3379,3384,3397],{"type":3103,"tag":3164,"props":3380,"children":3381},{},[3382],{"type":3108,"value":3383},"Returns a standardized 429 \"Too Many Requests\" error response when rate limits are exceeded or when a user is banned.",{"type":3103,"tag":3164,"props":3385,"children":3386},{},[3387,3389,3395],{"type":3108,"value":3388},"The 429 body is JSON (",{"type":3103,"tag":3260,"props":3390,"children":3392},{"className":3391},[],[3393],{"type":3108,"value":3394},"{ error, retryAfter }",{"type":3108,"value":3396},") for predictable client-side handling.",{"type":3103,"tag":3164,"props":3398,"children":3399},{},[3400],{"type":3108,"value":3401},"Facilitates proper error handling in client-side applications for a smooth user experience.",{"type":3103,"tag":3164,"props":3403,"children":3404},{},[3405,3410],{"type":3103,"tag":3198,"props":3406,"children":3407},{},[3408],{"type":3108,"value":3409},"Standard Rate-Limit Headers",{"type":3103,"tag":3160,"props":3411,"children":3412},{},[3413],{"type":3103,"tag":3164,"props":3414,"children":3415},{},[3416,3418,3424,3426,3432,3434,3440],{"type":3108,"value":3417},"Every response includes ",{"type":3103,"tag":3260,"props":3419,"children":3421},{"className":3420},[],[3422],{"type":3108,"value":3423},"X-RateLimit-Limit",{"type":3108,"value":3425},", ",{"type":3103,"tag":3260,"props":3427,"children":3429},{"className":3428},[],[3430],{"type":3108,"value":3431},"X-RateLimit-Remaining",{"type":3108,"value":3433},", and ",{"type":3103,"tag":3260,"props":3435,"children":3437},{"className":3436},[],[3438],{"type":3108,"value":3439},"X-RateLimit-Reset",{"type":3108,"value":3441}," headers so clients and CDNs can track usage without parsing response bodies.",{"type":3103,"tag":3186,"props":3443,"children":3445},{"id":3444},"quick-setup",[3446],{"type":3108,"value":3447},"Quick Setup",{"type":3103,"tag":3449,"props":3450,"children":3452},"h3",{"id":3451},"_1-add-nuxt-api-shield-dependency-to-your-project",[3453,3455,3460],{"type":3108,"value":3454},"1. Add ",{"type":3103,"tag":3260,"props":3456,"children":3458},{"className":3457},[],[3459],{"type":3108,"value":3044},{"type":3108,"value":3461}," dependency to your project",{"type":3103,"tag":3463,"props":3464,"children":3468},"pre",{"className":3465,"code":3466,"language":3467,"meta":3047,"style":3047},"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",[3469],{"type":3103,"tag":3260,"props":3470,"children":3471},{"__ignoreMap":3047},[3472,3483,3503,3512,3521,3537,3545,3554],{"type":3103,"tag":3473,"props":3474,"children":3476},"span",{"class":3475,"line":3075},"line",[3477],{"type":3103,"tag":3473,"props":3478,"children":3480},{"style":3479},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#90A4AE;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[3481],{"type":3108,"value":3482},"# Using pnpm\n",{"type":3103,"tag":3473,"props":3484,"children":3485},{"class":3475,"line":3071},[3486,3492,3498],{"type":3103,"tag":3473,"props":3487,"children":3489},{"style":3488},"--shiki-light:#E2931D;--shiki-default:#E2931D;--shiki-dark:#FFCB6B",[3490],{"type":3108,"value":3491},"pnpm",{"type":3103,"tag":3473,"props":3493,"children":3495},{"style":3494},"--shiki-light:#91B859;--shiki-default:#91B859;--shiki-dark:#C3E88D",[3496],{"type":3108,"value":3497}," add",{"type":3103,"tag":3473,"props":3499,"children":3500},{"style":3494},[3501],{"type":3108,"value":3502}," nuxt-api-shield\n",{"type":3103,"tag":3473,"props":3504,"children":3506},{"class":3475,"line":3505},3,[3507],{"type":3103,"tag":3473,"props":3508,"children":3509},{"emptyLinePlaceholder":1200},[3510],{"type":3108,"value":3511},"\n",{"type":3103,"tag":3473,"props":3513,"children":3515},{"class":3475,"line":3514},4,[3516],{"type":3103,"tag":3473,"props":3517,"children":3518},{"style":3479},[3519],{"type":3108,"value":3520},"# Using yarn\n",{"type":3103,"tag":3473,"props":3522,"children":3523},{"class":3475,"line":3067},[3524,3529,3533],{"type":3103,"tag":3473,"props":3525,"children":3526},{"style":3488},[3527],{"type":3108,"value":3528},"yarn",{"type":3103,"tag":3473,"props":3530,"children":3531},{"style":3494},[3532],{"type":3108,"value":3497},{"type":3103,"tag":3473,"props":3534,"children":3535},{"style":3494},[3536],{"type":3108,"value":3502},{"type":3103,"tag":3473,"props":3538,"children":3540},{"class":3475,"line":3539},6,[3541],{"type":3103,"tag":3473,"props":3542,"children":3543},{"emptyLinePlaceholder":1200},[3544],{"type":3108,"value":3511},{"type":3103,"tag":3473,"props":3546,"children":3548},{"class":3475,"line":3547},7,[3549],{"type":3103,"tag":3473,"props":3550,"children":3551},{"style":3479},[3552],{"type":3108,"value":3553},"# Using npm\n",{"type":3103,"tag":3473,"props":3555,"children":3556},{"class":3475,"line":3092},[3557,3562,3567],{"type":3103,"tag":3473,"props":3558,"children":3559},{"style":3488},[3560],{"type":3108,"value":3561},"npm",{"type":3103,"tag":3473,"props":3563,"children":3564},{"style":3494},[3565],{"type":3108,"value":3566}," install",{"type":3103,"tag":3473,"props":3568,"children":3569},{"style":3494},[3570],{"type":3108,"value":3502},{"type":3103,"tag":3449,"props":3572,"children":3574},{"id":3573},"_2-add-nuxt-api-shield-to-the-modules-section-of-nuxtconfigts",[3575,3577,3582,3584,3589,3591],{"type":3108,"value":3576},"2. Add ",{"type":3103,"tag":3260,"props":3578,"children":3580},{"className":3579},[],[3581],{"type":3108,"value":3044},{"type":3108,"value":3583}," to the ",{"type":3103,"tag":3260,"props":3585,"children":3587},{"className":3586},[],[3588],{"type":3108,"value":162},{"type":3108,"value":3590}," section of ",{"type":3103,"tag":3260,"props":3592,"children":3594},{"className":3593},[],[3595],{"type":3108,"value":233},{"type":3103,"tag":3110,"props":3597,"children":3598},{},[3599],{"type":3108,"value":3600},"You should add only the values you want to use differently from the default values.",{"type":3103,"tag":3463,"props":3602,"children":3606},{"className":3603,"code":3604,"language":3605,"meta":3047,"style":3047},"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",[3607],{"type":3103,"tag":3260,"props":3608,"children":3609},{"__ignoreMap":3047},[3610,3642,3684,3701,3709,3717,3725,3733,3741,3750,3759,3768,3777,3786,3795,3804,3813,3821,3830,3839,3853,3881,3889,3898,3926,3943,3952,3980,3988,3997],{"type":3103,"tag":3473,"props":3611,"children":3612},{"class":3475,"line":3075},[3613,3619,3624,3630,3636],{"type":3103,"tag":3473,"props":3614,"children":3616},{"style":3615},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#39ADB5;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[3617],{"type":3108,"value":3618},"export",{"type":3103,"tag":3473,"props":3620,"children":3621},{"style":3615},[3622],{"type":3108,"value":3623}," default",{"type":3103,"tag":3473,"props":3625,"children":3627},{"style":3626},"--shiki-light:#6182B8;--shiki-default:#6182B8;--shiki-dark:#82AAFF",[3628],{"type":3108,"value":3629}," defineNuxtConfig",{"type":3103,"tag":3473,"props":3631,"children":3633},{"style":3632},"--shiki-light:#90A4AE;--shiki-default:#90A4AE;--shiki-dark:#BABED8",[3634],{"type":3108,"value":3635},"(",{"type":3103,"tag":3473,"props":3637,"children":3639},{"style":3638},"--shiki-light:#39ADB5;--shiki-default:#39ADB5;--shiki-dark:#89DDFF",[3640],{"type":3108,"value":3641},"{\n",{"type":3103,"tag":3473,"props":3643,"children":3644},{"class":3475,"line":3071},[3645,3651,3656,3661,3666,3670,3674,3679],{"type":3103,"tag":3473,"props":3646,"children":3648},{"style":3647},"--shiki-light:#E53935;--shiki-default:#E53935;--shiki-dark:#F07178",[3649],{"type":3108,"value":3650},"  modules",{"type":3103,"tag":3473,"props":3652,"children":3653},{"style":3638},[3654],{"type":3108,"value":3655},":",{"type":3103,"tag":3473,"props":3657,"children":3658},{"style":3632},[3659],{"type":3108,"value":3660}," [",{"type":3103,"tag":3473,"props":3662,"children":3663},{"style":3638},[3664],{"type":3108,"value":3665},"\"",{"type":3103,"tag":3473,"props":3667,"children":3668},{"style":3494},[3669],{"type":3108,"value":3044},{"type":3103,"tag":3473,"props":3671,"children":3672},{"style":3638},[3673],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":3675,"children":3676},{"style":3632},[3677],{"type":3108,"value":3678},"]",{"type":3103,"tag":3473,"props":3680,"children":3681},{"style":3638},[3682],{"type":3108,"value":3683},",\n",{"type":3103,"tag":3473,"props":3685,"children":3686},{"class":3475,"line":3505},[3687,3692,3696],{"type":3103,"tag":3473,"props":3688,"children":3689},{"style":3647},[3690],{"type":3108,"value":3691},"  nuxtApiShield",{"type":3103,"tag":3473,"props":3693,"children":3694},{"style":3638},[3695],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":3697,"children":3698},{"style":3638},[3699],{"type":3108,"value":3700}," {\n",{"type":3103,"tag":3473,"props":3702,"children":3703},{"class":3475,"line":3514},[3704],{"type":3103,"tag":3473,"props":3705,"children":3706},{"style":3479},[3707],{"type":3108,"value":3708},"    \u002F*limit: {\n",{"type":3103,"tag":3473,"props":3710,"children":3711},{"class":3475,"line":3067},[3712],{"type":3103,"tag":3473,"props":3713,"children":3714},{"style":3479},[3715],{"type":3108,"value":3716},"      max: 12,        \u002F\u002F maximum requests per duration time, default is 12\u002Fduration\n",{"type":3103,"tag":3473,"props":3718,"children":3719},{"class":3475,"line":3539},[3720],{"type":3103,"tag":3473,"props":3721,"children":3722},{"style":3479},[3723],{"type":3108,"value":3724},"      duration: 108,   \u002F\u002F duration time in seconds, default is 108 seconds\n",{"type":3103,"tag":3473,"props":3726,"children":3727},{"class":3475,"line":3547},[3728],{"type":3103,"tag":3473,"props":3729,"children":3730},{"style":3479},[3731],{"type":3108,"value":3732},"      ban: 3600,      \u002F\u002F ban time in seconds, default is 3600 seconds = 1 hour\n",{"type":3103,"tag":3473,"props":3734,"children":3735},{"class":3475,"line":3092},[3736],{"type":3103,"tag":3473,"props":3737,"children":3738},{"style":3479},[3739],{"type":3108,"value":3740},"      \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":3103,"tag":3473,"props":3742,"children":3744},{"class":3475,"line":3743},9,[3745],{"type":3103,"tag":3473,"props":3746,"children":3747},{"style":3479},[3748],{"type":3108,"value":3749},"    },\n",{"type":3103,"tag":3473,"props":3751,"children":3753},{"class":3475,"line":3752},10,[3754],{"type":3103,"tag":3473,"props":3755,"children":3756},{"style":3479},[3757],{"type":3108,"value":3758},"    delayOnBan: true  \u002F\u002F delay every response with +1sec when the user is banned, default is true\n",{"type":3103,"tag":3473,"props":3760,"children":3762},{"class":3475,"line":3761},11,[3763],{"type":3103,"tag":3473,"props":3764,"children":3765},{"style":3479},[3766],{"type":3108,"value":3767},"    errorMessage: \"Too Many Requests\",  \u002F\u002F error message when the user is banned, default is \"Too Many Requests\"\n",{"type":3103,"tag":3473,"props":3769,"children":3771},{"class":3475,"line":3770},12,[3772],{"type":3103,"tag":3473,"props":3773,"children":3774},{"style":3479},[3775],{"type":3108,"value":3776},"    retryAfterHeader: false, \u002F\u002F when the user is banned add the Retry-After header to the response, default is false\n",{"type":3103,"tag":3473,"props":3778,"children":3780},{"class":3475,"line":3779},13,[3781],{"type":3103,"tag":3473,"props":3782,"children":3783},{"style":3479},[3784],{"type":3108,"value":3785},"    log: {\n",{"type":3103,"tag":3473,"props":3787,"children":3789},{"class":3475,"line":3788},14,[3790],{"type":3103,"tag":3473,"props":3791,"children":3792},{"style":3479},[3793],{"type":3108,"value":3794},"      path: \"\", \u002F\u002F path to the log file, every day a new log file will be created, use \"\" to disable logging\n",{"type":3103,"tag":3473,"props":3796,"children":3798},{"class":3475,"line":3797},15,[3799],{"type":3103,"tag":3473,"props":3800,"children":3801},{"style":3479},[3802],{"type":3108,"value":3803},"      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":3103,"tag":3473,"props":3805,"children":3807},{"class":3475,"line":3806},16,[3808],{"type":3103,"tag":3473,"props":3809,"children":3810},{"style":3479},[3811],{"type":3108,"value":3812},"      fail2ban: false, \u002F\u002F enable fail2ban-compatible log format for ban events (see fail2ban section)\n",{"type":3103,"tag":3473,"props":3814,"children":3816},{"class":3475,"line":3815},17,[3817],{"type":3103,"tag":3473,"props":3818,"children":3819},{"style":3479},[3820],{"type":3108,"value":3749},{"type":3103,"tag":3473,"props":3822,"children":3824},{"class":3475,"line":3823},18,[3825],{"type":3103,"tag":3473,"props":3826,"children":3827},{"style":3479},[3828],{"type":3108,"value":3829},"    routes: [], \u002F\u002F specify routes to apply rate limiting to, default is an empty array meaning all routes are protected.\n",{"type":3103,"tag":3473,"props":3831,"children":3833},{"class":3475,"line":3832},19,[3834],{"type":3103,"tag":3473,"props":3835,"children":3836},{"style":3479},[3837],{"type":3108,"value":3838},"    \u002F\u002F Example:\n",{"type":3103,"tag":3473,"props":3840,"children":3842},{"class":3475,"line":3841},20,[3843,3848],{"type":3103,"tag":3473,"props":3844,"children":3845},{"style":3479},[3846],{"type":3108,"value":3847},"    \u002F\u002F routes: [\"\u002Fapi\u002Fv2\u002F\", \"\u002Fapi\u002Fv3\u002F\"],",{"type":3103,"tag":3473,"props":3849,"children":3850},{"style":3479},[3851],{"type":3108,"value":3852}," \u002F\u002F \u002Fapi\u002Fv1 will not be protected, \u002Fapi\u002Fv2\u002F and \u002Fapi\u002Fv3\u002F will be protected *\u002F\n",{"type":3103,"tag":3473,"props":3854,"children":3856},{"class":3475,"line":3855},21,[3857,3862,3866,3871,3876],{"type":3103,"tag":3473,"props":3858,"children":3859},{"style":3647},[3860],{"type":3108,"value":3861},"    skipRoutes",{"type":3103,"tag":3473,"props":3863,"children":3864},{"style":3638},[3865],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":3867,"children":3868},{"style":3632},[3869],{"type":3108,"value":3870}," []",{"type":3103,"tag":3473,"props":3872,"children":3873},{"style":3638},[3874],{"type":3108,"value":3875},",",{"type":3103,"tag":3473,"props":3877,"children":3878},{"style":3479},[3879],{"type":3108,"value":3880}," \u002F\u002F specify routes to skip\u002Fexempt from rate limiting, supports wildcard patterns (*\u002F**)\n",{"type":3103,"tag":3473,"props":3882,"children":3884},{"class":3475,"line":3883},22,[3885],{"type":3103,"tag":3473,"props":3886,"children":3887},{"style":3479},[3888],{"type":3108,"value":3838},{"type":3103,"tag":3473,"props":3890,"children":3892},{"class":3475,"line":3891},23,[3893],{"type":3103,"tag":3473,"props":3894,"children":3895},{"style":3479},[3896],{"type":3108,"value":3897},"    \u002F\u002F skipRoutes: [\"\u002Fapi\u002Fhealth\", \"\u002Fapi\u002F_nuxt\u002F**\", \"\u002Fapi\u002Fwebhooks\u002Fstripe\"],\n",{"type":3103,"tag":3473,"props":3899,"children":3901},{"class":3475,"line":3900},24,[3902,3907,3911,3917,3921],{"type":3103,"tag":3473,"props":3903,"children":3904},{"style":3647},[3905],{"type":3108,"value":3906},"    ipTTL",{"type":3103,"tag":3473,"props":3908,"children":3909},{"style":3638},[3910],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":3912,"children":3914},{"style":3913},"--shiki-light:#F76D47;--shiki-default:#F76D47;--shiki-dark:#F78C6C",[3915],{"type":3108,"value":3916}," 604800",{"type":3103,"tag":3473,"props":3918,"children":3919},{"style":3638},[3920],{"type":3108,"value":3875},{"type":3103,"tag":3473,"props":3922,"children":3923},{"style":3479},[3924],{"type":3108,"value":3925}," \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":3103,"tag":3473,"props":3927,"children":3929},{"class":3475,"line":3928},25,[3930,3935,3939],{"type":3103,"tag":3473,"props":3931,"children":3932},{"style":3647},[3933],{"type":3108,"value":3934},"    security",{"type":3103,"tag":3473,"props":3936,"children":3937},{"style":3638},[3938],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":3940,"children":3941},{"style":3638},[3942],{"type":3108,"value":3700},{"type":3103,"tag":3473,"props":3944,"children":3946},{"class":3475,"line":3945},26,[3947],{"type":3103,"tag":3473,"props":3948,"children":3949},{"style":3479},[3950],{"type":3108,"value":3951},"      \u002F\u002F Optional: Security-related configurations\n",{"type":3103,"tag":3473,"props":3953,"children":3955},{"class":3475,"line":3954},27,[3956,3961,3965,3971,3975],{"type":3103,"tag":3473,"props":3957,"children":3958},{"style":3647},[3959],{"type":3108,"value":3960},"      trustXForwardedFor",{"type":3103,"tag":3473,"props":3962,"children":3963},{"style":3638},[3964],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":3966,"children":3968},{"style":3967},"--shiki-light:#FF5370;--shiki-default:#FF5370;--shiki-dark:#FF9CAC",[3969],{"type":3108,"value":3970}," false",{"type":3103,"tag":3473,"props":3972,"children":3973},{"style":3638},[3974],{"type":3108,"value":3875},{"type":3103,"tag":3473,"props":3976,"children":3977},{"style":3479},[3978],{"type":3108,"value":3979}," \u002F\u002F Default: false. Whether to trust X-Forwarded-For headers. See warning below.\n",{"type":3103,"tag":3473,"props":3981,"children":3983},{"class":3475,"line":3982},28,[3984],{"type":3103,"tag":3473,"props":3985,"children":3986},{"style":3638},[3987],{"type":3108,"value":3749},{"type":3103,"tag":3473,"props":3989,"children":3991},{"class":3475,"line":3990},29,[3992],{"type":3103,"tag":3473,"props":3993,"children":3994},{"style":3638},[3995],{"type":3108,"value":3996},"  },\n",{"type":3103,"tag":3473,"props":3998,"children":4000},{"class":3475,"line":3999},30,[4001,4006,4011],{"type":3103,"tag":3473,"props":4002,"children":4003},{"style":3638},[4004],{"type":3108,"value":4005},"}",{"type":3103,"tag":3473,"props":4007,"children":4008},{"style":3632},[4009],{"type":3108,"value":4010},")",{"type":3103,"tag":3473,"props":4012,"children":4013},{"style":3638},[4014],{"type":3108,"value":4015},";\n",{"type":3103,"tag":3110,"props":4017,"children":4018},{},[4019,4024,4026,4032],{"type":3103,"tag":3198,"props":4020,"children":4021},{},[4022],{"type":3108,"value":4023},"Default Configuration Values:",{"type":3108,"value":4025},"\n(These are applied by the module if not specified in your ",{"type":3103,"tag":3260,"props":4027,"children":4029},{"className":4028},[],[4030],{"type":3108,"value":4031},"nuxtApiShield",{"type":3108,"value":4033}," config)",{"type":3103,"tag":3463,"props":4035,"children":4037},{"className":3603,"code":4036,"language":3605,"meta":3047,"style":3047},"{\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",[4038],{"type":3103,"tag":3260,"props":4039,"children":4040},{"__ignoreMap":3047},[4041,4048,4064,4085,4111,4137,4144,4165,4195,4215,4231,4257,4283,4303,4310,4330,4350,4403,4419,4439,4447],{"type":3103,"tag":3473,"props":4042,"children":4043},{"class":3475,"line":3075},[4044],{"type":3103,"tag":3473,"props":4045,"children":4046},{"style":3638},[4047],{"type":3108,"value":3641},{"type":3103,"tag":3473,"props":4049,"children":4050},{"class":3475,"line":3071},[4051,4056,4060],{"type":3103,"tag":3473,"props":4052,"children":4053},{"style":3488},[4054],{"type":3108,"value":4055},"  limit",{"type":3103,"tag":3473,"props":4057,"children":4058},{"style":3638},[4059],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":4061,"children":4062},{"style":3638},[4063],{"type":3108,"value":3700},{"type":3103,"tag":3473,"props":4065,"children":4066},{"class":3475,"line":3505},[4067,4072,4076,4081],{"type":3103,"tag":3473,"props":4068,"children":4069},{"style":3488},[4070],{"type":3108,"value":4071},"    max",{"type":3103,"tag":3473,"props":4073,"children":4074},{"style":3638},[4075],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":4077,"children":4078},{"style":3913},[4079],{"type":3108,"value":4080}," 12",{"type":3103,"tag":3473,"props":4082,"children":4083},{"style":3638},[4084],{"type":3108,"value":3683},{"type":3103,"tag":3473,"props":4086,"children":4087},{"class":3475,"line":3514},[4088,4093,4097,4102,4106],{"type":3103,"tag":3473,"props":4089,"children":4090},{"style":3488},[4091],{"type":3108,"value":4092},"    duration",{"type":3103,"tag":3473,"props":4094,"children":4095},{"style":3638},[4096],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":4098,"children":4099},{"style":3913},[4100],{"type":3108,"value":4101}," 108",{"type":3103,"tag":3473,"props":4103,"children":4104},{"style":3638},[4105],{"type":3108,"value":3875},{"type":3103,"tag":3473,"props":4107,"children":4108},{"style":3479},[4109],{"type":3108,"value":4110}," \u002F\u002F seconds\n",{"type":3103,"tag":3473,"props":4112,"children":4113},{"class":3475,"line":3067},[4114,4119,4123,4128,4132],{"type":3103,"tag":3473,"props":4115,"children":4116},{"style":3488},[4117],{"type":3108,"value":4118},"    ban",{"type":3103,"tag":3473,"props":4120,"children":4121},{"style":3638},[4122],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":4124,"children":4125},{"style":3913},[4126],{"type":3108,"value":4127}," 3600",{"type":3103,"tag":3473,"props":4129,"children":4130},{"style":3638},[4131],{"type":3108,"value":3875},{"type":3103,"tag":3473,"props":4133,"children":4134},{"style":3479},[4135],{"type":3108,"value":4136},"     \u002F\u002F seconds\n",{"type":3103,"tag":3473,"props":4138,"children":4139},{"class":3475,"line":3539},[4140],{"type":3103,"tag":3473,"props":4141,"children":4142},{"style":3638},[4143],{"type":3108,"value":3996},{"type":3103,"tag":3473,"props":4145,"children":4146},{"class":3475,"line":3547},[4147,4152,4156,4161],{"type":3103,"tag":3473,"props":4148,"children":4149},{"style":3488},[4150],{"type":3108,"value":4151},"  delayOnBan",{"type":3103,"tag":3473,"props":4153,"children":4154},{"style":3638},[4155],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":4157,"children":4158},{"style":3967},[4159],{"type":3108,"value":4160}," true",{"type":3103,"tag":3473,"props":4162,"children":4163},{"style":3638},[4164],{"type":3108,"value":3683},{"type":3103,"tag":3473,"props":4166,"children":4167},{"class":3475,"line":3092},[4168,4173,4177,4182,4187,4191],{"type":3103,"tag":3473,"props":4169,"children":4170},{"style":3488},[4171],{"type":3108,"value":4172},"  errorMessage",{"type":3103,"tag":3473,"props":4174,"children":4175},{"style":3638},[4176],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":4178,"children":4179},{"style":3638},[4180],{"type":3108,"value":4181}," \"",{"type":3103,"tag":3473,"props":4183,"children":4184},{"style":3494},[4185],{"type":3108,"value":4186},"Too Many Requests",{"type":3103,"tag":3473,"props":4188,"children":4189},{"style":3638},[4190],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":4192,"children":4193},{"style":3638},[4194],{"type":3108,"value":3683},{"type":3103,"tag":3473,"props":4196,"children":4197},{"class":3475,"line":3743},[4198,4203,4207,4211],{"type":3103,"tag":3473,"props":4199,"children":4200},{"style":3488},[4201],{"type":3108,"value":4202},"  retryAfterHeader",{"type":3103,"tag":3473,"props":4204,"children":4205},{"style":3638},[4206],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":4208,"children":4209},{"style":3967},[4210],{"type":3108,"value":3970},{"type":3103,"tag":3473,"props":4212,"children":4213},{"style":3638},[4214],{"type":3108,"value":3683},{"type":3103,"tag":3473,"props":4216,"children":4217},{"class":3475,"line":3752},[4218,4223,4227],{"type":3103,"tag":3473,"props":4219,"children":4220},{"style":3488},[4221],{"type":3108,"value":4222},"  log",{"type":3103,"tag":3473,"props":4224,"children":4225},{"style":3638},[4226],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":4228,"children":4229},{"style":3638},[4230],{"type":3108,"value":3700},{"type":3103,"tag":3473,"props":4232,"children":4233},{"class":3475,"line":3761},[4234,4239,4243,4248,4252],{"type":3103,"tag":3473,"props":4235,"children":4236},{"style":3488},[4237],{"type":3108,"value":4238},"    path",{"type":3103,"tag":3473,"props":4240,"children":4241},{"style":3638},[4242],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":4244,"children":4245},{"style":3638},[4246],{"type":3108,"value":4247}," \"\"",{"type":3103,"tag":3473,"props":4249,"children":4250},{"style":3638},[4251],{"type":3108,"value":3875},{"type":3103,"tag":3473,"props":4253,"children":4254},{"style":3479},[4255],{"type":3108,"value":4256}," \u002F\u002F Logging is disabled if path is empty\n",{"type":3103,"tag":3473,"props":4258,"children":4259},{"class":3475,"line":3770},[4260,4265,4269,4274,4278],{"type":3103,"tag":3473,"props":4261,"children":4262},{"style":3488},[4263],{"type":3108,"value":4264},"    attempts",{"type":3103,"tag":3473,"props":4266,"children":4267},{"style":3638},[4268],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":4270,"children":4271},{"style":3913},[4272],{"type":3108,"value":4273}," 0",{"type":3103,"tag":3473,"props":4275,"children":4276},{"style":3638},[4277],{"type":3108,"value":3875},{"type":3103,"tag":3473,"props":4279,"children":4280},{"style":3479},[4281],{"type":3108,"value":4282}," \u002F\u002F Logging per IP is disabled if attempts is 0\n",{"type":3103,"tag":3473,"props":4284,"children":4285},{"class":3475,"line":3779},[4286,4291,4295,4299],{"type":3103,"tag":3473,"props":4287,"children":4288},{"style":3488},[4289],{"type":3108,"value":4290},"    fail2ban",{"type":3103,"tag":3473,"props":4292,"children":4293},{"style":3638},[4294],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":4296,"children":4297},{"style":3967},[4298],{"type":3108,"value":3970},{"type":3103,"tag":3473,"props":4300,"children":4301},{"style":3638},[4302],{"type":3108,"value":3683},{"type":3103,"tag":3473,"props":4304,"children":4305},{"class":3475,"line":3788},[4306],{"type":3103,"tag":3473,"props":4307,"children":4308},{"style":3638},[4309],{"type":3108,"value":3996},{"type":3103,"tag":3473,"props":4311,"children":4312},{"class":3475,"line":3797},[4313,4318,4322,4326],{"type":3103,"tag":3473,"props":4314,"children":4315},{"style":3488},[4316],{"type":3108,"value":4317},"  routes",{"type":3103,"tag":3473,"props":4319,"children":4320},{"style":3638},[4321],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":4323,"children":4324},{"style":3647},[4325],{"type":3108,"value":3870},{"type":3103,"tag":3473,"props":4327,"children":4328},{"style":3638},[4329],{"type":3108,"value":3683},{"type":3103,"tag":3473,"props":4331,"children":4332},{"class":3475,"line":3806},[4333,4338,4342,4346],{"type":3103,"tag":3473,"props":4334,"children":4335},{"style":3488},[4336],{"type":3108,"value":4337},"  skipRoutes",{"type":3103,"tag":3473,"props":4339,"children":4340},{"style":3638},[4341],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":4343,"children":4344},{"style":3647},[4345],{"type":3108,"value":3870},{"type":3103,"tag":3473,"props":4347,"children":4348},{"style":3638},[4349],{"type":3108,"value":3683},{"type":3103,"tag":3473,"props":4351,"children":4352},{"class":3475,"line":3815},[4353,4358,4362,4367,4372,4377,4381,4386,4390,4394,4398],{"type":3103,"tag":3473,"props":4354,"children":4355},{"style":3488},[4356],{"type":3108,"value":4357},"  ipTTL",{"type":3103,"tag":3473,"props":4359,"children":4360},{"style":3638},[4361],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":4363,"children":4364},{"style":3913},[4365],{"type":3108,"value":4366}," 7",{"type":3103,"tag":3473,"props":4368,"children":4369},{"style":3638},[4370],{"type":3108,"value":4371}," *",{"type":3103,"tag":3473,"props":4373,"children":4374},{"style":3913},[4375],{"type":3108,"value":4376}," 24",{"type":3103,"tag":3473,"props":4378,"children":4379},{"style":3638},[4380],{"type":3108,"value":4371},{"type":3103,"tag":3473,"props":4382,"children":4383},{"style":3913},[4384],{"type":3108,"value":4385}," 60",{"type":3103,"tag":3473,"props":4387,"children":4388},{"style":3638},[4389],{"type":3108,"value":4371},{"type":3103,"tag":3473,"props":4391,"children":4392},{"style":3913},[4393],{"type":3108,"value":4385},{"type":3103,"tag":3473,"props":4395,"children":4396},{"style":3638},[4397],{"type":3108,"value":3875},{"type":3103,"tag":3473,"props":4399,"children":4400},{"style":3479},[4401],{"type":3108,"value":4402}," \u002F\u002F 7 days in seconds\n",{"type":3103,"tag":3473,"props":4404,"children":4405},{"class":3475,"line":3823},[4406,4411,4415],{"type":3103,"tag":3473,"props":4407,"children":4408},{"style":3488},[4409],{"type":3108,"value":4410},"  security",{"type":3103,"tag":3473,"props":4412,"children":4413},{"style":3638},[4414],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":4416,"children":4417},{"style":3638},[4418],{"type":3108,"value":3700},{"type":3103,"tag":3473,"props":4420,"children":4421},{"class":3475,"line":3832},[4422,4427,4431,4435],{"type":3103,"tag":3473,"props":4423,"children":4424},{"style":3488},[4425],{"type":3108,"value":4426},"    trustXForwardedFor",{"type":3103,"tag":3473,"props":4428,"children":4429},{"style":3638},[4430],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":4432,"children":4433},{"style":3967},[4434],{"type":3108,"value":3970},{"type":3103,"tag":3473,"props":4436,"children":4437},{"style":3638},[4438],{"type":3108,"value":3683},{"type":3103,"tag":3473,"props":4440,"children":4441},{"class":3475,"line":3841},[4442],{"type":3103,"tag":3473,"props":4443,"children":4444},{"style":3638},[4445],{"type":3108,"value":4446},"  }\n",{"type":3103,"tag":3473,"props":4448,"children":4449},{"class":3475,"line":3855},[4450],{"type":3103,"tag":3473,"props":4451,"children":4452},{"style":3638},[4453],{"type":3108,"value":4454},"}\n",{"type":3103,"tag":3110,"props":4456,"children":4457},{},[4458],{"type":3103,"tag":3198,"props":4459,"children":4460},{},[4461,4463],{"type":3108,"value":4462},"Security Warning: ",{"type":3103,"tag":3260,"props":4464,"children":4466},{"className":4465},[],[4467],{"type":3108,"value":4468},"trustXForwardedFor",{"type":3103,"tag":3110,"props":4470,"children":4471},{},[4472,4474,4480,4482,4488,4490,4496],{"type":3108,"value":4473},"The ",{"type":3103,"tag":3260,"props":4475,"children":4477},{"className":4476},[],[4478],{"type":3108,"value":4479},"security.trustXForwardedFor",{"type":3108,"value":4481}," option (default is ",{"type":3103,"tag":3260,"props":4483,"children":4485},{"className":4484},[],[4486],{"type":3108,"value":4487},"false",{"type":3108,"value":4489},", set by the module) determines if the module uses the ",{"type":3103,"tag":3260,"props":4491,"children":4493},{"className":4492},[],[4494],{"type":3108,"value":4495},"X-Forwarded-For",{"type":3108,"value":4497}," HTTP header to identify the client's IP address.",{"type":3103,"tag":3160,"props":4499,"children":4500},{},[4501,4521,4559,4578],{"type":3103,"tag":3164,"props":4502,"children":4503},{},[4504,4506,4512,4514,4519],{"type":3108,"value":4505},"If set to ",{"type":3103,"tag":3260,"props":4507,"children":4509},{"className":4508},[],[4510],{"type":3108,"value":4511},"true",{"type":3108,"value":4513},": The module will use the IP address provided in the ",{"type":3103,"tag":3260,"props":4515,"children":4517},{"className":4516},[],[4518],{"type":3108,"value":4495},{"type":3108,"value":4520}," 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":3103,"tag":3164,"props":4522,"children":4523},{},[4524,4529,4531,4536,4538,4543,4545,4550,4552,4557],{"type":3103,"tag":3198,"props":4525,"children":4526},{},[4527],{"type":3108,"value":4528},"WARNING:",{"type":3108,"value":4530}," If ",{"type":3103,"tag":3260,"props":4532,"children":4534},{"className":4533},[],[4535],{"type":3108,"value":4468},{"type":3108,"value":4537}," is ",{"type":3103,"tag":3260,"props":4539,"children":4541},{"className":4540},[],[4542],{"type":3108,"value":4511},{"type":3108,"value":4544}," and your application is directly internet-facing OR your proxy is not configured to strip incoming ",{"type":3103,"tag":3260,"props":4546,"children":4548},{"className":4547},[],[4549],{"type":3108,"value":4495},{"type":3108,"value":4551}," headers from clients, malicious users can spoof their IP address by sending a fake ",{"type":3103,"tag":3260,"props":4553,"children":4555},{"className":4554},[],[4556],{"type":3108,"value":4495},{"type":3108,"value":4558}," header. This would allow them to bypass rate limits or cause other users to be incorrectly rate-limited.",{"type":3103,"tag":3164,"props":4560,"children":4561},{},[4562,4563,4568,4570,4576],{"type":3108,"value":4505},{"type":3103,"tag":3260,"props":4564,"children":4566},{"className":4565},[],[4567],{"type":3108,"value":4487},{"type":3108,"value":4569},": The module will use the direct IP address of the incoming connection (i.e., ",{"type":3103,"tag":3260,"props":4571,"children":4573},{"className":4572},[],[4574],{"type":3108,"value":4575},"event.node.req.socket.remoteAddress",{"type":3108,"value":4577},"). Use this setting if your application is directly internet-facing or if you are unsure about your proxy's configuration.",{"type":3103,"tag":3164,"props":4579,"children":4580},{},[4581,4586,4588,4594,4596,4601],{"type":3103,"tag":3198,"props":4582,"children":4583},{},[4584],{"type":3108,"value":4585},"Recommendation:",{"type":3108,"value":4587}," Only enable ",{"type":3103,"tag":3260,"props":4589,"children":4591},{"className":4590},[],[4592],{"type":3108,"value":4593},"trustXForwardedFor: true",{"type":3108,"value":4595}," 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":3103,"tag":3260,"props":4597,"children":4599},{"className":4598},[],[4600],{"type":3108,"value":4487},{"type":3108,"value":4602},".",{"type":3103,"tag":3449,"props":4604,"children":4606},{"id":4605},"_3-add-nitrostorage-to-nuxtconfigts",[4607,4609,4615,4617],{"type":3108,"value":4608},"3. Add ",{"type":3103,"tag":3260,"props":4610,"children":4612},{"className":4611},[],[4613],{"type":3108,"value":4614},"nitro\u002Fstorage",{"type":3108,"value":4616}," to ",{"type":3103,"tag":3260,"props":4618,"children":4620},{"className":4619},[],[4621],{"type":3108,"value":233},{"type":3103,"tag":3110,"props":4623,"children":4624},{},[4625,4627,4632],{"type":3108,"value":4626},"You can use any storage you want, but you have to use ",{"type":3103,"tag":3198,"props":4628,"children":4629},{},[4630],{"type":3108,"value":4631},"shield",{"type":3108,"value":4633}," as the name of the storage.",{"type":3103,"tag":3463,"props":4635,"children":4639},{"className":4636,"code":4637,"language":4638,"meta":3047,"style":3047},"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",[4640],{"type":3103,"tag":3260,"props":4641,"children":4642},{"__ignoreMap":3047},[4643,4650,4676,4701,4725,4733,4768,4776,4784,4791],{"type":3103,"tag":3473,"props":4644,"children":4645},{"class":3475,"line":3075},[4646],{"type":3103,"tag":3473,"props":4647,"children":4648},{"style":3638},[4649],{"type":3108,"value":3641},{"type":3103,"tag":3473,"props":4651,"children":4652},{"class":3475,"line":3071},[4653,4658,4664,4668,4672],{"type":3103,"tag":3473,"props":4654,"children":4655},{"style":3638},[4656],{"type":3108,"value":4657},"  \"",{"type":3103,"tag":3473,"props":4659,"children":4661},{"style":4660},"--shiki-light:#9C3EDA;--shiki-default:#9C3EDA;--shiki-dark:#C792EA",[4662],{"type":3108,"value":4663},"nitro",{"type":3103,"tag":3473,"props":4665,"children":4666},{"style":3638},[4667],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":4669,"children":4670},{"style":3638},[4671],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":4673,"children":4674},{"style":3638},[4675],{"type":3108,"value":3700},{"type":3103,"tag":3473,"props":4677,"children":4678},{"class":3475,"line":3505},[4679,4684,4689,4693,4697],{"type":3103,"tag":3473,"props":4680,"children":4681},{"style":3638},[4682],{"type":3108,"value":4683},"    \"",{"type":3103,"tag":3473,"props":4685,"children":4686},{"style":3488},[4687],{"type":3108,"value":4688},"storage",{"type":3103,"tag":3473,"props":4690,"children":4691},{"style":3638},[4692],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":4694,"children":4695},{"style":3638},[4696],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":4698,"children":4699},{"style":3638},[4700],{"type":3108,"value":3700},{"type":3103,"tag":3473,"props":4702,"children":4703},{"class":3475,"line":3514},[4704,4709,4713,4717,4721],{"type":3103,"tag":3473,"props":4705,"children":4706},{"style":3638},[4707],{"type":3108,"value":4708},"      \"",{"type":3103,"tag":3473,"props":4710,"children":4711},{"style":3913},[4712],{"type":3108,"value":4631},{"type":3103,"tag":3473,"props":4714,"children":4715},{"style":3638},[4716],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":4718,"children":4719},{"style":3638},[4720],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":4722,"children":4723},{"style":3638},[4724],{"type":3108,"value":3700},{"type":3103,"tag":3473,"props":4726,"children":4727},{"class":3475,"line":3067},[4728],{"type":3103,"tag":3473,"props":4729,"children":4730},{"style":3479},[4731],{"type":3108,"value":4732},"        \u002F\u002F storage name, you **must** use \"shield\" as the name\n",{"type":3103,"tag":3473,"props":4734,"children":4735},{"class":3475,"line":3539},[4736,4741,4746,4750,4754,4758,4763],{"type":3103,"tag":3473,"props":4737,"children":4738},{"style":3638},[4739],{"type":3108,"value":4740},"        \"",{"type":3103,"tag":3473,"props":4742,"children":4743},{"style":3647},[4744],{"type":3108,"value":4745},"driver",{"type":3103,"tag":3473,"props":4747,"children":4748},{"style":3638},[4749],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":4751,"children":4752},{"style":3638},[4753],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":4755,"children":4756},{"style":3638},[4757],{"type":3108,"value":4181},{"type":3103,"tag":3473,"props":4759,"children":4760},{"style":3494},[4761],{"type":3108,"value":4762},"memory",{"type":3103,"tag":3473,"props":4764,"children":4765},{"style":3638},[4766],{"type":3108,"value":4767},"\"\n",{"type":3103,"tag":3473,"props":4769,"children":4770},{"class":3475,"line":3547},[4771],{"type":3103,"tag":3473,"props":4772,"children":4773},{"style":3638},[4774],{"type":3108,"value":4775},"      }\n",{"type":3103,"tag":3473,"props":4777,"children":4778},{"class":3475,"line":3092},[4779],{"type":3103,"tag":3473,"props":4780,"children":4781},{"style":3638},[4782],{"type":3108,"value":4783},"    }\n",{"type":3103,"tag":3473,"props":4785,"children":4786},{"class":3475,"line":3743},[4787],{"type":3103,"tag":3473,"props":4788,"children":4789},{"style":3638},[4790],{"type":3108,"value":4446},{"type":3103,"tag":3473,"props":4792,"children":4793},{"class":3475,"line":3752},[4794],{"type":3103,"tag":3473,"props":4795,"children":4796},{"style":3638},[4797],{"type":3108,"value":4454},{"type":3103,"tag":3110,"props":4799,"children":4800},{},[4801],{"type":3108,"value":4802},"If you use for example redis, you can use the following configuration, define the host and port.",{"type":3103,"tag":3463,"props":4804,"children":4806},{"className":4636,"code":4805,"language":4638,"meta":3047,"style":3047},"{\n  \"nitro\": {\n    \"storage\": {\n      \"shield\": {\n        \"driver\": \"redis\",\n        \"host\": \"localhost\",\n        \"port\": 6379\n      }\n    }\n  }\n}\n",[4807],{"type":3103,"tag":3260,"props":4808,"children":4809},{"__ignoreMap":3047},[4810,4817,4840,4863,4886,4922,4959,4984,4991,4998,5005],{"type":3103,"tag":3473,"props":4811,"children":4812},{"class":3475,"line":3075},[4813],{"type":3103,"tag":3473,"props":4814,"children":4815},{"style":3638},[4816],{"type":3108,"value":3641},{"type":3103,"tag":3473,"props":4818,"children":4819},{"class":3475,"line":3071},[4820,4824,4828,4832,4836],{"type":3103,"tag":3473,"props":4821,"children":4822},{"style":3638},[4823],{"type":3108,"value":4657},{"type":3103,"tag":3473,"props":4825,"children":4826},{"style":4660},[4827],{"type":3108,"value":4663},{"type":3103,"tag":3473,"props":4829,"children":4830},{"style":3638},[4831],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":4833,"children":4834},{"style":3638},[4835],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":4837,"children":4838},{"style":3638},[4839],{"type":3108,"value":3700},{"type":3103,"tag":3473,"props":4841,"children":4842},{"class":3475,"line":3505},[4843,4847,4851,4855,4859],{"type":3103,"tag":3473,"props":4844,"children":4845},{"style":3638},[4846],{"type":3108,"value":4683},{"type":3103,"tag":3473,"props":4848,"children":4849},{"style":3488},[4850],{"type":3108,"value":4688},{"type":3103,"tag":3473,"props":4852,"children":4853},{"style":3638},[4854],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":4856,"children":4857},{"style":3638},[4858],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":4860,"children":4861},{"style":3638},[4862],{"type":3108,"value":3700},{"type":3103,"tag":3473,"props":4864,"children":4865},{"class":3475,"line":3514},[4866,4870,4874,4878,4882],{"type":3103,"tag":3473,"props":4867,"children":4868},{"style":3638},[4869],{"type":3108,"value":4708},{"type":3103,"tag":3473,"props":4871,"children":4872},{"style":3913},[4873],{"type":3108,"value":4631},{"type":3103,"tag":3473,"props":4875,"children":4876},{"style":3638},[4877],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":4879,"children":4880},{"style":3638},[4881],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":4883,"children":4884},{"style":3638},[4885],{"type":3108,"value":3700},{"type":3103,"tag":3473,"props":4887,"children":4888},{"class":3475,"line":3067},[4889,4893,4897,4901,4905,4909,4914,4918],{"type":3103,"tag":3473,"props":4890,"children":4891},{"style":3638},[4892],{"type":3108,"value":4740},{"type":3103,"tag":3473,"props":4894,"children":4895},{"style":3647},[4896],{"type":3108,"value":4745},{"type":3103,"tag":3473,"props":4898,"children":4899},{"style":3638},[4900],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":4902,"children":4903},{"style":3638},[4904],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":4906,"children":4907},{"style":3638},[4908],{"type":3108,"value":4181},{"type":3103,"tag":3473,"props":4910,"children":4911},{"style":3494},[4912],{"type":3108,"value":4913},"redis",{"type":3103,"tag":3473,"props":4915,"children":4916},{"style":3638},[4917],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":4919,"children":4920},{"style":3638},[4921],{"type":3108,"value":3683},{"type":3103,"tag":3473,"props":4923,"children":4924},{"class":3475,"line":3539},[4925,4929,4934,4938,4942,4946,4951,4955],{"type":3103,"tag":3473,"props":4926,"children":4927},{"style":3638},[4928],{"type":3108,"value":4740},{"type":3103,"tag":3473,"props":4930,"children":4931},{"style":3647},[4932],{"type":3108,"value":4933},"host",{"type":3103,"tag":3473,"props":4935,"children":4936},{"style":3638},[4937],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":4939,"children":4940},{"style":3638},[4941],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":4943,"children":4944},{"style":3638},[4945],{"type":3108,"value":4181},{"type":3103,"tag":3473,"props":4947,"children":4948},{"style":3494},[4949],{"type":3108,"value":4950},"localhost",{"type":3103,"tag":3473,"props":4952,"children":4953},{"style":3638},[4954],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":4956,"children":4957},{"style":3638},[4958],{"type":3108,"value":3683},{"type":3103,"tag":3473,"props":4960,"children":4961},{"class":3475,"line":3547},[4962,4966,4971,4975,4979],{"type":3103,"tag":3473,"props":4963,"children":4964},{"style":3638},[4965],{"type":3108,"value":4740},{"type":3103,"tag":3473,"props":4967,"children":4968},{"style":3647},[4969],{"type":3108,"value":4970},"port",{"type":3103,"tag":3473,"props":4972,"children":4973},{"style":3638},[4974],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":4976,"children":4977},{"style":3638},[4978],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":4980,"children":4981},{"style":3913},[4982],{"type":3108,"value":4983}," 6379\n",{"type":3103,"tag":3473,"props":4985,"children":4986},{"class":3475,"line":3092},[4987],{"type":3103,"tag":3473,"props":4988,"children":4989},{"style":3638},[4990],{"type":3108,"value":4775},{"type":3103,"tag":3473,"props":4992,"children":4993},{"class":3475,"line":3743},[4994],{"type":3103,"tag":3473,"props":4995,"children":4996},{"style":3638},[4997],{"type":3108,"value":4783},{"type":3103,"tag":3473,"props":4999,"children":5000},{"class":3475,"line":3752},[5001],{"type":3103,"tag":3473,"props":5002,"children":5003},{"style":3638},[5004],{"type":3108,"value":4446},{"type":3103,"tag":3473,"props":5006,"children":5007},{"class":3475,"line":3761},[5008],{"type":3103,"tag":3473,"props":5009,"children":5010},{"style":3638},[5011],{"type":3108,"value":4454},{"type":3103,"tag":3449,"props":5013,"children":5015},{"id":5014},"_4-schedule-bundled-cleanup-tasks-in-nuxtconfigts",[5016,5018],{"type":3108,"value":5017},"4. Schedule bundled cleanup tasks in ",{"type":3103,"tag":3260,"props":5019,"children":5021},{"className":5020},[],[5022],{"type":3108,"value":233},{"type":3103,"tag":3110,"props":5024,"children":5025},{},[5026,5028,5033,5035,5041,5043,5048,5050,5056,5058,5064,5066,5072,5074,5079,5081,5087],{"type":3108,"value":5027},"The module registers two Nitro tasks for you: ",{"type":3103,"tag":3260,"props":5029,"children":5031},{"className":5030},[],[5032],{"type":3108,"value":3357},{"type":3108,"value":5034}," (removes expired ",{"type":3103,"tag":3260,"props":5036,"children":5038},{"className":5037},[],[5039],{"type":3108,"value":5040},"ban:*",{"type":3108,"value":5042}," keys) and ",{"type":3103,"tag":3260,"props":5044,"children":5046},{"className":5045},[],[5047],{"type":3108,"value":3365},{"type":3108,"value":5049}," (removes stale ",{"type":3103,"tag":3260,"props":5051,"children":5053},{"className":5052},[],[5054],{"type":3108,"value":5055},"ip:*",{"type":3108,"value":5057}," keys using ",{"type":3103,"tag":3260,"props":5059,"children":5061},{"className":5060},[],[5062],{"type":3108,"value":5063},"ipTTL",{"type":3108,"value":5065},"). Turn on Nitro tasks and add ",{"type":3103,"tag":3260,"props":5067,"children":5069},{"className":5068},[],[5070],{"type":3108,"value":5071},"scheduledTasks",{"type":3108,"value":5073}," so they run on a cadence you choose. You do ",{"type":3103,"tag":3198,"props":5075,"children":5076},{},[5077],{"type":3108,"value":5078},"not",{"type":3108,"value":5080}," need files under ",{"type":3103,"tag":3260,"props":5082,"children":5084},{"className":5083},[],[5085],{"type":3108,"value":5086},"server\u002Ftasks\u002F",{"type":3108,"value":5088}," for this default setup.",{"type":3103,"tag":3463,"props":5090,"children":5092},{"className":4636,"code":5091,"language":4638,"meta":3047,"style":3047},"{\n  \"nitro\": {\n    \"experimental\": {\n      \"tasks\": true\n    },\n    \"scheduledTasks\": {\n      \"*\u002F15 * * * *\": [\"shield:cleanBans\"],\n      \"0 0 * * *\": [\"shield:cleanIpData\"]\n    }\n  }\n}\n",[5093],{"type":3103,"tag":3260,"props":5094,"children":5095},{"__ignoreMap":3047},[5096,5103,5126,5150,5175,5182,5205,5246,5287,5294,5301],{"type":3103,"tag":3473,"props":5097,"children":5098},{"class":3475,"line":3075},[5099],{"type":3103,"tag":3473,"props":5100,"children":5101},{"style":3638},[5102],{"type":3108,"value":3641},{"type":3103,"tag":3473,"props":5104,"children":5105},{"class":3475,"line":3071},[5106,5110,5114,5118,5122],{"type":3103,"tag":3473,"props":5107,"children":5108},{"style":3638},[5109],{"type":3108,"value":4657},{"type":3103,"tag":3473,"props":5111,"children":5112},{"style":4660},[5113],{"type":3108,"value":4663},{"type":3103,"tag":3473,"props":5115,"children":5116},{"style":3638},[5117],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":5119,"children":5120},{"style":3638},[5121],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":5123,"children":5124},{"style":3638},[5125],{"type":3108,"value":3700},{"type":3103,"tag":3473,"props":5127,"children":5128},{"class":3475,"line":3505},[5129,5133,5138,5142,5146],{"type":3103,"tag":3473,"props":5130,"children":5131},{"style":3638},[5132],{"type":3108,"value":4683},{"type":3103,"tag":3473,"props":5134,"children":5135},{"style":3488},[5136],{"type":3108,"value":5137},"experimental",{"type":3103,"tag":3473,"props":5139,"children":5140},{"style":3638},[5141],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":5143,"children":5144},{"style":3638},[5145],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":5147,"children":5148},{"style":3638},[5149],{"type":3108,"value":3700},{"type":3103,"tag":3473,"props":5151,"children":5152},{"class":3475,"line":3514},[5153,5157,5162,5166,5170],{"type":3103,"tag":3473,"props":5154,"children":5155},{"style":3638},[5156],{"type":3108,"value":4708},{"type":3103,"tag":3473,"props":5158,"children":5159},{"style":3913},[5160],{"type":3108,"value":5161},"tasks",{"type":3103,"tag":3473,"props":5163,"children":5164},{"style":3638},[5165],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":5167,"children":5168},{"style":3638},[5169],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":5171,"children":5172},{"style":3638},[5173],{"type":3108,"value":5174}," true\n",{"type":3103,"tag":3473,"props":5176,"children":5177},{"class":3475,"line":3067},[5178],{"type":3103,"tag":3473,"props":5179,"children":5180},{"style":3638},[5181],{"type":3108,"value":3749},{"type":3103,"tag":3473,"props":5183,"children":5184},{"class":3475,"line":3539},[5185,5189,5193,5197,5201],{"type":3103,"tag":3473,"props":5186,"children":5187},{"style":3638},[5188],{"type":3108,"value":4683},{"type":3103,"tag":3473,"props":5190,"children":5191},{"style":3488},[5192],{"type":3108,"value":5071},{"type":3103,"tag":3473,"props":5194,"children":5195},{"style":3638},[5196],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":5198,"children":5199},{"style":3638},[5200],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":5202,"children":5203},{"style":3638},[5204],{"type":3108,"value":3700},{"type":3103,"tag":3473,"props":5206,"children":5207},{"class":3475,"line":3547},[5208,5212,5217,5221,5225,5229,5233,5237,5241],{"type":3103,"tag":3473,"props":5209,"children":5210},{"style":3638},[5211],{"type":3108,"value":4708},{"type":3103,"tag":3473,"props":5213,"children":5214},{"style":3913},[5215],{"type":3108,"value":5216},"*\u002F15 * * * *",{"type":3103,"tag":3473,"props":5218,"children":5219},{"style":3638},[5220],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":5222,"children":5223},{"style":3638},[5224],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":5226,"children":5227},{"style":3638},[5228],{"type":3108,"value":3660},{"type":3103,"tag":3473,"props":5230,"children":5231},{"style":3638},[5232],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":5234,"children":5235},{"style":3494},[5236],{"type":3108,"value":3357},{"type":3103,"tag":3473,"props":5238,"children":5239},{"style":3638},[5240],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":5242,"children":5243},{"style":3638},[5244],{"type":3108,"value":5245},"],\n",{"type":3103,"tag":3473,"props":5247,"children":5248},{"class":3475,"line":3092},[5249,5253,5258,5262,5266,5270,5274,5278,5282],{"type":3103,"tag":3473,"props":5250,"children":5251},{"style":3638},[5252],{"type":3108,"value":4708},{"type":3103,"tag":3473,"props":5254,"children":5255},{"style":3913},[5256],{"type":3108,"value":5257},"0 0 * * *",{"type":3103,"tag":3473,"props":5259,"children":5260},{"style":3638},[5261],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":5263,"children":5264},{"style":3638},[5265],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":5267,"children":5268},{"style":3638},[5269],{"type":3108,"value":3660},{"type":3103,"tag":3473,"props":5271,"children":5272},{"style":3638},[5273],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":5275,"children":5276},{"style":3494},[5277],{"type":3108,"value":3365},{"type":3103,"tag":3473,"props":5279,"children":5280},{"style":3638},[5281],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":5283,"children":5284},{"style":3638},[5285],{"type":3108,"value":5286},"]\n",{"type":3103,"tag":3473,"props":5288,"children":5289},{"class":3475,"line":3743},[5290],{"type":3103,"tag":3473,"props":5291,"children":5292},{"style":3638},[5293],{"type":3108,"value":4783},{"type":3103,"tag":3473,"props":5295,"children":5296},{"class":3475,"line":3752},[5297],{"type":3103,"tag":3473,"props":5298,"children":5299},{"style":3638},[5300],{"type":3108,"value":4446},{"type":3103,"tag":3473,"props":5302,"children":5303},{"class":3475,"line":3761},[5304],{"type":3103,"tag":3473,"props":5305,"children":5306},{"style":3638},[5307],{"type":3108,"value":4454},{"type":3103,"tag":3110,"props":5309,"children":5310},{},[5311],{"type":3108,"value":5312},"Cron expressions are examples only: for instance, clean expired bans every 15 minutes and IP tracking data daily at midnight.",{"type":3103,"tag":3449,"props":5314,"children":5316},{"id":5315},"_5-optional-custom-cleanup-task-implementations",[5317],{"type":3108,"value":5318},"5. Optional: custom cleanup task implementations",{"type":3103,"tag":3110,"props":5320,"children":5321},{},[5322,5324,5329,5331,5336],{"type":3108,"value":5323},"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":3103,"tag":3198,"props":5325,"children":5326},{},[5327],{"type":3108,"value":5328},"another",{"type":3108,"value":5330}," task name and point ",{"type":3103,"tag":3260,"props":5332,"children":5334},{"className":5333},[],[5335],{"type":3108,"value":5071},{"type":3108,"value":5337}," at that name instead.",{"type":3103,"tag":5339,"props":5340,"children":5342},"h4",{"id":5341},"a-task-for-cleaning-expired-bans",[5343],{"type":3108,"value":5344},"a) Task for cleaning expired bans",{"type":3103,"tag":3110,"props":5346,"children":5347},{},[5348,5350,5356],{"type":3108,"value":5349},"Removes ban entries (",{"type":3103,"tag":3260,"props":5351,"children":5353},{"className":5352},[],[5354],{"type":3108,"value":5355},"ban:xxx.xxx.xxx.xxx",{"type":3108,"value":5357},") after the ban timestamp has passed.",{"type":3103,"tag":3110,"props":5359,"children":5360},{},[5361,5363,5369],{"type":3108,"value":5362},"Example ",{"type":3103,"tag":3260,"props":5364,"children":5366},{"className":5365},[],[5367],{"type":3108,"value":5368},"server\u002Ftasks\u002Fshield\u002FcleanBans.ts",{"type":3108,"value":5370}," (task name must match what you schedule):",{"type":3103,"tag":3463,"props":5372,"children":5376},{"className":5373,"code":5374,"language":5375,"meta":3047,"style":3047},"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",[5377],{"type":3103,"tag":3260,"props":5378,"children":5379},{"__ignoreMap":3047},[5380,5431,5438,5462,5478,5511,5540,5547,5569,5621,5628,5636,5695,5702,5727,5768,5819,5854,5891,5904,5911,5918,5980,6018,6025],{"type":3103,"tag":3473,"props":5381,"children":5382},{"class":3475,"line":3075},[5383,5388,5393,5398,5403,5408,5412,5417,5421,5426],{"type":3103,"tag":3473,"props":5384,"children":5385},{"style":3615},[5386],{"type":3108,"value":5387},"import",{"type":3103,"tag":3473,"props":5389,"children":5390},{"style":3638},[5391],{"type":3108,"value":5392}," {",{"type":3103,"tag":3473,"props":5394,"children":5395},{"style":3632},[5396],{"type":3108,"value":5397}," isActualBanTimestampExpired",{"type":3103,"tag":3473,"props":5399,"children":5400},{"style":3638},[5401],{"type":3108,"value":5402}," }",{"type":3103,"tag":3473,"props":5404,"children":5405},{"style":3615},[5406],{"type":3108,"value":5407}," from",{"type":3103,"tag":3473,"props":5409,"children":5410},{"style":3638},[5411],{"type":3108,"value":4181},{"type":3103,"tag":3473,"props":5413,"children":5414},{"style":3494},[5415],{"type":3108,"value":5416},"#imports",{"type":3103,"tag":3473,"props":5418,"children":5419},{"style":3638},[5420],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":5422,"children":5423},{"style":3638},[5424],{"type":3108,"value":5425},";",{"type":3103,"tag":3473,"props":5427,"children":5428},{"style":3479},[5429],{"type":3108,"value":5430}," \u002F\u002F Auto-imported utility from nuxt-api-shield\n",{"type":3103,"tag":3473,"props":5432,"children":5433},{"class":3475,"line":3071},[5434],{"type":3103,"tag":3473,"props":5435,"children":5436},{"emptyLinePlaceholder":1200},[5437],{"type":3108,"value":3511},{"type":3103,"tag":3473,"props":5439,"children":5440},{"class":3475,"line":3505},[5441,5445,5449,5454,5458],{"type":3103,"tag":3473,"props":5442,"children":5443},{"style":3615},[5444],{"type":3108,"value":3618},{"type":3103,"tag":3473,"props":5446,"children":5447},{"style":3615},[5448],{"type":3108,"value":3623},{"type":3103,"tag":3473,"props":5450,"children":5451},{"style":3626},[5452],{"type":3108,"value":5453}," defineTask",{"type":3103,"tag":3473,"props":5455,"children":5456},{"style":3632},[5457],{"type":3108,"value":3635},{"type":3103,"tag":3473,"props":5459,"children":5460},{"style":3638},[5461],{"type":3108,"value":3641},{"type":3103,"tag":3473,"props":5463,"children":5464},{"class":3475,"line":3514},[5465,5470,5474],{"type":3103,"tag":3473,"props":5466,"children":5467},{"style":3647},[5468],{"type":3108,"value":5469},"  meta",{"type":3103,"tag":3473,"props":5471,"children":5472},{"style":3638},[5473],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":5475,"children":5476},{"style":3638},[5477],{"type":3108,"value":3700},{"type":3103,"tag":3473,"props":5479,"children":5480},{"class":3475,"line":3067},[5481,5486,5490,5494,5498,5502,5506],{"type":3103,"tag":3473,"props":5482,"children":5483},{"style":3647},[5484],{"type":3108,"value":5485},"    name",{"type":3103,"tag":3473,"props":5487,"children":5488},{"style":3638},[5489],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":5491,"children":5492},{"style":3638},[5493],{"type":3108,"value":4181},{"type":3103,"tag":3473,"props":5495,"children":5496},{"style":3494},[5497],{"type":3108,"value":3357},{"type":3103,"tag":3473,"props":5499,"children":5500},{"style":3638},[5501],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":5503,"children":5504},{"style":3638},[5505],{"type":3108,"value":3875},{"type":3103,"tag":3473,"props":5507,"children":5508},{"style":3479},[5509],{"type":3108,"value":5510}," \u002F\u002F Match the name in scheduledTasks\n",{"type":3103,"tag":3473,"props":5512,"children":5513},{"class":3475,"line":3539},[5514,5519,5523,5527,5532,5536],{"type":3103,"tag":3473,"props":5515,"children":5516},{"style":3647},[5517],{"type":3108,"value":5518},"    description",{"type":3103,"tag":3473,"props":5520,"children":5521},{"style":3638},[5522],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":5524,"children":5525},{"style":3638},[5526],{"type":3108,"value":4181},{"type":3103,"tag":3473,"props":5528,"children":5529},{"style":3494},[5530],{"type":3108,"value":5531},"Clean expired bans from nuxt-api-shield storage.",{"type":3103,"tag":3473,"props":5533,"children":5534},{"style":3638},[5535],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":5537,"children":5538},{"style":3638},[5539],{"type":3108,"value":3683},{"type":3103,"tag":3473,"props":5541,"children":5542},{"class":3475,"line":3547},[5543],{"type":3103,"tag":3473,"props":5544,"children":5545},{"style":3638},[5546],{"type":3108,"value":3996},{"type":3103,"tag":3473,"props":5548,"children":5549},{"class":3475,"line":3092},[5550,5555,5560,5565],{"type":3103,"tag":3473,"props":5551,"children":5552},{"style":4660},[5553],{"type":3108,"value":5554},"  async",{"type":3103,"tag":3473,"props":5556,"children":5557},{"style":3647},[5558],{"type":3108,"value":5559}," run",{"type":3103,"tag":3473,"props":5561,"children":5562},{"style":3638},[5563],{"type":3108,"value":5564},"()",{"type":3103,"tag":3473,"props":5566,"children":5567},{"style":3638},[5568],{"type":3108,"value":3700},{"type":3103,"tag":3473,"props":5570,"children":5571},{"class":3475,"line":3743},[5572,5577,5582,5587,5592,5596,5600,5604,5608,5612,5616],{"type":3103,"tag":3473,"props":5573,"children":5574},{"style":4660},[5575],{"type":3108,"value":5576},"    const",{"type":3103,"tag":3473,"props":5578,"children":5579},{"style":3632},[5580],{"type":3108,"value":5581}," shieldStorage",{"type":3103,"tag":3473,"props":5583,"children":5584},{"style":3638},[5585],{"type":3108,"value":5586}," =",{"type":3103,"tag":3473,"props":5588,"children":5589},{"style":3626},[5590],{"type":3108,"value":5591}," useStorage",{"type":3103,"tag":3473,"props":5593,"children":5594},{"style":3647},[5595],{"type":3108,"value":3635},{"type":3103,"tag":3473,"props":5597,"children":5598},{"style":3638},[5599],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":5601,"children":5602},{"style":3494},[5603],{"type":3108,"value":4631},{"type":3103,"tag":3473,"props":5605,"children":5606},{"style":3638},[5607],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":5609,"children":5610},{"style":3647},[5611],{"type":3108,"value":4010},{"type":3103,"tag":3473,"props":5613,"children":5614},{"style":3638},[5615],{"type":3108,"value":5425},{"type":3103,"tag":3473,"props":5617,"children":5618},{"style":3479},[5619],{"type":3108,"value":5620}," \u002F\u002F Use your configured storage name\n",{"type":3103,"tag":3473,"props":5622,"children":5623},{"class":3475,"line":3752},[5624],{"type":3103,"tag":3473,"props":5625,"children":5626},{"emptyLinePlaceholder":1200},[5627],{"type":3108,"value":3511},{"type":3103,"tag":3473,"props":5629,"children":5630},{"class":3475,"line":3761},[5631],{"type":3103,"tag":3473,"props":5632,"children":5633},{"style":3479},[5634],{"type":3108,"value":5635},"    \u002F\u002F Only fetch keys that start with the 'ban:' prefix\n",{"type":3103,"tag":3473,"props":5637,"children":5638},{"class":3475,"line":3770},[5639,5643,5648,5652,5657,5661,5665,5670,5674,5678,5683,5687,5691],{"type":3103,"tag":3473,"props":5640,"children":5641},{"style":4660},[5642],{"type":3108,"value":5576},{"type":3103,"tag":3473,"props":5644,"children":5645},{"style":3632},[5646],{"type":3108,"value":5647}," banKeys",{"type":3103,"tag":3473,"props":5649,"children":5650},{"style":3638},[5651],{"type":3108,"value":5586},{"type":3103,"tag":3473,"props":5653,"children":5654},{"style":3615},[5655],{"type":3108,"value":5656}," await",{"type":3103,"tag":3473,"props":5658,"children":5659},{"style":3632},[5660],{"type":3108,"value":5581},{"type":3103,"tag":3473,"props":5662,"children":5663},{"style":3638},[5664],{"type":3108,"value":4602},{"type":3103,"tag":3473,"props":5666,"children":5667},{"style":3626},[5668],{"type":3108,"value":5669},"getKeys",{"type":3103,"tag":3473,"props":5671,"children":5672},{"style":3647},[5673],{"type":3108,"value":3635},{"type":3103,"tag":3473,"props":5675,"children":5676},{"style":3638},[5677],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":5679,"children":5680},{"style":3494},[5681],{"type":3108,"value":5682},"ban:",{"type":3103,"tag":3473,"props":5684,"children":5685},{"style":3638},[5686],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":5688,"children":5689},{"style":3647},[5690],{"type":3108,"value":4010},{"type":3103,"tag":3473,"props":5692,"children":5693},{"style":3638},[5694],{"type":3108,"value":4015},{"type":3103,"tag":3473,"props":5696,"children":5697},{"class":3475,"line":3779},[5698],{"type":3103,"tag":3473,"props":5699,"children":5700},{"emptyLinePlaceholder":1200},[5701],{"type":3108,"value":3511},{"type":3103,"tag":3473,"props":5703,"children":5704},{"class":3475,"line":3788},[5705,5710,5715,5719,5723],{"type":3103,"tag":3473,"props":5706,"children":5707},{"style":4660},[5708],{"type":3108,"value":5709},"    let",{"type":3103,"tag":3473,"props":5711,"children":5712},{"style":3632},[5713],{"type":3108,"value":5714}," cleanedCount",{"type":3103,"tag":3473,"props":5716,"children":5717},{"style":3638},[5718],{"type":3108,"value":5586},{"type":3103,"tag":3473,"props":5720,"children":5721},{"style":3913},[5722],{"type":3108,"value":4273},{"type":3103,"tag":3473,"props":5724,"children":5725},{"style":3638},[5726],{"type":3108,"value":4015},{"type":3103,"tag":3473,"props":5728,"children":5729},{"class":3475,"line":3797},[5730,5735,5740,5745,5750,5755,5759,5764],{"type":3103,"tag":3473,"props":5731,"children":5732},{"style":3615},[5733],{"type":3108,"value":5734},"    for",{"type":3103,"tag":3473,"props":5736,"children":5737},{"style":3647},[5738],{"type":3108,"value":5739}," (",{"type":3103,"tag":3473,"props":5741,"children":5742},{"style":4660},[5743],{"type":3108,"value":5744},"const",{"type":3103,"tag":3473,"props":5746,"children":5747},{"style":3632},[5748],{"type":3108,"value":5749}," key",{"type":3103,"tag":3473,"props":5751,"children":5752},{"style":3638},[5753],{"type":3108,"value":5754}," of",{"type":3103,"tag":3473,"props":5756,"children":5757},{"style":3632},[5758],{"type":3108,"value":5647},{"type":3103,"tag":3473,"props":5760,"children":5761},{"style":3647},[5762],{"type":3108,"value":5763},") ",{"type":3103,"tag":3473,"props":5765,"children":5766},{"style":3638},[5767],{"type":3108,"value":3641},{"type":3103,"tag":3473,"props":5769,"children":5770},{"class":3475,"line":3806},[5771,5776,5781,5785,5789,5793,5797,5802,5806,5811,5815],{"type":3103,"tag":3473,"props":5772,"children":5773},{"style":4660},[5774],{"type":3108,"value":5775},"      const",{"type":3103,"tag":3473,"props":5777,"children":5778},{"style":3632},[5779],{"type":3108,"value":5780}," bannedUntilRaw",{"type":3103,"tag":3473,"props":5782,"children":5783},{"style":3638},[5784],{"type":3108,"value":5586},{"type":3103,"tag":3473,"props":5786,"children":5787},{"style":3615},[5788],{"type":3108,"value":5656},{"type":3103,"tag":3473,"props":5790,"children":5791},{"style":3632},[5792],{"type":3108,"value":5581},{"type":3103,"tag":3473,"props":5794,"children":5795},{"style":3638},[5796],{"type":3108,"value":4602},{"type":3103,"tag":3473,"props":5798,"children":5799},{"style":3626},[5800],{"type":3108,"value":5801},"getItem",{"type":3103,"tag":3473,"props":5803,"children":5804},{"style":3647},[5805],{"type":3108,"value":3635},{"type":3103,"tag":3473,"props":5807,"children":5808},{"style":3632},[5809],{"type":3108,"value":5810},"key",{"type":3103,"tag":3473,"props":5812,"children":5813},{"style":3647},[5814],{"type":3108,"value":4010},{"type":3103,"tag":3473,"props":5816,"children":5817},{"style":3638},[5818],{"type":3108,"value":4015},{"type":3103,"tag":3473,"props":5820,"children":5821},{"class":3475,"line":3815},[5822,5827,5831,5836,5840,5845,5850],{"type":3103,"tag":3473,"props":5823,"children":5824},{"style":3615},[5825],{"type":3108,"value":5826},"      if",{"type":3103,"tag":3473,"props":5828,"children":5829},{"style":3647},[5830],{"type":3108,"value":5739},{"type":3103,"tag":3473,"props":5832,"children":5833},{"style":3626},[5834],{"type":3108,"value":5835},"isActualBanTimestampExpired",{"type":3103,"tag":3473,"props":5837,"children":5838},{"style":3647},[5839],{"type":3108,"value":3635},{"type":3103,"tag":3473,"props":5841,"children":5842},{"style":3632},[5843],{"type":3108,"value":5844},"bannedUntilRaw",{"type":3103,"tag":3473,"props":5846,"children":5847},{"style":3647},[5848],{"type":3108,"value":5849},")) ",{"type":3103,"tag":3473,"props":5851,"children":5852},{"style":3638},[5853],{"type":3108,"value":3641},{"type":3103,"tag":3473,"props":5855,"children":5856},{"class":3475,"line":3823},[5857,5862,5866,5870,5875,5879,5883,5887],{"type":3103,"tag":3473,"props":5858,"children":5859},{"style":3615},[5860],{"type":3108,"value":5861},"        await",{"type":3103,"tag":3473,"props":5863,"children":5864},{"style":3632},[5865],{"type":3108,"value":5581},{"type":3103,"tag":3473,"props":5867,"children":5868},{"style":3638},[5869],{"type":3108,"value":4602},{"type":3103,"tag":3473,"props":5871,"children":5872},{"style":3626},[5873],{"type":3108,"value":5874},"removeItem",{"type":3103,"tag":3473,"props":5876,"children":5877},{"style":3647},[5878],{"type":3108,"value":3635},{"type":3103,"tag":3473,"props":5880,"children":5881},{"style":3632},[5882],{"type":3108,"value":5810},{"type":3103,"tag":3473,"props":5884,"children":5885},{"style":3647},[5886],{"type":3108,"value":4010},{"type":3103,"tag":3473,"props":5888,"children":5889},{"style":3638},[5890],{"type":3108,"value":4015},{"type":3103,"tag":3473,"props":5892,"children":5893},{"class":3475,"line":3832},[5894,5899],{"type":3103,"tag":3473,"props":5895,"children":5896},{"style":3632},[5897],{"type":3108,"value":5898},"        cleanedCount",{"type":3103,"tag":3473,"props":5900,"children":5901},{"style":3638},[5902],{"type":3108,"value":5903},"++;\n",{"type":3103,"tag":3473,"props":5905,"children":5906},{"class":3475,"line":3841},[5907],{"type":3103,"tag":3473,"props":5908,"children":5909},{"style":3638},[5910],{"type":3108,"value":4775},{"type":3103,"tag":3473,"props":5912,"children":5913},{"class":3475,"line":3855},[5914],{"type":3103,"tag":3473,"props":5915,"children":5916},{"style":3638},[5917],{"type":3108,"value":4783},{"type":3103,"tag":3473,"props":5919,"children":5920},{"class":3475,"line":3883},[5921,5926,5930,5935,5939,5944,5949,5954,5959,5963,5968,5972,5976],{"type":3103,"tag":3473,"props":5922,"children":5923},{"style":3632},[5924],{"type":3108,"value":5925},"    console",{"type":3103,"tag":3473,"props":5927,"children":5928},{"style":3638},[5929],{"type":3108,"value":4602},{"type":3103,"tag":3473,"props":5931,"children":5932},{"style":3626},[5933],{"type":3108,"value":5934},"log",{"type":3103,"tag":3473,"props":5936,"children":5937},{"style":3647},[5938],{"type":3108,"value":3635},{"type":3103,"tag":3473,"props":5940,"children":5941},{"style":3638},[5942],{"type":3108,"value":5943},"`",{"type":3103,"tag":3473,"props":5945,"children":5946},{"style":3494},[5947],{"type":3108,"value":5948},"[nuxt-api-shield] Cleaned ",{"type":3103,"tag":3473,"props":5950,"children":5951},{"style":3638},[5952],{"type":3108,"value":5953},"${",{"type":3103,"tag":3473,"props":5955,"children":5956},{"style":3632},[5957],{"type":3108,"value":5958},"cleanedCount",{"type":3103,"tag":3473,"props":5960,"children":5961},{"style":3638},[5962],{"type":3108,"value":4005},{"type":3103,"tag":3473,"props":5964,"children":5965},{"style":3494},[5966],{"type":3108,"value":5967}," expired ban(s).",{"type":3103,"tag":3473,"props":5969,"children":5970},{"style":3638},[5971],{"type":3108,"value":5943},{"type":3103,"tag":3473,"props":5973,"children":5974},{"style":3647},[5975],{"type":3108,"value":4010},{"type":3103,"tag":3473,"props":5977,"children":5978},{"style":3638},[5979],{"type":3108,"value":4015},{"type":3103,"tag":3473,"props":5981,"children":5982},{"class":3475,"line":3891},[5983,5988,5992,5997,6001,6005,6009,6013],{"type":3103,"tag":3473,"props":5984,"children":5985},{"style":3615},[5986],{"type":3108,"value":5987},"    return",{"type":3103,"tag":3473,"props":5989,"children":5990},{"style":3638},[5991],{"type":3108,"value":5392},{"type":3103,"tag":3473,"props":5993,"children":5994},{"style":3647},[5995],{"type":3108,"value":5996}," result",{"type":3103,"tag":3473,"props":5998,"children":5999},{"style":3638},[6000],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":6002,"children":6003},{"style":3638},[6004],{"type":3108,"value":5392},{"type":3103,"tag":3473,"props":6006,"children":6007},{"style":3632},[6008],{"type":3108,"value":5714},{"type":3103,"tag":3473,"props":6010,"children":6011},{"style":3638},[6012],{"type":3108,"value":5402},{"type":3103,"tag":3473,"props":6014,"children":6015},{"style":3638},[6016],{"type":3108,"value":6017}," };\n",{"type":3103,"tag":3473,"props":6019,"children":6020},{"class":3475,"line":3900},[6021],{"type":3103,"tag":3473,"props":6022,"children":6023},{"style":3638},[6024],{"type":3108,"value":3996},{"type":3103,"tag":3473,"props":6026,"children":6027},{"class":3475,"line":3928},[6028,6032,6036],{"type":3103,"tag":3473,"props":6029,"children":6030},{"style":3638},[6031],{"type":3108,"value":4005},{"type":3103,"tag":3473,"props":6033,"children":6034},{"style":3632},[6035],{"type":3108,"value":4010},{"type":3103,"tag":3473,"props":6037,"children":6038},{"style":3638},[6039],{"type":3108,"value":4015},{"type":3103,"tag":3110,"props":6041,"children":6042},{},[6043,6044,6049,6051,6056,6058,6063],{"type":3108,"value":4473},{"type":3103,"tag":3260,"props":6045,"children":6047},{"className":6046},[],[6048],{"type":3108,"value":5835},{"type":3108,"value":6050}," utility is provided by ",{"type":3103,"tag":3260,"props":6052,"children":6054},{"className":6053},[],[6055],{"type":3108,"value":3044},{"type":3108,"value":6057}," and should be available via ",{"type":3103,"tag":3260,"props":6059,"children":6061},{"className":6060},[],[6062],{"type":3108,"value":5416},{"type":3108,"value":4602},{"type":3103,"tag":5339,"props":6065,"children":6067},{"id":6066},"b-task-for-cleaning-old-ip-tracking-data",[6068],{"type":3108,"value":6069},"b) Task for cleaning old IP tracking data",{"type":3103,"tag":3110,"props":6071,"children":6072},{},[6073,6075,6081,6083,6089,6091,6097],{"type":3108,"value":6074},"Cleans IP tracking entries (",{"type":3103,"tag":3260,"props":6076,"children":6078},{"className":6077},[],[6079],{"type":3108,"value":6080},"ip:xxx.xxx.xxx.xxx",{"type":3108,"value":6082},") whose ",{"type":3103,"tag":3260,"props":6084,"children":6086},{"className":6085},[],[6087],{"type":3108,"value":6088},"time",{"type":3108,"value":6090}," is older than ",{"type":3103,"tag":3260,"props":6092,"children":6094},{"className":6093},[],[6095],{"type":3108,"value":6096},"nuxtApiShield.ipTTL",{"type":3108,"value":6098}," (default 7 days), and drops malformed entries. That keeps storage from growing with one-off IPs that were never banned.",{"type":3103,"tag":3110,"props":6100,"children":6101},{},[6102,6103,6109],{"type":3108,"value":5362},{"type":3103,"tag":3260,"props":6104,"children":6106},{"className":6105},[],[6107],{"type":3108,"value":6108},"server\u002Ftasks\u002Fshield\u002FcleanIpData.ts",{"type":3108,"value":3655},{"type":3103,"tag":3463,"props":6111,"children":6113},{"className":5373,"code":6112,"language":5375,"meta":3047,"style":3047},"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",[6114],{"type":3103,"tag":3260,"props":6115,"children":6116},{"__ignoreMap":3047},[6117,6162,6202,6209,6232,6247,6278,6306,6313,6332,6375,6419,6426,6434,6466,6473,6521,6542,6558,6570,6637,6644,6677,6684,6741,6779,6802,6809,6844,6916,6923,6932,6997,7049,7086,7099,7108,7126,7135,7171,7183,7191,7199,7207,7227,7262,7275,7311,7319],{"type":3103,"tag":3473,"props":6118,"children":6119},{"class":3475,"line":3075},[6120,6124,6129,6133,6138,6142,6146,6150,6154,6158],{"type":3103,"tag":3473,"props":6121,"children":6122},{"style":3615},[6123],{"type":3108,"value":5387},{"type":3103,"tag":3473,"props":6125,"children":6126},{"style":3615},[6127],{"type":3108,"value":6128}," type",{"type":3103,"tag":3473,"props":6130,"children":6131},{"style":3638},[6132],{"type":3108,"value":5392},{"type":3103,"tag":3473,"props":6134,"children":6135},{"style":3632},[6136],{"type":3108,"value":6137}," RateLimit",{"type":3103,"tag":3473,"props":6139,"children":6140},{"style":3638},[6141],{"type":3108,"value":5402},{"type":3103,"tag":3473,"props":6143,"children":6144},{"style":3615},[6145],{"type":3108,"value":5407},{"type":3103,"tag":3473,"props":6147,"children":6148},{"style":3638},[6149],{"type":3108,"value":4181},{"type":3103,"tag":3473,"props":6151,"children":6152},{"style":3494},[6153],{"type":3108,"value":3044},{"type":3103,"tag":3473,"props":6155,"children":6156},{"style":3638},[6157],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":6159,"children":6160},{"style":3638},[6161],{"type":3108,"value":4015},{"type":3103,"tag":3473,"props":6163,"children":6164},{"class":3475,"line":3071},[6165,6169,6173,6178,6182,6186,6190,6194,6198],{"type":3103,"tag":3473,"props":6166,"children":6167},{"style":3615},[6168],{"type":3108,"value":5387},{"type":3103,"tag":3473,"props":6170,"children":6171},{"style":3638},[6172],{"type":3108,"value":5392},{"type":3103,"tag":3473,"props":6174,"children":6175},{"style":3632},[6176],{"type":3108,"value":6177}," useRuntimeConfig",{"type":3103,"tag":3473,"props":6179,"children":6180},{"style":3638},[6181],{"type":3108,"value":5402},{"type":3103,"tag":3473,"props":6183,"children":6184},{"style":3615},[6185],{"type":3108,"value":5407},{"type":3103,"tag":3473,"props":6187,"children":6188},{"style":3638},[6189],{"type":3108,"value":4181},{"type":3103,"tag":3473,"props":6191,"children":6192},{"style":3494},[6193],{"type":3108,"value":5416},{"type":3103,"tag":3473,"props":6195,"children":6196},{"style":3638},[6197],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":6199,"children":6200},{"style":3638},[6201],{"type":3108,"value":4015},{"type":3103,"tag":3473,"props":6203,"children":6204},{"class":3475,"line":3505},[6205],{"type":3103,"tag":3473,"props":6206,"children":6207},{"emptyLinePlaceholder":1200},[6208],{"type":3108,"value":3511},{"type":3103,"tag":3473,"props":6210,"children":6211},{"class":3475,"line":3514},[6212,6216,6220,6224,6228],{"type":3103,"tag":3473,"props":6213,"children":6214},{"style":3615},[6215],{"type":3108,"value":3618},{"type":3103,"tag":3473,"props":6217,"children":6218},{"style":3615},[6219],{"type":3108,"value":3623},{"type":3103,"tag":3473,"props":6221,"children":6222},{"style":3626},[6223],{"type":3108,"value":5453},{"type":3103,"tag":3473,"props":6225,"children":6226},{"style":3632},[6227],{"type":3108,"value":3635},{"type":3103,"tag":3473,"props":6229,"children":6230},{"style":3638},[6231],{"type":3108,"value":3641},{"type":3103,"tag":3473,"props":6233,"children":6234},{"class":3475,"line":3067},[6235,6239,6243],{"type":3103,"tag":3473,"props":6236,"children":6237},{"style":3647},[6238],{"type":3108,"value":5469},{"type":3103,"tag":3473,"props":6240,"children":6241},{"style":3638},[6242],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":6244,"children":6245},{"style":3638},[6246],{"type":3108,"value":3700},{"type":3103,"tag":3473,"props":6248,"children":6249},{"class":3475,"line":3539},[6250,6254,6258,6262,6266,6270,6274],{"type":3103,"tag":3473,"props":6251,"children":6252},{"style":3647},[6253],{"type":3108,"value":5485},{"type":3103,"tag":3473,"props":6255,"children":6256},{"style":3638},[6257],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":6259,"children":6260},{"style":3638},[6261],{"type":3108,"value":4181},{"type":3103,"tag":3473,"props":6263,"children":6264},{"style":3494},[6265],{"type":3108,"value":3365},{"type":3103,"tag":3473,"props":6267,"children":6268},{"style":3638},[6269],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":6271,"children":6272},{"style":3638},[6273],{"type":3108,"value":3875},{"type":3103,"tag":3473,"props":6275,"children":6276},{"style":3479},[6277],{"type":3108,"value":5510},{"type":3103,"tag":3473,"props":6279,"children":6280},{"class":3475,"line":3547},[6281,6285,6289,6293,6298,6302],{"type":3103,"tag":3473,"props":6282,"children":6283},{"style":3647},[6284],{"type":3108,"value":5518},{"type":3103,"tag":3473,"props":6286,"children":6287},{"style":3638},[6288],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":6290,"children":6291},{"style":3638},[6292],{"type":3108,"value":4181},{"type":3103,"tag":3473,"props":6294,"children":6295},{"style":3494},[6296],{"type":3108,"value":6297},"Clean old IP tracking data from nuxt-api-shield storage.",{"type":3103,"tag":3473,"props":6299,"children":6300},{"style":3638},[6301],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":6303,"children":6304},{"style":3638},[6305],{"type":3108,"value":3683},{"type":3103,"tag":3473,"props":6307,"children":6308},{"class":3475,"line":3092},[6309],{"type":3103,"tag":3473,"props":6310,"children":6311},{"style":3638},[6312],{"type":3108,"value":3996},{"type":3103,"tag":3473,"props":6314,"children":6315},{"class":3475,"line":3743},[6316,6320,6324,6328],{"type":3103,"tag":3473,"props":6317,"children":6318},{"style":4660},[6319],{"type":3108,"value":5554},{"type":3103,"tag":3473,"props":6321,"children":6322},{"style":3647},[6323],{"type":3108,"value":5559},{"type":3103,"tag":3473,"props":6325,"children":6326},{"style":3638},[6327],{"type":3108,"value":5564},{"type":3103,"tag":3473,"props":6329,"children":6330},{"style":3638},[6331],{"type":3108,"value":3700},{"type":3103,"tag":3473,"props":6333,"children":6334},{"class":3475,"line":3752},[6335,6339,6343,6347,6351,6355,6359,6363,6367,6371],{"type":3103,"tag":3473,"props":6336,"children":6337},{"style":4660},[6338],{"type":3108,"value":5576},{"type":3103,"tag":3473,"props":6340,"children":6341},{"style":3632},[6342],{"type":3108,"value":5581},{"type":3103,"tag":3473,"props":6344,"children":6345},{"style":3638},[6346],{"type":3108,"value":5586},{"type":3103,"tag":3473,"props":6348,"children":6349},{"style":3626},[6350],{"type":3108,"value":5591},{"type":3103,"tag":3473,"props":6352,"children":6353},{"style":3647},[6354],{"type":3108,"value":3635},{"type":3103,"tag":3473,"props":6356,"children":6357},{"style":3638},[6358],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":6360,"children":6361},{"style":3494},[6362],{"type":3108,"value":4631},{"type":3103,"tag":3473,"props":6364,"children":6365},{"style":3638},[6366],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":6368,"children":6369},{"style":3647},[6370],{"type":3108,"value":4010},{"type":3103,"tag":3473,"props":6372,"children":6373},{"style":3638},[6374],{"type":3108,"value":4015},{"type":3103,"tag":3473,"props":6376,"children":6377},{"class":3475,"line":3761},[6378,6382,6387,6391,6395,6399,6403,6407,6411,6415],{"type":3103,"tag":3473,"props":6379,"children":6380},{"style":4660},[6381],{"type":3108,"value":5576},{"type":3103,"tag":3473,"props":6383,"children":6384},{"style":3632},[6385],{"type":3108,"value":6386}," config",{"type":3103,"tag":3473,"props":6388,"children":6389},{"style":3638},[6390],{"type":3108,"value":5586},{"type":3103,"tag":3473,"props":6392,"children":6393},{"style":3626},[6394],{"type":3108,"value":6177},{"type":3103,"tag":3473,"props":6396,"children":6397},{"style":3647},[6398],{"type":3108,"value":5564},{"type":3103,"tag":3473,"props":6400,"children":6401},{"style":3638},[6402],{"type":3108,"value":4602},{"type":3103,"tag":3473,"props":6404,"children":6405},{"style":3632},[6406],{"type":3108,"value":180},{"type":3103,"tag":3473,"props":6408,"children":6409},{"style":3638},[6410],{"type":3108,"value":4602},{"type":3103,"tag":3473,"props":6412,"children":6413},{"style":3632},[6414],{"type":3108,"value":4031},{"type":3103,"tag":3473,"props":6416,"children":6417},{"style":3638},[6418],{"type":3108,"value":4015},{"type":3103,"tag":3473,"props":6420,"children":6421},{"class":3475,"line":3770},[6422],{"type":3103,"tag":3473,"props":6423,"children":6424},{"emptyLinePlaceholder":1200},[6425],{"type":3108,"value":3511},{"type":3103,"tag":3473,"props":6427,"children":6428},{"class":3475,"line":3779},[6429],{"type":3103,"tag":3473,"props":6430,"children":6431},{"style":3479},[6432],{"type":3108,"value":6433},"    \u002F\u002F ipTTL is expected to be in seconds from config (module applies default if not set by user)\n",{"type":3103,"tag":3473,"props":6435,"children":6436},{"class":3475,"line":3788},[6437,6441,6446,6450,6454,6458,6462],{"type":3103,"tag":3473,"props":6438,"children":6439},{"style":4660},[6440],{"type":3108,"value":5576},{"type":3103,"tag":3473,"props":6442,"children":6443},{"style":3632},[6444],{"type":3108,"value":6445}," ipTTLseconds",{"type":3103,"tag":3473,"props":6447,"children":6448},{"style":3638},[6449],{"type":3108,"value":5586},{"type":3103,"tag":3473,"props":6451,"children":6452},{"style":3632},[6453],{"type":3108,"value":6386},{"type":3103,"tag":3473,"props":6455,"children":6456},{"style":3638},[6457],{"type":3108,"value":4602},{"type":3103,"tag":3473,"props":6459,"children":6460},{"style":3632},[6461],{"type":3108,"value":5063},{"type":3103,"tag":3473,"props":6463,"children":6464},{"style":3638},[6465],{"type":3108,"value":4015},{"type":3103,"tag":3473,"props":6467,"children":6468},{"class":3475,"line":3797},[6469],{"type":3103,"tag":3473,"props":6470,"children":6471},{"emptyLinePlaceholder":1200},[6472],{"type":3108,"value":3511},{"type":3103,"tag":3473,"props":6474,"children":6475},{"class":3475,"line":3806},[6476,6481,6485,6490,6495,6500,6504,6509,6513,6517],{"type":3103,"tag":3473,"props":6477,"children":6478},{"style":3615},[6479],{"type":3108,"value":6480},"    if",{"type":3103,"tag":3473,"props":6482,"children":6483},{"style":3647},[6484],{"type":3108,"value":5739},{"type":3103,"tag":3473,"props":6486,"children":6487},{"style":3638},[6488],{"type":3108,"value":6489},"!",{"type":3103,"tag":3473,"props":6491,"children":6492},{"style":3632},[6493],{"type":3108,"value":6494},"ipTTLseconds",{"type":3103,"tag":3473,"props":6496,"children":6497},{"style":3638},[6498],{"type":3108,"value":6499}," ||",{"type":3103,"tag":3473,"props":6501,"children":6502},{"style":3632},[6503],{"type":3108,"value":6445},{"type":3103,"tag":3473,"props":6505,"children":6506},{"style":3638},[6507],{"type":3108,"value":6508}," \u003C=",{"type":3103,"tag":3473,"props":6510,"children":6511},{"style":3913},[6512],{"type":3108,"value":4273},{"type":3103,"tag":3473,"props":6514,"children":6515},{"style":3647},[6516],{"type":3108,"value":5763},{"type":3103,"tag":3473,"props":6518,"children":6519},{"style":3638},[6520],{"type":3108,"value":3641},{"type":3103,"tag":3473,"props":6522,"children":6523},{"class":3475,"line":3815},[6524,6529,6533,6537],{"type":3103,"tag":3473,"props":6525,"children":6526},{"style":3632},[6527],{"type":3108,"value":6528},"      console",{"type":3103,"tag":3473,"props":6530,"children":6531},{"style":3638},[6532],{"type":3108,"value":4602},{"type":3103,"tag":3473,"props":6534,"children":6535},{"style":3626},[6536],{"type":3108,"value":5934},{"type":3103,"tag":3473,"props":6538,"children":6539},{"style":3647},[6540],{"type":3108,"value":6541},"(\n",{"type":3103,"tag":3473,"props":6543,"children":6544},{"class":3475,"line":3823},[6545,6549,6554],{"type":3103,"tag":3473,"props":6546,"children":6547},{"style":3638},[6548],{"type":3108,"value":4740},{"type":3103,"tag":3473,"props":6550,"children":6551},{"style":3494},[6552],{"type":3108,"value":6553},"[nuxt-api-shield] IP data cleanup (ipTTL) is disabled or invalid.",{"type":3103,"tag":3473,"props":6555,"children":6556},{"style":3638},[6557],{"type":3108,"value":4767},{"type":3103,"tag":3473,"props":6559,"children":6560},{"class":3475,"line":3832},[6561,6566],{"type":3103,"tag":3473,"props":6562,"children":6563},{"style":3647},[6564],{"type":3108,"value":6565},"      )",{"type":3103,"tag":3473,"props":6567,"children":6568},{"style":3638},[6569],{"type":3108,"value":4015},{"type":3103,"tag":3473,"props":6571,"children":6572},{"class":3475,"line":3841},[6573,6578,6582,6586,6590,6594,6598,6602,6606,6611,6616,6620,6624,6629,6633],{"type":3103,"tag":3473,"props":6574,"children":6575},{"style":3615},[6576],{"type":3108,"value":6577},"      return",{"type":3103,"tag":3473,"props":6579,"children":6580},{"style":3638},[6581],{"type":3108,"value":5392},{"type":3103,"tag":3473,"props":6583,"children":6584},{"style":3647},[6585],{"type":3108,"value":5996},{"type":3103,"tag":3473,"props":6587,"children":6588},{"style":3638},[6589],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":6591,"children":6592},{"style":3638},[6593],{"type":3108,"value":5392},{"type":3103,"tag":3473,"props":6595,"children":6596},{"style":3647},[6597],{"type":3108,"value":5714},{"type":3103,"tag":3473,"props":6599,"children":6600},{"style":3638},[6601],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":6603,"children":6604},{"style":3913},[6605],{"type":3108,"value":4273},{"type":3103,"tag":3473,"props":6607,"children":6608},{"style":3638},[6609],{"type":3108,"value":6610}," },",{"type":3103,"tag":3473,"props":6612,"children":6613},{"style":3647},[6614],{"type":3108,"value":6615}," status",{"type":3103,"tag":3473,"props":6617,"children":6618},{"style":3638},[6619],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":6621,"children":6622},{"style":3638},[6623],{"type":3108,"value":4181},{"type":3103,"tag":3473,"props":6625,"children":6626},{"style":3494},[6627],{"type":3108,"value":6628},"disabled_or_invalid_ttl",{"type":3103,"tag":3473,"props":6630,"children":6631},{"style":3638},[6632],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":6634,"children":6635},{"style":3638},[6636],{"type":3108,"value":6017},{"type":3103,"tag":3473,"props":6638,"children":6639},{"class":3475,"line":3855},[6640],{"type":3103,"tag":3473,"props":6641,"children":6642},{"style":3638},[6643],{"type":3108,"value":4783},{"type":3103,"tag":3473,"props":6645,"children":6646},{"class":3475,"line":3883},[6647,6651,6656,6660,6664,6668,6673],{"type":3103,"tag":3473,"props":6648,"children":6649},{"style":4660},[6650],{"type":3108,"value":5576},{"type":3103,"tag":3473,"props":6652,"children":6653},{"style":3632},[6654],{"type":3108,"value":6655}," ipTTLms",{"type":3103,"tag":3473,"props":6657,"children":6658},{"style":3638},[6659],{"type":3108,"value":5586},{"type":3103,"tag":3473,"props":6661,"children":6662},{"style":3632},[6663],{"type":3108,"value":6445},{"type":3103,"tag":3473,"props":6665,"children":6666},{"style":3638},[6667],{"type":3108,"value":4371},{"type":3103,"tag":3473,"props":6669,"children":6670},{"style":3913},[6671],{"type":3108,"value":6672}," 1000",{"type":3103,"tag":3473,"props":6674,"children":6675},{"style":3638},[6676],{"type":3108,"value":4015},{"type":3103,"tag":3473,"props":6678,"children":6679},{"class":3475,"line":3891},[6680],{"type":3103,"tag":3473,"props":6681,"children":6682},{"emptyLinePlaceholder":1200},[6683],{"type":3108,"value":3511},{"type":3103,"tag":3473,"props":6685,"children":6686},{"class":3475,"line":3900},[6687,6691,6696,6700,6704,6708,6712,6716,6720,6724,6729,6733,6737],{"type":3103,"tag":3473,"props":6688,"children":6689},{"style":4660},[6690],{"type":3108,"value":5576},{"type":3103,"tag":3473,"props":6692,"children":6693},{"style":3632},[6694],{"type":3108,"value":6695}," ipKeys",{"type":3103,"tag":3473,"props":6697,"children":6698},{"style":3638},[6699],{"type":3108,"value":5586},{"type":3103,"tag":3473,"props":6701,"children":6702},{"style":3615},[6703],{"type":3108,"value":5656},{"type":3103,"tag":3473,"props":6705,"children":6706},{"style":3632},[6707],{"type":3108,"value":5581},{"type":3103,"tag":3473,"props":6709,"children":6710},{"style":3638},[6711],{"type":3108,"value":4602},{"type":3103,"tag":3473,"props":6713,"children":6714},{"style":3626},[6715],{"type":3108,"value":5669},{"type":3103,"tag":3473,"props":6717,"children":6718},{"style":3647},[6719],{"type":3108,"value":3635},{"type":3103,"tag":3473,"props":6721,"children":6722},{"style":3638},[6723],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":6725,"children":6726},{"style":3494},[6727],{"type":3108,"value":6728},"ip:",{"type":3103,"tag":3473,"props":6730,"children":6731},{"style":3638},[6732],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":6734,"children":6735},{"style":3647},[6736],{"type":3108,"value":4010},{"type":3103,"tag":3473,"props":6738,"children":6739},{"style":3638},[6740],{"type":3108,"value":4015},{"type":3103,"tag":3473,"props":6742,"children":6743},{"class":3475,"line":3928},[6744,6748,6753,6757,6762,6766,6771,6775],{"type":3103,"tag":3473,"props":6745,"children":6746},{"style":4660},[6747],{"type":3108,"value":5576},{"type":3103,"tag":3473,"props":6749,"children":6750},{"style":3632},[6751],{"type":3108,"value":6752}," currentTime",{"type":3103,"tag":3473,"props":6754,"children":6755},{"style":3638},[6756],{"type":3108,"value":5586},{"type":3103,"tag":3473,"props":6758,"children":6759},{"style":3632},[6760],{"type":3108,"value":6761}," Date",{"type":3103,"tag":3473,"props":6763,"children":6764},{"style":3638},[6765],{"type":3108,"value":4602},{"type":3103,"tag":3473,"props":6767,"children":6768},{"style":3626},[6769],{"type":3108,"value":6770},"now",{"type":3103,"tag":3473,"props":6772,"children":6773},{"style":3647},[6774],{"type":3108,"value":5564},{"type":3103,"tag":3473,"props":6776,"children":6777},{"style":3638},[6778],{"type":3108,"value":4015},{"type":3103,"tag":3473,"props":6780,"children":6781},{"class":3475,"line":3945},[6782,6786,6790,6794,6798],{"type":3103,"tag":3473,"props":6783,"children":6784},{"style":4660},[6785],{"type":3108,"value":5709},{"type":3103,"tag":3473,"props":6787,"children":6788},{"style":3632},[6789],{"type":3108,"value":5714},{"type":3103,"tag":3473,"props":6791,"children":6792},{"style":3638},[6793],{"type":3108,"value":5586},{"type":3103,"tag":3473,"props":6795,"children":6796},{"style":3913},[6797],{"type":3108,"value":4273},{"type":3103,"tag":3473,"props":6799,"children":6800},{"style":3638},[6801],{"type":3108,"value":4015},{"type":3103,"tag":3473,"props":6803,"children":6804},{"class":3475,"line":3954},[6805],{"type":3103,"tag":3473,"props":6806,"children":6807},{"emptyLinePlaceholder":1200},[6808],{"type":3108,"value":3511},{"type":3103,"tag":3473,"props":6810,"children":6811},{"class":3475,"line":3982},[6812,6816,6820,6824,6828,6832,6836,6840],{"type":3103,"tag":3473,"props":6813,"children":6814},{"style":3615},[6815],{"type":3108,"value":5734},{"type":3103,"tag":3473,"props":6817,"children":6818},{"style":3647},[6819],{"type":3108,"value":5739},{"type":3103,"tag":3473,"props":6821,"children":6822},{"style":4660},[6823],{"type":3108,"value":5744},{"type":3103,"tag":3473,"props":6825,"children":6826},{"style":3632},[6827],{"type":3108,"value":5749},{"type":3103,"tag":3473,"props":6829,"children":6830},{"style":3638},[6831],{"type":3108,"value":5754},{"type":3103,"tag":3473,"props":6833,"children":6834},{"style":3632},[6835],{"type":3108,"value":6695},{"type":3103,"tag":3473,"props":6837,"children":6838},{"style":3647},[6839],{"type":3108,"value":5763},{"type":3103,"tag":3473,"props":6841,"children":6842},{"style":3638},[6843],{"type":3108,"value":3641},{"type":3103,"tag":3473,"props":6845,"children":6846},{"class":3475,"line":3990},[6847,6851,6856,6860,6864,6869,6873,6877,6881,6885,6889,6893,6898,6902,6907,6912],{"type":3103,"tag":3473,"props":6848,"children":6849},{"style":4660},[6850],{"type":3108,"value":5775},{"type":3103,"tag":3473,"props":6852,"children":6853},{"style":3632},[6854],{"type":3108,"value":6855}," entry",{"type":3103,"tag":3473,"props":6857,"children":6858},{"style":3638},[6859],{"type":3108,"value":5586},{"type":3103,"tag":3473,"props":6861,"children":6862},{"style":3647},[6863],{"type":3108,"value":5739},{"type":3103,"tag":3473,"props":6865,"children":6866},{"style":3615},[6867],{"type":3108,"value":6868},"await",{"type":3103,"tag":3473,"props":6870,"children":6871},{"style":3632},[6872],{"type":3108,"value":5581},{"type":3103,"tag":3473,"props":6874,"children":6875},{"style":3638},[6876],{"type":3108,"value":4602},{"type":3103,"tag":3473,"props":6878,"children":6879},{"style":3626},[6880],{"type":3108,"value":5801},{"type":3103,"tag":3473,"props":6882,"children":6883},{"style":3647},[6884],{"type":3108,"value":3635},{"type":3103,"tag":3473,"props":6886,"children":6887},{"style":3632},[6888],{"type":3108,"value":5810},{"type":3103,"tag":3473,"props":6890,"children":6891},{"style":3647},[6892],{"type":3108,"value":5849},{"type":3103,"tag":3473,"props":6894,"children":6895},{"style":3615},[6896],{"type":3108,"value":6897},"as",{"type":3103,"tag":3473,"props":6899,"children":6900},{"style":3488},[6901],{"type":3108,"value":6137},{"type":3103,"tag":3473,"props":6903,"children":6904},{"style":3638},[6905],{"type":3108,"value":6906}," |",{"type":3103,"tag":3473,"props":6908,"children":6909},{"style":3488},[6910],{"type":3108,"value":6911}," null",{"type":3103,"tag":3473,"props":6913,"children":6914},{"style":3638},[6915],{"type":3108,"value":4015},{"type":3103,"tag":3473,"props":6917,"children":6918},{"class":3475,"line":3999},[6919],{"type":3103,"tag":3473,"props":6920,"children":6921},{"emptyLinePlaceholder":1200},[6922],{"type":3108,"value":3511},{"type":3103,"tag":3473,"props":6924,"children":6926},{"class":3475,"line":6925},31,[6927],{"type":3103,"tag":3473,"props":6928,"children":6929},{"style":3479},[6930],{"type":3108,"value":6931},"      \u002F\u002F Check if entry exists and has a numeric 'time' property\n",{"type":3103,"tag":3473,"props":6933,"children":6935},{"class":3475,"line":6934},32,[6936,6940,6944,6949,6954,6959,6963,6967,6971,6976,6980,6985,6989,6993],{"type":3103,"tag":3473,"props":6937,"children":6938},{"style":3615},[6939],{"type":3108,"value":5826},{"type":3103,"tag":3473,"props":6941,"children":6942},{"style":3647},[6943],{"type":3108,"value":5739},{"type":3103,"tag":3473,"props":6945,"children":6946},{"style":3632},[6947],{"type":3108,"value":6948},"entry",{"type":3103,"tag":3473,"props":6950,"children":6951},{"style":3638},[6952],{"type":3108,"value":6953}," &&",{"type":3103,"tag":3473,"props":6955,"children":6956},{"style":3638},[6957],{"type":3108,"value":6958}," typeof",{"type":3103,"tag":3473,"props":6960,"children":6961},{"style":3632},[6962],{"type":3108,"value":6855},{"type":3103,"tag":3473,"props":6964,"children":6965},{"style":3638},[6966],{"type":3108,"value":4602},{"type":3103,"tag":3473,"props":6968,"children":6969},{"style":3632},[6970],{"type":3108,"value":6088},{"type":3103,"tag":3473,"props":6972,"children":6973},{"style":3638},[6974],{"type":3108,"value":6975}," ===",{"type":3103,"tag":3473,"props":6977,"children":6978},{"style":3638},[6979],{"type":3108,"value":4181},{"type":3103,"tag":3473,"props":6981,"children":6982},{"style":3494},[6983],{"type":3108,"value":6984},"number",{"type":3103,"tag":3473,"props":6986,"children":6987},{"style":3638},[6988],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":6990,"children":6991},{"style":3647},[6992],{"type":3108,"value":5763},{"type":3103,"tag":3473,"props":6994,"children":6995},{"style":3638},[6996],{"type":3108,"value":3641},{"type":3103,"tag":3473,"props":6998,"children":7000},{"class":3475,"line":6999},33,[7001,7006,7010,7015,7020,7024,7028,7032,7037,7041,7045],{"type":3103,"tag":3473,"props":7002,"children":7003},{"style":3615},[7004],{"type":3108,"value":7005},"        if",{"type":3103,"tag":3473,"props":7007,"children":7008},{"style":3647},[7009],{"type":3108,"value":5739},{"type":3103,"tag":3473,"props":7011,"children":7012},{"style":3632},[7013],{"type":3108,"value":7014},"currentTime",{"type":3103,"tag":3473,"props":7016,"children":7017},{"style":3638},[7018],{"type":3108,"value":7019}," -",{"type":3103,"tag":3473,"props":7021,"children":7022},{"style":3632},[7023],{"type":3108,"value":6855},{"type":3103,"tag":3473,"props":7025,"children":7026},{"style":3638},[7027],{"type":3108,"value":4602},{"type":3103,"tag":3473,"props":7029,"children":7030},{"style":3632},[7031],{"type":3108,"value":6088},{"type":3103,"tag":3473,"props":7033,"children":7034},{"style":3638},[7035],{"type":3108,"value":7036}," >",{"type":3103,"tag":3473,"props":7038,"children":7039},{"style":3632},[7040],{"type":3108,"value":6655},{"type":3103,"tag":3473,"props":7042,"children":7043},{"style":3647},[7044],{"type":3108,"value":5763},{"type":3103,"tag":3473,"props":7046,"children":7047},{"style":3638},[7048],{"type":3108,"value":3641},{"type":3103,"tag":3473,"props":7050,"children":7052},{"class":3475,"line":7051},34,[7053,7058,7062,7066,7070,7074,7078,7082],{"type":3103,"tag":3473,"props":7054,"children":7055},{"style":3615},[7056],{"type":3108,"value":7057},"          await",{"type":3103,"tag":3473,"props":7059,"children":7060},{"style":3632},[7061],{"type":3108,"value":5581},{"type":3103,"tag":3473,"props":7063,"children":7064},{"style":3638},[7065],{"type":3108,"value":4602},{"type":3103,"tag":3473,"props":7067,"children":7068},{"style":3626},[7069],{"type":3108,"value":5874},{"type":3103,"tag":3473,"props":7071,"children":7072},{"style":3647},[7073],{"type":3108,"value":3635},{"type":3103,"tag":3473,"props":7075,"children":7076},{"style":3632},[7077],{"type":3108,"value":5810},{"type":3103,"tag":3473,"props":7079,"children":7080},{"style":3647},[7081],{"type":3108,"value":4010},{"type":3103,"tag":3473,"props":7083,"children":7084},{"style":3638},[7085],{"type":3108,"value":4015},{"type":3103,"tag":3473,"props":7087,"children":7089},{"class":3475,"line":7088},35,[7090,7095],{"type":3103,"tag":3473,"props":7091,"children":7092},{"style":3632},[7093],{"type":3108,"value":7094},"          cleanedCount",{"type":3103,"tag":3473,"props":7096,"children":7097},{"style":3638},[7098],{"type":3108,"value":5903},{"type":3103,"tag":3473,"props":7100,"children":7102},{"class":3475,"line":7101},36,[7103],{"type":3103,"tag":3473,"props":7104,"children":7105},{"style":3638},[7106],{"type":3108,"value":7107},"        }\n",{"type":3103,"tag":3473,"props":7109,"children":7111},{"class":3475,"line":7110},37,[7112,7117,7122],{"type":3103,"tag":3473,"props":7113,"children":7114},{"style":3638},[7115],{"type":3108,"value":7116},"      }",{"type":3103,"tag":3473,"props":7118,"children":7119},{"style":3615},[7120],{"type":3108,"value":7121}," else",{"type":3103,"tag":3473,"props":7123,"children":7124},{"style":3638},[7125],{"type":3108,"value":3700},{"type":3103,"tag":3473,"props":7127,"children":7129},{"class":3475,"line":7128},38,[7130],{"type":3103,"tag":3473,"props":7131,"children":7132},{"style":3479},[7133],{"type":3108,"value":7134},"        \u002F\u002F Clean up entries that are null, not an object, or missing a numeric 'time'\n",{"type":3103,"tag":3473,"props":7136,"children":7138},{"class":3475,"line":7137},39,[7139,7143,7147,7151,7155,7159,7163,7167],{"type":3103,"tag":3473,"props":7140,"children":7141},{"style":3615},[7142],{"type":3108,"value":5861},{"type":3103,"tag":3473,"props":7144,"children":7145},{"style":3632},[7146],{"type":3108,"value":5581},{"type":3103,"tag":3473,"props":7148,"children":7149},{"style":3638},[7150],{"type":3108,"value":4602},{"type":3103,"tag":3473,"props":7152,"children":7153},{"style":3626},[7154],{"type":3108,"value":5874},{"type":3103,"tag":3473,"props":7156,"children":7157},{"style":3647},[7158],{"type":3108,"value":3635},{"type":3103,"tag":3473,"props":7160,"children":7161},{"style":3632},[7162],{"type":3108,"value":5810},{"type":3103,"tag":3473,"props":7164,"children":7165},{"style":3647},[7166],{"type":3108,"value":4010},{"type":3103,"tag":3473,"props":7168,"children":7169},{"style":3638},[7170],{"type":3108,"value":4015},{"type":3103,"tag":3473,"props":7172,"children":7174},{"class":3475,"line":7173},40,[7175,7179],{"type":3103,"tag":3473,"props":7176,"children":7177},{"style":3632},[7178],{"type":3108,"value":5898},{"type":3103,"tag":3473,"props":7180,"children":7181},{"style":3638},[7182],{"type":3108,"value":5903},{"type":3103,"tag":3473,"props":7184,"children":7186},{"class":3475,"line":7185},41,[7187],{"type":3103,"tag":3473,"props":7188,"children":7189},{"style":3638},[7190],{"type":3108,"value":4775},{"type":3103,"tag":3473,"props":7192,"children":7194},{"class":3475,"line":7193},42,[7195],{"type":3103,"tag":3473,"props":7196,"children":7197},{"style":3638},[7198],{"type":3108,"value":4783},{"type":3103,"tag":3473,"props":7200,"children":7202},{"class":3475,"line":7201},43,[7203],{"type":3103,"tag":3473,"props":7204,"children":7205},{"emptyLinePlaceholder":1200},[7206],{"type":3108,"value":3511},{"type":3103,"tag":3473,"props":7208,"children":7210},{"class":3475,"line":7209},44,[7211,7215,7219,7223],{"type":3103,"tag":3473,"props":7212,"children":7213},{"style":3632},[7214],{"type":3108,"value":5925},{"type":3103,"tag":3473,"props":7216,"children":7217},{"style":3638},[7218],{"type":3108,"value":4602},{"type":3103,"tag":3473,"props":7220,"children":7221},{"style":3626},[7222],{"type":3108,"value":5934},{"type":3103,"tag":3473,"props":7224,"children":7225},{"style":3647},[7226],{"type":3108,"value":6541},{"type":3103,"tag":3473,"props":7228,"children":7230},{"class":3475,"line":7229},45,[7231,7236,7240,7244,7248,7252,7257],{"type":3103,"tag":3473,"props":7232,"children":7233},{"style":3638},[7234],{"type":3108,"value":7235},"      `",{"type":3103,"tag":3473,"props":7237,"children":7238},{"style":3494},[7239],{"type":3108,"value":5948},{"type":3103,"tag":3473,"props":7241,"children":7242},{"style":3638},[7243],{"type":3108,"value":5953},{"type":3103,"tag":3473,"props":7245,"children":7246},{"style":3632},[7247],{"type":3108,"value":5958},{"type":3103,"tag":3473,"props":7249,"children":7250},{"style":3638},[7251],{"type":3108,"value":4005},{"type":3103,"tag":3473,"props":7253,"children":7254},{"style":3494},[7255],{"type":3108,"value":7256}," old\u002Fmalformed IP data entries.",{"type":3103,"tag":3473,"props":7258,"children":7259},{"style":3638},[7260],{"type":3108,"value":7261},"`\n",{"type":3103,"tag":3473,"props":7263,"children":7265},{"class":3475,"line":7264},46,[7266,7271],{"type":3103,"tag":3473,"props":7267,"children":7268},{"style":3647},[7269],{"type":3108,"value":7270},"    )",{"type":3103,"tag":3473,"props":7272,"children":7273},{"style":3638},[7274],{"type":3108,"value":4015},{"type":3103,"tag":3473,"props":7276,"children":7278},{"class":3475,"line":7277},47,[7279,7283,7287,7291,7295,7299,7303,7307],{"type":3103,"tag":3473,"props":7280,"children":7281},{"style":3615},[7282],{"type":3108,"value":5987},{"type":3103,"tag":3473,"props":7284,"children":7285},{"style":3638},[7286],{"type":3108,"value":5392},{"type":3103,"tag":3473,"props":7288,"children":7289},{"style":3647},[7290],{"type":3108,"value":5996},{"type":3103,"tag":3473,"props":7292,"children":7293},{"style":3638},[7294],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":7296,"children":7297},{"style":3638},[7298],{"type":3108,"value":5392},{"type":3103,"tag":3473,"props":7300,"children":7301},{"style":3632},[7302],{"type":3108,"value":5714},{"type":3103,"tag":3473,"props":7304,"children":7305},{"style":3638},[7306],{"type":3108,"value":5402},{"type":3103,"tag":3473,"props":7308,"children":7309},{"style":3638},[7310],{"type":3108,"value":6017},{"type":3103,"tag":3473,"props":7312,"children":7314},{"class":3475,"line":7313},48,[7315],{"type":3103,"tag":3473,"props":7316,"children":7317},{"style":3638},[7318],{"type":3108,"value":3996},{"type":3103,"tag":3473,"props":7320,"children":7322},{"class":3475,"line":7321},49,[7323,7327,7331],{"type":3103,"tag":3473,"props":7324,"children":7325},{"style":3638},[7326],{"type":3108,"value":4005},{"type":3103,"tag":3473,"props":7328,"children":7329},{"style":3632},[7330],{"type":3108,"value":4010},{"type":3103,"tag":3473,"props":7332,"children":7333},{"style":3638},[7334],{"type":3108,"value":4015},{"type":3103,"tag":3110,"props":7336,"children":7337},{},[7338,7340,7345,7347,7352,7354,7359,7360,7366,7368,7373],{"type":3108,"value":7339},"Configure ",{"type":3103,"tag":3260,"props":7341,"children":7343},{"className":7342},[],[7344],{"type":3108,"value":5063},{"type":3108,"value":7346}," under ",{"type":3103,"tag":3260,"props":7348,"children":7350},{"className":7349},[],[7351],{"type":3108,"value":4031},{"type":3108,"value":7353}," if you want a TTL other than the default. Setting ",{"type":3103,"tag":3260,"props":7355,"children":7357},{"className":7356},[],[7358],{"type":3108,"value":5063},{"type":3108,"value":4616},{"type":3103,"tag":3260,"props":7361,"children":7363},{"className":7362},[],[7364],{"type":3108,"value":7365},"0",{"type":3108,"value":7367}," (or any non-positive value) makes the bundled ",{"type":3103,"tag":3260,"props":7369,"children":7371},{"className":7370},[],[7372],{"type":3108,"value":3365},{"type":3108,"value":7374}," task skip IP cleanup (it logs and exits).",{"type":3103,"tag":3110,"props":7376,"children":7377},{},[7378,7380,7386,7388,7393,7395,7400],{"type":3108,"value":7379},"If you add your own task file with the same ",{"type":3103,"tag":3260,"props":7381,"children":7383},{"className":7382},[],[7384],{"type":3108,"value":7385},"meta.name",{"type":3108,"value":7387}," as a bundled task (",{"type":3103,"tag":3260,"props":7389,"children":7391},{"className":7390},[],[7392],{"type":3108,"value":3357},{"type":3108,"value":7394}," or ",{"type":3103,"tag":3260,"props":7396,"children":7398},{"className":7397},[],[7399],{"type":3108,"value":3365},{"type":3108,"value":7401},"), Nitro may prefer your project file over the module—avoid duplicate names unless you intend to override.",{"type":3103,"tag":3186,"props":7403,"children":7405},{"id":7404},"production-deployment",[7406],{"type":3108,"value":7407},"Production Deployment",{"type":3103,"tag":3449,"props":7409,"children":7411},{"id":7410},"use-redis-as-the-storage-driver",[7412],{"type":3108,"value":7413},"Use Redis as the storage driver",{"type":3103,"tag":3110,"props":7415,"children":7416},{},[7417,7419,7424,7426,7431,7432,7438],{"type":3108,"value":7418},"For production deployments — especially with multiple server instances or significant traffic — ",{"type":3103,"tag":3198,"props":7420,"children":7421},{},[7422],{"type":3108,"value":7423},"Redis is the recommended storage driver",{"type":3108,"value":7425},". The ",{"type":3103,"tag":3260,"props":7427,"children":7429},{"className":7428},[],[7430],{"type":3108,"value":4762},{"type":3108,"value":3359},{"type":3103,"tag":3260,"props":7433,"children":7435},{"className":7434},[],[7436],{"type":3108,"value":7437},"fs",{"type":3108,"value":7439}," drivers have important limitations:",{"type":3103,"tag":7441,"props":7442,"children":7443},"table",{},[7444,7478],{"type":3103,"tag":7445,"props":7446,"children":7447},"thead",{},[7448],{"type":3103,"tag":7449,"props":7450,"children":7451},"tr",{},[7452,7458,7473],{"type":3103,"tag":7453,"props":7454,"children":7455},"th",{},[7456],{"type":3108,"value":7457},"Area",{"type":3103,"tag":7453,"props":7459,"children":7460},{},[7461,7466,7468],{"type":3103,"tag":3260,"props":7462,"children":7464},{"className":7463},[],[7465],{"type":3108,"value":4762},{"type":3108,"value":7467}," \u002F ",{"type":3103,"tag":3260,"props":7469,"children":7471},{"className":7470},[],[7472],{"type":3108,"value":7437},{"type":3103,"tag":7453,"props":7474,"children":7475},{},[7476],{"type":3108,"value":7477},"Redis",{"type":3103,"tag":7479,"props":7480,"children":7481},"tbody",{},[7482,7504,7525],{"type":3103,"tag":7449,"props":7483,"children":7484},{},[7485,7494,7499],{"type":3103,"tag":7486,"props":7487,"children":7488},"td",{},[7489],{"type":3103,"tag":3198,"props":7490,"children":7491},{},[7492],{"type":3108,"value":7493},"Multi-instance",{"type":3103,"tag":7486,"props":7495,"children":7496},{},[7497],{"type":3108,"value":7498},"Each process has its own isolated state. Rate limits reset per instance, allowing bypass.",{"type":3103,"tag":7486,"props":7500,"children":7501},{},[7502],{"type":3108,"value":7503},"Shared state across all instances.",{"type":3103,"tag":7449,"props":7505,"children":7506},{},[7507,7515,7520],{"type":3103,"tag":7486,"props":7508,"children":7509},{},[7510],{"type":3103,"tag":3198,"props":7511,"children":7512},{},[7513],{"type":3108,"value":7514},"Atomic operations",{"type":3103,"tag":7486,"props":7516,"children":7517},{},[7518],{"type":3108,"value":7519},"Read → increment → write is not atomic. Concurrent requests can both read the same count and exceed the limit simultaneously.",{"type":3103,"tag":7486,"props":7521,"children":7522},{},[7523],{"type":3108,"value":7524},"Single-threaded — reads and writes are naturally atomic. No race conditions.",{"type":3103,"tag":7449,"props":7526,"children":7527},{},[7528,7536,7562],{"type":3103,"tag":7486,"props":7529,"children":7530},{},[7531],{"type":3103,"tag":3198,"props":7532,"children":7533},{},[7534],{"type":3108,"value":7535},"Cleanup",{"type":3103,"tag":7486,"props":7537,"children":7538},{},[7539,7541,7546,7547,7552,7554,7560],{"type":3108,"value":7540},"Cleanup tasks (",{"type":3103,"tag":3260,"props":7542,"children":7544},{"className":7543},[],[7545],{"type":3108,"value":3357},{"type":3108,"value":3425},{"type":3103,"tag":3260,"props":7548,"children":7550},{"className":7549},[],[7551],{"type":3108,"value":3365},{"type":3108,"value":7553},") must scan all keys with ",{"type":3103,"tag":3260,"props":7555,"children":7557},{"className":7556},[],[7558],{"type":3108,"value":7559},"getKeys()",{"type":3108,"value":7561},". At scale this blocks the event loop.",{"type":3103,"tag":7486,"props":7563,"children":7564},{},[7565,7567,7573,7574,7580],{"type":3108,"value":7566},"Use ",{"type":3103,"tag":3260,"props":7568,"children":7570},{"className":7569},[],[7571],{"type":3108,"value":7572},"EXPIRE",{"type":3108,"value":7394},{"type":3103,"tag":3260,"props":7575,"children":7577},{"className":7576},[],[7578],{"type":3108,"value":7579},"TTL",{"type":3108,"value":7581}," natively — expired keys are reclaimed automatically without scanning.",{"type":3103,"tag":3110,"props":7583,"children":7584},{},[7585,7587,7592,7594,7599],{"type":3108,"value":7586},"To use Redis, configure the ",{"type":3103,"tag":3260,"props":7588,"children":7590},{"className":7589},[],[7591],{"type":3108,"value":4631},{"type":3108,"value":7593}," storage with the ",{"type":3103,"tag":3260,"props":7595,"children":7597},{"className":7596},[],[7598],{"type":3108,"value":4913},{"type":3108,"value":7600}," driver:",{"type":3103,"tag":3463,"props":7602,"children":7603},{"className":4636,"code":4805,"language":4638,"meta":3047,"style":3047},[7604],{"type":3103,"tag":3260,"props":7605,"children":7606},{"__ignoreMap":3047},[7607,7614,7637,7660,7683,7718,7753,7776,7783,7790,7797],{"type":3103,"tag":3473,"props":7608,"children":7609},{"class":3475,"line":3075},[7610],{"type":3103,"tag":3473,"props":7611,"children":7612},{"style":3638},[7613],{"type":3108,"value":3641},{"type":3103,"tag":3473,"props":7615,"children":7616},{"class":3475,"line":3071},[7617,7621,7625,7629,7633],{"type":3103,"tag":3473,"props":7618,"children":7619},{"style":3638},[7620],{"type":3108,"value":4657},{"type":3103,"tag":3473,"props":7622,"children":7623},{"style":4660},[7624],{"type":3108,"value":4663},{"type":3103,"tag":3473,"props":7626,"children":7627},{"style":3638},[7628],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":7630,"children":7631},{"style":3638},[7632],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":7634,"children":7635},{"style":3638},[7636],{"type":3108,"value":3700},{"type":3103,"tag":3473,"props":7638,"children":7639},{"class":3475,"line":3505},[7640,7644,7648,7652,7656],{"type":3103,"tag":3473,"props":7641,"children":7642},{"style":3638},[7643],{"type":3108,"value":4683},{"type":3103,"tag":3473,"props":7645,"children":7646},{"style":3488},[7647],{"type":3108,"value":4688},{"type":3103,"tag":3473,"props":7649,"children":7650},{"style":3638},[7651],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":7653,"children":7654},{"style":3638},[7655],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":7657,"children":7658},{"style":3638},[7659],{"type":3108,"value":3700},{"type":3103,"tag":3473,"props":7661,"children":7662},{"class":3475,"line":3514},[7663,7667,7671,7675,7679],{"type":3103,"tag":3473,"props":7664,"children":7665},{"style":3638},[7666],{"type":3108,"value":4708},{"type":3103,"tag":3473,"props":7668,"children":7669},{"style":3913},[7670],{"type":3108,"value":4631},{"type":3103,"tag":3473,"props":7672,"children":7673},{"style":3638},[7674],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":7676,"children":7677},{"style":3638},[7678],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":7680,"children":7681},{"style":3638},[7682],{"type":3108,"value":3700},{"type":3103,"tag":3473,"props":7684,"children":7685},{"class":3475,"line":3067},[7686,7690,7694,7698,7702,7706,7710,7714],{"type":3103,"tag":3473,"props":7687,"children":7688},{"style":3638},[7689],{"type":3108,"value":4740},{"type":3103,"tag":3473,"props":7691,"children":7692},{"style":3647},[7693],{"type":3108,"value":4745},{"type":3103,"tag":3473,"props":7695,"children":7696},{"style":3638},[7697],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":7699,"children":7700},{"style":3638},[7701],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":7703,"children":7704},{"style":3638},[7705],{"type":3108,"value":4181},{"type":3103,"tag":3473,"props":7707,"children":7708},{"style":3494},[7709],{"type":3108,"value":4913},{"type":3103,"tag":3473,"props":7711,"children":7712},{"style":3638},[7713],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":7715,"children":7716},{"style":3638},[7717],{"type":3108,"value":3683},{"type":3103,"tag":3473,"props":7719,"children":7720},{"class":3475,"line":3539},[7721,7725,7729,7733,7737,7741,7745,7749],{"type":3103,"tag":3473,"props":7722,"children":7723},{"style":3638},[7724],{"type":3108,"value":4740},{"type":3103,"tag":3473,"props":7726,"children":7727},{"style":3647},[7728],{"type":3108,"value":4933},{"type":3103,"tag":3473,"props":7730,"children":7731},{"style":3638},[7732],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":7734,"children":7735},{"style":3638},[7736],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":7738,"children":7739},{"style":3638},[7740],{"type":3108,"value":4181},{"type":3103,"tag":3473,"props":7742,"children":7743},{"style":3494},[7744],{"type":3108,"value":4950},{"type":3103,"tag":3473,"props":7746,"children":7747},{"style":3638},[7748],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":7750,"children":7751},{"style":3638},[7752],{"type":3108,"value":3683},{"type":3103,"tag":3473,"props":7754,"children":7755},{"class":3475,"line":3547},[7756,7760,7764,7768,7772],{"type":3103,"tag":3473,"props":7757,"children":7758},{"style":3638},[7759],{"type":3108,"value":4740},{"type":3103,"tag":3473,"props":7761,"children":7762},{"style":3647},[7763],{"type":3108,"value":4970},{"type":3103,"tag":3473,"props":7765,"children":7766},{"style":3638},[7767],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":7769,"children":7770},{"style":3638},[7771],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":7773,"children":7774},{"style":3913},[7775],{"type":3108,"value":4983},{"type":3103,"tag":3473,"props":7777,"children":7778},{"class":3475,"line":3092},[7779],{"type":3103,"tag":3473,"props":7780,"children":7781},{"style":3638},[7782],{"type":3108,"value":4775},{"type":3103,"tag":3473,"props":7784,"children":7785},{"class":3475,"line":3743},[7786],{"type":3103,"tag":3473,"props":7787,"children":7788},{"style":3638},[7789],{"type":3108,"value":4783},{"type":3103,"tag":3473,"props":7791,"children":7792},{"class":3475,"line":3752},[7793],{"type":3103,"tag":3473,"props":7794,"children":7795},{"style":3638},[7796],{"type":3108,"value":4446},{"type":3103,"tag":3473,"props":7798,"children":7799},{"class":3475,"line":3761},[7800],{"type":3103,"tag":3473,"props":7801,"children":7802},{"style":3638},[7803],{"type":3108,"value":4454},{"type":3103,"tag":3110,"props":7805,"children":7806},{},[7807,7809,7816],{"type":3108,"value":7808},"See the ",{"type":3103,"tag":3114,"props":7810,"children":7813},{"href":7811,"rel":7812},"https:\u002F\u002Funstorage.unjs.io\u002Fdrivers\u002Fredis",[3118],[7814],{"type":3108,"value":7815},"unstorage Redis driver docs",{"type":3108,"value":7817}," for all available options.",{"type":3103,"tag":3449,"props":7819,"children":7821},{"id":7820},"when-memory-fs-is-acceptable",[7822,7824,7829,7830,7835],{"type":3108,"value":7823},"When ",{"type":3103,"tag":3260,"props":7825,"children":7827},{"className":7826},[],[7828],{"type":3108,"value":4762},{"type":3108,"value":7467},{"type":3103,"tag":3260,"props":7831,"children":7833},{"className":7832},[],[7834],{"type":3108,"value":7437},{"type":3108,"value":7836}," is acceptable",{"type":3103,"tag":3110,"props":7838,"children":7839},{},[7840,7841,7846,7847,7852],{"type":3108,"value":4473},{"type":3103,"tag":3260,"props":7842,"children":7844},{"className":7843},[],[7845],{"type":3108,"value":4762},{"type":3108,"value":3359},{"type":3103,"tag":3260,"props":7848,"children":7850},{"className":7849},[],[7851],{"type":3108,"value":7437},{"type":3108,"value":7853}," drivers are fine for:",{"type":3103,"tag":3160,"props":7855,"children":7856},{},[7857,7862,7867],{"type":3103,"tag":3164,"props":7858,"children":7859},{},[7860],{"type":3108,"value":7861},"Single-instance deployments",{"type":3103,"tag":3164,"props":7863,"children":7864},{},[7865],{"type":3108,"value":7866},"Development environments",{"type":3103,"tag":3164,"props":7868,"children":7869},{},[7870],{"type":3108,"value":7871},"Low-traffic applications where occasional race conditions are acceptable",{"type":3103,"tag":3110,"props":7873,"children":7874},{},[7875],{"type":3108,"value":7876},"For everything else, use Redis.",{"type":3103,"tag":3186,"props":7878,"children":7880},{"id":7879},"fail2ban-integration",[7881],{"type":3108,"value":7882},"Fail2ban Integration",{"type":3103,"tag":3110,"props":7884,"children":7885},{},[7886,7888,7893,7895,7901],{"type":3108,"value":7887},"When a user exceeds the rate limit and gets banned, ",{"type":3103,"tag":3260,"props":7889,"children":7891},{"className":7890},[],[7892],{"type":3108,"value":3044},{"type":3108,"value":7894}," can write ban events to the log file in a ",{"type":3103,"tag":3260,"props":7896,"children":7898},{"className":7897},[],[7899],{"type":3108,"value":7900},"fail2ban",{"type":3108,"value":7902},"-compatible format. You can then configure fail2ban to watch these logs and automatically block the IP at the firewall level.",{"type":3103,"tag":3449,"props":7904,"children":7906},{"id":7905},"setup",[7907],{"type":3108,"value":7908},"Setup",{"type":3103,"tag":3110,"props":7910,"children":7911},{},[7912,7914,7920,7921,7926,7928,7934],{"type":3108,"value":7913},"Enable fail2ban logging by setting ",{"type":3103,"tag":3260,"props":7915,"children":7917},{"className":7916},[],[7918],{"type":3108,"value":7919},"log.fail2ban",{"type":3108,"value":4616},{"type":3103,"tag":3260,"props":7922,"children":7924},{"className":7923},[],[7925],{"type":3108,"value":4511},{"type":3108,"value":7927}," and configuring the ",{"type":3103,"tag":3260,"props":7929,"children":7931},{"className":7930},[],[7932],{"type":3108,"value":7933},"log.path",{"type":3108,"value":3655},{"type":3103,"tag":3463,"props":7936,"children":7938},{"className":3603,"code":7937,"language":3605,"meta":3047,"style":3047},"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",[7939],{"type":3103,"tag":3260,"props":7940,"children":7941},{"__ignoreMap":3047},[7942,7965,8000,8015,8031,8065,8091,8116,8123,8130],{"type":3103,"tag":3473,"props":7943,"children":7944},{"class":3475,"line":3075},[7945,7949,7953,7957,7961],{"type":3103,"tag":3473,"props":7946,"children":7947},{"style":3615},[7948],{"type":3108,"value":3618},{"type":3103,"tag":3473,"props":7950,"children":7951},{"style":3615},[7952],{"type":3108,"value":3623},{"type":3103,"tag":3473,"props":7954,"children":7955},{"style":3626},[7956],{"type":3108,"value":3629},{"type":3103,"tag":3473,"props":7958,"children":7959},{"style":3632},[7960],{"type":3108,"value":3635},{"type":3103,"tag":3473,"props":7962,"children":7963},{"style":3638},[7964],{"type":3108,"value":3641},{"type":3103,"tag":3473,"props":7966,"children":7967},{"class":3475,"line":3071},[7968,7972,7976,7980,7984,7988,7992,7996],{"type":3103,"tag":3473,"props":7969,"children":7970},{"style":3647},[7971],{"type":3108,"value":3650},{"type":3103,"tag":3473,"props":7973,"children":7974},{"style":3638},[7975],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":7977,"children":7978},{"style":3632},[7979],{"type":3108,"value":3660},{"type":3103,"tag":3473,"props":7981,"children":7982},{"style":3638},[7983],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":7985,"children":7986},{"style":3494},[7987],{"type":3108,"value":3044},{"type":3103,"tag":3473,"props":7989,"children":7990},{"style":3638},[7991],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":7993,"children":7994},{"style":3632},[7995],{"type":3108,"value":3678},{"type":3103,"tag":3473,"props":7997,"children":7998},{"style":3638},[7999],{"type":3108,"value":3683},{"type":3103,"tag":3473,"props":8001,"children":8002},{"class":3475,"line":3505},[8003,8007,8011],{"type":3103,"tag":3473,"props":8004,"children":8005},{"style":3647},[8006],{"type":3108,"value":3691},{"type":3103,"tag":3473,"props":8008,"children":8009},{"style":3638},[8010],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":8012,"children":8013},{"style":3638},[8014],{"type":3108,"value":3700},{"type":3103,"tag":3473,"props":8016,"children":8017},{"class":3475,"line":3514},[8018,8023,8027],{"type":3103,"tag":3473,"props":8019,"children":8020},{"style":3647},[8021],{"type":3108,"value":8022},"    log",{"type":3103,"tag":3473,"props":8024,"children":8025},{"style":3638},[8026],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":8028,"children":8029},{"style":3638},[8030],{"type":3108,"value":3700},{"type":3103,"tag":3473,"props":8032,"children":8033},{"class":3475,"line":3067},[8034,8039,8043,8047,8052,8056,8060],{"type":3103,"tag":3473,"props":8035,"children":8036},{"style":3647},[8037],{"type":3108,"value":8038},"      path",{"type":3103,"tag":3473,"props":8040,"children":8041},{"style":3638},[8042],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":8044,"children":8045},{"style":3638},[8046],{"type":3108,"value":4181},{"type":3103,"tag":3473,"props":8048,"children":8049},{"style":3494},[8050],{"type":3108,"value":8051},"\u002Fvar\u002Flog\u002Fnuxt-api-shield",{"type":3103,"tag":3473,"props":8053,"children":8054},{"style":3638},[8055],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":8057,"children":8058},{"style":3638},[8059],{"type":3108,"value":3875},{"type":3103,"tag":3473,"props":8061,"children":8062},{"style":3479},[8063],{"type":3108,"value":8064}," \u002F\u002F required — must be set\n",{"type":3103,"tag":3473,"props":8066,"children":8067},{"class":3475,"line":3539},[8068,8073,8077,8082,8086],{"type":3103,"tag":3473,"props":8069,"children":8070},{"style":3647},[8071],{"type":3108,"value":8072},"      attempts",{"type":3103,"tag":3473,"props":8074,"children":8075},{"style":3638},[8076],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":8078,"children":8079},{"style":3913},[8080],{"type":3108,"value":8081}," 1",{"type":3103,"tag":3473,"props":8083,"children":8084},{"style":3638},[8085],{"type":3108,"value":3875},{"type":3103,"tag":3473,"props":8087,"children":8088},{"style":3479},[8089],{"type":3108,"value":8090},"                       \u002F\u002F optional — threshold for regular request logging\n",{"type":3103,"tag":3473,"props":8092,"children":8093},{"class":3475,"line":3547},[8094,8099,8103,8107,8111],{"type":3103,"tag":3473,"props":8095,"children":8096},{"style":3647},[8097],{"type":3108,"value":8098},"      fail2ban",{"type":3103,"tag":3473,"props":8100,"children":8101},{"style":3638},[8102],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":8104,"children":8105},{"style":3967},[8106],{"type":3108,"value":4160},{"type":3103,"tag":3473,"props":8108,"children":8109},{"style":3638},[8110],{"type":3108,"value":3875},{"type":3103,"tag":3473,"props":8112,"children":8113},{"style":3479},[8114],{"type":3108,"value":8115},"                     \u002F\u002F enable fail2ban format\n",{"type":3103,"tag":3473,"props":8117,"children":8118},{"class":3475,"line":3092},[8119],{"type":3103,"tag":3473,"props":8120,"children":8121},{"style":3638},[8122],{"type":3108,"value":3749},{"type":3103,"tag":3473,"props":8124,"children":8125},{"class":3475,"line":3743},[8126],{"type":3103,"tag":3473,"props":8127,"children":8128},{"style":3638},[8129],{"type":3108,"value":3996},{"type":3103,"tag":3473,"props":8131,"children":8132},{"class":3475,"line":3752},[8133,8137],{"type":3103,"tag":3473,"props":8134,"children":8135},{"style":3638},[8136],{"type":3108,"value":4005},{"type":3103,"tag":3473,"props":8138,"children":8139},{"style":3632},[8140],{"type":3108,"value":8141},")\n",{"type":3103,"tag":3110,"props":8143,"children":8144},{},[8145],{"type":3108,"value":8146},"When enabled, every ban event writes a line like:",{"type":3103,"tag":3463,"props":8148,"children":8152},{"className":8149,"code":8151,"language":3108},[8150],"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",[8153],{"type":3103,"tag":3260,"props":8154,"children":8155},{"__ignoreMap":3047},[8156],{"type":3108,"value":8151},{"type":3103,"tag":3449,"props":8158,"children":8160},{"id":8159},"fail2ban-filter-configuration",[8161],{"type":3108,"value":8162},"Fail2ban filter configuration",{"type":3103,"tag":3110,"props":8164,"children":8165},{},[8166,8168,8174],{"type":3108,"value":8167},"Create ",{"type":3103,"tag":3260,"props":8169,"children":8171},{"className":8170},[],[8172],{"type":3108,"value":8173},"\u002Fetc\u002Ffail2ban\u002Ffilter.d\u002Fnuxt-api-shield.conf",{"type":3108,"value":3655},{"type":3103,"tag":3463,"props":8176,"children":8180},{"className":8177,"code":8178,"language":8179,"meta":3047,"style":3047},"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",[8181],{"type":3103,"tag":3260,"props":8182,"children":8183},{"__ignoreMap":3047},[8184,8192],{"type":3103,"tag":3473,"props":8185,"children":8186},{"class":3475,"line":3075},[8187],{"type":3103,"tag":3473,"props":8188,"children":8189},{"style":3638},[8190],{"type":3108,"value":8191},"[Definition]\n",{"type":3103,"tag":3473,"props":8193,"children":8194},{"class":3475,"line":3071},[8195,8200,8204],{"type":3103,"tag":3473,"props":8196,"children":8197},{"style":3647},[8198],{"type":3108,"value":8199},"failregex",{"type":3103,"tag":3473,"props":8201,"children":8202},{"style":3638},[8203],{"type":3108,"value":5586},{"type":3103,"tag":3473,"props":8205,"children":8206},{"style":3632},[8207],{"type":3108,"value":8208}," ^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2},\\d{3} nuxt-api-shield ban \u003CHOST>\n",{"type":3103,"tag":3449,"props":8210,"children":8212},{"id":8211},"jail-configuration",[8213],{"type":3108,"value":8214},"Jail configuration",{"type":3103,"tag":3110,"props":8216,"children":8217},{},[8218,8220,8226],{"type":3108,"value":8219},"Add a jail entry in ",{"type":3103,"tag":3260,"props":8221,"children":8223},{"className":8222},[],[8224],{"type":3108,"value":8225},"\u002Fetc\u002Ffail2ban\u002Fjail.local",{"type":3108,"value":3655},{"type":3103,"tag":3463,"props":8228,"children":8230},{"className":8177,"code":8229,"language":8179,"meta":3047,"style":3047},"[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",[8231],{"type":3103,"tag":3260,"props":8232,"children":8233},{"__ignoreMap":3047},[8234,8242,8259,8276,8293,8310,8327,8344,8360],{"type":3103,"tag":3473,"props":8235,"children":8236},{"class":3475,"line":3075},[8237],{"type":3103,"tag":3473,"props":8238,"children":8239},{"style":3638},[8240],{"type":3108,"value":8241},"[nuxt-api-shield]\n",{"type":3103,"tag":3473,"props":8243,"children":8244},{"class":3475,"line":3071},[8245,8250,8255],{"type":3103,"tag":3473,"props":8246,"children":8247},{"style":3647},[8248],{"type":3108,"value":8249},"enabled",{"type":3103,"tag":3473,"props":8251,"children":8252},{"style":3638},[8253],{"type":3108,"value":8254},"  =",{"type":3103,"tag":3473,"props":8256,"children":8257},{"style":3632},[8258],{"type":3108,"value":5174},{"type":3103,"tag":3473,"props":8260,"children":8261},{"class":3475,"line":3505},[8262,8267,8272],{"type":3103,"tag":3473,"props":8263,"children":8264},{"style":3647},[8265],{"type":3108,"value":8266},"filter",{"type":3103,"tag":3473,"props":8268,"children":8269},{"style":3638},[8270],{"type":3108,"value":8271},"   =",{"type":3103,"tag":3473,"props":8273,"children":8274},{"style":3632},[8275],{"type":3108,"value":3502},{"type":3103,"tag":3473,"props":8277,"children":8278},{"class":3475,"line":3514},[8279,8284,8288],{"type":3103,"tag":3473,"props":8280,"children":8281},{"style":3647},[8282],{"type":3108,"value":8283},"logpath",{"type":3103,"tag":3473,"props":8285,"children":8286},{"style":3638},[8287],{"type":3108,"value":8254},{"type":3103,"tag":3473,"props":8289,"children":8290},{"style":3632},[8291],{"type":3108,"value":8292}," \u002Fvar\u002Flog\u002Fnuxt-api-shield\u002Fshield-*.log\n",{"type":3103,"tag":3473,"props":8294,"children":8295},{"class":3475,"line":3067},[8296,8300,8305],{"type":3103,"tag":3473,"props":8297,"children":8298},{"style":3647},[8299],{"type":3108,"value":4970},{"type":3103,"tag":3473,"props":8301,"children":8302},{"style":3638},[8303],{"type":3108,"value":8304},"     =",{"type":3103,"tag":3473,"props":8306,"children":8307},{"style":3632},[8308],{"type":3108,"value":8309}," http,https\n",{"type":3103,"tag":3473,"props":8311,"children":8312},{"class":3475,"line":3539},[8313,8318,8322],{"type":3103,"tag":3473,"props":8314,"children":8315},{"style":3647},[8316],{"type":3108,"value":8317},"banaction",{"type":3103,"tag":3473,"props":8319,"children":8320},{"style":3638},[8321],{"type":3108,"value":5586},{"type":3103,"tag":3473,"props":8323,"children":8324},{"style":3632},[8325],{"type":3108,"value":8326}," iptables-multiport\n",{"type":3103,"tag":3473,"props":8328,"children":8329},{"class":3475,"line":3547},[8330,8335,8339],{"type":3103,"tag":3473,"props":8331,"children":8332},{"style":3647},[8333],{"type":3108,"value":8334},"maxretry",{"type":3103,"tag":3473,"props":8336,"children":8337},{"style":3638},[8338],{"type":3108,"value":5586},{"type":3103,"tag":3473,"props":8340,"children":8341},{"style":3632},[8342],{"type":3108,"value":8343}," 1\n",{"type":3103,"tag":3473,"props":8345,"children":8346},{"class":3475,"line":3092},[8347,8352,8356],{"type":3103,"tag":3473,"props":8348,"children":8349},{"style":3647},[8350],{"type":3108,"value":8351},"findtime",{"type":3103,"tag":3473,"props":8353,"children":8354},{"style":3638},[8355],{"type":3108,"value":5586},{"type":3103,"tag":3473,"props":8357,"children":8358},{"style":3632},[8359],{"type":3108,"value":8343},{"type":3103,"tag":3473,"props":8361,"children":8362},{"class":3475,"line":3743},[8363,8368,8372],{"type":3103,"tag":3473,"props":8364,"children":8365},{"style":3647},[8366],{"type":3108,"value":8367},"bantime",{"type":3103,"tag":3473,"props":8369,"children":8370},{"style":3638},[8371],{"type":3108,"value":8254},{"type":3103,"tag":3473,"props":8373,"children":8374},{"style":3632},[8375],{"type":3108,"value":8376}," 3600\n",{"type":3103,"tag":3110,"props":8378,"children":8379},{},[8380,8382,8387,8389,8395,8397,8403,8404,8410,8412,8417],{"type":3108,"value":8381},"Since ",{"type":3103,"tag":3260,"props":8383,"children":8385},{"className":8384},[],[8386],{"type":3108,"value":3044},{"type":3108,"value":8388}," already applies its own ban logic (configurable via ",{"type":3103,"tag":3260,"props":8390,"children":8392},{"className":8391},[],[8393],{"type":3108,"value":8394},"limit.ban",{"type":3108,"value":8396},"), set ",{"type":3103,"tag":3260,"props":8398,"children":8400},{"className":8399},[],[8401],{"type":3108,"value":8402},"maxretry = 1",{"type":3108,"value":3359},{"type":3103,"tag":3260,"props":8405,"children":8407},{"className":8406},[],[8408],{"type":3108,"value":8409},"findtime = 1",{"type":3108,"value":8411}," so fail2ban acts immediately on each ban log entry. Adjust ",{"type":3103,"tag":3260,"props":8413,"children":8415},{"className":8414},[],[8416],{"type":3108,"value":8367},{"type":3108,"value":8418}," to match or extend your module-level ban duration.",{"type":3103,"tag":3110,"props":8420,"children":8421},{},[8422],{"type":3108,"value":8423},"Restart fail2ban after adding the config:",{"type":3103,"tag":3463,"props":8425,"children":8427},{"className":3465,"code":8426,"language":3467,"meta":3047,"style":3047},"sudo systemctl restart fail2ban\n",[8428],{"type":3103,"tag":3260,"props":8429,"children":8430},{"__ignoreMap":3047},[8431],{"type":3103,"tag":3473,"props":8432,"children":8433},{"class":3475,"line":3075},[8434,8439,8444,8449],{"type":3103,"tag":3473,"props":8435,"children":8436},{"style":3488},[8437],{"type":3108,"value":8438},"sudo",{"type":3103,"tag":3473,"props":8440,"children":8441},{"style":3494},[8442],{"type":3108,"value":8443}," systemctl",{"type":3103,"tag":3473,"props":8445,"children":8446},{"style":3494},[8447],{"type":3108,"value":8448}," restart",{"type":3103,"tag":3473,"props":8450,"children":8451},{"style":3494},[8452],{"type":3108,"value":8453}," fail2ban\n",{"type":3103,"tag":8455,"props":8456,"children":8457},"blockquote",{},[8458],{"type":3103,"tag":3110,"props":8459,"children":8460},{},[8461,8466,8468,8473],{"type":3103,"tag":3198,"props":8462,"children":8463},{},[8464],{"type":3108,"value":8465},"Note:",{"type":3108,"value":8467}," The ",{"type":3103,"tag":3260,"props":8469,"children":8471},{"className":8470},[],[8472],{"type":3108,"value":7933},{"type":3108,"value":8474}," directory must be readable by the fail2ban service. Ensure permissions are set accordingly.",{"type":3103,"tag":3186,"props":8476,"children":8478},{"id":8477},"typescript-types",[8479],{"type":3108,"value":8480},"TypeScript Types",{"type":3103,"tag":3110,"props":8482,"children":8483},{},[8484],{"type":3108,"value":8485},"The module exports TypeScript types that you can use in your application:",{"type":3103,"tag":3449,"props":8487,"children":8489},{"id":8488},"ratelimit-type",[8490,8496],{"type":3103,"tag":3260,"props":8491,"children":8493},{"className":8492},[],[8494],{"type":3108,"value":8495},"RateLimit",{"type":3108,"value":8497}," Type",{"type":3103,"tag":3110,"props":8499,"children":8500},{},[8501,8502,8507],{"type":3108,"value":4473},{"type":3103,"tag":3260,"props":8503,"children":8505},{"className":8504},[],[8506],{"type":3108,"value":8495},{"type":3108,"value":8508}," type represents the structure of rate limit data stored for each IP address:",{"type":3103,"tag":3463,"props":8510,"children":8512},{"className":5373,"code":8511,"language":5375,"meta":3047,"style":3047},"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",[8513],{"type":3103,"tag":3260,"props":8514,"children":8515},{"__ignoreMap":3047},[8516,8559,8566,8574,8582,8595,8608],{"type":3103,"tag":3473,"props":8517,"children":8518},{"class":3475,"line":3075},[8519,8523,8527,8531,8535,8539,8543,8547,8551,8555],{"type":3103,"tag":3473,"props":8520,"children":8521},{"style":3615},[8522],{"type":3108,"value":5387},{"type":3103,"tag":3473,"props":8524,"children":8525},{"style":3615},[8526],{"type":3108,"value":6128},{"type":3103,"tag":3473,"props":8528,"children":8529},{"style":3638},[8530],{"type":3108,"value":5392},{"type":3103,"tag":3473,"props":8532,"children":8533},{"style":3632},[8534],{"type":3108,"value":6137},{"type":3103,"tag":3473,"props":8536,"children":8537},{"style":3638},[8538],{"type":3108,"value":5402},{"type":3103,"tag":3473,"props":8540,"children":8541},{"style":3615},[8542],{"type":3108,"value":5407},{"type":3103,"tag":3473,"props":8544,"children":8545},{"style":3638},[8546],{"type":3108,"value":4181},{"type":3103,"tag":3473,"props":8548,"children":8549},{"style":3494},[8550],{"type":3108,"value":3044},{"type":3103,"tag":3473,"props":8552,"children":8553},{"style":3638},[8554],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":8556,"children":8557},{"style":3638},[8558],{"type":3108,"value":4015},{"type":3103,"tag":3473,"props":8560,"children":8561},{"class":3475,"line":3071},[8562],{"type":3103,"tag":3473,"props":8563,"children":8564},{"emptyLinePlaceholder":1200},[8565],{"type":3108,"value":3511},{"type":3103,"tag":3473,"props":8567,"children":8568},{"class":3475,"line":3505},[8569],{"type":3103,"tag":3473,"props":8570,"children":8571},{"style":3479},[8572],{"type":3108,"value":8573},"\u002F\u002F RateLimit structure:\n",{"type":3103,"tag":3473,"props":8575,"children":8576},{"class":3475,"line":3514},[8577],{"type":3103,"tag":3473,"props":8578,"children":8579},{"style":3479},[8580],{"type":3108,"value":8581},"\u002F\u002F {\n",{"type":3103,"tag":3473,"props":8583,"children":8584},{"class":3475,"line":3067},[8585,8590],{"type":3103,"tag":3473,"props":8586,"children":8587},{"style":3479},[8588],{"type":3108,"value":8589},"\u002F\u002F   count: number",{"type":3103,"tag":3473,"props":8591,"children":8592},{"style":3479},[8593],{"type":3108,"value":8594},"  \u002F\u002F Number of requests made\n",{"type":3103,"tag":3473,"props":8596,"children":8597},{"class":3475,"line":3539},[8598,8603],{"type":3103,"tag":3473,"props":8599,"children":8600},{"style":3479},[8601],{"type":3108,"value":8602},"\u002F\u002F   time: number",{"type":3103,"tag":3473,"props":8604,"children":8605},{"style":3479},[8606],{"type":3108,"value":8607},"   \u002F\u002F Timestamp of the last request\n",{"type":3103,"tag":3473,"props":8609,"children":8610},{"class":3475,"line":3547},[8611],{"type":3103,"tag":3473,"props":8612,"children":8613},{"style":3479},[8614],{"type":3108,"value":8615},"\u002F\u002F }\n",{"type":3103,"tag":3110,"props":8617,"children":8618},{},[8619],{"type":3103,"tag":3198,"props":8620,"children":8621},{},[8622],{"type":3108,"value":8623},"Usage Example:",{"type":3103,"tag":3463,"props":8625,"children":8627},{"className":5373,"code":8626,"language":5375,"meta":3047,"style":3047},"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",[8628],{"type":3103,"tag":3260,"props":8629,"children":8630},{"__ignoreMap":3047},[8631,8674,8713,8720,8765,8798,8859,8866,8883,8950,9031],{"type":3103,"tag":3473,"props":8632,"children":8633},{"class":3475,"line":3075},[8634,8638,8642,8646,8650,8654,8658,8662,8666,8670],{"type":3103,"tag":3473,"props":8635,"children":8636},{"style":3615},[8637],{"type":3108,"value":5387},{"type":3103,"tag":3473,"props":8639,"children":8640},{"style":3615},[8641],{"type":3108,"value":6128},{"type":3103,"tag":3473,"props":8643,"children":8644},{"style":3638},[8645],{"type":3108,"value":5392},{"type":3103,"tag":3473,"props":8647,"children":8648},{"style":3632},[8649],{"type":3108,"value":6137},{"type":3103,"tag":3473,"props":8651,"children":8652},{"style":3638},[8653],{"type":3108,"value":5402},{"type":3103,"tag":3473,"props":8655,"children":8656},{"style":3615},[8657],{"type":3108,"value":5407},{"type":3103,"tag":3473,"props":8659,"children":8660},{"style":3638},[8661],{"type":3108,"value":4181},{"type":3103,"tag":3473,"props":8663,"children":8664},{"style":3494},[8665],{"type":3108,"value":3044},{"type":3103,"tag":3473,"props":8667,"children":8668},{"style":3638},[8669],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":8671,"children":8672},{"style":3638},[8673],{"type":3108,"value":4015},{"type":3103,"tag":3473,"props":8675,"children":8676},{"class":3475,"line":3071},[8677,8681,8685,8689,8693,8697,8701,8705,8709],{"type":3103,"tag":3473,"props":8678,"children":8679},{"style":3615},[8680],{"type":3108,"value":5387},{"type":3103,"tag":3473,"props":8682,"children":8683},{"style":3638},[8684],{"type":3108,"value":5392},{"type":3103,"tag":3473,"props":8686,"children":8687},{"style":3632},[8688],{"type":3108,"value":5591},{"type":3103,"tag":3473,"props":8690,"children":8691},{"style":3638},[8692],{"type":3108,"value":5402},{"type":3103,"tag":3473,"props":8694,"children":8695},{"style":3615},[8696],{"type":3108,"value":5407},{"type":3103,"tag":3473,"props":8698,"children":8699},{"style":3638},[8700],{"type":3108,"value":4181},{"type":3103,"tag":3473,"props":8702,"children":8703},{"style":3494},[8704],{"type":3108,"value":5416},{"type":3103,"tag":3473,"props":8706,"children":8707},{"style":3638},[8708],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":8710,"children":8711},{"style":3638},[8712],{"type":3108,"value":4015},{"type":3103,"tag":3473,"props":8714,"children":8715},{"class":3475,"line":3505},[8716],{"type":3103,"tag":3473,"props":8717,"children":8718},{"emptyLinePlaceholder":1200},[8719],{"type":3108,"value":3511},{"type":3103,"tag":3473,"props":8721,"children":8722},{"class":3475,"line":3514},[8723,8727,8732,8737,8741,8745,8749,8753,8757,8761],{"type":3103,"tag":3473,"props":8724,"children":8725},{"style":4660},[8726],{"type":3108,"value":5744},{"type":3103,"tag":3473,"props":8728,"children":8729},{"style":3632},[8730],{"type":3108,"value":8731}," shieldStorage ",{"type":3103,"tag":3473,"props":8733,"children":8734},{"style":3638},[8735],{"type":3108,"value":8736},"=",{"type":3103,"tag":3473,"props":8738,"children":8739},{"style":3626},[8740],{"type":3108,"value":5591},{"type":3103,"tag":3473,"props":8742,"children":8743},{"style":3632},[8744],{"type":3108,"value":3635},{"type":3103,"tag":3473,"props":8746,"children":8747},{"style":3638},[8748],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":8750,"children":8751},{"style":3494},[8752],{"type":3108,"value":4631},{"type":3103,"tag":3473,"props":8754,"children":8755},{"style":3638},[8756],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":8758,"children":8759},{"style":3632},[8760],{"type":3108,"value":4010},{"type":3103,"tag":3473,"props":8762,"children":8763},{"style":3638},[8764],{"type":3108,"value":4015},{"type":3103,"tag":3473,"props":8766,"children":8767},{"class":3475,"line":3067},[8768,8772,8777,8781,8785,8790,8794],{"type":3103,"tag":3473,"props":8769,"children":8770},{"style":4660},[8771],{"type":3108,"value":5744},{"type":3103,"tag":3473,"props":8773,"children":8774},{"style":3632},[8775],{"type":3108,"value":8776}," ipKey ",{"type":3103,"tag":3473,"props":8778,"children":8779},{"style":3638},[8780],{"type":3108,"value":8736},{"type":3103,"tag":3473,"props":8782,"children":8783},{"style":3638},[8784],{"type":3108,"value":4181},{"type":3103,"tag":3473,"props":8786,"children":8787},{"style":3494},[8788],{"type":3108,"value":8789},"ip:192.168.1.1",{"type":3103,"tag":3473,"props":8791,"children":8792},{"style":3638},[8793],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":8795,"children":8796},{"style":3638},[8797],{"type":3108,"value":4015},{"type":3103,"tag":3473,"props":8799,"children":8800},{"class":3475,"line":3539},[8801,8805,8810,8814,8818,8822,8826,8830,8834,8839,8843,8847,8851,8855],{"type":3103,"tag":3473,"props":8802,"children":8803},{"style":4660},[8804],{"type":3108,"value":5744},{"type":3103,"tag":3473,"props":8806,"children":8807},{"style":3632},[8808],{"type":3108,"value":8809}," entry ",{"type":3103,"tag":3473,"props":8811,"children":8812},{"style":3638},[8813],{"type":3108,"value":8736},{"type":3103,"tag":3473,"props":8815,"children":8816},{"style":3632},[8817],{"type":3108,"value":5739},{"type":3103,"tag":3473,"props":8819,"children":8820},{"style":3615},[8821],{"type":3108,"value":6868},{"type":3103,"tag":3473,"props":8823,"children":8824},{"style":3632},[8825],{"type":3108,"value":5581},{"type":3103,"tag":3473,"props":8827,"children":8828},{"style":3638},[8829],{"type":3108,"value":4602},{"type":3103,"tag":3473,"props":8831,"children":8832},{"style":3626},[8833],{"type":3108,"value":5801},{"type":3103,"tag":3473,"props":8835,"children":8836},{"style":3632},[8837],{"type":3108,"value":8838},"(ipKey)) ",{"type":3103,"tag":3473,"props":8840,"children":8841},{"style":3615},[8842],{"type":3108,"value":6897},{"type":3103,"tag":3473,"props":8844,"children":8845},{"style":3488},[8846],{"type":3108,"value":6137},{"type":3103,"tag":3473,"props":8848,"children":8849},{"style":3638},[8850],{"type":3108,"value":6906},{"type":3103,"tag":3473,"props":8852,"children":8853},{"style":3488},[8854],{"type":3108,"value":6911},{"type":3103,"tag":3473,"props":8856,"children":8857},{"style":3638},[8858],{"type":3108,"value":4015},{"type":3103,"tag":3473,"props":8860,"children":8861},{"class":3475,"line":3547},[8862],{"type":3103,"tag":3473,"props":8863,"children":8864},{"emptyLinePlaceholder":1200},[8865],{"type":3108,"value":3511},{"type":3103,"tag":3473,"props":8867,"children":8868},{"class":3475,"line":3092},[8869,8874,8879],{"type":3103,"tag":3473,"props":8870,"children":8871},{"style":3615},[8872],{"type":3108,"value":8873},"if",{"type":3103,"tag":3473,"props":8875,"children":8876},{"style":3632},[8877],{"type":3108,"value":8878}," (entry) ",{"type":3103,"tag":3473,"props":8880,"children":8881},{"style":3638},[8882],{"type":3108,"value":3641},{"type":3103,"tag":3473,"props":8884,"children":8885},{"class":3475,"line":3743},[8886,8891,8895,8899,8903,8907,8912,8916,8920,8924,8929,8933,8938,8942,8946],{"type":3103,"tag":3473,"props":8887,"children":8888},{"style":3632},[8889],{"type":3108,"value":8890},"  console",{"type":3103,"tag":3473,"props":8892,"children":8893},{"style":3638},[8894],{"type":3108,"value":4602},{"type":3103,"tag":3473,"props":8896,"children":8897},{"style":3626},[8898],{"type":3108,"value":5934},{"type":3103,"tag":3473,"props":8900,"children":8901},{"style":3647},[8902],{"type":3108,"value":3635},{"type":3103,"tag":3473,"props":8904,"children":8905},{"style":3638},[8906],{"type":3108,"value":5943},{"type":3103,"tag":3473,"props":8908,"children":8909},{"style":3494},[8910],{"type":3108,"value":8911},"IP has made ",{"type":3103,"tag":3473,"props":8913,"children":8914},{"style":3638},[8915],{"type":3108,"value":5953},{"type":3103,"tag":3473,"props":8917,"children":8918},{"style":3632},[8919],{"type":3108,"value":6948},{"type":3103,"tag":3473,"props":8921,"children":8922},{"style":3638},[8923],{"type":3108,"value":4602},{"type":3103,"tag":3473,"props":8925,"children":8926},{"style":3632},[8927],{"type":3108,"value":8928},"count",{"type":3103,"tag":3473,"props":8930,"children":8931},{"style":3638},[8932],{"type":3108,"value":4005},{"type":3103,"tag":3473,"props":8934,"children":8935},{"style":3494},[8936],{"type":3108,"value":8937}," requests",{"type":3103,"tag":3473,"props":8939,"children":8940},{"style":3638},[8941],{"type":3108,"value":5943},{"type":3103,"tag":3473,"props":8943,"children":8944},{"style":3647},[8945],{"type":3108,"value":4010},{"type":3103,"tag":3473,"props":8947,"children":8948},{"style":3638},[8949],{"type":3108,"value":4015},{"type":3103,"tag":3473,"props":8951,"children":8952},{"class":3475,"line":3752},[8953,8957,8961,8965,8969,8973,8978,8982,8987,8991,8996,9000,9005,9009,9014,9018,9023,9027],{"type":3103,"tag":3473,"props":8954,"children":8955},{"style":3632},[8956],{"type":3108,"value":8890},{"type":3103,"tag":3473,"props":8958,"children":8959},{"style":3638},[8960],{"type":3108,"value":4602},{"type":3103,"tag":3473,"props":8962,"children":8963},{"style":3626},[8964],{"type":3108,"value":5934},{"type":3103,"tag":3473,"props":8966,"children":8967},{"style":3647},[8968],{"type":3108,"value":3635},{"type":3103,"tag":3473,"props":8970,"children":8971},{"style":3638},[8972],{"type":3108,"value":5943},{"type":3103,"tag":3473,"props":8974,"children":8975},{"style":3494},[8976],{"type":3108,"value":8977},"Last request at: ",{"type":3103,"tag":3473,"props":8979,"children":8980},{"style":3638},[8981],{"type":3108,"value":5953},{"type":3103,"tag":3473,"props":8983,"children":8984},{"style":3638},[8985],{"type":3108,"value":8986},"new",{"type":3103,"tag":3473,"props":8988,"children":8989},{"style":3626},[8990],{"type":3108,"value":6761},{"type":3103,"tag":3473,"props":8992,"children":8993},{"style":3632},[8994],{"type":3108,"value":8995},"(entry",{"type":3103,"tag":3473,"props":8997,"children":8998},{"style":3638},[8999],{"type":3108,"value":4602},{"type":3103,"tag":3473,"props":9001,"children":9002},{"style":3632},[9003],{"type":3108,"value":9004},"time)",{"type":3103,"tag":3473,"props":9006,"children":9007},{"style":3638},[9008],{"type":3108,"value":4602},{"type":3103,"tag":3473,"props":9010,"children":9011},{"style":3626},[9012],{"type":3108,"value":9013},"toISOString",{"type":3103,"tag":3473,"props":9015,"children":9016},{"style":3632},[9017],{"type":3108,"value":5564},{"type":3103,"tag":3473,"props":9019,"children":9020},{"style":3638},[9021],{"type":3108,"value":9022},"}`",{"type":3103,"tag":3473,"props":9024,"children":9025},{"style":3647},[9026],{"type":3108,"value":4010},{"type":3103,"tag":3473,"props":9028,"children":9029},{"style":3638},[9030],{"type":3108,"value":4015},{"type":3103,"tag":3473,"props":9032,"children":9033},{"class":3475,"line":3761},[9034],{"type":3103,"tag":3473,"props":9035,"children":9036},{"style":3638},[9037],{"type":3108,"value":4454},{"type":3103,"tag":3449,"props":9039,"children":9041},{"id":9040},"moduleoptions-type",[9042,9048],{"type":3103,"tag":3260,"props":9043,"children":9045},{"className":9044},[],[9046],{"type":3108,"value":9047},"ModuleOptions",{"type":3108,"value":8497},{"type":3103,"tag":3110,"props":9050,"children":9051},{},[9052],{"type":3108,"value":9053},"You can also import the module configuration type:",{"type":3103,"tag":3463,"props":9055,"children":9057},{"className":5373,"code":9056,"language":5375,"meta":3047,"style":3047},"import type { ModuleOptions } from \"nuxt-api-shield\";\n",[9058],{"type":3103,"tag":3260,"props":9059,"children":9060},{"__ignoreMap":3047},[9061],{"type":3103,"tag":3473,"props":9062,"children":9063},{"class":3475,"line":3075},[9064,9068,9072,9076,9081,9085,9089,9093,9097,9101],{"type":3103,"tag":3473,"props":9065,"children":9066},{"style":3615},[9067],{"type":3108,"value":5387},{"type":3103,"tag":3473,"props":9069,"children":9070},{"style":3615},[9071],{"type":3108,"value":6128},{"type":3103,"tag":3473,"props":9073,"children":9074},{"style":3638},[9075],{"type":3108,"value":5392},{"type":3103,"tag":3473,"props":9077,"children":9078},{"style":3632},[9079],{"type":3108,"value":9080}," ModuleOptions",{"type":3103,"tag":3473,"props":9082,"children":9083},{"style":3638},[9084],{"type":3108,"value":5402},{"type":3103,"tag":3473,"props":9086,"children":9087},{"style":3615},[9088],{"type":3108,"value":5407},{"type":3103,"tag":3473,"props":9090,"children":9091},{"style":3638},[9092],{"type":3108,"value":4181},{"type":3103,"tag":3473,"props":9094,"children":9095},{"style":3494},[9096],{"type":3108,"value":3044},{"type":3103,"tag":3473,"props":9098,"children":9099},{"style":3638},[9100],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":9102,"children":9103},{"style":3638},[9104],{"type":3108,"value":4015},{"type":3103,"tag":3186,"props":9106,"children":9108},{"id":9107},"per-route-rate-limiting",[9109],{"type":3108,"value":9110},"Per-Route Rate Limiting",{"type":3103,"tag":3110,"props":9112,"children":9113},{},[9114,9119,9121,9126],{"type":3103,"tag":3260,"props":9115,"children":9117},{"className":9116},[],[9118],{"type":3108,"value":3044},{"type":3108,"value":9120}," supports ",{"type":3103,"tag":3198,"props":9122,"children":9123},{},[9124],{"type":3108,"value":9125},"per-route rate limiting",{"type":3108,"value":9127},", allowing you to define custom limits for specific API endpoints while keeping a global default configuration for all other routes.",{"type":3103,"tag":3110,"props":9129,"children":9130},{},[9131,9133,9139,9140,9146,9148,9154],{"type":3108,"value":9132},"This is useful when certain endpoints (such as ",{"type":3103,"tag":3260,"props":9134,"children":9136},{"className":9135},[],[9137],{"type":3108,"value":9138},"\u002Fapi\u002Flogin",{"type":3108,"value":3425},{"type":3103,"tag":3260,"props":9141,"children":9143},{"className":9142},[],[9144],{"type":3108,"value":9145},"\u002Fapi\u002Fauth",{"type":3108,"value":9147},", or ",{"type":3103,"tag":3260,"props":9149,"children":9151},{"className":9150},[],[9152],{"type":3108,"value":9153},"\u002Fapi\u002Fpayment",{"type":3108,"value":9155},") require stricter protection.",{"type":3103,"tag":9157,"props":9158,"children":9159},"hr",{},[],{"type":3103,"tag":3449,"props":9161,"children":9163},{"id":9162},"configuration-example",[9164],{"type":3108,"value":9165},"Configuration Example",{"type":3103,"tag":3110,"props":9167,"children":9168},{},[9169,9170,9176],{"type":3108,"value":4473},{"type":3103,"tag":3260,"props":9171,"children":9173},{"className":9172},[],[9174],{"type":3108,"value":9175},"routes",{"type":3108,"value":9177}," option accepts a mixed array of strings (exact matches) and objects (custom limits or patterns).",{"type":3103,"tag":3463,"props":9179,"children":9181},{"className":5373,"code":9180,"language":5375,"meta":3047,"style":3047},"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",[9182],{"type":3103,"tag":3260,"props":9183,"children":9184},{"__ignoreMap":3047},[9185,9208,9243,9250,9265,9281,9301,9321,9341,9348,9355,9372,9380,9400,9407,9415,9423,9452,9473,9494,9502,9510,9517,9525,9532,9560,9580,9599,9615,9622,9634,9641],{"type":3103,"tag":3473,"props":9186,"children":9187},{"class":3475,"line":3075},[9188,9192,9196,9200,9204],{"type":3103,"tag":3473,"props":9189,"children":9190},{"style":3615},[9191],{"type":3108,"value":3618},{"type":3103,"tag":3473,"props":9193,"children":9194},{"style":3615},[9195],{"type":3108,"value":3623},{"type":3103,"tag":3473,"props":9197,"children":9198},{"style":3626},[9199],{"type":3108,"value":3629},{"type":3103,"tag":3473,"props":9201,"children":9202},{"style":3632},[9203],{"type":3108,"value":3635},{"type":3103,"tag":3473,"props":9205,"children":9206},{"style":3638},[9207],{"type":3108,"value":3641},{"type":3103,"tag":3473,"props":9209,"children":9210},{"class":3475,"line":3071},[9211,9215,9219,9223,9227,9231,9235,9239],{"type":3103,"tag":3473,"props":9212,"children":9213},{"style":3647},[9214],{"type":3108,"value":3650},{"type":3103,"tag":3473,"props":9216,"children":9217},{"style":3638},[9218],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":9220,"children":9221},{"style":3632},[9222],{"type":3108,"value":3660},{"type":3103,"tag":3473,"props":9224,"children":9225},{"style":3638},[9226],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":9228,"children":9229},{"style":3494},[9230],{"type":3108,"value":3044},{"type":3103,"tag":3473,"props":9232,"children":9233},{"style":3638},[9234],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":9236,"children":9237},{"style":3632},[9238],{"type":3108,"value":3678},{"type":3103,"tag":3473,"props":9240,"children":9241},{"style":3638},[9242],{"type":3108,"value":3683},{"type":3103,"tag":3473,"props":9244,"children":9245},{"class":3475,"line":3505},[9246],{"type":3103,"tag":3473,"props":9247,"children":9248},{"emptyLinePlaceholder":1200},[9249],{"type":3108,"value":3511},{"type":3103,"tag":3473,"props":9251,"children":9252},{"class":3475,"line":3514},[9253,9257,9261],{"type":3103,"tag":3473,"props":9254,"children":9255},{"style":3647},[9256],{"type":3108,"value":3691},{"type":3103,"tag":3473,"props":9258,"children":9259},{"style":3638},[9260],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":9262,"children":9263},{"style":3638},[9264],{"type":3108,"value":3700},{"type":3103,"tag":3473,"props":9266,"children":9267},{"class":3475,"line":3067},[9268,9273,9277],{"type":3103,"tag":3473,"props":9269,"children":9270},{"style":3647},[9271],{"type":3108,"value":9272},"    limit",{"type":3103,"tag":3473,"props":9274,"children":9275},{"style":3638},[9276],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":9278,"children":9279},{"style":3638},[9280],{"type":3108,"value":3700},{"type":3103,"tag":3473,"props":9282,"children":9283},{"class":3475,"line":3539},[9284,9289,9293,9297],{"type":3103,"tag":3473,"props":9285,"children":9286},{"style":3647},[9287],{"type":3108,"value":9288},"      max",{"type":3103,"tag":3473,"props":9290,"children":9291},{"style":3638},[9292],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":9294,"children":9295},{"style":3913},[9296],{"type":3108,"value":4080},{"type":3103,"tag":3473,"props":9298,"children":9299},{"style":3638},[9300],{"type":3108,"value":3683},{"type":3103,"tag":3473,"props":9302,"children":9303},{"class":3475,"line":3547},[9304,9309,9313,9317],{"type":3103,"tag":3473,"props":9305,"children":9306},{"style":3647},[9307],{"type":3108,"value":9308},"      duration",{"type":3103,"tag":3473,"props":9310,"children":9311},{"style":3638},[9312],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":9314,"children":9315},{"style":3913},[9316],{"type":3108,"value":4101},{"type":3103,"tag":3473,"props":9318,"children":9319},{"style":3638},[9320],{"type":3108,"value":3683},{"type":3103,"tag":3473,"props":9322,"children":9323},{"class":3475,"line":3092},[9324,9329,9333,9337],{"type":3103,"tag":3473,"props":9325,"children":9326},{"style":3647},[9327],{"type":3108,"value":9328},"      ban",{"type":3103,"tag":3473,"props":9330,"children":9331},{"style":3638},[9332],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":9334,"children":9335},{"style":3913},[9336],{"type":3108,"value":4127},{"type":3103,"tag":3473,"props":9338,"children":9339},{"style":3638},[9340],{"type":3108,"value":3683},{"type":3103,"tag":3473,"props":9342,"children":9343},{"class":3475,"line":3743},[9344],{"type":3103,"tag":3473,"props":9345,"children":9346},{"style":3638},[9347],{"type":3108,"value":3749},{"type":3103,"tag":3473,"props":9349,"children":9350},{"class":3475,"line":3752},[9351],{"type":3103,"tag":3473,"props":9352,"children":9353},{"emptyLinePlaceholder":1200},[9354],{"type":3108,"value":3511},{"type":3103,"tag":3473,"props":9356,"children":9357},{"class":3475,"line":3761},[9358,9363,9367],{"type":3103,"tag":3473,"props":9359,"children":9360},{"style":3647},[9361],{"type":3108,"value":9362},"    routes",{"type":3103,"tag":3473,"props":9364,"children":9365},{"style":3638},[9366],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":9368,"children":9369},{"style":3632},[9370],{"type":3108,"value":9371}," [\n",{"type":3103,"tag":3473,"props":9373,"children":9374},{"class":3475,"line":3770},[9375],{"type":3103,"tag":3473,"props":9376,"children":9377},{"style":3479},[9378],{"type":3108,"value":9379},"      \u002F\u002F 1. String: uses the global default limit (exact match)\n",{"type":3103,"tag":3473,"props":9381,"children":9382},{"class":3475,"line":3779},[9383,9387,9392,9396],{"type":3103,"tag":3473,"props":9384,"children":9385},{"style":3638},[9386],{"type":3108,"value":4708},{"type":3103,"tag":3473,"props":9388,"children":9389},{"style":3494},[9390],{"type":3108,"value":9391},"\u002Fapi\u002Fexample",{"type":3103,"tag":3473,"props":9393,"children":9394},{"style":3638},[9395],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":9397,"children":9398},{"style":3638},[9399],{"type":3108,"value":3683},{"type":3103,"tag":3473,"props":9401,"children":9402},{"class":3475,"line":3788},[9403],{"type":3103,"tag":3473,"props":9404,"children":9405},{"emptyLinePlaceholder":1200},[9406],{"type":3108,"value":3511},{"type":3103,"tag":3473,"props":9408,"children":9409},{"class":3475,"line":3797},[9410],{"type":3103,"tag":3473,"props":9411,"children":9412},{"style":3479},[9413],{"type":3108,"value":9414},"      \u002F\u002F 2. Object: custom rate limit for a specific route (exact match)\n",{"type":3103,"tag":3473,"props":9416,"children":9417},{"class":3475,"line":3806},[9418],{"type":3103,"tag":3473,"props":9419,"children":9420},{"style":3638},[9421],{"type":3108,"value":9422},"      {\n",{"type":3103,"tag":3473,"props":9424,"children":9425},{"class":3475,"line":3815},[9426,9431,9435,9439,9444,9448],{"type":3103,"tag":3473,"props":9427,"children":9428},{"style":3647},[9429],{"type":3108,"value":9430},"        path",{"type":3103,"tag":3473,"props":9432,"children":9433},{"style":3638},[9434],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":9436,"children":9437},{"style":3638},[9438],{"type":3108,"value":4181},{"type":3103,"tag":3473,"props":9440,"children":9441},{"style":3494},[9442],{"type":3108,"value":9443},"\u002Fapi\u002Fexample-per-route",{"type":3103,"tag":3473,"props":9445,"children":9446},{"style":3638},[9447],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":9449,"children":9450},{"style":3638},[9451],{"type":3108,"value":3683},{"type":3103,"tag":3473,"props":9453,"children":9454},{"class":3475,"line":3823},[9455,9460,9464,9469],{"type":3103,"tag":3473,"props":9456,"children":9457},{"style":3647},[9458],{"type":3108,"value":9459},"        max",{"type":3103,"tag":3473,"props":9461,"children":9462},{"style":3638},[9463],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":9465,"children":9466},{"style":3913},[9467],{"type":3108,"value":9468}," 5",{"type":3103,"tag":3473,"props":9470,"children":9471},{"style":3638},[9472],{"type":3108,"value":3683},{"type":3103,"tag":3473,"props":9474,"children":9475},{"class":3475,"line":3832},[9476,9481,9485,9490],{"type":3103,"tag":3473,"props":9477,"children":9478},{"style":3647},[9479],{"type":3108,"value":9480},"        duration",{"type":3103,"tag":3473,"props":9482,"children":9483},{"style":3638},[9484],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":9486,"children":9487},{"style":3913},[9488],{"type":3108,"value":9489}," 10",{"type":3103,"tag":3473,"props":9491,"children":9492},{"style":3638},[9493],{"type":3108,"value":3683},{"type":3103,"tag":3473,"props":9495,"children":9496},{"class":3475,"line":3841},[9497],{"type":3103,"tag":3473,"props":9498,"children":9499},{"style":3479},[9500],{"type":3108,"value":9501},"        \u002F\u002F \"ban\" can also be overridden per route\n",{"type":3103,"tag":3473,"props":9503,"children":9504},{"class":3475,"line":3855},[9505],{"type":3103,"tag":3473,"props":9506,"children":9507},{"style":3638},[9508],{"type":3108,"value":9509},"      },\n",{"type":3103,"tag":3473,"props":9511,"children":9512},{"class":3475,"line":3883},[9513],{"type":3103,"tag":3473,"props":9514,"children":9515},{"emptyLinePlaceholder":1200},[9516],{"type":3108,"value":3511},{"type":3103,"tag":3473,"props":9518,"children":9519},{"class":3475,"line":3891},[9520],{"type":3103,"tag":3473,"props":9521,"children":9522},{"style":3479},[9523],{"type":3108,"value":9524},"      \u002F\u002F 3. Object: Wildcard pattern\n",{"type":3103,"tag":3473,"props":9526,"children":9527},{"class":3475,"line":3900},[9528],{"type":3103,"tag":3473,"props":9529,"children":9530},{"style":3638},[9531],{"type":3108,"value":9422},{"type":3103,"tag":3473,"props":9533,"children":9534},{"class":3475,"line":3928},[9535,9539,9543,9547,9552,9556],{"type":3103,"tag":3473,"props":9536,"children":9537},{"style":3647},[9538],{"type":3108,"value":9430},{"type":3103,"tag":3473,"props":9540,"children":9541},{"style":3638},[9542],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":9544,"children":9545},{"style":3638},[9546],{"type":3108,"value":4181},{"type":3103,"tag":3473,"props":9548,"children":9549},{"style":3494},[9550],{"type":3108,"value":9551},"\u002Fapi\u002Fusers\u002F*\u002Fprofile",{"type":3103,"tag":3473,"props":9553,"children":9554},{"style":3638},[9555],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":9557,"children":9558},{"style":3638},[9559],{"type":3108,"value":3683},{"type":3103,"tag":3473,"props":9561,"children":9562},{"class":3475,"line":3945},[9563,9568,9572,9576],{"type":3103,"tag":3473,"props":9564,"children":9565},{"style":3647},[9566],{"type":3108,"value":9567},"        pattern",{"type":3103,"tag":3473,"props":9569,"children":9570},{"style":3638},[9571],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":9573,"children":9574},{"style":3967},[9575],{"type":3108,"value":4160},{"type":3103,"tag":3473,"props":9577,"children":9578},{"style":3638},[9579],{"type":3108,"value":3683},{"type":3103,"tag":3473,"props":9581,"children":9582},{"class":3475,"line":3954},[9583,9587,9591,9595],{"type":3103,"tag":3473,"props":9584,"children":9585},{"style":3647},[9586],{"type":3108,"value":9459},{"type":3103,"tag":3473,"props":9588,"children":9589},{"style":3638},[9590],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":9592,"children":9593},{"style":3913},[9594],{"type":3108,"value":9489},{"type":3103,"tag":3473,"props":9596,"children":9597},{"style":3638},[9598],{"type":3108,"value":3683},{"type":3103,"tag":3473,"props":9600,"children":9601},{"class":3475,"line":3982},[9602,9606,9610],{"type":3103,"tag":3473,"props":9603,"children":9604},{"style":3647},[9605],{"type":3108,"value":9480},{"type":3103,"tag":3473,"props":9607,"children":9608},{"style":3638},[9609],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":9611,"children":9612},{"style":3913},[9613],{"type":3108,"value":9614}," 60\n",{"type":3103,"tag":3473,"props":9616,"children":9617},{"class":3475,"line":3990},[9618],{"type":3103,"tag":3473,"props":9619,"children":9620},{"style":3638},[9621],{"type":3108,"value":4775},{"type":3103,"tag":3473,"props":9623,"children":9624},{"class":3475,"line":3999},[9625,9630],{"type":3103,"tag":3473,"props":9626,"children":9627},{"style":3632},[9628],{"type":3108,"value":9629},"    ]",{"type":3103,"tag":3473,"props":9631,"children":9632},{"style":3638},[9633],{"type":3108,"value":3683},{"type":3103,"tag":3473,"props":9635,"children":9636},{"class":3475,"line":6925},[9637],{"type":3103,"tag":3473,"props":9638,"children":9639},{"style":3638},[9640],{"type":3108,"value":3996},{"type":3103,"tag":3473,"props":9642,"children":9643},{"class":3475,"line":6934},[9644,9648,9652],{"type":3103,"tag":3473,"props":9645,"children":9646},{"style":3638},[9647],{"type":3108,"value":4005},{"type":3103,"tag":3473,"props":9649,"children":9650},{"style":3632},[9651],{"type":3108,"value":4010},{"type":3103,"tag":3473,"props":9653,"children":9654},{"style":3638},[9655],{"type":3108,"value":4015},{"type":3103,"tag":3449,"props":9657,"children":9659},{"id":9658},"wildcard-route-support",[9660],{"type":3108,"value":9661},"Wildcard Route Support",{"type":3103,"tag":3110,"props":9663,"children":9664},{},[9665,9667,9673],{"type":3108,"value":9666},"Wildcard patterns allow you to apply the same limits to groups of related API endpoints. Enable them by setting ",{"type":3103,"tag":3260,"props":9668,"children":9670},{"className":9669},[],[9671],{"type":3108,"value":9672},"pattern: true",{"type":3108,"value":9674}," in your route configuration.",{"type":3103,"tag":5339,"props":9676,"children":9678},{"id":9677},"wildcard-pattern-syntax",[9679],{"type":3108,"value":9680},"Wildcard Pattern Syntax",{"type":3103,"tag":3160,"props":9682,"children":9683},{},[9684,9728],{"type":3103,"tag":3164,"props":9685,"children":9686},{},[9687,9699,9701],{"type":3103,"tag":3198,"props":9688,"children":9689},{},[9690,9692,9698],{"type":3108,"value":9691},"Single-Segment Wildcard (",{"type":3103,"tag":3260,"props":9693,"children":9695},{"className":9694},[],[9696],{"type":3108,"value":9697},"*",{"type":3108,"value":4010},{"type":3108,"value":9700},": Matches exactly one path segment.\n",{"type":3103,"tag":3160,"props":9702,"children":9703},{},[9704],{"type":3103,"tag":3164,"props":9705,"children":9706},{},[9707,9712,9714,9720,9721,9727],{"type":3103,"tag":3260,"props":9708,"children":9710},{"className":9709},[],[9711],{"type":3108,"value":9551},{"type":3108,"value":9713}," matches ",{"type":3103,"tag":3260,"props":9715,"children":9717},{"className":9716},[],[9718],{"type":3108,"value":9719},"\u002Fapi\u002Fusers\u002F123\u002Fprofile",{"type":3108,"value":7394},{"type":3103,"tag":3260,"props":9722,"children":9724},{"className":9723},[],[9725],{"type":3108,"value":9726},"\u002Fapi\u002Fusers\u002Fadmin\u002Fprofile",{"type":3108,"value":4602},{"type":3103,"tag":3164,"props":9729,"children":9730},{},[9731,9743,9745],{"type":3103,"tag":3198,"props":9732,"children":9733},{},[9734,9736,9742],{"type":3108,"value":9735},"Multi-Segment Wildcard (",{"type":3103,"tag":3260,"props":9737,"children":9739},{"className":9738},[],[9740],{"type":3108,"value":9741},"**",{"type":3108,"value":4010},{"type":3108,"value":9744},": Matches zero or more path segments.\n",{"type":3103,"tag":3160,"props":9746,"children":9747},{},[9748],{"type":3103,"tag":3164,"props":9749,"children":9750},{},[9751,9757,9758,9764,9765,9771],{"type":3103,"tag":3260,"props":9752,"children":9754},{"className":9753},[],[9755],{"type":3108,"value":9756},"\u002Fapi\u002Freports\u002F**\u002Fsummary",{"type":3108,"value":9713},{"type":3103,"tag":3260,"props":9759,"children":9761},{"className":9760},[],[9762],{"type":3108,"value":9763},"\u002Fapi\u002Freports\u002Fmonthly\u002F2023\u002Fsummary",{"type":3108,"value":7394},{"type":3103,"tag":3260,"props":9766,"children":9768},{"className":9767},[],[9769],{"type":3108,"value":9770},"\u002Fapi\u002Freports\u002Fsummary",{"type":3108,"value":4602},{"type":3103,"tag":5339,"props":9773,"children":9775},{"id":9774},"pattern-precedence",[9776],{"type":3108,"value":9777},"Pattern Precedence",{"type":3103,"tag":9779,"props":9780,"children":9781},"ol",{},[9782,9792,9802],{"type":3103,"tag":3164,"props":9783,"children":9784},{},[9785,9790],{"type":3103,"tag":3198,"props":9786,"children":9787},{},[9788],{"type":3108,"value":9789},"Exact matches",{"type":3108,"value":9791}," always take precedence over wildcard patterns.",{"type":3103,"tag":3164,"props":9793,"children":9794},{},[9795,9800],{"type":3103,"tag":3198,"props":9796,"children":9797},{},[9798],{"type":3108,"value":9799},"More specific wildcards",{"type":3108,"value":9801}," take precedence over less specific ones.",{"type":3103,"tag":3164,"props":9803,"children":9804},{},[9805],{"type":3108,"value":9806},"When multiple wildcard patterns match, the most specific one is used.",{"type":3103,"tag":5339,"props":9808,"children":9810},{"id":9809},"important-notes",[9811],{"type":3108,"value":9812},"Important Notes",{"type":3103,"tag":3160,"props":9814,"children":9815},{},[9816,9826],{"type":3103,"tag":3164,"props":9817,"children":9818},{},[9819,9824],{"type":3103,"tag":3198,"props":9820,"children":9821},{},[9822],{"type":3108,"value":9823},"Shared Rate Limits:",{"type":3108,"value":9825}," All requests that match the same wildcard pattern share the same rate limit counter.",{"type":3103,"tag":3164,"props":9827,"children":9828},{},[9829,9834,9836,9842,9843,9849],{"type":3103,"tag":3198,"props":9830,"children":9831},{},[9832],{"type":3108,"value":9833},"Security:",{"type":3108,"value":9835}," Broad or dangerous patterns like ",{"type":3103,"tag":3260,"props":9837,"children":9839},{"className":9838},[],[9840],{"type":3108,"value":9841},"\u002F**",{"type":3108,"value":7394},{"type":3103,"tag":3260,"props":9844,"children":9846},{"className":9845},[],[9847],{"type":3108,"value":9848},"\u002F*",{"type":3108,"value":9850}," are automatically rejected to prevent accidental global blocking.",{"type":3103,"tag":3186,"props":9852,"children":9854},{"id":9853},"skipping-routes",[9855],{"type":3108,"value":9856},"Skipping Routes",{"type":3103,"tag":3110,"props":9858,"children":9859},{},[9860,9861,9867,9869,9874],{"type":3108,"value":4473},{"type":3103,"tag":3260,"props":9862,"children":9864},{"className":9863},[],[9865],{"type":3108,"value":9866},"skipRoutes",{"type":3108,"value":9868}," 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":3103,"tag":3260,"props":9870,"children":9872},{"className":9871},[],[9873],{"type":3108,"value":9175},{"type":3108,"value":9875}," array.",{"type":3103,"tag":3110,"props":9877,"children":9878},{},[9879],{"type":3108,"value":9880},"This is useful for health checks, webhook endpoints, monitoring probes, or internal status routes that should always respond regardless of traffic.",{"type":3103,"tag":3449,"props":9882,"children":9884},{"id":9883},"configuration-example-1",[9885],{"type":3108,"value":9165},{"type":3103,"tag":3463,"props":9887,"children":9889},{"className":5373,"code":9888,"language":5375,"meta":3047,"style":3047},"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",[9890],{"type":3103,"tag":3260,"props":9891,"children":9892},{"__ignoreMap":3047},[9893,9916,9951,9958,9973,9988,10007,10026,10045,10052,10059,10074,10099,10124,10149,10160,10167],{"type":3103,"tag":3473,"props":9894,"children":9895},{"class":3475,"line":3075},[9896,9900,9904,9908,9912],{"type":3103,"tag":3473,"props":9897,"children":9898},{"style":3615},[9899],{"type":3108,"value":3618},{"type":3103,"tag":3473,"props":9901,"children":9902},{"style":3615},[9903],{"type":3108,"value":3623},{"type":3103,"tag":3473,"props":9905,"children":9906},{"style":3626},[9907],{"type":3108,"value":3629},{"type":3103,"tag":3473,"props":9909,"children":9910},{"style":3632},[9911],{"type":3108,"value":3635},{"type":3103,"tag":3473,"props":9913,"children":9914},{"style":3638},[9915],{"type":3108,"value":3641},{"type":3103,"tag":3473,"props":9917,"children":9918},{"class":3475,"line":3071},[9919,9923,9927,9931,9935,9939,9943,9947],{"type":3103,"tag":3473,"props":9920,"children":9921},{"style":3647},[9922],{"type":3108,"value":3650},{"type":3103,"tag":3473,"props":9924,"children":9925},{"style":3638},[9926],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":9928,"children":9929},{"style":3632},[9930],{"type":3108,"value":3660},{"type":3103,"tag":3473,"props":9932,"children":9933},{"style":3638},[9934],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":9936,"children":9937},{"style":3494},[9938],{"type":3108,"value":3044},{"type":3103,"tag":3473,"props":9940,"children":9941},{"style":3638},[9942],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":9944,"children":9945},{"style":3632},[9946],{"type":3108,"value":3678},{"type":3103,"tag":3473,"props":9948,"children":9949},{"style":3638},[9950],{"type":3108,"value":3683},{"type":3103,"tag":3473,"props":9952,"children":9953},{"class":3475,"line":3505},[9954],{"type":3103,"tag":3473,"props":9955,"children":9956},{"emptyLinePlaceholder":1200},[9957],{"type":3108,"value":3511},{"type":3103,"tag":3473,"props":9959,"children":9960},{"class":3475,"line":3514},[9961,9965,9969],{"type":3103,"tag":3473,"props":9962,"children":9963},{"style":3647},[9964],{"type":3108,"value":3691},{"type":3103,"tag":3473,"props":9966,"children":9967},{"style":3638},[9968],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":9970,"children":9971},{"style":3638},[9972],{"type":3108,"value":3700},{"type":3103,"tag":3473,"props":9974,"children":9975},{"class":3475,"line":3067},[9976,9980,9984],{"type":3103,"tag":3473,"props":9977,"children":9978},{"style":3647},[9979],{"type":3108,"value":9272},{"type":3103,"tag":3473,"props":9981,"children":9982},{"style":3638},[9983],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":9985,"children":9986},{"style":3638},[9987],{"type":3108,"value":3700},{"type":3103,"tag":3473,"props":9989,"children":9990},{"class":3475,"line":3539},[9991,9995,9999,10003],{"type":3103,"tag":3473,"props":9992,"children":9993},{"style":3647},[9994],{"type":3108,"value":9288},{"type":3103,"tag":3473,"props":9996,"children":9997},{"style":3638},[9998],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":10000,"children":10001},{"style":3913},[10002],{"type":3108,"value":4080},{"type":3103,"tag":3473,"props":10004,"children":10005},{"style":3638},[10006],{"type":3108,"value":3683},{"type":3103,"tag":3473,"props":10008,"children":10009},{"class":3475,"line":3547},[10010,10014,10018,10022],{"type":3103,"tag":3473,"props":10011,"children":10012},{"style":3647},[10013],{"type":3108,"value":9308},{"type":3103,"tag":3473,"props":10015,"children":10016},{"style":3638},[10017],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":10019,"children":10020},{"style":3913},[10021],{"type":3108,"value":4101},{"type":3103,"tag":3473,"props":10023,"children":10024},{"style":3638},[10025],{"type":3108,"value":3683},{"type":3103,"tag":3473,"props":10027,"children":10028},{"class":3475,"line":3092},[10029,10033,10037,10041],{"type":3103,"tag":3473,"props":10030,"children":10031},{"style":3647},[10032],{"type":3108,"value":9328},{"type":3103,"tag":3473,"props":10034,"children":10035},{"style":3638},[10036],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":10038,"children":10039},{"style":3913},[10040],{"type":3108,"value":4127},{"type":3103,"tag":3473,"props":10042,"children":10043},{"style":3638},[10044],{"type":3108,"value":3683},{"type":3103,"tag":3473,"props":10046,"children":10047},{"class":3475,"line":3743},[10048],{"type":3103,"tag":3473,"props":10049,"children":10050},{"style":3638},[10051],{"type":3108,"value":3749},{"type":3103,"tag":3473,"props":10053,"children":10054},{"class":3475,"line":3752},[10055],{"type":3103,"tag":3473,"props":10056,"children":10057},{"emptyLinePlaceholder":1200},[10058],{"type":3108,"value":3511},{"type":3103,"tag":3473,"props":10060,"children":10061},{"class":3475,"line":3761},[10062,10066,10070],{"type":3103,"tag":3473,"props":10063,"children":10064},{"style":3647},[10065],{"type":3108,"value":3861},{"type":3103,"tag":3473,"props":10067,"children":10068},{"style":3638},[10069],{"type":3108,"value":3655},{"type":3103,"tag":3473,"props":10071,"children":10072},{"style":3632},[10073],{"type":3108,"value":9371},{"type":3103,"tag":3473,"props":10075,"children":10076},{"class":3475,"line":3770},[10077,10081,10086,10090,10094],{"type":3103,"tag":3473,"props":10078,"children":10079},{"style":3638},[10080],{"type":3108,"value":4708},{"type":3103,"tag":3473,"props":10082,"children":10083},{"style":3494},[10084],{"type":3108,"value":10085},"\u002Fapi\u002Fhealth",{"type":3103,"tag":3473,"props":10087,"children":10088},{"style":3638},[10089],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":10091,"children":10092},{"style":3638},[10093],{"type":3108,"value":3875},{"type":3103,"tag":3473,"props":10095,"children":10096},{"style":3479},[10097],{"type":3108,"value":10098},"          \u002F\u002F exact match\n",{"type":3103,"tag":3473,"props":10100,"children":10101},{"class":3475,"line":3779},[10102,10106,10111,10115,10119],{"type":3103,"tag":3473,"props":10103,"children":10104},{"style":3638},[10105],{"type":3108,"value":4708},{"type":3103,"tag":3473,"props":10107,"children":10108},{"style":3494},[10109],{"type":3108,"value":10110},"\u002Fapi\u002F_nuxt\u002F**",{"type":3103,"tag":3473,"props":10112,"children":10113},{"style":3638},[10114],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":10116,"children":10117},{"style":3638},[10118],{"type":3108,"value":3875},{"type":3103,"tag":3473,"props":10120,"children":10121},{"style":3479},[10122],{"type":3108,"value":10123},"        \u002F\u002F multi-segment wildcard\n",{"type":3103,"tag":3473,"props":10125,"children":10126},{"class":3475,"line":3788},[10127,10131,10136,10140,10144],{"type":3103,"tag":3473,"props":10128,"children":10129},{"style":3638},[10130],{"type":3108,"value":4708},{"type":3103,"tag":3473,"props":10132,"children":10133},{"style":3494},[10134],{"type":3108,"value":10135},"\u002Fapi\u002Fwebhooks\u002Fstripe",{"type":3103,"tag":3473,"props":10137,"children":10138},{"style":3638},[10139],{"type":3108,"value":3665},{"type":3103,"tag":3473,"props":10141,"children":10142},{"style":3638},[10143],{"type":3108,"value":3875},{"type":3103,"tag":3473,"props":10145,"children":10146},{"style":3479},[10147],{"type":3108,"value":10148}," \u002F\u002F exact match\n",{"type":3103,"tag":3473,"props":10150,"children":10151},{"class":3475,"line":3797},[10152,10156],{"type":3103,"tag":3473,"props":10153,"children":10154},{"style":3632},[10155],{"type":3108,"value":9629},{"type":3103,"tag":3473,"props":10157,"children":10158},{"style":3638},[10159],{"type":3108,"value":3683},{"type":3103,"tag":3473,"props":10161,"children":10162},{"class":3475,"line":3806},[10163],{"type":3103,"tag":3473,"props":10164,"children":10165},{"style":3638},[10166],{"type":3108,"value":3996},{"type":3103,"tag":3473,"props":10168,"children":10169},{"class":3475,"line":3815},[10170,10174],{"type":3103,"tag":3473,"props":10171,"children":10172},{"style":3638},[10173],{"type":3108,"value":4005},{"type":3103,"tag":3473,"props":10175,"children":10176},{"style":3632},[10177],{"type":3108,"value":8141},{"type":3103,"tag":3449,"props":10179,"children":10181},{"id":10180},"how-it-works",[10182],{"type":3108,"value":10183},"How It Works",{"type":3103,"tag":3160,"props":10185,"children":10186},{},[10187,10199,10211],{"type":3103,"tag":3164,"props":10188,"children":10189},{},[10190,10192,10197],{"type":3108,"value":10191},"Routes in ",{"type":3103,"tag":3260,"props":10193,"children":10195},{"className":10194},[],[10196],{"type":3108,"value":9866},{"type":3108,"value":10198}," bypass the middleware entirely — no ban check, no rate limit counter, no log entry.",{"type":3103,"tag":3164,"props":10200,"children":10201},{},[10202,10204,10209],{"type":3108,"value":10203},"The rest of your API routes (those matching the global defaults or the ",{"type":3103,"tag":3260,"props":10205,"children":10207},{"className":10206},[],[10208],{"type":3108,"value":9175},{"type":3108,"value":10210}," option) continue to be rate limited normally.",{"type":3103,"tag":3164,"props":10212,"children":10213},{},[10214,10216,10221,10223,10228],{"type":3108,"value":10215},"Supports the same wildcard syntax as per-route patterns: ",{"type":3103,"tag":3260,"props":10217,"children":10219},{"className":10218},[],[10220],{"type":3108,"value":9697},{"type":3108,"value":10222}," for single segment, ",{"type":3103,"tag":3260,"props":10224,"children":10226},{"className":10225},[],[10227],{"type":3108,"value":9741},{"type":3108,"value":10229}," for multi-segment.",{"type":3103,"tag":3186,"props":10231,"children":10233},{"id":10232},"important-considerations",[10234],{"type":3108,"value":10235},"Important Considerations",{"type":3103,"tag":3449,"props":10237,"children":10239},{"id":10238},"data-privacy-ip-address-storage",[10240],{"type":3108,"value":10241},"Data Privacy (IP Address Storage)",{"type":3103,"tag":3110,"props":10243,"children":10244},{},[10245,10250],{"type":3103,"tag":3260,"props":10246,"children":10248},{"className":10247},[],[10249],{"type":3108,"value":3044},{"type":3108,"value":10251}," 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":3103,"tag":3160,"props":10253,"children":10254},{},[10255,10296,10306],{"type":3103,"tag":3164,"props":10256,"children":10257},{},[10258,10263],{"type":3103,"tag":3198,"props":10259,"children":10260},{},[10261],{"type":3108,"value":10262},"Data Stored:",{"type":3103,"tag":3160,"props":10264,"children":10265},{},[10266,10285],{"type":3103,"tag":3164,"props":10267,"children":10268},{},[10269,10275,10277,10283],{"type":3103,"tag":3260,"props":10270,"children":10272},{"className":10271},[],[10273],{"type":3108,"value":10274},"ip:\u003CIP_ADDRESS>",{"type":3108,"value":10276},": Stores ",{"type":3103,"tag":3260,"props":10278,"children":10280},{"className":10279},[],[10281],{"type":3108,"value":10282},"{ count: number, time: number }",{"type":3108,"value":10284}," for tracking request rates.",{"type":3103,"tag":3164,"props":10286,"children":10287},{},[10288,10294],{"type":3103,"tag":3260,"props":10289,"children":10291},{"className":10290},[],[10292],{"type":3108,"value":10293},"ban:\u003CIP_ADDRESS>",{"type":3108,"value":10295},": Stores a timestamp indicating when a ban on an IP address expires.",{"type":3103,"tag":3164,"props":10297,"children":10298},{},[10299,10304],{"type":3103,"tag":3198,"props":10300,"children":10301},{},[10302],{"type":3108,"value":10303},"Compliance:",{"type":3108,"value":10305}," 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":3103,"tag":3164,"props":10307,"children":10308},{},[10309,10314],{"type":3103,"tag":3198,"props":10310,"children":10311},{},[10312],{"type":3108,"value":10313},"Data Retention:",{"type":3103,"tag":3160,"props":10315,"children":10316},{},[10317,10329],{"type":3103,"tag":3164,"props":10318,"children":10319},{},[10320,10322,10327],{"type":3108,"value":10321},"Ban entries are cleaned up by the ",{"type":3103,"tag":3260,"props":10323,"children":10325},{"className":10324},[],[10326],{"type":3108,"value":3357},{"type":3108,"value":10328}," task after expiry.",{"type":3103,"tag":3164,"props":10330,"children":10331},{},[10332,10334,10339,10341,10346],{"type":3108,"value":10333},"IP tracking entries are cleaned up by the ",{"type":3103,"tag":3260,"props":10335,"children":10337},{"className":10336},[],[10338],{"type":3108,"value":3365},{"type":3108,"value":10340}," task based on the ",{"type":3103,"tag":3260,"props":10342,"children":10344},{"className":10343},[],[10345],{"type":3108,"value":5063},{"type":3108,"value":10347}," setting.",{"type":3103,"tag":3449,"props":10349,"children":10351},{"id":10350},"storage-security",[10352],{"type":3108,"value":10353},"Storage Security",{"type":3103,"tag":3160,"props":10355,"children":10356},{},[10357,10435],{"type":3103,"tag":3164,"props":10358,"children":10359},{},[10360,10373,10375,10381,10383,10388,10389,10395,10397,10403,10405,10410,10412],{"type":3103,"tag":3198,"props":10361,"children":10362},{},[10363,10365,10371],{"type":3108,"value":10364},"Filesystem Driver (",{"type":3103,"tag":3260,"props":10366,"children":10368},{"className":10367},[],[10369],{"type":3108,"value":10370},"driver: 'fs'",{"type":3108,"value":10372},"):",{"type":3108,"value":10374}," If you use the filesystem driver for ",{"type":3103,"tag":3260,"props":10376,"children":10378},{"className":10377},[],[10379],{"type":3108,"value":10380},"unstorage",{"type":3108,"value":10382}," (e.g., ",{"type":3103,"tag":3260,"props":10384,"children":10386},{"className":10385},[],[10387],{"type":3108,"value":10370},{"type":3108,"value":3425},{"type":3103,"tag":3260,"props":10390,"children":10392},{"className":10391},[],[10393],{"type":3108,"value":10394},"base: '.shield'",{"type":3108,"value":10396},"), ensure that the storage directory (and the ",{"type":3103,"tag":3260,"props":10398,"children":10400},{"className":10399},[],[10401],{"type":3108,"value":10402},"logs",{"type":3108,"value":10404}," directory if logging is enabled via ",{"type":3103,"tag":3260,"props":10406,"children":10408},{"className":10407},[],[10409],{"type":3108,"value":7933},{"type":3108,"value":10411},") is:\n",{"type":3103,"tag":3160,"props":10413,"children":10414},{},[10415,10425],{"type":3103,"tag":3164,"props":10416,"children":10417},{},[10418,10423],{"type":3103,"tag":3198,"props":10419,"children":10420},{},[10421],{"type":3108,"value":10422},"Not web-accessible:",{"type":3108,"value":10424}," Your web server should not be configured to serve files from these directories.",{"type":3103,"tag":3164,"props":10426,"children":10427},{},[10428,10433],{"type":3103,"tag":3198,"props":10429,"children":10430},{},[10431],{"type":3108,"value":10432},"Properly permissioned:",{"type":3108,"value":10434}," The directories should have appropriate server-side file permissions to prevent unauthorized reading or writing.",{"type":3103,"tag":3164,"props":10436,"children":10437},{},[10438,10443],{"type":3103,"tag":3198,"props":10439,"children":10440},{},[10441],{"type":3108,"value":10442},"Other Drivers (Redis, etc.):",{"type":3108,"value":10444}," If using database drivers like Redis, ensure your database server itself is secured (e.g., authentication, network access controls).",{"type":3103,"tag":3449,"props":10446,"children":10448},{"id":10447},"error-message-errormessage",[10449,10451,10457],{"type":3108,"value":10450},"Error Message (",{"type":3103,"tag":3260,"props":10452,"children":10454},{"className":10453},[],[10455],{"type":3108,"value":10456},"errorMessage",{"type":3108,"value":4010},{"type":3103,"tag":3110,"props":10459,"children":10460},{},[10461,10462,10467],{"type":3108,"value":4473},{"type":3103,"tag":3260,"props":10463,"children":10465},{"className":10464},[],[10466],{"type":3108,"value":10456},{"type":3108,"value":10468}," option in the module configuration is returned in the body of a 429 response.",{"type":3103,"tag":3160,"props":10470,"children":10471},{},[10472,10477],{"type":3103,"tag":3164,"props":10473,"children":10474},{},[10475],{"type":3108,"value":10476},"It's recommended to use a plain text message.",{"type":3103,"tag":3164,"props":10478,"children":10479},{},[10480,10482,10487],{"type":3108,"value":10481},"If you choose to use HTML in your ",{"type":3103,"tag":3260,"props":10483,"children":10485},{"className":10484},[],[10486],{"type":3108,"value":10456},{"type":3108,"value":10488},", 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":3103,"tag":3186,"props":10490,"children":10492},{"id":10491},"development",[10493],{"type":3108,"value":10494},"Development",{"type":3103,"tag":3463,"props":10496,"children":10498},{"className":3465,"code":10497,"language":3467,"meta":3047,"style":3047},"# 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",[10499],{"type":3103,"tag":3260,"props":10500,"children":10501},{"__ignoreMap":3047},[10502,10510,10518,10525,10533,10545,10552,10560,10572,10579,10587,10599,10606,10614,10626,10633,10641,10653,10665,10672,10680,10692],{"type":3103,"tag":3473,"props":10503,"children":10504},{"class":3475,"line":3075},[10505],{"type":3103,"tag":3473,"props":10506,"children":10507},{"style":3479},[10508],{"type":3108,"value":10509},"# Install dependencies\n",{"type":3103,"tag":3473,"props":10511,"children":10512},{"class":3475,"line":3071},[10513],{"type":3103,"tag":3473,"props":10514,"children":10515},{"style":3488},[10516],{"type":3108,"value":10517},"yarn\n",{"type":3103,"tag":3473,"props":10519,"children":10520},{"class":3475,"line":3505},[10521],{"type":3103,"tag":3473,"props":10522,"children":10523},{"emptyLinePlaceholder":1200},[10524],{"type":3108,"value":3511},{"type":3103,"tag":3473,"props":10526,"children":10527},{"class":3475,"line":3514},[10528],{"type":3103,"tag":3473,"props":10529,"children":10530},{"style":3479},[10531],{"type":3108,"value":10532},"# Generate type stubs\n",{"type":3103,"tag":3473,"props":10534,"children":10535},{"class":3475,"line":3067},[10536,10540],{"type":3103,"tag":3473,"props":10537,"children":10538},{"style":3488},[10539],{"type":3108,"value":3528},{"type":3103,"tag":3473,"props":10541,"children":10542},{"style":3494},[10543],{"type":3108,"value":10544}," dev:prepare\n",{"type":3103,"tag":3473,"props":10546,"children":10547},{"class":3475,"line":3539},[10548],{"type":3103,"tag":3473,"props":10549,"children":10550},{"emptyLinePlaceholder":1200},[10551],{"type":3108,"value":3511},{"type":3103,"tag":3473,"props":10553,"children":10554},{"class":3475,"line":3547},[10555],{"type":3103,"tag":3473,"props":10556,"children":10557},{"style":3479},[10558],{"type":3108,"value":10559},"# Develop with the playground\n",{"type":3103,"tag":3473,"props":10561,"children":10562},{"class":3475,"line":3092},[10563,10567],{"type":3103,"tag":3473,"props":10564,"children":10565},{"style":3488},[10566],{"type":3108,"value":3528},{"type":3103,"tag":3473,"props":10568,"children":10569},{"style":3494},[10570],{"type":3108,"value":10571}," dev\n",{"type":3103,"tag":3473,"props":10573,"children":10574},{"class":3475,"line":3743},[10575],{"type":3103,"tag":3473,"props":10576,"children":10577},{"emptyLinePlaceholder":1200},[10578],{"type":3108,"value":3511},{"type":3103,"tag":3473,"props":10580,"children":10581},{"class":3475,"line":3752},[10582],{"type":3103,"tag":3473,"props":10583,"children":10584},{"style":3479},[10585],{"type":3108,"value":10586},"# Build the playground\n",{"type":3103,"tag":3473,"props":10588,"children":10589},{"class":3475,"line":3761},[10590,10594],{"type":3103,"tag":3473,"props":10591,"children":10592},{"style":3488},[10593],{"type":3108,"value":3528},{"type":3103,"tag":3473,"props":10595,"children":10596},{"style":3494},[10597],{"type":3108,"value":10598}," dev:build\n",{"type":3103,"tag":3473,"props":10600,"children":10601},{"class":3475,"line":3770},[10602],{"type":3103,"tag":3473,"props":10603,"children":10604},{"emptyLinePlaceholder":1200},[10605],{"type":3108,"value":3511},{"type":3103,"tag":3473,"props":10607,"children":10608},{"class":3475,"line":3779},[10609],{"type":3103,"tag":3473,"props":10610,"children":10611},{"style":3479},[10612],{"type":3108,"value":10613},"# Run ESLint\n",{"type":3103,"tag":3473,"props":10615,"children":10616},{"class":3475,"line":3788},[10617,10621],{"type":3103,"tag":3473,"props":10618,"children":10619},{"style":3488},[10620],{"type":3108,"value":3528},{"type":3103,"tag":3473,"props":10622,"children":10623},{"style":3494},[10624],{"type":3108,"value":10625}," lint\n",{"type":3103,"tag":3473,"props":10627,"children":10628},{"class":3475,"line":3797},[10629],{"type":3103,"tag":3473,"props":10630,"children":10631},{"emptyLinePlaceholder":1200},[10632],{"type":3108,"value":3511},{"type":3103,"tag":3473,"props":10634,"children":10635},{"class":3475,"line":3806},[10636],{"type":3103,"tag":3473,"props":10637,"children":10638},{"style":3479},[10639],{"type":3108,"value":10640},"# Run Vitest\n",{"type":3103,"tag":3473,"props":10642,"children":10643},{"class":3475,"line":3815},[10644,10648],{"type":3103,"tag":3473,"props":10645,"children":10646},{"style":3488},[10647],{"type":3108,"value":3528},{"type":3103,"tag":3473,"props":10649,"children":10650},{"style":3494},[10651],{"type":3108,"value":10652}," test\n",{"type":3103,"tag":3473,"props":10654,"children":10655},{"class":3475,"line":3823},[10656,10660],{"type":3103,"tag":3473,"props":10657,"children":10658},{"style":3488},[10659],{"type":3108,"value":3528},{"type":3103,"tag":3473,"props":10661,"children":10662},{"style":3494},[10663],{"type":3108,"value":10664}," test:watch\n",{"type":3103,"tag":3473,"props":10666,"children":10667},{"class":3475,"line":3832},[10668],{"type":3103,"tag":3473,"props":10669,"children":10670},{"emptyLinePlaceholder":1200},[10671],{"type":3108,"value":3511},{"type":3103,"tag":3473,"props":10673,"children":10674},{"class":3475,"line":3841},[10675],{"type":3103,"tag":3473,"props":10676,"children":10677},{"style":3479},[10678],{"type":3108,"value":10679},"# Release new version\n",{"type":3103,"tag":3473,"props":10681,"children":10682},{"class":3475,"line":3855},[10683,10687],{"type":3103,"tag":3473,"props":10684,"children":10685},{"style":3488},[10686],{"type":3108,"value":3528},{"type":3103,"tag":3473,"props":10688,"children":10689},{"style":3494},[10690],{"type":3108,"value":10691}," release:patch\n",{"type":3103,"tag":3473,"props":10693,"children":10694},{"class":3475,"line":3883},[10695,10699],{"type":3103,"tag":3473,"props":10696,"children":10697},{"style":3488},[10698],{"type":3108,"value":3528},{"type":3103,"tag":3473,"props":10700,"children":10701},{"style":3494},[10702],{"type":3108,"value":10703}," release:minor\n",{"type":3103,"tag":10705,"props":10706,"children":10707},"style",{},[10708],{"type":3108,"value":10709},"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":3047,"searchDepth":3071,"depth":3071,"links":10711},[10712,10713,10724,10729,10734,10740,10744,10748,10754],{"id":3188,"depth":3071,"text":399},{"id":3444,"depth":3071,"text":3447,"children":10714},[10715,10717,10719,10721,10723],{"id":3451,"depth":3505,"text":10716},"1. Add nuxt-api-shield dependency to your project",{"id":3573,"depth":3505,"text":10718},"2. Add nuxt-api-shield to the modules section of nuxt.config.ts",{"id":4605,"depth":3505,"text":10720},"3. Add nitro\u002Fstorage to nuxt.config.ts",{"id":5014,"depth":3505,"text":10722},"4. Schedule bundled cleanup tasks in nuxt.config.ts",{"id":5315,"depth":3505,"text":5318},{"id":7404,"depth":3071,"text":7407,"children":10725},[10726,10727],{"id":7410,"depth":3505,"text":7413},{"id":7820,"depth":3505,"text":10728},"When memory \u002F fs is acceptable",{"id":7879,"depth":3071,"text":7882,"children":10730},[10731,10732,10733],{"id":7905,"depth":3505,"text":7908},{"id":8159,"depth":3505,"text":8162},{"id":8211,"depth":3505,"text":8214},{"id":8477,"depth":3071,"text":8480,"children":10735},[10736,10738],{"id":8488,"depth":3505,"text":10737},"RateLimit Type",{"id":9040,"depth":3505,"text":10739},"ModuleOptions Type",{"id":9107,"depth":3071,"text":9110,"children":10741},[10742,10743],{"id":9162,"depth":3505,"text":9165},{"id":9658,"depth":3505,"text":9661},{"id":9853,"depth":3071,"text":9856,"children":10745},[10746,10747],{"id":9883,"depth":3505,"text":9165},{"id":10180,"depth":3505,"text":10183},{"id":10232,"depth":3071,"text":10235,"children":10749},[10750,10751,10752],{"id":10238,"depth":3505,"text":10241},{"id":10350,"depth":3505,"text":10353},{"id":10447,"depth":3505,"text":10753},"Error Message (errorMessage)",{"id":10491,"depth":3071,"text":10494},{"v5":10756,"v4":10757,"v3":10758,"v2":10759},"5 (nightly)","4.5.2","3.21.11","2.18.1"]