[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f30r277ag21rfj":3,"module-api-shield":3011,"versions":10726},[4,1124,1971,2805],{"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,1280,1419,1801,1878,1900,1934],{"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,1262,1265,1268,1271,1274,1277],{"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":200,"path":1260,"stem":1261,"titleTemplate":6,"icon":203},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fenv","docs\u002F4.x\u002F2.directory-structure\u002F2.env",{"title":205,"path":1263,"stem":1264,"titleTemplate":6,"icon":208},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fgitignore","docs\u002F4.x\u002F2.directory-structure\u002F2.gitignore",{"title":210,"path":1266,"stem":1267,"titleTemplate":6,"icon":213},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fnuxtignore","docs\u002F4.x\u002F2.directory-structure\u002F2.nuxtignore",{"title":215,"path":1269,"stem":1270,"titleTemplate":6,"icon":213},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fnuxtrc","docs\u002F4.x\u002F2.directory-structure\u002F2.nuxtrc",{"title":233,"path":1272,"stem":1273,"titleTemplate":6,"icon":213},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fnuxt-config","docs\u002F4.x\u002F2.directory-structure\u002F3.nuxt-config",{"title":237,"path":1275,"stem":1276,"titleTemplate":6,"icon":240},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fpackage","docs\u002F4.x\u002F2.directory-structure\u002F3.package",{"title":242,"path":1278,"stem":1279,"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":1281,"stem":1282,"children":1283,"page":108},"\u002Fdocs\u002F4.x\u002Fguide","docs\u002F4.x\u002F3.guide",[1284,1309,1327,1337,1365,1381],{"title":253,"titleTemplate":254,"icon":255,"path":1285,"stem":1286,"children":1287,"page":108},"\u002Fdocs\u002F4.x\u002Fguide\u002Fconcepts","docs\u002F4.x\u002F3.guide\u002F1.concepts",[1288,1291,1294,1297,1300,1303,1306],{"title":260,"path":1289,"stem":1290,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fconcepts\u002Frendering","docs\u002F4.x\u002F3.guide\u002F1.concepts\u002F1.rendering",{"title":264,"path":1292,"stem":1293,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fconcepts\u002Fnuxt-lifecycle","docs\u002F4.x\u002F3.guide\u002F1.concepts\u002F2.nuxt-lifecycle",{"title":268,"path":1295,"stem":1296,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fconcepts\u002Fauto-imports","docs\u002F4.x\u002F3.guide\u002F1.concepts\u002F3.auto-imports",{"title":272,"path":1298,"stem":1299,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fconcepts\u002Fserver-engine","docs\u002F4.x\u002F3.guide\u002F1.concepts\u002F4.server-engine",{"title":276,"path":1301,"stem":1302,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fconcepts\u002Fmodules","docs\u002F4.x\u002F3.guide\u002F1.concepts\u002F5.modules",{"title":280,"path":1304,"stem":1305,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fconcepts\u002Ftypescript","docs\u002F4.x\u002F3.guide\u002F1.concepts\u002F8.typescript",{"title":284,"path":1307,"stem":1308,"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":1310,"stem":1311,"children":1312,"page":108},"\u002Fdocs\u002F4.x\u002Fguide\u002Fbest-practices","docs\u002F4.x\u002F3.guide\u002F2.best-practices",[1313,1317,1321,1324],{"title":1314,"path":1315,"stem":1316,"titleTemplate":6},"Dev Containers","\u002Fdocs\u002F4.x\u002Fguide\u002Fbest-practices\u002Fdevcontainers","docs\u002F4.x\u002F3.guide\u002F2.best-practices\u002Fdevcontainers",{"title":1318,"path":1319,"stem":1320,"titleTemplate":6},"Nuxt and Hydration","\u002Fdocs\u002F4.x\u002Fguide\u002Fbest-practices\u002Fhydration","docs\u002F4.x\u002F3.guide\u002F2.best-practices\u002Fhydration",{"title":299,"path":1322,"stem":1323,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fbest-practices\u002Fperformance","docs\u002F4.x\u002F3.guide\u002F2.best-practices\u002Fperformance",{"title":303,"path":1325,"stem":1326,"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":1328,"stem":1329,"children":1330,"page":108},"\u002Fdocs\u002F4.x\u002Fguide\u002Fai","docs\u002F4.x\u002F3.guide\u002F3.ai",[1331,1334],{"title":314,"path":1332,"stem":1333,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fai\u002Fmcp","docs\u002F4.x\u002F3.guide\u002F3.ai\u002F1.mcp",{"title":318,"path":1335,"stem":1336,"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":1338,"stem":1339,"children":1340,"page":108},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules","docs\u002F4.x\u002F3.guide\u002F4.modules",[1341,1344,1347,1350,1353,1356,1359,1362],{"title":329,"path":1342,"stem":1343,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Fgetting-started","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F1.getting-started",{"title":333,"path":1345,"stem":1346,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Fmodule-anatomy","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F2.module-anatomy",{"title":337,"path":1348,"stem":1349,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Frecipes-basics","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F3.recipes-basics",{"title":341,"path":1351,"stem":1352,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Fmodule-dependencies","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F4.module-dependencies",{"title":345,"path":1354,"stem":1355,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Frecipes-advanced","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F5.recipes-advanced",{"title":349,"path":1357,"stem":1358,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Ftesting","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F6.testing",{"title":353,"path":1360,"stem":1361,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Fbest-practices","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F7.best-practices",{"title":357,"path":1363,"stem":1364,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Fecosystem","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F8.ecosystem",{"title":361,"titleTemplate":362,"icon":363,"path":1366,"stem":1367,"children":1368,"page":108},"\u002Fdocs\u002F4.x\u002Fguide\u002Frecipes","docs\u002F4.x\u002F3.guide\u002F5.recipes",[1369,1372,1375,1378],{"title":368,"path":1370,"stem":1371,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Frecipes\u002Fcustom-routing","docs\u002F4.x\u002F3.guide\u002F5.recipes\u002F1.custom-routing",{"title":372,"path":1373,"stem":1374,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Frecipes\u002Fvite-plugin","docs\u002F4.x\u002F3.guide\u002F5.recipes\u002F2.vite-plugin",{"title":376,"path":1376,"stem":1377,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Frecipes\u002Fcustom-usefetch","docs\u002F4.x\u002F3.guide\u002F5.recipes\u002F3.custom-usefetch",{"title":380,"path":1379,"stem":1380,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Frecipes\u002Fsessions-and-authentication","docs\u002F4.x\u002F3.guide\u002F5.recipes\u002F4.sessions-and-authentication",{"title":384,"titleTemplate":385,"icon":386,"path":1382,"stem":1383,"children":1384,"page":108},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further","docs\u002F4.x\u002F3.guide\u002F6.going-further",[1385,1388,1391,1394,1397,1400,1403,1406,1409,1412,1416],{"title":391,"path":1386,"stem":1387,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fevents","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F1.events",{"title":395,"path":1389,"stem":1390,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fexperimental-features","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F1.experimental-features",{"title":399,"path":1392,"stem":1393,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Ffeatures","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F1.features",{"title":403,"path":1395,"stem":1396,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fruntime-config","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F10.runtime-config",{"title":407,"path":1398,"stem":1399,"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":1401,"stem":1402,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fhooks","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F2.hooks",{"title":415,"path":1404,"stem":1405,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fkit","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F4.kit",{"title":419,"path":1407,"stem":1408,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fnuxt-app","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F6.nuxt-app",{"title":423,"path":1410,"stem":1411,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Flayers","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F7.layers",{"title":1413,"path":1414,"stem":1415,"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":1417,"stem":1418,"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":1420,"stem":1421,"children":1422,"page":108},"\u002Fdocs\u002F4.x\u002Fapi","docs\u002F4.x\u002F4.api",[1423,1476,1583,1674,1726,1788,1798],{"title":438,"titleTemplate":439,"icon":324,"path":1424,"stem":1425,"children":1426,"page":108},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents","docs\u002F4.x\u002F4.api\u002F1.components",[1427,1430,1433,1436,1439,1442,1445,1448,1452,1455,1458,1461,1464,1467,1470,1473],{"title":444,"path":1428,"stem":1429,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fclient-only","docs\u002F4.x\u002F4.api\u002F1.components\u002F1.client-only",{"title":448,"path":1431,"stem":1432,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fdev-only","docs\u002F4.x\u002F4.api\u002F1.components\u002F1.dev-only",{"title":452,"path":1434,"stem":1435,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-client-fallback","docs\u002F4.x\u002F4.api\u002F1.components\u002F1.nuxt-client-fallback",{"title":456,"path":1437,"stem":1438,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-picture","docs\u002F4.x\u002F4.api\u002F1.components\u002F10.nuxt-picture",{"title":460,"path":1440,"stem":1441,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fteleports","docs\u002F4.x\u002F4.api\u002F1.components\u002F11.teleports",{"title":464,"path":1443,"stem":1444,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-route-announcer","docs\u002F4.x\u002F4.api\u002F1.components\u002F12.nuxt-route-announcer",{"title":468,"path":1446,"stem":1447,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-time","docs\u002F4.x\u002F4.api\u002F1.components\u002F13.nuxt-time",{"title":1449,"path":1450,"stem":1451,"titleTemplate":6},"\u003CNuxtAnnouncer>","\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-announcer","docs\u002F4.x\u002F4.api\u002F1.components\u002F14.nuxt-announcer",{"title":472,"path":1453,"stem":1454,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-page","docs\u002F4.x\u002F4.api\u002F1.components\u002F2.nuxt-page",{"title":476,"path":1456,"stem":1457,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-layout","docs\u002F4.x\u002F4.api\u002F1.components\u002F3.nuxt-layout",{"title":480,"path":1459,"stem":1460,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-link","docs\u002F4.x\u002F4.api\u002F1.components\u002F4.nuxt-link",{"title":484,"path":1462,"stem":1463,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-loading-indicator","docs\u002F4.x\u002F4.api\u002F1.components\u002F5.nuxt-loading-indicator",{"title":488,"path":1465,"stem":1466,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-error-boundary","docs\u002F4.x\u002F4.api\u002F1.components\u002F6.nuxt-error-boundary",{"title":492,"path":1468,"stem":1469,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-welcome","docs\u002F4.x\u002F4.api\u002F1.components\u002F7.nuxt-welcome",{"title":496,"path":1471,"stem":1472,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-island","docs\u002F4.x\u002F4.api\u002F1.components\u002F8.nuxt-island",{"title":500,"path":1474,"stem":1475,"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":1477,"stem":1478,"children":1479,"page":108},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables","docs\u002F4.x\u002F4.api\u002F2.composables",[1480,1484,1488,1491,1495,1498,1501,1504,1507,1510,1513,1516,1519,1523,1526,1529,1532,1535,1538,1541,1544,1547,1550,1553,1556,1559,1562,1565,1568,1571,1574,1577,1580],{"title":1481,"path":1482,"stem":1483,"titleTemplate":6},"createUseAsyncData","\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fcreate-use-async-data","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fcreate-use-async-data",{"title":1485,"path":1486,"stem":1487,"titleTemplate":6},"createUseFetch","\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fcreate-use-fetch","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fcreate-use-fetch",{"title":511,"path":1489,"stem":1490,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fon-prehydrate","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fon-prehydrate",{"title":1492,"path":1493,"stem":1494,"titleTemplate":6},"useAnnouncer","\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-announcer","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-announcer",{"title":515,"path":1496,"stem":1497,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-app-config","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-app-config",{"title":519,"path":1499,"stem":1500,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-async-data","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-async-data",{"title":523,"path":1502,"stem":1503,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-cookie","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-cookie",{"title":527,"path":1505,"stem":1506,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-error","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-error",{"title":531,"path":1508,"stem":1509,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-fetch","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-fetch",{"title":535,"path":1511,"stem":1512,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-head","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-head",{"title":539,"path":1514,"stem":1515,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-head-safe","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-head-safe",{"title":543,"path":1517,"stem":1518,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-hydration","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-hydration",{"title":1520,"path":1521,"stem":1522,"titleTemplate":6},"useLayout","\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-layout","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-layout",{"title":547,"path":1524,"stem":1525,"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":1527,"stem":1528,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-lazy-fetch","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-lazy-fetch",{"title":555,"path":1530,"stem":1531,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-loading-indicator","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-loading-indicator",{"title":559,"path":1533,"stem":1534,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-nuxt-app","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-nuxt-app",{"title":563,"path":1536,"stem":1537,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-nuxt-data","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-nuxt-data",{"title":567,"path":1539,"stem":1540,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-preview-mode","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-preview-mode",{"title":571,"path":1542,"stem":1543,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-request-event","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-request-event",{"title":575,"path":1545,"stem":1546,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-request-fetch","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-request-fetch",{"title":579,"path":1548,"stem":1549,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-request-header","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-request-header",{"title":583,"path":1551,"stem":1552,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-request-headers","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-request-headers",{"title":587,"path":1554,"stem":1555,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-request-url","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-request-url",{"title":591,"path":1557,"stem":1558,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-response-header","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-response-header",{"title":595,"path":1560,"stem":1561,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-route","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-route",{"title":599,"path":1563,"stem":1564,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-route-announcer","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-route-announcer",{"title":603,"path":1566,"stem":1567,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-router","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-router",{"title":607,"path":1569,"stem":1570,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-runtime-config","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-runtime-config",{"title":611,"path":1572,"stem":1573,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-runtime-hook","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-runtime-hook",{"title":615,"path":1575,"stem":1576,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-seo-meta","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-seo-meta",{"title":619,"path":1578,"stem":1579,"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":1581,"stem":1582,"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":1584,"stem":1585,"children":1586,"page":108},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils","docs\u002F4.x\u002F4.api\u002F3.utils",[1587,1590,1593,1596,1599,1602,1605,1608,1611,1614,1617,1620,1623,1626,1629,1632,1635,1638,1641,1644,1647,1650,1653,1656,1659,1662,1665,1668,1671],{"title":634,"path":1588,"stem":1589,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fdollarfetch","docs\u002F4.x\u002F4.api\u002F3.utils\u002F$fetch",{"title":638,"path":1591,"stem":1592,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fabort-navigation","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fabort-navigation",{"title":642,"path":1594,"stem":1595,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fadd-route-middleware","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fadd-route-middleware",{"title":646,"path":1597,"stem":1598,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fcall-once","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fcall-once",{"title":650,"path":1600,"stem":1601,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fclear-error","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fclear-error",{"title":654,"path":1603,"stem":1604,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fclear-nuxt-data","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fclear-nuxt-data",{"title":658,"path":1606,"stem":1607,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fclear-nuxt-state","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fclear-nuxt-state",{"title":662,"path":1609,"stem":1610,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fcreate-error","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fcreate-error",{"title":666,"path":1612,"stem":1613,"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":1615,"stem":1616,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fdefine-nuxt-component","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fdefine-nuxt-component",{"title":674,"path":1618,"stem":1619,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fdefine-nuxt-plugin","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fdefine-nuxt-plugin",{"title":678,"path":1621,"stem":1622,"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":1624,"stem":1625,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fdefine-page-meta","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fdefine-page-meta",{"title":686,"path":1627,"stem":1628,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fdefine-route-rules","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fdefine-route-rules",{"title":690,"path":1630,"stem":1631,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fnavigate-to","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fnavigate-to",{"title":694,"path":1633,"stem":1634,"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":1636,"stem":1637,"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":1639,"stem":1640,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fon-nuxt-ready","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fon-nuxt-ready",{"title":706,"path":1642,"stem":1643,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fprefetch-components","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fprefetch-components",{"title":710,"path":1645,"stem":1646,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fpreload-components","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fpreload-components",{"title":714,"path":1648,"stem":1649,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fpreload-route-components","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fpreload-route-components",{"title":718,"path":1651,"stem":1652,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fprerender-routes","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fprerender-routes",{"title":722,"path":1654,"stem":1655,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Frefresh-cookie","docs\u002F4.x\u002F4.api\u002F3.utils\u002Frefresh-cookie",{"title":726,"path":1657,"stem":1658,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Frefresh-nuxt-data","docs\u002F4.x\u002F4.api\u002F3.utils\u002Frefresh-nuxt-data",{"title":730,"path":1660,"stem":1661,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Freload-nuxt-app","docs\u002F4.x\u002F4.api\u002F3.utils\u002Freload-nuxt-app",{"title":734,"path":1663,"stem":1664,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fset-page-layout","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fset-page-layout",{"title":738,"path":1666,"stem":1667,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fset-response-status","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fset-response-status",{"title":742,"path":1669,"stem":1670,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fshow-error","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fshow-error",{"title":746,"path":1672,"stem":1673,"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":1675,"stem":1676,"children":1677,"page":108},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands","docs\u002F4.x\u002F4.api\u002F4.commands",[1678,1681,1684,1687,1690,1693,1696,1699,1702,1705,1708,1711,1714,1717,1720,1723],{"title":757,"path":1679,"stem":1680,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fadd","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fadd",{"title":761,"path":1682,"stem":1683,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fanalyze","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fanalyze",{"title":765,"path":1685,"stem":1686,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fbuild","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fbuild",{"title":769,"path":1688,"stem":1689,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fbuild-module","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fbuild-module",{"title":773,"path":1691,"stem":1692,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fcleanup","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fcleanup",{"title":777,"path":1694,"stem":1695,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fdev","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fdev",{"title":781,"path":1697,"stem":1698,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fdevtools","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fdevtools",{"title":785,"path":1700,"stem":1701,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fgenerate","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fgenerate",{"title":789,"path":1703,"stem":1704,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Finfo","docs\u002F4.x\u002F4.api\u002F4.commands\u002Finfo",{"title":793,"path":1706,"stem":1707,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Finit","docs\u002F4.x\u002F4.api\u002F4.commands\u002Finit",{"title":797,"path":1709,"stem":1710,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fmodule","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fmodule",{"title":801,"path":1712,"stem":1713,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fprepare","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fprepare",{"title":805,"path":1715,"stem":1716,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fpreview","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fpreview",{"title":809,"path":1718,"stem":1719,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Ftest","docs\u002F4.x\u002F4.api\u002F4.commands\u002Ftest",{"title":813,"path":1721,"stem":1722,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Ftypecheck","docs\u002F4.x\u002F4.api\u002F4.commands\u002Ftypecheck",{"title":817,"path":1724,"stem":1725,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fupgrade","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fupgrade",{"title":415,"titleTemplate":821,"icon":822,"path":1727,"stem":1728,"children":1729,"page":108},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit","docs\u002F4.x\u002F4.api\u002F5.kit",[1730,1733,1736,1739,1743,1746,1749,1752,1755,1758,1761,1764,1767,1770,1773,1776,1779,1782,1785],{"title":276,"path":1731,"stem":1732,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fmodules","docs\u002F4.x\u002F4.api\u002F5.kit\u002F1.modules",{"title":403,"path":1734,"stem":1735,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fruntime-config","docs\u002F4.x\u002F4.api\u002F5.kit\u002F10.runtime-config",{"title":833,"path":1737,"stem":1738,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Ftemplates","docs\u002F4.x\u002F4.api\u002F5.kit\u002F10.templates",{"title":1740,"path":1741,"stem":1742,"titleTemplate":6},"App Config","\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fapp-config","docs\u002F4.x\u002F4.api\u002F5.kit\u002F11.app-config",{"title":837,"path":1744,"stem":1745,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fnitro","docs\u002F4.x\u002F4.api\u002F5.kit\u002F12.nitro",{"title":841,"path":1747,"stem":1748,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fresolving","docs\u002F4.x\u002F4.api\u002F5.kit\u002F13.resolving",{"title":845,"path":1750,"stem":1751,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Flogging","docs\u002F4.x\u002F4.api\u002F5.kit\u002F14.logging",{"title":849,"path":1753,"stem":1754,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fbuilder","docs\u002F4.x\u002F4.api\u002F5.kit\u002F15.builder",{"title":853,"path":1756,"stem":1757,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fexamples","docs\u002F4.x\u002F4.api\u002F5.kit\u002F16.examples",{"title":84,"path":1759,"stem":1760,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Flayers","docs\u002F4.x\u002F4.api\u002F5.kit\u002F17.layers",{"title":860,"path":1762,"stem":1763,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fprogrammatic","docs\u002F4.x\u002F4.api\u002F5.kit\u002F2.programmatic",{"title":864,"path":1765,"stem":1766,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fcompatibility","docs\u002F4.x\u002F4.api\u002F5.kit\u002F3.compatibility",{"title":268,"path":1768,"stem":1769,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fautoimports","docs\u002F4.x\u002F4.api\u002F5.kit\u002F4.autoimports",{"title":438,"path":1771,"stem":1772,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fcomponents","docs\u002F4.x\u002F4.api\u002F5.kit\u002F5.components",{"title":874,"path":1774,"stem":1775,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fcontext","docs\u002F4.x\u002F4.api\u002F5.kit\u002F6.context",{"title":878,"path":1777,"stem":1778,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fpages","docs\u002F4.x\u002F4.api\u002F5.kit\u002F7.pages",{"title":882,"path":1780,"stem":1781,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Flayout","docs\u002F4.x\u002F4.api\u002F5.kit\u002F8.layout",{"title":886,"path":1783,"stem":1784,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fhead","docs\u002F4.x\u002F4.api\u002F5.kit\u002F9.head",{"title":890,"path":1786,"stem":1787,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fplugins","docs\u002F4.x\u002F4.api\u002F5.kit\u002F9.plugins",{"title":894,"titleTemplate":6,"icon":895,"path":1789,"stem":1790,"children":1791,"page":108},"\u002Fdocs\u002F4.x\u002Fapi\u002Fadvanced","docs\u002F4.x\u002F4.api\u002F6.advanced",[1792,1795],{"title":411,"path":1793,"stem":1794,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fadvanced\u002Fhooks","docs\u002F4.x\u002F4.api\u002F6.advanced\u002F1.hooks",{"title":903,"path":1796,"stem":1797,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fadvanced\u002Fimport-meta","docs\u002F4.x\u002F4.api\u002F6.advanced\u002F2.import-meta",{"title":907,"path":1799,"stem":1800,"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":1802,"stem":1803,"children":1804,"page":108},"\u002Fdocs\u002F4.x\u002Fexamples","docs\u002F4.x\u002F4.examples",[1805,1808,1827,1840,1871],{"title":918,"path":1806,"stem":1807,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fhello-world","docs\u002F4.x\u002F4.examples\u002F0.hello-world",{"title":399,"path":1809,"stem":1810,"children":1811,"page":108},"\u002Fdocs\u002F4.x\u002Fexamples\u002Ffeatures","docs\u002F4.x\u002F4.examples\u002F1.features",[1812,1815,1818,1821,1824],{"title":926,"path":1813,"stem":1814,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Ffeatures\u002Fauto-imports","docs\u002F4.x\u002F4.examples\u002F1.features\u002F1.auto-imports",{"title":64,"path":1816,"stem":1817,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Ffeatures\u002Fdata-fetching","docs\u002F4.x\u002F4.examples\u002F1.features\u002F2.data-fetching",{"title":69,"path":1819,"stem":1820,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Ffeatures\u002Fstate-management","docs\u002F4.x\u002F4.examples\u002F1.features\u002F3.state-management",{"title":936,"path":1822,"stem":1823,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Ffeatures\u002Fmeta-tags","docs\u002F4.x\u002F4.examples\u002F1.features\u002F4.meta-tags",{"title":940,"path":1825,"stem":1826,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Ffeatures\u002Flayouts","docs\u002F4.x\u002F4.examples\u002F1.features\u002F5.layouts",{"title":49,"path":1828,"stem":1829,"children":1830,"page":108},"\u002Fdocs\u002F4.x\u002Fexamples\u002Frouting","docs\u002F4.x\u002F4.examples\u002F2.routing",[1831,1834,1837],{"title":948,"path":1832,"stem":1833,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Frouting\u002Fmiddleware","docs\u002F4.x\u002F4.examples\u002F2.routing\u002Fmiddleware",{"title":878,"path":1835,"stem":1836,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Frouting\u002Fpages","docs\u002F4.x\u002F4.examples\u002F2.routing\u002Fpages",{"title":955,"path":1838,"stem":1839,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Frouting\u002Funiversal-router","docs\u002F4.x\u002F4.examples\u002F2.routing\u002Funiversal-router",{"title":894,"path":1841,"stem":1842,"children":1843,"page":108},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced","docs\u002F4.x\u002F4.examples\u002F4.advanced",[1844,1847,1850,1853,1856,1859,1862,1865,1868],{"title":84,"path":1845,"stem":1846,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Fconfig-extends","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Fconfig-extends",{"title":74,"path":1848,"stem":1849,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Ferror-handling","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Ferror-handling",{"title":969,"path":1851,"stem":1852,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Fjsx","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Fjsx",{"title":973,"path":1854,"stem":1855,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Flocale","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Flocale",{"title":977,"path":1857,"stem":1858,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Fmodule-extend-pages","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Fmodule-extend-pages",{"title":981,"path":1860,"stem":1861,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Fteleport","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Fteleport",{"title":99,"path":1863,"stem":1864,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Ftesting","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Ftesting",{"title":523,"path":1866,"stem":1867,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Fuse-cookie","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Fuse-cookie",{"title":991,"path":1869,"stem":1870,"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":1872,"stem":1873,"children":1874,"page":108},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fexperimental","docs\u002F4.x\u002F4.examples\u002F7.experimental",[1875],{"title":1000,"path":1876,"stem":1877,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fexperimental\u002Fwasm","docs\u002F4.x\u002F4.examples\u002F7.experimental\u002Fwasm",{"title":1004,"titleTemplate":1005,"icon":1006,"path":1879,"stem":1880,"children":1881,"page":108},"\u002Fdocs\u002F4.x\u002Fcommunity","docs\u002F4.x\u002F5.community",[1882,1885,1888,1891,1894,1897],{"title":1011,"path":1883,"stem":1884,"titleTemplate":6,"icon":1014},"\u002Fdocs\u002F4.x\u002Fcommunity\u002Fgetting-help","docs\u002F4.x\u002F5.community\u002F2.getting-help",{"title":1016,"path":1886,"stem":1887,"titleTemplate":6,"icon":1019},"\u002Fdocs\u002F4.x\u002Fcommunity\u002Freporting-bugs","docs\u002F4.x\u002F5.community\u002F3.reporting-bugs",{"title":1021,"path":1889,"stem":1890,"titleTemplate":6,"icon":1024},"\u002Fdocs\u002F4.x\u002Fcommunity\u002Fcontribution","docs\u002F4.x\u002F5.community\u002F4.contribution",{"title":1026,"path":1892,"stem":1893,"titleTemplate":6,"icon":1029},"\u002Fdocs\u002F4.x\u002Fcommunity\u002Fframework-contribution","docs\u002F4.x\u002F5.community\u002F5.framework-contribution",{"title":1031,"path":1895,"stem":1896,"titleTemplate":6,"icon":1034},"\u002Fdocs\u002F4.x\u002Fcommunity\u002Froadmap","docs\u002F4.x\u002F5.community\u002F6.roadmap",{"title":1036,"path":1898,"stem":1899,"titleTemplate":6,"icon":1039},"\u002Fdocs\u002F4.x\u002Fcommunity\u002Fchangelog","docs\u002F4.x\u002F5.community\u002F7.changelog",{"title":1041,"titleTemplate":1042,"icon":1043,"path":1901,"stem":1902,"children":1903,"page":108},"\u002Fdocs\u002F4.x\u002Fbridge","docs\u002F4.x\u002F6.bridge",[1904,1907,1910,1913,1916,1919,1922,1925,1928,1931],{"title":1048,"path":1905,"stem":1906,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Foverview","docs\u002F4.x\u002F6.bridge\u002F1.overview",{"title":29,"path":1908,"stem":1909,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fconfiguration","docs\u002F4.x\u002F6.bridge\u002F10.configuration",{"title":280,"path":1911,"stem":1912,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Ftypescript","docs\u002F4.x\u002F6.bridge\u002F2.typescript",{"title":1058,"path":1914,"stem":1915,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fbridge-composition-api","docs\u002F4.x\u002F6.bridge\u002F3.bridge-composition-api",{"title":1062,"path":1917,"stem":1918,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fplugins-and-middleware","docs\u002F4.x\u002F6.bridge\u002F4.plugins-and-middleware",{"title":1066,"path":1920,"stem":1921,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fnuxt3-compatible-api","docs\u002F4.x\u002F6.bridge\u002F5.nuxt3-compatible-api",{"title":936,"path":1923,"stem":1924,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fmeta","docs\u002F4.x\u002F6.bridge\u002F6.meta",{"title":403,"path":1926,"stem":1927,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fruntime-config","docs\u002F4.x\u002F6.bridge\u002F7.runtime-config",{"title":837,"path":1929,"stem":1930,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fnitro","docs\u002F4.x\u002F6.bridge\u002F8.nitro",{"title":1079,"path":1932,"stem":1933,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fvite","docs\u002F4.x\u002F6.bridge\u002F9.vite",{"title":1083,"titleTemplate":1084,"icon":107,"path":1935,"stem":1936,"children":1937,"page":108},"\u002Fdocs\u002F4.x\u002Fmigration","docs\u002F4.x\u002F7.migration",[1938,1941,1944,1947,1950,1953,1956,1959,1962,1965,1968],{"title":1048,"path":1939,"stem":1940,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Foverview","docs\u002F4.x\u002F7.migration\u002F1.overview",{"title":1092,"path":1942,"stem":1943,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fbundling","docs\u002F4.x\u002F7.migration\u002F10.bundling",{"title":79,"path":1945,"stem":1946,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fserver","docs\u002F4.x\u002F7.migration\u002F11.server",{"title":29,"path":1948,"stem":1949,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fconfiguration","docs\u002F4.x\u002F7.migration\u002F2.configuration",{"title":276,"path":1951,"stem":1952,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fmodule-authors","docs\u002F4.x\u002F7.migration\u002F20.module-authors",{"title":926,"path":1954,"stem":1955,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fauto-imports","docs\u002F4.x\u002F7.migration\u002F3.auto-imports",{"title":936,"path":1957,"stem":1958,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fmeta","docs\u002F4.x\u002F7.migration\u002F4.meta",{"title":1062,"path":1960,"stem":1961,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fplugins-and-middleware","docs\u002F4.x\u002F7.migration\u002F5.plugins-and-middleware",{"title":1114,"path":1963,"stem":1964,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fpages-and-layouts","docs\u002F4.x\u002F7.migration\u002F6.pages-and-layouts",{"title":1118,"path":1966,"stem":1967,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fcomponent-options","docs\u002F4.x\u002F7.migration\u002F7.component-options",{"title":403,"path":1969,"stem":1970,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fruntime-config","docs\u002F4.x\u002F7.migration\u002F8.runtime-config",{"title":5,"titleTemplate":6,"icon":7,"path":1972,"stem":1973,"children":1974,"page":108},"\u002Fdocs\u002F5.x","docs\u002F5.x",[1975,2033,2123,2259,2635,2712,2734,2768],{"title":12,"titleTemplate":13,"icon":14,"path":1976,"stem":1977,"children":1978,"page":108},"\u002Fdocs\u002F5.x\u002Fgetting-started","docs\u002F5.x\u002F1.getting-started",[1979,1982,1985,1988,1991,1994,1997,2000,2003,2006,2009,2012,2015,2018,2021,2024,2027,2030],{"title":19,"path":1980,"stem":1981,"titleTemplate":6,"icon":22},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fintroduction","docs\u002F5.x\u002F1.getting-started\u002F01.introduction",{"title":24,"path":1983,"stem":1984,"titleTemplate":6,"icon":27},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Finstallation","docs\u002F5.x\u002F1.getting-started\u002F02.installation",{"title":29,"path":1986,"stem":1987,"titleTemplate":6,"icon":32},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fconfiguration","docs\u002F5.x\u002F1.getting-started\u002F03.configuration",{"title":34,"path":1989,"stem":1990,"titleTemplate":6,"icon":37},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fviews","docs\u002F5.x\u002F1.getting-started\u002F04.views",{"title":39,"path":1992,"stem":1993,"titleTemplate":6,"icon":42},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fassets","docs\u002F5.x\u002F1.getting-started\u002F05.assets",{"title":44,"path":1995,"stem":1996,"titleTemplate":6,"icon":47},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fstyling","docs\u002F5.x\u002F1.getting-started\u002F06.styling",{"title":49,"path":1998,"stem":1999,"titleTemplate":6,"icon":52},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Frouting","docs\u002F5.x\u002F1.getting-started\u002F07.routing",{"title":54,"path":2001,"stem":2002,"titleTemplate":6,"icon":57},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fseo-meta","docs\u002F5.x\u002F1.getting-started\u002F08.seo-meta",{"title":59,"path":2004,"stem":2005,"titleTemplate":6,"icon":62},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Ftransitions","docs\u002F5.x\u002F1.getting-started\u002F09.transitions",{"title":64,"path":2007,"stem":2008,"titleTemplate":6,"icon":67},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fdata-fetching","docs\u002F5.x\u002F1.getting-started\u002F10.data-fetching",{"title":69,"path":2010,"stem":2011,"titleTemplate":6,"icon":72},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fstate-management","docs\u002F5.x\u002F1.getting-started\u002F11.state-management",{"title":74,"path":2013,"stem":2014,"titleTemplate":6,"icon":77},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Ferror-handling","docs\u002F5.x\u002F1.getting-started\u002F12.error-handling",{"title":79,"path":2016,"stem":2017,"titleTemplate":6,"icon":82},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fserver","docs\u002F5.x\u002F1.getting-started\u002F13.server",{"title":84,"path":2019,"stem":2020,"titleTemplate":6,"icon":87},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Flayers","docs\u002F5.x\u002F1.getting-started\u002F14.layers",{"title":89,"path":2022,"stem":2023,"titleTemplate":6,"icon":92},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fprerendering","docs\u002F5.x\u002F1.getting-started\u002F15.prerendering",{"title":94,"path":2025,"stem":2026,"titleTemplate":6,"icon":97},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fdeployment","docs\u002F5.x\u002F1.getting-started\u002F16.deployment",{"title":99,"path":2028,"stem":2029,"titleTemplate":6,"icon":102},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Ftesting","docs\u002F5.x\u002F1.getting-started\u002F17.testing",{"title":104,"path":2031,"stem":2032,"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":2034,"stem":2035,"children":2036,"page":108},"\u002Fdocs\u002F5.x\u002Fdirectory-structure","docs\u002F5.x\u002F2.directory-structure",[2037,2040,2043,2081,2084,2087,2090,2093,2096,2099,2102,2105,2108,2111,2114,2117,2120],{"title":117,"path":2038,"stem":2039,"titleTemplate":6,"icon":120},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fnuxt","docs\u002F5.x\u002F2.directory-structure\u002F0.nuxt",{"title":122,"path":2041,"stem":2042,"titleTemplate":6,"icon":125},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Foutput","docs\u002F5.x\u002F2.directory-structure\u002F0.output",{"title":1197,"titleTemplate":111,"head":2044,"defaultOpen":1200,"icon":1201,"path":2045,"stem":2046,"children":2047,"page":108},{"title":1199},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp","docs\u002F5.x\u002F2.directory-structure\u002F1.app",[2048,2051,2054,2057,2060,2063,2066,2069,2072,2075,2078],{"title":127,"path":2049,"stem":2050,"titleTemplate":6,"icon":130},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fassets","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.assets",{"title":132,"path":2052,"stem":2053,"titleTemplate":6,"icon":135},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fcomponents","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.components",{"title":137,"path":2055,"stem":2056,"titleTemplate":6,"icon":140},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fcomposables","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.composables",{"title":152,"path":2058,"stem":2059,"titleTemplate":6,"icon":155},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Flayouts","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.layouts",{"title":157,"path":2061,"stem":2062,"titleTemplate":6,"icon":160},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fmiddleware","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.middleware",{"title":171,"path":2064,"stem":2065,"titleTemplate":6,"icon":155},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fpages","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.pages",{"title":175,"path":2067,"stem":2068,"titleTemplate":6,"icon":178},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fplugins","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.plugins",{"title":195,"path":2070,"stem":2071,"titleTemplate":6,"icon":198},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Futils","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.utils",{"title":219,"path":2073,"stem":2074,"titleTemplate":6,"icon":222},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fapp","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F3.app",{"title":224,"path":2076,"stem":2077,"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":2079,"stem":2080,"titleTemplate":6,"icon":222},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Ferror","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F3.error",{"title":142,"path":2082,"stem":2083,"titleTemplate":6,"icon":145},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fcontent","docs\u002F5.x\u002F2.directory-structure\u002F1.content",{"title":147,"path":2085,"stem":2086,"titleTemplate":6,"icon":150},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Flayers","docs\u002F5.x\u002F2.directory-structure\u002F1.layers",{"title":162,"path":2088,"stem":2089,"titleTemplate":6,"icon":150},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fmodules","docs\u002F5.x\u002F2.directory-structure\u002F1.modules",{"title":166,"path":2091,"stem":2092,"titleTemplate":6,"icon":169},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fnode_modules","docs\u002F5.x\u002F2.directory-structure\u002F1.node_modules",{"title":180,"path":2094,"stem":2095,"titleTemplate":6,"icon":183},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fpublic","docs\u002F5.x\u002F2.directory-structure\u002F1.public",{"title":185,"path":2097,"stem":2098,"titleTemplate":6,"icon":188},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fserver","docs\u002F5.x\u002F2.directory-structure\u002F1.server",{"title":190,"path":2100,"stem":2101,"titleTemplate":6,"icon":193},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fshared","docs\u002F5.x\u002F2.directory-structure\u002F1.shared",{"title":200,"path":2103,"stem":2104,"titleTemplate":6,"icon":203},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fenv","docs\u002F5.x\u002F2.directory-structure\u002F2.env",{"title":205,"path":2106,"stem":2107,"titleTemplate":6,"icon":208},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fgitignore","docs\u002F5.x\u002F2.directory-structure\u002F2.gitignore",{"title":210,"path":2109,"stem":2110,"titleTemplate":6,"icon":213},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fnuxtignore","docs\u002F5.x\u002F2.directory-structure\u002F2.nuxtignore",{"title":215,"path":2112,"stem":2113,"titleTemplate":6,"icon":213},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fnuxtrc","docs\u002F5.x\u002F2.directory-structure\u002F2.nuxtrc",{"title":233,"path":2115,"stem":2116,"titleTemplate":6,"icon":213},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fnuxt-config","docs\u002F5.x\u002F2.directory-structure\u002F3.nuxt-config",{"title":237,"path":2118,"stem":2119,"titleTemplate":6,"icon":240},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fpackage","docs\u002F5.x\u002F2.directory-structure\u002F3.package",{"title":242,"path":2121,"stem":2122,"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":2124,"stem":2125,"children":2126,"page":108},"\u002Fdocs\u002F5.x\u002Fguide","docs\u002F5.x\u002F3.guide",[2127,2152,2168,2178,2206,2222],{"title":253,"titleTemplate":254,"icon":255,"path":2128,"stem":2129,"children":2130,"page":108},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts","docs\u002F5.x\u002F3.guide\u002F1.concepts",[2131,2134,2137,2140,2143,2146,2149],{"title":260,"path":2132,"stem":2133,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts\u002Frendering","docs\u002F5.x\u002F3.guide\u002F1.concepts\u002F1.rendering",{"title":264,"path":2135,"stem":2136,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts\u002Fnuxt-lifecycle","docs\u002F5.x\u002F3.guide\u002F1.concepts\u002F2.nuxt-lifecycle",{"title":268,"path":2138,"stem":2139,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts\u002Fauto-imports","docs\u002F5.x\u002F3.guide\u002F1.concepts\u002F3.auto-imports",{"title":272,"path":2141,"stem":2142,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts\u002Fserver-engine","docs\u002F5.x\u002F3.guide\u002F1.concepts\u002F4.server-engine",{"title":276,"path":2144,"stem":2145,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts\u002Fmodules","docs\u002F5.x\u002F3.guide\u002F1.concepts\u002F5.modules",{"title":280,"path":2147,"stem":2148,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts\u002Ftypescript","docs\u002F5.x\u002F3.guide\u002F1.concepts\u002F8.typescript",{"title":284,"path":2150,"stem":2151,"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":2153,"stem":2154,"children":2155,"page":108},"\u002Fdocs\u002F5.x\u002Fguide\u002Fbest-practices","docs\u002F5.x\u002F3.guide\u002F2.best-practices",[2156,2159,2162,2165],{"title":1314,"path":2157,"stem":2158,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fbest-practices\u002Fdevcontainers","docs\u002F5.x\u002F3.guide\u002F2.best-practices\u002Fdevcontainers",{"title":1318,"path":2160,"stem":2161,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fbest-practices\u002Fhydration","docs\u002F5.x\u002F3.guide\u002F2.best-practices\u002Fhydration",{"title":299,"path":2163,"stem":2164,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fbest-practices\u002Fperformance","docs\u002F5.x\u002F3.guide\u002F2.best-practices\u002Fperformance",{"title":303,"path":2166,"stem":2167,"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":2169,"stem":2170,"children":2171,"page":108},"\u002Fdocs\u002F5.x\u002Fguide\u002Fai","docs\u002F5.x\u002F3.guide\u002F3.ai",[2172,2175],{"title":314,"path":2173,"stem":2174,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fai\u002Fmcp","docs\u002F5.x\u002F3.guide\u002F3.ai\u002F1.mcp",{"title":318,"path":2176,"stem":2177,"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":2179,"stem":2180,"children":2181,"page":108},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules","docs\u002F5.x\u002F3.guide\u002F4.modules",[2182,2185,2188,2191,2194,2197,2200,2203],{"title":329,"path":2183,"stem":2184,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Fgetting-started","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F1.getting-started",{"title":333,"path":2186,"stem":2187,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Fmodule-anatomy","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F2.module-anatomy",{"title":337,"path":2189,"stem":2190,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Frecipes-basics","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F3.recipes-basics",{"title":341,"path":2192,"stem":2193,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Fmodule-dependencies","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F4.module-dependencies",{"title":345,"path":2195,"stem":2196,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Frecipes-advanced","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F5.recipes-advanced",{"title":349,"path":2198,"stem":2199,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Ftesting","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F6.testing",{"title":353,"path":2201,"stem":2202,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Fbest-practices","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F7.best-practices",{"title":357,"path":2204,"stem":2205,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Fecosystem","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F8.ecosystem",{"title":361,"titleTemplate":362,"icon":363,"path":2207,"stem":2208,"children":2209,"page":108},"\u002Fdocs\u002F5.x\u002Fguide\u002Frecipes","docs\u002F5.x\u002F3.guide\u002F5.recipes",[2210,2213,2216,2219],{"title":368,"path":2211,"stem":2212,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Frecipes\u002Fcustom-routing","docs\u002F5.x\u002F3.guide\u002F5.recipes\u002F1.custom-routing",{"title":372,"path":2214,"stem":2215,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Frecipes\u002Fvite-plugin","docs\u002F5.x\u002F3.guide\u002F5.recipes\u002F2.vite-plugin",{"title":376,"path":2217,"stem":2218,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Frecipes\u002Fcustom-usefetch","docs\u002F5.x\u002F3.guide\u002F5.recipes\u002F3.custom-usefetch",{"title":380,"path":2220,"stem":2221,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Frecipes\u002Fsessions-and-authentication","docs\u002F5.x\u002F3.guide\u002F5.recipes\u002F4.sessions-and-authentication",{"title":384,"titleTemplate":385,"icon":386,"path":2223,"stem":2224,"children":2225,"page":108},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further","docs\u002F5.x\u002F3.guide\u002F6.going-further",[2226,2229,2232,2235,2238,2241,2244,2247,2250,2253,2256],{"title":391,"path":2227,"stem":2228,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fevents","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F1.events",{"title":395,"path":2230,"stem":2231,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fexperimental-features","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F1.experimental-features",{"title":399,"path":2233,"stem":2234,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Ffeatures","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F1.features",{"title":403,"path":2236,"stem":2237,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fruntime-config","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F10.runtime-config",{"title":407,"path":2239,"stem":2240,"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":2242,"stem":2243,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fhooks","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F2.hooks",{"title":415,"path":2245,"stem":2246,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fkit","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F4.kit",{"title":419,"path":2248,"stem":2249,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fnuxt-app","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F6.nuxt-app",{"title":423,"path":2251,"stem":2252,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Flayers","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F7.layers",{"title":1413,"path":2254,"stem":2255,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fbuilders","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F8.builders",{"title":427,"path":2257,"stem":2258,"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":2260,"stem":2261,"children":2262,"page":108},"\u002Fdocs\u002F5.x\u002Fapi","docs\u002F5.x\u002F4.api",[2263,2315,2418,2509,2561,2622,2632],{"title":438,"titleTemplate":439,"icon":324,"path":2264,"stem":2265,"children":2266,"page":108},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents","docs\u002F5.x\u002F4.api\u002F1.components",[2267,2270,2273,2276,2279,2282,2285,2288,2291,2294,2297,2300,2303,2306,2309,2312],{"title":444,"path":2268,"stem":2269,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fclient-only","docs\u002F5.x\u002F4.api\u002F1.components\u002F1.client-only",{"title":448,"path":2271,"stem":2272,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fdev-only","docs\u002F5.x\u002F4.api\u002F1.components\u002F1.dev-only",{"title":452,"path":2274,"stem":2275,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-client-fallback","docs\u002F5.x\u002F4.api\u002F1.components\u002F1.nuxt-client-fallback",{"title":456,"path":2277,"stem":2278,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-picture","docs\u002F5.x\u002F4.api\u002F1.components\u002F10.nuxt-picture",{"title":460,"path":2280,"stem":2281,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fteleports","docs\u002F5.x\u002F4.api\u002F1.components\u002F11.teleports",{"title":464,"path":2283,"stem":2284,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-route-announcer","docs\u002F5.x\u002F4.api\u002F1.components\u002F12.nuxt-route-announcer",{"title":468,"path":2286,"stem":2287,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-time","docs\u002F5.x\u002F4.api\u002F1.components\u002F13.nuxt-time",{"title":1449,"path":2289,"stem":2290,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-announcer","docs\u002F5.x\u002F4.api\u002F1.components\u002F14.nuxt-announcer",{"title":472,"path":2292,"stem":2293,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-page","docs\u002F5.x\u002F4.api\u002F1.components\u002F2.nuxt-page",{"title":476,"path":2295,"stem":2296,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-layout","docs\u002F5.x\u002F4.api\u002F1.components\u002F3.nuxt-layout",{"title":480,"path":2298,"stem":2299,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-link","docs\u002F5.x\u002F4.api\u002F1.components\u002F4.nuxt-link",{"title":484,"path":2301,"stem":2302,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-loading-indicator","docs\u002F5.x\u002F4.api\u002F1.components\u002F5.nuxt-loading-indicator",{"title":488,"path":2304,"stem":2305,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-error-boundary","docs\u002F5.x\u002F4.api\u002F1.components\u002F6.nuxt-error-boundary",{"title":492,"path":2307,"stem":2308,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-welcome","docs\u002F5.x\u002F4.api\u002F1.components\u002F7.nuxt-welcome",{"title":496,"path":2310,"stem":2311,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-island","docs\u002F5.x\u002F4.api\u002F1.components\u002F8.nuxt-island",{"title":500,"path":2313,"stem":2314,"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":2316,"stem":2317,"children":2318,"page":108},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables","docs\u002F5.x\u002F4.api\u002F2.composables",[2319,2322,2325,2328,2331,2334,2337,2340,2343,2346,2349,2352,2355,2358,2361,2364,2367,2370,2373,2376,2379,2382,2385,2388,2391,2394,2397,2400,2403,2406,2409,2412,2415],{"title":1481,"path":2320,"stem":2321,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fcreate-use-async-data","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fcreate-use-async-data",{"title":1485,"path":2323,"stem":2324,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fcreate-use-fetch","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fcreate-use-fetch",{"title":511,"path":2326,"stem":2327,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fon-prehydrate","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fon-prehydrate",{"title":1492,"path":2329,"stem":2330,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-announcer","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-announcer",{"title":515,"path":2332,"stem":2333,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-app-config","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-app-config",{"title":519,"path":2335,"stem":2336,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-async-data","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-async-data",{"title":523,"path":2338,"stem":2339,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-cookie","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-cookie",{"title":527,"path":2341,"stem":2342,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-error","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-error",{"title":531,"path":2344,"stem":2345,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-fetch","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-fetch",{"title":535,"path":2347,"stem":2348,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-head","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-head",{"title":539,"path":2350,"stem":2351,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-head-safe","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-head-safe",{"title":543,"path":2353,"stem":2354,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-hydration","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-hydration",{"title":1520,"path":2356,"stem":2357,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-layout","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-layout",{"title":547,"path":2359,"stem":2360,"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":2362,"stem":2363,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-lazy-fetch","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-lazy-fetch",{"title":555,"path":2365,"stem":2366,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-loading-indicator","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-loading-indicator",{"title":559,"path":2368,"stem":2369,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-nuxt-app","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-nuxt-app",{"title":563,"path":2371,"stem":2372,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-nuxt-data","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-nuxt-data",{"title":567,"path":2374,"stem":2375,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-preview-mode","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-preview-mode",{"title":571,"path":2377,"stem":2378,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-request-event","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-request-event",{"title":575,"path":2380,"stem":2381,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-request-fetch","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-request-fetch",{"title":579,"path":2383,"stem":2384,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-request-header","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-request-header",{"title":583,"path":2386,"stem":2387,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-request-headers","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-request-headers",{"title":587,"path":2389,"stem":2390,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-request-url","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-request-url",{"title":591,"path":2392,"stem":2393,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-response-header","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-response-header",{"title":595,"path":2395,"stem":2396,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-route","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-route",{"title":599,"path":2398,"stem":2399,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-route-announcer","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-route-announcer",{"title":603,"path":2401,"stem":2402,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-router","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-router",{"title":607,"path":2404,"stem":2405,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-runtime-config","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-runtime-config",{"title":611,"path":2407,"stem":2408,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-runtime-hook","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-runtime-hook",{"title":615,"path":2410,"stem":2411,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-seo-meta","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-seo-meta",{"title":619,"path":2413,"stem":2414,"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":2416,"stem":2417,"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":2419,"stem":2420,"children":2421,"page":108},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils","docs\u002F5.x\u002F4.api\u002F3.utils",[2422,2425,2428,2431,2434,2437,2440,2443,2446,2449,2452,2455,2458,2461,2464,2467,2470,2473,2476,2479,2482,2485,2488,2491,2494,2497,2500,2503,2506],{"title":634,"path":2423,"stem":2424,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fdollarfetch","docs\u002F5.x\u002F4.api\u002F3.utils\u002F$fetch",{"title":638,"path":2426,"stem":2427,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fabort-navigation","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fabort-navigation",{"title":642,"path":2429,"stem":2430,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fadd-route-middleware","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fadd-route-middleware",{"title":646,"path":2432,"stem":2433,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fcall-once","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fcall-once",{"title":650,"path":2435,"stem":2436,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fclear-error","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fclear-error",{"title":654,"path":2438,"stem":2439,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fclear-nuxt-data","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fclear-nuxt-data",{"title":658,"path":2441,"stem":2442,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fclear-nuxt-state","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fclear-nuxt-state",{"title":662,"path":2444,"stem":2445,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fcreate-error","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fcreate-error",{"title":666,"path":2447,"stem":2448,"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":2450,"stem":2451,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fdefine-nuxt-component","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fdefine-nuxt-component",{"title":674,"path":2453,"stem":2454,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fdefine-nuxt-plugin","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fdefine-nuxt-plugin",{"title":678,"path":2456,"stem":2457,"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":2459,"stem":2460,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fdefine-page-meta","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fdefine-page-meta",{"title":686,"path":2462,"stem":2463,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fdefine-route-rules","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fdefine-route-rules",{"title":690,"path":2465,"stem":2466,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fnavigate-to","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fnavigate-to",{"title":694,"path":2468,"stem":2469,"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":2471,"stem":2472,"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":2474,"stem":2475,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fon-nuxt-ready","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fon-nuxt-ready",{"title":706,"path":2477,"stem":2478,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fprefetch-components","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fprefetch-components",{"title":710,"path":2480,"stem":2481,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fpreload-components","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fpreload-components",{"title":714,"path":2483,"stem":2484,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fpreload-route-components","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fpreload-route-components",{"title":718,"path":2486,"stem":2487,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fprerender-routes","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fprerender-routes",{"title":722,"path":2489,"stem":2490,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Frefresh-cookie","docs\u002F5.x\u002F4.api\u002F3.utils\u002Frefresh-cookie",{"title":726,"path":2492,"stem":2493,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Frefresh-nuxt-data","docs\u002F5.x\u002F4.api\u002F3.utils\u002Frefresh-nuxt-data",{"title":730,"path":2495,"stem":2496,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Freload-nuxt-app","docs\u002F5.x\u002F4.api\u002F3.utils\u002Freload-nuxt-app",{"title":734,"path":2498,"stem":2499,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fset-page-layout","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fset-page-layout",{"title":738,"path":2501,"stem":2502,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fset-response-status","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fset-response-status",{"title":742,"path":2504,"stem":2505,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fshow-error","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fshow-error",{"title":746,"path":2507,"stem":2508,"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":2510,"stem":2511,"children":2512,"page":108},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands","docs\u002F5.x\u002F4.api\u002F4.commands",[2513,2516,2519,2522,2525,2528,2531,2534,2537,2540,2543,2546,2549,2552,2555,2558],{"title":757,"path":2514,"stem":2515,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fadd","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fadd",{"title":761,"path":2517,"stem":2518,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fanalyze","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fanalyze",{"title":765,"path":2520,"stem":2521,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fbuild","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fbuild",{"title":769,"path":2523,"stem":2524,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fbuild-module","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fbuild-module",{"title":773,"path":2526,"stem":2527,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fcleanup","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fcleanup",{"title":777,"path":2529,"stem":2530,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fdev","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fdev",{"title":781,"path":2532,"stem":2533,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fdevtools","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fdevtools",{"title":785,"path":2535,"stem":2536,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fgenerate","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fgenerate",{"title":789,"path":2538,"stem":2539,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Finfo","docs\u002F5.x\u002F4.api\u002F4.commands\u002Finfo",{"title":793,"path":2541,"stem":2542,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Finit","docs\u002F5.x\u002F4.api\u002F4.commands\u002Finit",{"title":797,"path":2544,"stem":2545,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fmodule","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fmodule",{"title":801,"path":2547,"stem":2548,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fprepare","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fprepare",{"title":805,"path":2550,"stem":2551,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fpreview","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fpreview",{"title":809,"path":2553,"stem":2554,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Ftest","docs\u002F5.x\u002F4.api\u002F4.commands\u002Ftest",{"title":813,"path":2556,"stem":2557,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Ftypecheck","docs\u002F5.x\u002F4.api\u002F4.commands\u002Ftypecheck",{"title":817,"path":2559,"stem":2560,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fupgrade","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fupgrade",{"title":415,"titleTemplate":821,"icon":822,"path":2562,"stem":2563,"children":2564,"page":108},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit","docs\u002F5.x\u002F4.api\u002F5.kit",[2565,2568,2571,2574,2577,2580,2583,2586,2589,2592,2595,2598,2601,2604,2607,2610,2613,2616,2619],{"title":276,"path":2566,"stem":2567,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fmodules","docs\u002F5.x\u002F4.api\u002F5.kit\u002F1.modules",{"title":403,"path":2569,"stem":2570,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fruntime-config","docs\u002F5.x\u002F4.api\u002F5.kit\u002F10.runtime-config",{"title":833,"path":2572,"stem":2573,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Ftemplates","docs\u002F5.x\u002F4.api\u002F5.kit\u002F10.templates",{"title":1740,"path":2575,"stem":2576,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fapp-config","docs\u002F5.x\u002F4.api\u002F5.kit\u002F11.app-config",{"title":837,"path":2578,"stem":2579,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fnitro","docs\u002F5.x\u002F4.api\u002F5.kit\u002F12.nitro",{"title":841,"path":2581,"stem":2582,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fresolving","docs\u002F5.x\u002F4.api\u002F5.kit\u002F13.resolving",{"title":845,"path":2584,"stem":2585,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Flogging","docs\u002F5.x\u002F4.api\u002F5.kit\u002F14.logging",{"title":849,"path":2587,"stem":2588,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fbuilder","docs\u002F5.x\u002F4.api\u002F5.kit\u002F15.builder",{"title":853,"path":2590,"stem":2591,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fexamples","docs\u002F5.x\u002F4.api\u002F5.kit\u002F16.examples",{"title":84,"path":2593,"stem":2594,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Flayers","docs\u002F5.x\u002F4.api\u002F5.kit\u002F17.layers",{"title":860,"path":2596,"stem":2597,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fprogrammatic","docs\u002F5.x\u002F4.api\u002F5.kit\u002F2.programmatic",{"title":864,"path":2599,"stem":2600,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fcompatibility","docs\u002F5.x\u002F4.api\u002F5.kit\u002F3.compatibility",{"title":268,"path":2602,"stem":2603,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fautoimports","docs\u002F5.x\u002F4.api\u002F5.kit\u002F4.autoimports",{"title":438,"path":2605,"stem":2606,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fcomponents","docs\u002F5.x\u002F4.api\u002F5.kit\u002F5.components",{"title":874,"path":2608,"stem":2609,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fcontext","docs\u002F5.x\u002F4.api\u002F5.kit\u002F6.context",{"title":878,"path":2611,"stem":2612,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fpages","docs\u002F5.x\u002F4.api\u002F5.kit\u002F7.pages",{"title":882,"path":2614,"stem":2615,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Flayout","docs\u002F5.x\u002F4.api\u002F5.kit\u002F8.layout",{"title":886,"path":2617,"stem":2618,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fhead","docs\u002F5.x\u002F4.api\u002F5.kit\u002F9.head",{"title":890,"path":2620,"stem":2621,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fplugins","docs\u002F5.x\u002F4.api\u002F5.kit\u002F9.plugins",{"title":894,"titleTemplate":6,"icon":895,"path":2623,"stem":2624,"children":2625,"page":108},"\u002Fdocs\u002F5.x\u002Fapi\u002Fadvanced","docs\u002F5.x\u002F4.api\u002F6.advanced",[2626,2629],{"title":411,"path":2627,"stem":2628,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fadvanced\u002Fhooks","docs\u002F5.x\u002F4.api\u002F6.advanced\u002F1.hooks",{"title":903,"path":2630,"stem":2631,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fadvanced\u002Fimport-meta","docs\u002F5.x\u002F4.api\u002F6.advanced\u002F2.import-meta",{"title":907,"path":2633,"stem":2634,"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":2636,"stem":2637,"children":2638,"page":108},"\u002Fdocs\u002F5.x\u002Fexamples","docs\u002F5.x\u002F4.examples",[2639,2642,2661,2674,2705],{"title":918,"path":2640,"stem":2641,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fhello-world","docs\u002F5.x\u002F4.examples\u002F0.hello-world",{"title":399,"path":2643,"stem":2644,"children":2645,"page":108},"\u002Fdocs\u002F5.x\u002Fexamples\u002Ffeatures","docs\u002F5.x\u002F4.examples\u002F1.features",[2646,2649,2652,2655,2658],{"title":926,"path":2647,"stem":2648,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Ffeatures\u002Fauto-imports","docs\u002F5.x\u002F4.examples\u002F1.features\u002F1.auto-imports",{"title":64,"path":2650,"stem":2651,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Ffeatures\u002Fdata-fetching","docs\u002F5.x\u002F4.examples\u002F1.features\u002F2.data-fetching",{"title":69,"path":2653,"stem":2654,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Ffeatures\u002Fstate-management","docs\u002F5.x\u002F4.examples\u002F1.features\u002F3.state-management",{"title":936,"path":2656,"stem":2657,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Ffeatures\u002Fmeta-tags","docs\u002F5.x\u002F4.examples\u002F1.features\u002F4.meta-tags",{"title":940,"path":2659,"stem":2660,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Ffeatures\u002Flayouts","docs\u002F5.x\u002F4.examples\u002F1.features\u002F5.layouts",{"title":49,"path":2662,"stem":2663,"children":2664,"page":108},"\u002Fdocs\u002F5.x\u002Fexamples\u002Frouting","docs\u002F5.x\u002F4.examples\u002F2.routing",[2665,2668,2671],{"title":948,"path":2666,"stem":2667,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Frouting\u002Fmiddleware","docs\u002F5.x\u002F4.examples\u002F2.routing\u002Fmiddleware",{"title":878,"path":2669,"stem":2670,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Frouting\u002Fpages","docs\u002F5.x\u002F4.examples\u002F2.routing\u002Fpages",{"title":955,"path":2672,"stem":2673,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Frouting\u002Funiversal-router","docs\u002F5.x\u002F4.examples\u002F2.routing\u002Funiversal-router",{"title":894,"path":2675,"stem":2676,"children":2677,"page":108},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced","docs\u002F5.x\u002F4.examples\u002F4.advanced",[2678,2681,2684,2687,2690,2693,2696,2699,2702],{"title":84,"path":2679,"stem":2680,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Fconfig-extends","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Fconfig-extends",{"title":74,"path":2682,"stem":2683,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Ferror-handling","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Ferror-handling",{"title":969,"path":2685,"stem":2686,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Fjsx","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Fjsx",{"title":973,"path":2688,"stem":2689,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Flocale","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Flocale",{"title":977,"path":2691,"stem":2692,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Fmodule-extend-pages","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Fmodule-extend-pages",{"title":981,"path":2694,"stem":2695,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Fteleport","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Fteleport",{"title":99,"path":2697,"stem":2698,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Ftesting","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Ftesting",{"title":523,"path":2700,"stem":2701,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Fuse-cookie","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Fuse-cookie",{"title":991,"path":2703,"stem":2704,"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":2706,"stem":2707,"children":2708,"page":108},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fexperimental","docs\u002F5.x\u002F4.examples\u002F7.experimental",[2709],{"title":1000,"path":2710,"stem":2711,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fexperimental\u002Fwasm","docs\u002F5.x\u002F4.examples\u002F7.experimental\u002Fwasm",{"title":1004,"titleTemplate":1005,"icon":1006,"path":2713,"stem":2714,"children":2715,"page":108},"\u002Fdocs\u002F5.x\u002Fcommunity","docs\u002F5.x\u002F5.community",[2716,2719,2722,2725,2728,2731],{"title":1011,"path":2717,"stem":2718,"titleTemplate":6,"icon":1014},"\u002Fdocs\u002F5.x\u002Fcommunity\u002Fgetting-help","docs\u002F5.x\u002F5.community\u002F2.getting-help",{"title":1016,"path":2720,"stem":2721,"titleTemplate":6,"icon":1019},"\u002Fdocs\u002F5.x\u002Fcommunity\u002Freporting-bugs","docs\u002F5.x\u002F5.community\u002F3.reporting-bugs",{"title":1021,"path":2723,"stem":2724,"titleTemplate":6,"icon":1024},"\u002Fdocs\u002F5.x\u002Fcommunity\u002Fcontribution","docs\u002F5.x\u002F5.community\u002F4.contribution",{"title":1026,"path":2726,"stem":2727,"titleTemplate":6,"icon":1029},"\u002Fdocs\u002F5.x\u002Fcommunity\u002Fframework-contribution","docs\u002F5.x\u002F5.community\u002F5.framework-contribution",{"title":1031,"path":2729,"stem":2730,"titleTemplate":6,"icon":1034},"\u002Fdocs\u002F5.x\u002Fcommunity\u002Froadmap","docs\u002F5.x\u002F5.community\u002F6.roadmap",{"title":1036,"path":2732,"stem":2733,"titleTemplate":6,"icon":1039},"\u002Fdocs\u002F5.x\u002Fcommunity\u002Fchangelog","docs\u002F5.x\u002F5.community\u002F7.changelog",{"title":1041,"titleTemplate":1042,"icon":1043,"path":2735,"stem":2736,"children":2737,"page":108},"\u002Fdocs\u002F5.x\u002Fbridge","docs\u002F5.x\u002F6.bridge",[2738,2741,2744,2747,2750,2753,2756,2759,2762,2765],{"title":1048,"path":2739,"stem":2740,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Foverview","docs\u002F5.x\u002F6.bridge\u002F1.overview",{"title":29,"path":2742,"stem":2743,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fconfiguration","docs\u002F5.x\u002F6.bridge\u002F10.configuration",{"title":280,"path":2745,"stem":2746,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Ftypescript","docs\u002F5.x\u002F6.bridge\u002F2.typescript",{"title":1058,"path":2748,"stem":2749,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fbridge-composition-api","docs\u002F5.x\u002F6.bridge\u002F3.bridge-composition-api",{"title":1062,"path":2751,"stem":2752,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fplugins-and-middleware","docs\u002F5.x\u002F6.bridge\u002F4.plugins-and-middleware",{"title":1066,"path":2754,"stem":2755,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fnuxt3-compatible-api","docs\u002F5.x\u002F6.bridge\u002F5.nuxt3-compatible-api",{"title":936,"path":2757,"stem":2758,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fmeta","docs\u002F5.x\u002F6.bridge\u002F6.meta",{"title":403,"path":2760,"stem":2761,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fruntime-config","docs\u002F5.x\u002F6.bridge\u002F7.runtime-config",{"title":837,"path":2763,"stem":2764,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fnitro","docs\u002F5.x\u002F6.bridge\u002F8.nitro",{"title":1079,"path":2766,"stem":2767,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fvite","docs\u002F5.x\u002F6.bridge\u002F9.vite",{"title":1083,"titleTemplate":1084,"icon":107,"path":2769,"stem":2770,"children":2771,"page":108},"\u002Fdocs\u002F5.x\u002Fmigration","docs\u002F5.x\u002F7.migration",[2772,2775,2778,2781,2784,2787,2790,2793,2796,2799,2802],{"title":1048,"path":2773,"stem":2774,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Foverview","docs\u002F5.x\u002F7.migration\u002F1.overview",{"title":1092,"path":2776,"stem":2777,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fbundling","docs\u002F5.x\u002F7.migration\u002F10.bundling",{"title":79,"path":2779,"stem":2780,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fserver","docs\u002F5.x\u002F7.migration\u002F11.server",{"title":29,"path":2782,"stem":2783,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fconfiguration","docs\u002F5.x\u002F7.migration\u002F2.configuration",{"title":276,"path":2785,"stem":2786,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fmodule-authors","docs\u002F5.x\u002F7.migration\u002F20.module-authors",{"title":926,"path":2788,"stem":2789,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fauto-imports","docs\u002F5.x\u002F7.migration\u002F3.auto-imports",{"title":936,"path":2791,"stem":2792,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fmeta","docs\u002F5.x\u002F7.migration\u002F4.meta",{"title":1062,"path":2794,"stem":2795,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fplugins-and-middleware","docs\u002F5.x\u002F7.migration\u002F5.plugins-and-middleware",{"title":1114,"path":2797,"stem":2798,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fpages-and-layouts","docs\u002F5.x\u002F7.migration\u002F6.pages-and-layouts",{"title":1118,"path":2800,"stem":2801,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fcomponent-options","docs\u002F5.x\u002F7.migration\u002F7.component-options",{"title":403,"path":2803,"stem":2804,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fruntime-config","docs\u002F5.x\u002F7.migration\u002F8.runtime-config",{"title":2806,"icon":2807,"path":2808,"stem":2809,"children":2810,"page":108},"Blog","i-lucide-newspaper","\u002Fblog","blog",[2811,2815,2819,2823,2827,2831,2835,2839,2843,2847,2851,2855,2859,2863,2867,2871,2875,2879,2883,2887,2891,2895,2899,2903,2907,2911,2915,2919,2923,2927,2931,2935,2939,2943,2947,2951,2955,2959,2963,2967,2971,2975,2979,2983,2987,2991,2995,2999,3003,3007],{"title":2812,"path":2813,"stem":2814},"Announcing 3.0","\u002Fblog\u002Fv3","blog\u002F1.v3",{"title":2816,"path":2817,"stem":2818},"Nuxt 3.3","\u002Fblog\u002Fv3-3","blog\u002F10.v3-3",{"title":2820,"path":2821,"stem":2822},"Nuxt 3.4","\u002Fblog\u002Fv3-4","blog\u002F11.v3-4",{"title":2824,"path":2825,"stem":2826},"Nuxt 3.5","\u002Fblog\u002Fv3-5","blog\u002F12.v3-5",{"title":2828,"path":2829,"stem":2830},"Nuxt 3.6","\u002Fblog\u002Fv3-6","blog\u002F13.v3-6",{"title":2832,"path":2833,"stem":2834},"Nuxt on the Edge","\u002Fblog\u002Fnuxt-on-the-edge","blog\u002F14.nuxt-on-the-edge",{"title":2836,"path":2837,"stem":2838},"Nuxt 3.7","\u002Fblog\u002Fv3-7","blog\u002F15.v3-7",{"title":2840,"path":2841,"stem":2842},"A New Website","\u002Fblog\u002Fnew-website","blog\u002F16.new-website",{"title":2844,"path":2845,"stem":2846},"Nuxt 3.8","\u002Fblog\u002Fv3-8","blog\u002F17.v3-8",{"title":2848,"path":2849,"stem":2850},"Nuxt DevTools v1.0","\u002Fblog\u002Fnuxt-devtools-v1-0","blog\u002F18.nuxt-devtools-v1-0",{"title":2852,"path":2853,"stem":2854},"Nuxt 3.9","\u002Fblog\u002Fv3-9","blog\u002F19.v3-9",{"title":2856,"path":2857,"stem":2858},"Nuxt: A vision for 2023","\u002Fblog\u002Fvision-2023","blog\u002F2.vision-2023",{"title":2860,"path":2861,"stem":2862},"Nuxt 3.10","\u002Fblog\u002Fv3-10","blog\u002F20.v3-10",{"title":2864,"path":2865,"stem":2866},"The Evolution of Shiki v1.0","\u002Fblog\u002Fshiki-v1","blog\u002F21.shiki-v1",{"title":2868,"path":2869,"stem":2870},"Nuxt 3.11","\u002Fblog\u002Fv3-11","blog\u002F22.v3-11",{"title":2872,"path":2873,"stem":2874},"Nuxt: Looking forward","\u002Fblog\u002Flooking-forward-2024","blog\u002F23.looking-forward-2024",{"title":2876,"path":2877,"stem":2878},"Refreshed Nuxt ESLint Integrations","\u002Fblog\u002Feslint-module","blog\u002F24.eslint-module",{"title":2880,"path":2881,"stem":2882},"Nuxt 3.12","\u002Fblog\u002Fv3-12","blog\u002F25.v3-12",{"title":2884,"path":2885,"stem":2886},"Introducing Nuxt Scripts","\u002Fblog\u002Fnuxt-scripts","blog\u002F26.nuxt-scripts",{"title":2888,"path":2889,"stem":2890},"Nuxt 3.13","\u002Fblog\u002Fv3-13","blog\u002F27.v3-13",{"title":2892,"path":2893,"stem":2894},"Nuxt 3.14","\u002Fblog\u002Fv3-14","blog\u002F27.v3-14",{"title":2896,"path":2897,"stem":2898},"Introducing Nuxt Icon v1","\u002Fblog\u002Fnuxt-icon-v1-0","blog\u002F29.nuxt-icon-v1-0",{"title":2900,"path":2901,"stem":2902},"Introducing Nuxt DevTools","\u002Fblog\u002Fintroducing-nuxt-devtools","blog\u002F3.introducing-nuxt-devtools",{"title":2904,"path":2905,"stem":2906},"Announcing Nuxt 3 Release Candidate","\u002Fblog\u002Fnuxt3-rc","blog\u002F3.nuxt3-rc",{"title":2908,"path":2909,"stem":2910},"Nuxt 3.15","\u002Fblog\u002Fv3-15","blog\u002F30.v3-15",{"title":2912,"path":2913,"stem":2914},"Nuxt 3.16","\u002Fblog\u002Fv3-16","blog\u002F31.v3-16",{"title":2916,"path":2917,"stem":2918},"Nuxt UI v3","\u002Fblog\u002Fnuxt-ui-v3","blog\u002F32.nuxt-ui-v3",{"title":2920,"path":2921,"stem":2922},"Nuxt 3.17","\u002Fblog\u002Fv3-17","blog\u002F33.v3-17",{"title":2924,"path":2925,"stem":2926},"Roadmap to v4","\u002Fblog\u002Froadmap-v4","blog\u002F34.roadmap-v4",{"title":2928,"path":2929,"stem":2930},"Building a Privacy-First Feedback Widget","\u002Fblog\u002Fbuilding-a-feedback-widget","blog\u002F35.building-a-feedback-widget",{"title":2932,"path":2933,"stem":2934},"Announcing Nuxt 4.0","\u002Fblog\u002Fv4","blog\u002F36.v4",{"title":2936,"path":2937,"stem":2938},"Nuxt 3.18","\u002Fblog\u002Fv3-18","blog\u002F37.v3-18",{"title":2940,"path":2941,"stem":2942},"Nuxt 4.1","\u002Fblog\u002Fv4-1","blog\u002F38.v4-1",{"title":2944,"path":2945,"stem":2946},"Nuxt UI v4","\u002Fblog\u002Fnuxt-ui-v4","blog\u002F39.nuxt-ui-v4",{"title":2948,"path":2949,"stem":2950},"Nuxt 2 End-of-Life (EOL)","\u002Fblog\u002Fnuxt2-eol","blog\u002F4.nuxt2-eol",{"title":2952,"path":2953,"stem":2954},"Introducing Nuxt 3 Beta","\u002Fblog\u002Fnuxt3-beta","blog\u002F4.nuxt3-beta",{"title":2956,"path":2957,"stem":2958},"Building an MCP Server for Nuxt","\u002Fblog\u002Fbuilding-nuxt-mcp","blog\u002F40.building-nuxt-mcp",{"title":2960,"path":2961,"stem":2962},"Nuxt 4.2","\u002Fblog\u002Fv4-2","blog\u002F40.v4-2",{"title":2964,"path":2965,"stem":2966},"Nuxt Image v2","\u002Fblog\u002Fnuxt-image-v2","blog\u002F41.nuxt-image-v2",{"title":2968,"path":2969,"stem":2970},"Nuxt 4.3","\u002Fblog\u002Fv4-3","blog\u002F42.v4-3",{"title":2972,"path":2973,"stem":2974},"Nuxt 4.4","\u002Fblog\u002Fv4-4","blog\u002F43.v4-4",{"title":2976,"path":2977,"stem":2978},"Introducing the Nuxt Agent","\u002Fblog\u002Fintroducing-nuxt-agent","blog\u002F44.introducing-nuxt-agent",{"title":2980,"path":2981,"stem":2982},"Meet Nuxi","\u002Fblog\u002Fmeet-nuxi","blog\u002F45.meet-nuxi",{"title":2984,"path":2985,"stem":2986},"Nuxt 4.5","\u002Fblog\u002Fv4-5","blog\u002F46.v4-5",{"title":2988,"path":2989,"stem":2990},"Nuxt Security Patch Releases","\u002Fblog\u002Fv4-5-security","blog\u002F47.v4-5-security",{"title":2992,"path":2993,"stem":2994},"Going Full Static","\u002Fblog\u002Fgoing-full-static","blog\u002F5.going-full-static",{"title":2996,"path":2997,"stem":2998},"Introducing Smart Prefetching","\u002Fblog\u002Fintroducing-smart-prefetching","blog\u002F6.introducing-smart-prefetching",{"title":3000,"path":3001,"stem":3002},"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":3004,"path":3005,"stem":3006},"Nuxt 2 Static Improvements","\u002Fblog\u002Fnuxt-static-improvements","blog\u002F8.nuxt-static-improvements",{"title":3008,"path":3009,"stem":3010},"Nuxt 2: From Terminal to Browser","\u002Fblog\u002Fnuxtjs-from-terminal-to-browser","blog\u002F9.nuxtjs-from-terminal-to-browser",{"name":3012,"description":3013,"repo":3014,"npm":3015,"icon":3016,"github":3017,"website":3017,"learn_more":3018,"category":3019,"type":3020,"maintainers":3021,"compatibility":3027,"generatedAt":3030,"contributors":3031,"stats":3059,"readme":3067},"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",[3022],{"name":3023,"github":3024,"twitter":3025,"bluesky":3026},"rrd","rrd108","radharadhya","rrd108.bsky.social",{"nuxt":3028,"requires":3029},">=3.0.0",{},"2026-07-27T17:23:39.621Z",[3032,3035,3039,3043,3047,3050,3053,3056],{"id":3033,"username":3024,"contributions":3034},3147489,282,{"id":3036,"username":3037,"contributions":3038},31929574,"ravesandstorm",5,{"id":3040,"username":3041,"contributions":3042},28706372,"danielroe",2,{"id":3044,"username":3045,"contributions":3046},20068593,"kschnekenburger",1,{"id":3048,"username":3049,"contributions":3046},32599710,"simonmaass",{"id":3051,"username":3052,"contributions":3046},125942725,"nd2024",{"id":3054,"username":3055,"contributions":3046},10197526,"chachew",{"id":3057,"username":3058,"contributions":3046},55457896,"LeeKrane",{"version":3060,"downloads":3061,"stars":3062,"watchers":3046,"forks":3063,"defaultBranch":3064,"publishedAt":3065,"createdAt":3066},"1.0.0",7656,56,8,"main",1782038138831,1711731542236,{"data":3068,"body":3070,"toc":10681},{"title":3069,"description":3018},"Nuxt API Shield",{"type":3071,"children":3072},"root",[3073,3080,3125,3130,3156,3162,3413,3419,3433,3542,3567,3572,3987,4005,4426,4440,4469,4574,4593,4605,4769,4774,4983,4994,5060,5279,5284,5290,5309,5316,5329,5342,6011,6035,6041,6070,6081,7306,7346,7373,7379,7385,7411,7553,7572,7775,7789,7808,7825,7843,7848,7854,7874,7880,7906,8113,8118,8128,8134,8146,8180,8186,8198,8348,8390,8395,8425,8446,8452,8457,8469,8480,8587,8595,9009,9020,9025,9076,9082,9099,9127,9131,9137,9149,9627,9633,9646,9652,9743,9749,9778,9784,9822,9828,9847,9852,9857,10149,10155,10201,10207,10213,10223,10319,10325,10416,10429,10440,10460,10466,10675],{"type":3074,"tag":3075,"props":3076,"children":3077},"element","h1",{"id":3015},[3078],{"type":3079,"value":3069},"text",{"type":3074,"tag":3081,"props":3082,"children":3083},"p",{},[3084,3097,3106,3115],{"type":3074,"tag":3085,"props":3086,"children":3090},"a",{"href":3087,"rel":3088},"https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fnuxt-api-shield",[3089],"nofollow",[3091],{"type":3074,"tag":3092,"props":3093,"children":3096},"img",{"alt":3094,"src":3095},"npm version","https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002Fnuxt-api-shield\u002Flatest.svg?style=flat&colorA=020420&colorB=00DC82",[],{"type":3074,"tag":3085,"props":3098,"children":3100},{"href":3087,"rel":3099},[3089],[3101],{"type":3074,"tag":3092,"props":3102,"children":3105},{"alt":3103,"src":3104},"npm downloads","https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fdm\u002Fnuxt-api-shield.svg?style=flat&colorA=020420&colorB=00DC82",[],{"type":3074,"tag":3085,"props":3107,"children":3109},{"href":3087,"rel":3108},[3089],[3110],{"type":3074,"tag":3092,"props":3111,"children":3114},{"alt":3112,"src":3113},"License","https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fl\u002Fnuxt-api-shield.svg?style=flat&colorA=020420&colorB=00DC82",[],{"type":3074,"tag":3085,"props":3116,"children":3119},{"href":3117,"rel":3118},"https:\u002F\u002Fnuxt.com",[3089],[3120],{"type":3074,"tag":3092,"props":3121,"children":3124},{"alt":3122,"src":3123},"Nuxt","https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FNuxt-020420?logo=nuxt.js",[],{"type":3074,"tag":3081,"props":3126,"children":3127},{},[3128],{"type":3079,"value":3129},"This Nuxt module implements a rate limiting middleware to protect your API endpoints from excessive requests.",{"type":3074,"tag":3131,"props":3132,"children":3133},"ul",{},[3134],{"type":3074,"tag":3135,"props":3136,"children":3137},"li",{},[3138,3144],{"type":3074,"tag":3085,"props":3139,"children":3141},{"href":3140},"\u002FCHANGELOG.md",[3142],{"type":3079,"value":3143},"✨  Release Notes",{"type":3074,"tag":3131,"props":3145,"children":3146},{},[3147],{"type":3074,"tag":3135,"props":3148,"children":3149},{},[3150],{"type":3074,"tag":3085,"props":3151,"children":3153},{"href":3017,"rel":3152},[3089],[3154],{"type":3079,"value":3155},"📖  Documentation",{"type":3074,"tag":3157,"props":3158,"children":3160},"h2",{"id":3159},"features",[3161],{"type":3079,"value":399},{"type":3074,"tag":3131,"props":3163,"children":3164},{},[3165,3187,3244,3265,3286,3307,3339,3373],{"type":3074,"tag":3135,"props":3166,"children":3167},{},[3168,3174],{"type":3074,"tag":3169,"props":3170,"children":3171},"strong",{},[3172],{"type":3079,"value":3173},"IP-Based Rate limiting and Brute Force Protection",{"type":3074,"tag":3131,"props":3175,"children":3176},{},[3177,3182],{"type":3074,"tag":3135,"props":3178,"children":3179},{},[3180],{"type":3079,"value":3181},"Tracks and enforces rate limits for individual IP addresses.",{"type":3074,"tag":3135,"props":3183,"children":3184},{},[3185],{"type":3079,"value":3186},"Prevents malicious actors or excessive requests from a single source from overwhelming your API.",{"type":3074,"tag":3135,"props":3188,"children":3189},{},[3190,3195],{"type":3074,"tag":3169,"props":3191,"children":3192},{},[3193],{"type":3079,"value":3194},"Customizable Rate Limits",{"type":3074,"tag":3131,"props":3196,"children":3197},{},[3198,3203,3215,3220,3225,3239],{"type":3074,"tag":3135,"props":3199,"children":3200},{},[3201],{"type":3079,"value":3202},"Configure maximum request count, duration within which the limit applies, and a ban period for exceeding the limit.",{"type":3074,"tag":3135,"props":3204,"children":3205},{},[3206,3208,3213],{"type":3079,"value":3207},"If the request limit is exceeded, the user is banned for the configured ban period. During the ban period, ",{"type":3074,"tag":3169,"props":3209,"children":3210},{},[3211],{"type":3079,"value":3212},"all requests are blocked with a 429 error",{"type":3079,"value":3214},", regardless of the rate limit window.",{"type":3074,"tag":3135,"props":3216,"children":3217},{},[3218],{"type":3079,"value":3219},"Add a delay to responses when a user is banned to discourage further abuse (optional).",{"type":3074,"tag":3135,"props":3221,"children":3222},{},[3223],{"type":3079,"value":3224},"Customize the error message for banned users.",{"type":3074,"tag":3135,"props":3226,"children":3227},{},[3228,3230,3237],{"type":3079,"value":3229},"Optionally include the ",{"type":3074,"tag":3231,"props":3232,"children":3234},"code",{"className":3233},[],[3235],{"type":3079,"value":3236},"Retry-After",{"type":3079,"value":3238}," header in responses when a user is banned.",{"type":3074,"tag":3135,"props":3240,"children":3241},{},[3242],{"type":3079,"value":3243},"Tailor the rate-limiting behavior to align with your API's specific needs and usage patterns.",{"type":3074,"tag":3135,"props":3245,"children":3246},{},[3247,3252],{"type":3074,"tag":3169,"props":3248,"children":3249},{},[3250],{"type":3079,"value":3251},"Event-Driven Handling",{"type":3074,"tag":3131,"props":3253,"children":3254},{},[3255,3260],{"type":3074,"tag":3135,"props":3256,"children":3257},{},[3258],{"type":3079,"value":3259},"Intercepts incoming API requests efficiently using Nuxt's event system.",{"type":3074,"tag":3135,"props":3261,"children":3262},{},[3263],{"type":3079,"value":3264},"Ensures seamless integration with your Nuxt application's request lifecycle.",{"type":3074,"tag":3135,"props":3266,"children":3267},{},[3268,3273],{"type":3074,"tag":3169,"props":3269,"children":3270},{},[3271],{"type":3079,"value":3272},"Flexible Storage",{"type":3074,"tag":3131,"props":3274,"children":3275},{},[3276,3281],{"type":3074,"tag":3135,"props":3277,"children":3278},{},[3279],{"type":3079,"value":3280},"Utilizes Nuxt's unstorage abstraction for versatile storage options.",{"type":3074,"tag":3135,"props":3282,"children":3283},{},[3284],{"type":3079,"value":3285},"Store rate-limiting data in various storage providers (filesystem, memory, databases, etc.) based on your project's requirements.",{"type":3074,"tag":3135,"props":3287,"children":3288},{},[3289,3294],{"type":3074,"tag":3169,"props":3290,"children":3291},{},[3292],{"type":3079,"value":3293},"Configurable with Runtime Config",{"type":3074,"tag":3131,"props":3295,"children":3296},{},[3297,3302],{"type":3074,"tag":3135,"props":3298,"children":3299},{},[3300],{"type":3079,"value":3301},"Easily adjust rate-limiting parameters without code changes.",{"type":3074,"tag":3135,"props":3303,"children":3304},{},[3305],{"type":3079,"value":3306},"Adapt to dynamic needs and maintain control over rate-limiting behavior through Nuxt's runtime configuration.",{"type":3074,"tag":3135,"props":3308,"children":3309},{},[3310,3315],{"type":3074,"tag":3169,"props":3311,"children":3312},{},[3313],{"type":3079,"value":3314},"Bundled cleanup tasks",{"type":3074,"tag":3131,"props":3316,"children":3317},{},[3318],{"type":3074,"tag":3135,"props":3319,"children":3320},{},[3321,3323,3329,3331,3337],{"type":3079,"value":3322},"Registers Nitro tasks ",{"type":3074,"tag":3231,"props":3324,"children":3326},{"className":3325},[],[3327],{"type":3079,"value":3328},"shield:cleanBans",{"type":3079,"value":3330}," and ",{"type":3074,"tag":3231,"props":3332,"children":3334},{"className":3333},[],[3335],{"type":3079,"value":3336},"shield:cleanIpData",{"type":3079,"value":3338}," so you can schedule maintenance without adding task files (see setup step 4).",{"type":3074,"tag":3135,"props":3340,"children":3341},{},[3342,3347],{"type":3074,"tag":3169,"props":3343,"children":3344},{},[3345],{"type":3079,"value":3346},"Clear Error Handling",{"type":3074,"tag":3131,"props":3348,"children":3349},{},[3350,3355,3368],{"type":3074,"tag":3135,"props":3351,"children":3352},{},[3353],{"type":3079,"value":3354},"Returns a standardized 429 \"Too Many Requests\" error response when rate limits are exceeded or when a user is banned.",{"type":3074,"tag":3135,"props":3356,"children":3357},{},[3358,3360,3366],{"type":3079,"value":3359},"The 429 body is JSON (",{"type":3074,"tag":3231,"props":3361,"children":3363},{"className":3362},[],[3364],{"type":3079,"value":3365},"{ error, retryAfter }",{"type":3079,"value":3367},") for predictable client-side handling.",{"type":3074,"tag":3135,"props":3369,"children":3370},{},[3371],{"type":3079,"value":3372},"Facilitates proper error handling in client-side applications for a smooth user experience.",{"type":3074,"tag":3135,"props":3374,"children":3375},{},[3376,3381],{"type":3074,"tag":3169,"props":3377,"children":3378},{},[3379],{"type":3079,"value":3380},"Standard Rate-Limit Headers",{"type":3074,"tag":3131,"props":3382,"children":3383},{},[3384],{"type":3074,"tag":3135,"props":3385,"children":3386},{},[3387,3389,3395,3397,3403,3405,3411],{"type":3079,"value":3388},"Every response includes ",{"type":3074,"tag":3231,"props":3390,"children":3392},{"className":3391},[],[3393],{"type":3079,"value":3394},"X-RateLimit-Limit",{"type":3079,"value":3396},", ",{"type":3074,"tag":3231,"props":3398,"children":3400},{"className":3399},[],[3401],{"type":3079,"value":3402},"X-RateLimit-Remaining",{"type":3079,"value":3404},", and ",{"type":3074,"tag":3231,"props":3406,"children":3408},{"className":3407},[],[3409],{"type":3079,"value":3410},"X-RateLimit-Reset",{"type":3079,"value":3412}," headers so clients and CDNs can track usage without parsing response bodies.",{"type":3074,"tag":3157,"props":3414,"children":3416},{"id":3415},"quick-setup",[3417],{"type":3079,"value":3418},"Quick Setup",{"type":3074,"tag":3420,"props":3421,"children":3423},"h3",{"id":3422},"_1-add-nuxt-api-shield-dependency-to-your-project",[3424,3426,3431],{"type":3079,"value":3425},"1. Add ",{"type":3074,"tag":3231,"props":3427,"children":3429},{"className":3428},[],[3430],{"type":3079,"value":3015},{"type":3079,"value":3432}," dependency to your project",{"type":3074,"tag":3434,"props":3435,"children":3439},"pre",{"className":3436,"code":3437,"language":3438,"meta":3018,"style":3018},"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",[3440],{"type":3074,"tag":3231,"props":3441,"children":3442},{"__ignoreMap":3018},[3443,3454,3474,3483,3492,3508,3516,3525],{"type":3074,"tag":3444,"props":3445,"children":3447},"span",{"class":3446,"line":3046},"line",[3448],{"type":3074,"tag":3444,"props":3449,"children":3451},{"style":3450},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#90A4AE;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[3452],{"type":3079,"value":3453},"# Using pnpm\n",{"type":3074,"tag":3444,"props":3455,"children":3456},{"class":3446,"line":3042},[3457,3463,3469],{"type":3074,"tag":3444,"props":3458,"children":3460},{"style":3459},"--shiki-light:#E2931D;--shiki-default:#E2931D;--shiki-dark:#FFCB6B",[3461],{"type":3079,"value":3462},"pnpm",{"type":3074,"tag":3444,"props":3464,"children":3466},{"style":3465},"--shiki-light:#91B859;--shiki-default:#91B859;--shiki-dark:#C3E88D",[3467],{"type":3079,"value":3468}," add",{"type":3074,"tag":3444,"props":3470,"children":3471},{"style":3465},[3472],{"type":3079,"value":3473}," nuxt-api-shield\n",{"type":3074,"tag":3444,"props":3475,"children":3477},{"class":3446,"line":3476},3,[3478],{"type":3074,"tag":3444,"props":3479,"children":3480},{"emptyLinePlaceholder":1200},[3481],{"type":3079,"value":3482},"\n",{"type":3074,"tag":3444,"props":3484,"children":3486},{"class":3446,"line":3485},4,[3487],{"type":3074,"tag":3444,"props":3488,"children":3489},{"style":3450},[3490],{"type":3079,"value":3491},"# Using yarn\n",{"type":3074,"tag":3444,"props":3493,"children":3494},{"class":3446,"line":3038},[3495,3500,3504],{"type":3074,"tag":3444,"props":3496,"children":3497},{"style":3459},[3498],{"type":3079,"value":3499},"yarn",{"type":3074,"tag":3444,"props":3501,"children":3502},{"style":3465},[3503],{"type":3079,"value":3468},{"type":3074,"tag":3444,"props":3505,"children":3506},{"style":3465},[3507],{"type":3079,"value":3473},{"type":3074,"tag":3444,"props":3509,"children":3511},{"class":3446,"line":3510},6,[3512],{"type":3074,"tag":3444,"props":3513,"children":3514},{"emptyLinePlaceholder":1200},[3515],{"type":3079,"value":3482},{"type":3074,"tag":3444,"props":3517,"children":3519},{"class":3446,"line":3518},7,[3520],{"type":3074,"tag":3444,"props":3521,"children":3522},{"style":3450},[3523],{"type":3079,"value":3524},"# Using npm\n",{"type":3074,"tag":3444,"props":3526,"children":3527},{"class":3446,"line":3063},[3528,3533,3538],{"type":3074,"tag":3444,"props":3529,"children":3530},{"style":3459},[3531],{"type":3079,"value":3532},"npm",{"type":3074,"tag":3444,"props":3534,"children":3535},{"style":3465},[3536],{"type":3079,"value":3537}," install",{"type":3074,"tag":3444,"props":3539,"children":3540},{"style":3465},[3541],{"type":3079,"value":3473},{"type":3074,"tag":3420,"props":3543,"children":3545},{"id":3544},"_2-add-nuxt-api-shield-to-the-modules-section-of-nuxtconfigts",[3546,3548,3553,3555,3560,3562],{"type":3079,"value":3547},"2. Add ",{"type":3074,"tag":3231,"props":3549,"children":3551},{"className":3550},[],[3552],{"type":3079,"value":3015},{"type":3079,"value":3554}," to the ",{"type":3074,"tag":3231,"props":3556,"children":3558},{"className":3557},[],[3559],{"type":3079,"value":162},{"type":3079,"value":3561}," section of ",{"type":3074,"tag":3231,"props":3563,"children":3565},{"className":3564},[],[3566],{"type":3079,"value":233},{"type":3074,"tag":3081,"props":3568,"children":3569},{},[3570],{"type":3079,"value":3571},"You should add only the values you want to use differently from the default values.",{"type":3074,"tag":3434,"props":3573,"children":3577},{"className":3574,"code":3575,"language":3576,"meta":3018,"style":3018},"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",[3578],{"type":3074,"tag":3231,"props":3579,"children":3580},{"__ignoreMap":3018},[3581,3613,3655,3672,3680,3688,3696,3704,3712,3721,3730,3739,3748,3757,3766,3775,3784,3792,3801,3810,3824,3852,3860,3869,3897,3914,3923,3951,3959,3968],{"type":3074,"tag":3444,"props":3582,"children":3583},{"class":3446,"line":3046},[3584,3590,3595,3601,3607],{"type":3074,"tag":3444,"props":3585,"children":3587},{"style":3586},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#39ADB5;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[3588],{"type":3079,"value":3589},"export",{"type":3074,"tag":3444,"props":3591,"children":3592},{"style":3586},[3593],{"type":3079,"value":3594}," default",{"type":3074,"tag":3444,"props":3596,"children":3598},{"style":3597},"--shiki-light:#6182B8;--shiki-default:#6182B8;--shiki-dark:#82AAFF",[3599],{"type":3079,"value":3600}," defineNuxtConfig",{"type":3074,"tag":3444,"props":3602,"children":3604},{"style":3603},"--shiki-light:#90A4AE;--shiki-default:#90A4AE;--shiki-dark:#BABED8",[3605],{"type":3079,"value":3606},"(",{"type":3074,"tag":3444,"props":3608,"children":3610},{"style":3609},"--shiki-light:#39ADB5;--shiki-default:#39ADB5;--shiki-dark:#89DDFF",[3611],{"type":3079,"value":3612},"{\n",{"type":3074,"tag":3444,"props":3614,"children":3615},{"class":3446,"line":3042},[3616,3622,3627,3632,3637,3641,3645,3650],{"type":3074,"tag":3444,"props":3617,"children":3619},{"style":3618},"--shiki-light:#E53935;--shiki-default:#E53935;--shiki-dark:#F07178",[3620],{"type":3079,"value":3621},"  modules",{"type":3074,"tag":3444,"props":3623,"children":3624},{"style":3609},[3625],{"type":3079,"value":3626},":",{"type":3074,"tag":3444,"props":3628,"children":3629},{"style":3603},[3630],{"type":3079,"value":3631}," [",{"type":3074,"tag":3444,"props":3633,"children":3634},{"style":3609},[3635],{"type":3079,"value":3636},"\"",{"type":3074,"tag":3444,"props":3638,"children":3639},{"style":3465},[3640],{"type":3079,"value":3015},{"type":3074,"tag":3444,"props":3642,"children":3643},{"style":3609},[3644],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":3646,"children":3647},{"style":3603},[3648],{"type":3079,"value":3649},"]",{"type":3074,"tag":3444,"props":3651,"children":3652},{"style":3609},[3653],{"type":3079,"value":3654},",\n",{"type":3074,"tag":3444,"props":3656,"children":3657},{"class":3446,"line":3476},[3658,3663,3667],{"type":3074,"tag":3444,"props":3659,"children":3660},{"style":3618},[3661],{"type":3079,"value":3662},"  nuxtApiShield",{"type":3074,"tag":3444,"props":3664,"children":3665},{"style":3609},[3666],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":3668,"children":3669},{"style":3609},[3670],{"type":3079,"value":3671}," {\n",{"type":3074,"tag":3444,"props":3673,"children":3674},{"class":3446,"line":3485},[3675],{"type":3074,"tag":3444,"props":3676,"children":3677},{"style":3450},[3678],{"type":3079,"value":3679},"    \u002F*limit: {\n",{"type":3074,"tag":3444,"props":3681,"children":3682},{"class":3446,"line":3038},[3683],{"type":3074,"tag":3444,"props":3684,"children":3685},{"style":3450},[3686],{"type":3079,"value":3687},"      max: 12,        \u002F\u002F maximum requests per duration time, default is 12\u002Fduration\n",{"type":3074,"tag":3444,"props":3689,"children":3690},{"class":3446,"line":3510},[3691],{"type":3074,"tag":3444,"props":3692,"children":3693},{"style":3450},[3694],{"type":3079,"value":3695},"      duration: 108,   \u002F\u002F duration time in seconds, default is 108 seconds\n",{"type":3074,"tag":3444,"props":3697,"children":3698},{"class":3446,"line":3518},[3699],{"type":3074,"tag":3444,"props":3700,"children":3701},{"style":3450},[3702],{"type":3079,"value":3703},"      ban: 3600,      \u002F\u002F ban time in seconds, default is 3600 seconds = 1 hour\n",{"type":3074,"tag":3444,"props":3705,"children":3706},{"class":3446,"line":3063},[3707],{"type":3074,"tag":3444,"props":3708,"children":3709},{"style":3450},[3710],{"type":3079,"value":3711},"      \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":3074,"tag":3444,"props":3713,"children":3715},{"class":3446,"line":3714},9,[3716],{"type":3074,"tag":3444,"props":3717,"children":3718},{"style":3450},[3719],{"type":3079,"value":3720},"    },\n",{"type":3074,"tag":3444,"props":3722,"children":3724},{"class":3446,"line":3723},10,[3725],{"type":3074,"tag":3444,"props":3726,"children":3727},{"style":3450},[3728],{"type":3079,"value":3729},"    delayOnBan: true  \u002F\u002F delay every response with +1sec when the user is banned, default is true\n",{"type":3074,"tag":3444,"props":3731,"children":3733},{"class":3446,"line":3732},11,[3734],{"type":3074,"tag":3444,"props":3735,"children":3736},{"style":3450},[3737],{"type":3079,"value":3738},"    errorMessage: \"Too Many Requests\",  \u002F\u002F error message when the user is banned, default is \"Too Many Requests\"\n",{"type":3074,"tag":3444,"props":3740,"children":3742},{"class":3446,"line":3741},12,[3743],{"type":3074,"tag":3444,"props":3744,"children":3745},{"style":3450},[3746],{"type":3079,"value":3747},"    retryAfterHeader: false, \u002F\u002F when the user is banned add the Retry-After header to the response, default is false\n",{"type":3074,"tag":3444,"props":3749,"children":3751},{"class":3446,"line":3750},13,[3752],{"type":3074,"tag":3444,"props":3753,"children":3754},{"style":3450},[3755],{"type":3079,"value":3756},"    log: {\n",{"type":3074,"tag":3444,"props":3758,"children":3760},{"class":3446,"line":3759},14,[3761],{"type":3074,"tag":3444,"props":3762,"children":3763},{"style":3450},[3764],{"type":3079,"value":3765},"      path: \"\", \u002F\u002F path to the log file, every day a new log file will be created, use \"\" to disable logging\n",{"type":3074,"tag":3444,"props":3767,"children":3769},{"class":3446,"line":3768},15,[3770],{"type":3074,"tag":3444,"props":3771,"children":3772},{"style":3450},[3773],{"type":3079,"value":3774},"      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":3074,"tag":3444,"props":3776,"children":3778},{"class":3446,"line":3777},16,[3779],{"type":3074,"tag":3444,"props":3780,"children":3781},{"style":3450},[3782],{"type":3079,"value":3783},"      fail2ban: false, \u002F\u002F enable fail2ban-compatible log format for ban events (see fail2ban section)\n",{"type":3074,"tag":3444,"props":3785,"children":3787},{"class":3446,"line":3786},17,[3788],{"type":3074,"tag":3444,"props":3789,"children":3790},{"style":3450},[3791],{"type":3079,"value":3720},{"type":3074,"tag":3444,"props":3793,"children":3795},{"class":3446,"line":3794},18,[3796],{"type":3074,"tag":3444,"props":3797,"children":3798},{"style":3450},[3799],{"type":3079,"value":3800},"    routes: [], \u002F\u002F specify routes to apply rate limiting to, default is an empty array meaning all routes are protected.\n",{"type":3074,"tag":3444,"props":3802,"children":3804},{"class":3446,"line":3803},19,[3805],{"type":3074,"tag":3444,"props":3806,"children":3807},{"style":3450},[3808],{"type":3079,"value":3809},"    \u002F\u002F Example:\n",{"type":3074,"tag":3444,"props":3811,"children":3813},{"class":3446,"line":3812},20,[3814,3819],{"type":3074,"tag":3444,"props":3815,"children":3816},{"style":3450},[3817],{"type":3079,"value":3818},"    \u002F\u002F routes: [\"\u002Fapi\u002Fv2\u002F\", \"\u002Fapi\u002Fv3\u002F\"],",{"type":3074,"tag":3444,"props":3820,"children":3821},{"style":3450},[3822],{"type":3079,"value":3823}," \u002F\u002F \u002Fapi\u002Fv1 will not be protected, \u002Fapi\u002Fv2\u002F and \u002Fapi\u002Fv3\u002F will be protected *\u002F\n",{"type":3074,"tag":3444,"props":3825,"children":3827},{"class":3446,"line":3826},21,[3828,3833,3837,3842,3847],{"type":3074,"tag":3444,"props":3829,"children":3830},{"style":3618},[3831],{"type":3079,"value":3832},"    skipRoutes",{"type":3074,"tag":3444,"props":3834,"children":3835},{"style":3609},[3836],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":3838,"children":3839},{"style":3603},[3840],{"type":3079,"value":3841}," []",{"type":3074,"tag":3444,"props":3843,"children":3844},{"style":3609},[3845],{"type":3079,"value":3846},",",{"type":3074,"tag":3444,"props":3848,"children":3849},{"style":3450},[3850],{"type":3079,"value":3851}," \u002F\u002F specify routes to skip\u002Fexempt from rate limiting, supports wildcard patterns (*\u002F**)\n",{"type":3074,"tag":3444,"props":3853,"children":3855},{"class":3446,"line":3854},22,[3856],{"type":3074,"tag":3444,"props":3857,"children":3858},{"style":3450},[3859],{"type":3079,"value":3809},{"type":3074,"tag":3444,"props":3861,"children":3863},{"class":3446,"line":3862},23,[3864],{"type":3074,"tag":3444,"props":3865,"children":3866},{"style":3450},[3867],{"type":3079,"value":3868},"    \u002F\u002F skipRoutes: [\"\u002Fapi\u002Fhealth\", \"\u002Fapi\u002F_nuxt\u002F**\", \"\u002Fapi\u002Fwebhooks\u002Fstripe\"],\n",{"type":3074,"tag":3444,"props":3870,"children":3872},{"class":3446,"line":3871},24,[3873,3878,3882,3888,3892],{"type":3074,"tag":3444,"props":3874,"children":3875},{"style":3618},[3876],{"type":3079,"value":3877},"    ipTTL",{"type":3074,"tag":3444,"props":3879,"children":3880},{"style":3609},[3881],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":3883,"children":3885},{"style":3884},"--shiki-light:#F76D47;--shiki-default:#F76D47;--shiki-dark:#F78C6C",[3886],{"type":3079,"value":3887}," 604800",{"type":3074,"tag":3444,"props":3889,"children":3890},{"style":3609},[3891],{"type":3079,"value":3846},{"type":3074,"tag":3444,"props":3893,"children":3894},{"style":3450},[3895],{"type":3079,"value":3896}," \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":3074,"tag":3444,"props":3898,"children":3900},{"class":3446,"line":3899},25,[3901,3906,3910],{"type":3074,"tag":3444,"props":3902,"children":3903},{"style":3618},[3904],{"type":3079,"value":3905},"    security",{"type":3074,"tag":3444,"props":3907,"children":3908},{"style":3609},[3909],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":3911,"children":3912},{"style":3609},[3913],{"type":3079,"value":3671},{"type":3074,"tag":3444,"props":3915,"children":3917},{"class":3446,"line":3916},26,[3918],{"type":3074,"tag":3444,"props":3919,"children":3920},{"style":3450},[3921],{"type":3079,"value":3922},"      \u002F\u002F Optional: Security-related configurations\n",{"type":3074,"tag":3444,"props":3924,"children":3926},{"class":3446,"line":3925},27,[3927,3932,3936,3942,3946],{"type":3074,"tag":3444,"props":3928,"children":3929},{"style":3618},[3930],{"type":3079,"value":3931},"      trustXForwardedFor",{"type":3074,"tag":3444,"props":3933,"children":3934},{"style":3609},[3935],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":3937,"children":3939},{"style":3938},"--shiki-light:#FF5370;--shiki-default:#FF5370;--shiki-dark:#FF9CAC",[3940],{"type":3079,"value":3941}," false",{"type":3074,"tag":3444,"props":3943,"children":3944},{"style":3609},[3945],{"type":3079,"value":3846},{"type":3074,"tag":3444,"props":3947,"children":3948},{"style":3450},[3949],{"type":3079,"value":3950}," \u002F\u002F Default: false. Whether to trust X-Forwarded-For headers. See warning below.\n",{"type":3074,"tag":3444,"props":3952,"children":3954},{"class":3446,"line":3953},28,[3955],{"type":3074,"tag":3444,"props":3956,"children":3957},{"style":3609},[3958],{"type":3079,"value":3720},{"type":3074,"tag":3444,"props":3960,"children":3962},{"class":3446,"line":3961},29,[3963],{"type":3074,"tag":3444,"props":3964,"children":3965},{"style":3609},[3966],{"type":3079,"value":3967},"  },\n",{"type":3074,"tag":3444,"props":3969,"children":3971},{"class":3446,"line":3970},30,[3972,3977,3982],{"type":3074,"tag":3444,"props":3973,"children":3974},{"style":3609},[3975],{"type":3079,"value":3976},"}",{"type":3074,"tag":3444,"props":3978,"children":3979},{"style":3603},[3980],{"type":3079,"value":3981},")",{"type":3074,"tag":3444,"props":3983,"children":3984},{"style":3609},[3985],{"type":3079,"value":3986},";\n",{"type":3074,"tag":3081,"props":3988,"children":3989},{},[3990,3995,3997,4003],{"type":3074,"tag":3169,"props":3991,"children":3992},{},[3993],{"type":3079,"value":3994},"Default Configuration Values:",{"type":3079,"value":3996},"\n(These are applied by the module if not specified in your ",{"type":3074,"tag":3231,"props":3998,"children":4000},{"className":3999},[],[4001],{"type":3079,"value":4002},"nuxtApiShield",{"type":3079,"value":4004}," config)",{"type":3074,"tag":3434,"props":4006,"children":4008},{"className":3574,"code":4007,"language":3576,"meta":3018,"style":3018},"{\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",[4009],{"type":3074,"tag":3231,"props":4010,"children":4011},{"__ignoreMap":3018},[4012,4019,4035,4056,4082,4108,4115,4136,4166,4186,4202,4228,4254,4274,4281,4301,4321,4374,4390,4410,4418],{"type":3074,"tag":3444,"props":4013,"children":4014},{"class":3446,"line":3046},[4015],{"type":3074,"tag":3444,"props":4016,"children":4017},{"style":3609},[4018],{"type":3079,"value":3612},{"type":3074,"tag":3444,"props":4020,"children":4021},{"class":3446,"line":3042},[4022,4027,4031],{"type":3074,"tag":3444,"props":4023,"children":4024},{"style":3459},[4025],{"type":3079,"value":4026},"  limit",{"type":3074,"tag":3444,"props":4028,"children":4029},{"style":3609},[4030],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":4032,"children":4033},{"style":3609},[4034],{"type":3079,"value":3671},{"type":3074,"tag":3444,"props":4036,"children":4037},{"class":3446,"line":3476},[4038,4043,4047,4052],{"type":3074,"tag":3444,"props":4039,"children":4040},{"style":3459},[4041],{"type":3079,"value":4042},"    max",{"type":3074,"tag":3444,"props":4044,"children":4045},{"style":3609},[4046],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":4048,"children":4049},{"style":3884},[4050],{"type":3079,"value":4051}," 12",{"type":3074,"tag":3444,"props":4053,"children":4054},{"style":3609},[4055],{"type":3079,"value":3654},{"type":3074,"tag":3444,"props":4057,"children":4058},{"class":3446,"line":3485},[4059,4064,4068,4073,4077],{"type":3074,"tag":3444,"props":4060,"children":4061},{"style":3459},[4062],{"type":3079,"value":4063},"    duration",{"type":3074,"tag":3444,"props":4065,"children":4066},{"style":3609},[4067],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":4069,"children":4070},{"style":3884},[4071],{"type":3079,"value":4072}," 108",{"type":3074,"tag":3444,"props":4074,"children":4075},{"style":3609},[4076],{"type":3079,"value":3846},{"type":3074,"tag":3444,"props":4078,"children":4079},{"style":3450},[4080],{"type":3079,"value":4081}," \u002F\u002F seconds\n",{"type":3074,"tag":3444,"props":4083,"children":4084},{"class":3446,"line":3038},[4085,4090,4094,4099,4103],{"type":3074,"tag":3444,"props":4086,"children":4087},{"style":3459},[4088],{"type":3079,"value":4089},"    ban",{"type":3074,"tag":3444,"props":4091,"children":4092},{"style":3609},[4093],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":4095,"children":4096},{"style":3884},[4097],{"type":3079,"value":4098}," 3600",{"type":3074,"tag":3444,"props":4100,"children":4101},{"style":3609},[4102],{"type":3079,"value":3846},{"type":3074,"tag":3444,"props":4104,"children":4105},{"style":3450},[4106],{"type":3079,"value":4107},"     \u002F\u002F seconds\n",{"type":3074,"tag":3444,"props":4109,"children":4110},{"class":3446,"line":3510},[4111],{"type":3074,"tag":3444,"props":4112,"children":4113},{"style":3609},[4114],{"type":3079,"value":3967},{"type":3074,"tag":3444,"props":4116,"children":4117},{"class":3446,"line":3518},[4118,4123,4127,4132],{"type":3074,"tag":3444,"props":4119,"children":4120},{"style":3459},[4121],{"type":3079,"value":4122},"  delayOnBan",{"type":3074,"tag":3444,"props":4124,"children":4125},{"style":3609},[4126],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":4128,"children":4129},{"style":3938},[4130],{"type":3079,"value":4131}," true",{"type":3074,"tag":3444,"props":4133,"children":4134},{"style":3609},[4135],{"type":3079,"value":3654},{"type":3074,"tag":3444,"props":4137,"children":4138},{"class":3446,"line":3063},[4139,4144,4148,4153,4158,4162],{"type":3074,"tag":3444,"props":4140,"children":4141},{"style":3459},[4142],{"type":3079,"value":4143},"  errorMessage",{"type":3074,"tag":3444,"props":4145,"children":4146},{"style":3609},[4147],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":4149,"children":4150},{"style":3609},[4151],{"type":3079,"value":4152}," \"",{"type":3074,"tag":3444,"props":4154,"children":4155},{"style":3465},[4156],{"type":3079,"value":4157},"Too Many Requests",{"type":3074,"tag":3444,"props":4159,"children":4160},{"style":3609},[4161],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":4163,"children":4164},{"style":3609},[4165],{"type":3079,"value":3654},{"type":3074,"tag":3444,"props":4167,"children":4168},{"class":3446,"line":3714},[4169,4174,4178,4182],{"type":3074,"tag":3444,"props":4170,"children":4171},{"style":3459},[4172],{"type":3079,"value":4173},"  retryAfterHeader",{"type":3074,"tag":3444,"props":4175,"children":4176},{"style":3609},[4177],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":4179,"children":4180},{"style":3938},[4181],{"type":3079,"value":3941},{"type":3074,"tag":3444,"props":4183,"children":4184},{"style":3609},[4185],{"type":3079,"value":3654},{"type":3074,"tag":3444,"props":4187,"children":4188},{"class":3446,"line":3723},[4189,4194,4198],{"type":3074,"tag":3444,"props":4190,"children":4191},{"style":3459},[4192],{"type":3079,"value":4193},"  log",{"type":3074,"tag":3444,"props":4195,"children":4196},{"style":3609},[4197],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":4199,"children":4200},{"style":3609},[4201],{"type":3079,"value":3671},{"type":3074,"tag":3444,"props":4203,"children":4204},{"class":3446,"line":3732},[4205,4210,4214,4219,4223],{"type":3074,"tag":3444,"props":4206,"children":4207},{"style":3459},[4208],{"type":3079,"value":4209},"    path",{"type":3074,"tag":3444,"props":4211,"children":4212},{"style":3609},[4213],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":4215,"children":4216},{"style":3609},[4217],{"type":3079,"value":4218}," \"\"",{"type":3074,"tag":3444,"props":4220,"children":4221},{"style":3609},[4222],{"type":3079,"value":3846},{"type":3074,"tag":3444,"props":4224,"children":4225},{"style":3450},[4226],{"type":3079,"value":4227}," \u002F\u002F Logging is disabled if path is empty\n",{"type":3074,"tag":3444,"props":4229,"children":4230},{"class":3446,"line":3741},[4231,4236,4240,4245,4249],{"type":3074,"tag":3444,"props":4232,"children":4233},{"style":3459},[4234],{"type":3079,"value":4235},"    attempts",{"type":3074,"tag":3444,"props":4237,"children":4238},{"style":3609},[4239],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":4241,"children":4242},{"style":3884},[4243],{"type":3079,"value":4244}," 0",{"type":3074,"tag":3444,"props":4246,"children":4247},{"style":3609},[4248],{"type":3079,"value":3846},{"type":3074,"tag":3444,"props":4250,"children":4251},{"style":3450},[4252],{"type":3079,"value":4253}," \u002F\u002F Logging per IP is disabled if attempts is 0\n",{"type":3074,"tag":3444,"props":4255,"children":4256},{"class":3446,"line":3750},[4257,4262,4266,4270],{"type":3074,"tag":3444,"props":4258,"children":4259},{"style":3459},[4260],{"type":3079,"value":4261},"    fail2ban",{"type":3074,"tag":3444,"props":4263,"children":4264},{"style":3609},[4265],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":4267,"children":4268},{"style":3938},[4269],{"type":3079,"value":3941},{"type":3074,"tag":3444,"props":4271,"children":4272},{"style":3609},[4273],{"type":3079,"value":3654},{"type":3074,"tag":3444,"props":4275,"children":4276},{"class":3446,"line":3759},[4277],{"type":3074,"tag":3444,"props":4278,"children":4279},{"style":3609},[4280],{"type":3079,"value":3967},{"type":3074,"tag":3444,"props":4282,"children":4283},{"class":3446,"line":3768},[4284,4289,4293,4297],{"type":3074,"tag":3444,"props":4285,"children":4286},{"style":3459},[4287],{"type":3079,"value":4288},"  routes",{"type":3074,"tag":3444,"props":4290,"children":4291},{"style":3609},[4292],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":4294,"children":4295},{"style":3618},[4296],{"type":3079,"value":3841},{"type":3074,"tag":3444,"props":4298,"children":4299},{"style":3609},[4300],{"type":3079,"value":3654},{"type":3074,"tag":3444,"props":4302,"children":4303},{"class":3446,"line":3777},[4304,4309,4313,4317],{"type":3074,"tag":3444,"props":4305,"children":4306},{"style":3459},[4307],{"type":3079,"value":4308},"  skipRoutes",{"type":3074,"tag":3444,"props":4310,"children":4311},{"style":3609},[4312],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":4314,"children":4315},{"style":3618},[4316],{"type":3079,"value":3841},{"type":3074,"tag":3444,"props":4318,"children":4319},{"style":3609},[4320],{"type":3079,"value":3654},{"type":3074,"tag":3444,"props":4322,"children":4323},{"class":3446,"line":3786},[4324,4329,4333,4338,4343,4348,4352,4357,4361,4365,4369],{"type":3074,"tag":3444,"props":4325,"children":4326},{"style":3459},[4327],{"type":3079,"value":4328},"  ipTTL",{"type":3074,"tag":3444,"props":4330,"children":4331},{"style":3609},[4332],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":4334,"children":4335},{"style":3884},[4336],{"type":3079,"value":4337}," 7",{"type":3074,"tag":3444,"props":4339,"children":4340},{"style":3609},[4341],{"type":3079,"value":4342}," *",{"type":3074,"tag":3444,"props":4344,"children":4345},{"style":3884},[4346],{"type":3079,"value":4347}," 24",{"type":3074,"tag":3444,"props":4349,"children":4350},{"style":3609},[4351],{"type":3079,"value":4342},{"type":3074,"tag":3444,"props":4353,"children":4354},{"style":3884},[4355],{"type":3079,"value":4356}," 60",{"type":3074,"tag":3444,"props":4358,"children":4359},{"style":3609},[4360],{"type":3079,"value":4342},{"type":3074,"tag":3444,"props":4362,"children":4363},{"style":3884},[4364],{"type":3079,"value":4356},{"type":3074,"tag":3444,"props":4366,"children":4367},{"style":3609},[4368],{"type":3079,"value":3846},{"type":3074,"tag":3444,"props":4370,"children":4371},{"style":3450},[4372],{"type":3079,"value":4373}," \u002F\u002F 7 days in seconds\n",{"type":3074,"tag":3444,"props":4375,"children":4376},{"class":3446,"line":3794},[4377,4382,4386],{"type":3074,"tag":3444,"props":4378,"children":4379},{"style":3459},[4380],{"type":3079,"value":4381},"  security",{"type":3074,"tag":3444,"props":4383,"children":4384},{"style":3609},[4385],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":4387,"children":4388},{"style":3609},[4389],{"type":3079,"value":3671},{"type":3074,"tag":3444,"props":4391,"children":4392},{"class":3446,"line":3803},[4393,4398,4402,4406],{"type":3074,"tag":3444,"props":4394,"children":4395},{"style":3459},[4396],{"type":3079,"value":4397},"    trustXForwardedFor",{"type":3074,"tag":3444,"props":4399,"children":4400},{"style":3609},[4401],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":4403,"children":4404},{"style":3938},[4405],{"type":3079,"value":3941},{"type":3074,"tag":3444,"props":4407,"children":4408},{"style":3609},[4409],{"type":3079,"value":3654},{"type":3074,"tag":3444,"props":4411,"children":4412},{"class":3446,"line":3812},[4413],{"type":3074,"tag":3444,"props":4414,"children":4415},{"style":3609},[4416],{"type":3079,"value":4417},"  }\n",{"type":3074,"tag":3444,"props":4419,"children":4420},{"class":3446,"line":3826},[4421],{"type":3074,"tag":3444,"props":4422,"children":4423},{"style":3609},[4424],{"type":3079,"value":4425},"}\n",{"type":3074,"tag":3081,"props":4427,"children":4428},{},[4429],{"type":3074,"tag":3169,"props":4430,"children":4431},{},[4432,4434],{"type":3079,"value":4433},"Security Warning: ",{"type":3074,"tag":3231,"props":4435,"children":4437},{"className":4436},[],[4438],{"type":3079,"value":4439},"trustXForwardedFor",{"type":3074,"tag":3081,"props":4441,"children":4442},{},[4443,4445,4451,4453,4459,4461,4467],{"type":3079,"value":4444},"The ",{"type":3074,"tag":3231,"props":4446,"children":4448},{"className":4447},[],[4449],{"type":3079,"value":4450},"security.trustXForwardedFor",{"type":3079,"value":4452}," option (default is ",{"type":3074,"tag":3231,"props":4454,"children":4456},{"className":4455},[],[4457],{"type":3079,"value":4458},"false",{"type":3079,"value":4460},", set by the module) determines if the module uses the ",{"type":3074,"tag":3231,"props":4462,"children":4464},{"className":4463},[],[4465],{"type":3079,"value":4466},"X-Forwarded-For",{"type":3079,"value":4468}," HTTP header to identify the client's IP address.",{"type":3074,"tag":3131,"props":4470,"children":4471},{},[4472,4492,4530,4549],{"type":3074,"tag":3135,"props":4473,"children":4474},{},[4475,4477,4483,4485,4490],{"type":3079,"value":4476},"If set to ",{"type":3074,"tag":3231,"props":4478,"children":4480},{"className":4479},[],[4481],{"type":3079,"value":4482},"true",{"type":3079,"value":4484},": The module will use the IP address provided in the ",{"type":3074,"tag":3231,"props":4486,"children":4488},{"className":4487},[],[4489],{"type":3079,"value":4466},{"type":3079,"value":4491}," 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":3074,"tag":3135,"props":4493,"children":4494},{},[4495,4500,4502,4507,4509,4514,4516,4521,4523,4528],{"type":3074,"tag":3169,"props":4496,"children":4497},{},[4498],{"type":3079,"value":4499},"WARNING:",{"type":3079,"value":4501}," If ",{"type":3074,"tag":3231,"props":4503,"children":4505},{"className":4504},[],[4506],{"type":3079,"value":4439},{"type":3079,"value":4508}," is ",{"type":3074,"tag":3231,"props":4510,"children":4512},{"className":4511},[],[4513],{"type":3079,"value":4482},{"type":3079,"value":4515}," and your application is directly internet-facing OR your proxy is not configured to strip incoming ",{"type":3074,"tag":3231,"props":4517,"children":4519},{"className":4518},[],[4520],{"type":3079,"value":4466},{"type":3079,"value":4522}," headers from clients, malicious users can spoof their IP address by sending a fake ",{"type":3074,"tag":3231,"props":4524,"children":4526},{"className":4525},[],[4527],{"type":3079,"value":4466},{"type":3079,"value":4529}," header. This would allow them to bypass rate limits or cause other users to be incorrectly rate-limited.",{"type":3074,"tag":3135,"props":4531,"children":4532},{},[4533,4534,4539,4541,4547],{"type":3079,"value":4476},{"type":3074,"tag":3231,"props":4535,"children":4537},{"className":4536},[],[4538],{"type":3079,"value":4458},{"type":3079,"value":4540},": The module will use the direct IP address of the incoming connection (i.e., ",{"type":3074,"tag":3231,"props":4542,"children":4544},{"className":4543},[],[4545],{"type":3079,"value":4546},"event.node.req.socket.remoteAddress",{"type":3079,"value":4548},"). Use this setting if your application is directly internet-facing or if you are unsure about your proxy's configuration.",{"type":3074,"tag":3135,"props":4550,"children":4551},{},[4552,4557,4559,4565,4567,4572],{"type":3074,"tag":3169,"props":4553,"children":4554},{},[4555],{"type":3079,"value":4556},"Recommendation:",{"type":3079,"value":4558}," Only enable ",{"type":3074,"tag":3231,"props":4560,"children":4562},{"className":4561},[],[4563],{"type":3079,"value":4564},"trustXForwardedFor: true",{"type":3079,"value":4566}," 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":3074,"tag":3231,"props":4568,"children":4570},{"className":4569},[],[4571],{"type":3079,"value":4458},{"type":3079,"value":4573},".",{"type":3074,"tag":3420,"props":4575,"children":4577},{"id":4576},"_3-add-nitrostorage-to-nuxtconfigts",[4578,4580,4586,4588],{"type":3079,"value":4579},"3. Add ",{"type":3074,"tag":3231,"props":4581,"children":4583},{"className":4582},[],[4584],{"type":3079,"value":4585},"nitro\u002Fstorage",{"type":3079,"value":4587}," to ",{"type":3074,"tag":3231,"props":4589,"children":4591},{"className":4590},[],[4592],{"type":3079,"value":233},{"type":3074,"tag":3081,"props":4594,"children":4595},{},[4596,4598,4603],{"type":3079,"value":4597},"You can use any storage you want, but you have to use ",{"type":3074,"tag":3169,"props":4599,"children":4600},{},[4601],{"type":3079,"value":4602},"shield",{"type":3079,"value":4604}," as the name of the storage.",{"type":3074,"tag":3434,"props":4606,"children":4610},{"className":4607,"code":4608,"language":4609,"meta":3018,"style":3018},"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",[4611],{"type":3074,"tag":3231,"props":4612,"children":4613},{"__ignoreMap":3018},[4614,4621,4647,4672,4696,4704,4739,4747,4755,4762],{"type":3074,"tag":3444,"props":4615,"children":4616},{"class":3446,"line":3046},[4617],{"type":3074,"tag":3444,"props":4618,"children":4619},{"style":3609},[4620],{"type":3079,"value":3612},{"type":3074,"tag":3444,"props":4622,"children":4623},{"class":3446,"line":3042},[4624,4629,4635,4639,4643],{"type":3074,"tag":3444,"props":4625,"children":4626},{"style":3609},[4627],{"type":3079,"value":4628},"  \"",{"type":3074,"tag":3444,"props":4630,"children":4632},{"style":4631},"--shiki-light:#9C3EDA;--shiki-default:#9C3EDA;--shiki-dark:#C792EA",[4633],{"type":3079,"value":4634},"nitro",{"type":3074,"tag":3444,"props":4636,"children":4637},{"style":3609},[4638],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":4640,"children":4641},{"style":3609},[4642],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":4644,"children":4645},{"style":3609},[4646],{"type":3079,"value":3671},{"type":3074,"tag":3444,"props":4648,"children":4649},{"class":3446,"line":3476},[4650,4655,4660,4664,4668],{"type":3074,"tag":3444,"props":4651,"children":4652},{"style":3609},[4653],{"type":3079,"value":4654},"    \"",{"type":3074,"tag":3444,"props":4656,"children":4657},{"style":3459},[4658],{"type":3079,"value":4659},"storage",{"type":3074,"tag":3444,"props":4661,"children":4662},{"style":3609},[4663],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":4665,"children":4666},{"style":3609},[4667],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":4669,"children":4670},{"style":3609},[4671],{"type":3079,"value":3671},{"type":3074,"tag":3444,"props":4673,"children":4674},{"class":3446,"line":3485},[4675,4680,4684,4688,4692],{"type":3074,"tag":3444,"props":4676,"children":4677},{"style":3609},[4678],{"type":3079,"value":4679},"      \"",{"type":3074,"tag":3444,"props":4681,"children":4682},{"style":3884},[4683],{"type":3079,"value":4602},{"type":3074,"tag":3444,"props":4685,"children":4686},{"style":3609},[4687],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":4689,"children":4690},{"style":3609},[4691],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":4693,"children":4694},{"style":3609},[4695],{"type":3079,"value":3671},{"type":3074,"tag":3444,"props":4697,"children":4698},{"class":3446,"line":3038},[4699],{"type":3074,"tag":3444,"props":4700,"children":4701},{"style":3450},[4702],{"type":3079,"value":4703},"        \u002F\u002F storage name, you **must** use \"shield\" as the name\n",{"type":3074,"tag":3444,"props":4705,"children":4706},{"class":3446,"line":3510},[4707,4712,4717,4721,4725,4729,4734],{"type":3074,"tag":3444,"props":4708,"children":4709},{"style":3609},[4710],{"type":3079,"value":4711},"        \"",{"type":3074,"tag":3444,"props":4713,"children":4714},{"style":3618},[4715],{"type":3079,"value":4716},"driver",{"type":3074,"tag":3444,"props":4718,"children":4719},{"style":3609},[4720],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":4722,"children":4723},{"style":3609},[4724],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":4726,"children":4727},{"style":3609},[4728],{"type":3079,"value":4152},{"type":3074,"tag":3444,"props":4730,"children":4731},{"style":3465},[4732],{"type":3079,"value":4733},"memory",{"type":3074,"tag":3444,"props":4735,"children":4736},{"style":3609},[4737],{"type":3079,"value":4738},"\"\n",{"type":3074,"tag":3444,"props":4740,"children":4741},{"class":3446,"line":3518},[4742],{"type":3074,"tag":3444,"props":4743,"children":4744},{"style":3609},[4745],{"type":3079,"value":4746},"      }\n",{"type":3074,"tag":3444,"props":4748,"children":4749},{"class":3446,"line":3063},[4750],{"type":3074,"tag":3444,"props":4751,"children":4752},{"style":3609},[4753],{"type":3079,"value":4754},"    }\n",{"type":3074,"tag":3444,"props":4756,"children":4757},{"class":3446,"line":3714},[4758],{"type":3074,"tag":3444,"props":4759,"children":4760},{"style":3609},[4761],{"type":3079,"value":4417},{"type":3074,"tag":3444,"props":4763,"children":4764},{"class":3446,"line":3723},[4765],{"type":3074,"tag":3444,"props":4766,"children":4767},{"style":3609},[4768],{"type":3079,"value":4425},{"type":3074,"tag":3081,"props":4770,"children":4771},{},[4772],{"type":3079,"value":4773},"If you use for example redis, you can use the following configuration, define the host and port.",{"type":3074,"tag":3434,"props":4775,"children":4777},{"className":4607,"code":4776,"language":4609,"meta":3018,"style":3018},"{\n  \"nitro\": {\n    \"storage\": {\n      \"shield\": {\n        \"driver\": \"redis\",\n        \"host\": \"localhost\",\n        \"port\": 6379\n      }\n    }\n  }\n}\n",[4778],{"type":3074,"tag":3231,"props":4779,"children":4780},{"__ignoreMap":3018},[4781,4788,4811,4834,4857,4893,4930,4955,4962,4969,4976],{"type":3074,"tag":3444,"props":4782,"children":4783},{"class":3446,"line":3046},[4784],{"type":3074,"tag":3444,"props":4785,"children":4786},{"style":3609},[4787],{"type":3079,"value":3612},{"type":3074,"tag":3444,"props":4789,"children":4790},{"class":3446,"line":3042},[4791,4795,4799,4803,4807],{"type":3074,"tag":3444,"props":4792,"children":4793},{"style":3609},[4794],{"type":3079,"value":4628},{"type":3074,"tag":3444,"props":4796,"children":4797},{"style":4631},[4798],{"type":3079,"value":4634},{"type":3074,"tag":3444,"props":4800,"children":4801},{"style":3609},[4802],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":4804,"children":4805},{"style":3609},[4806],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":4808,"children":4809},{"style":3609},[4810],{"type":3079,"value":3671},{"type":3074,"tag":3444,"props":4812,"children":4813},{"class":3446,"line":3476},[4814,4818,4822,4826,4830],{"type":3074,"tag":3444,"props":4815,"children":4816},{"style":3609},[4817],{"type":3079,"value":4654},{"type":3074,"tag":3444,"props":4819,"children":4820},{"style":3459},[4821],{"type":3079,"value":4659},{"type":3074,"tag":3444,"props":4823,"children":4824},{"style":3609},[4825],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":4827,"children":4828},{"style":3609},[4829],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":4831,"children":4832},{"style":3609},[4833],{"type":3079,"value":3671},{"type":3074,"tag":3444,"props":4835,"children":4836},{"class":3446,"line":3485},[4837,4841,4845,4849,4853],{"type":3074,"tag":3444,"props":4838,"children":4839},{"style":3609},[4840],{"type":3079,"value":4679},{"type":3074,"tag":3444,"props":4842,"children":4843},{"style":3884},[4844],{"type":3079,"value":4602},{"type":3074,"tag":3444,"props":4846,"children":4847},{"style":3609},[4848],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":4850,"children":4851},{"style":3609},[4852],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":4854,"children":4855},{"style":3609},[4856],{"type":3079,"value":3671},{"type":3074,"tag":3444,"props":4858,"children":4859},{"class":3446,"line":3038},[4860,4864,4868,4872,4876,4880,4885,4889],{"type":3074,"tag":3444,"props":4861,"children":4862},{"style":3609},[4863],{"type":3079,"value":4711},{"type":3074,"tag":3444,"props":4865,"children":4866},{"style":3618},[4867],{"type":3079,"value":4716},{"type":3074,"tag":3444,"props":4869,"children":4870},{"style":3609},[4871],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":4873,"children":4874},{"style":3609},[4875],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":4877,"children":4878},{"style":3609},[4879],{"type":3079,"value":4152},{"type":3074,"tag":3444,"props":4881,"children":4882},{"style":3465},[4883],{"type":3079,"value":4884},"redis",{"type":3074,"tag":3444,"props":4886,"children":4887},{"style":3609},[4888],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":4890,"children":4891},{"style":3609},[4892],{"type":3079,"value":3654},{"type":3074,"tag":3444,"props":4894,"children":4895},{"class":3446,"line":3510},[4896,4900,4905,4909,4913,4917,4922,4926],{"type":3074,"tag":3444,"props":4897,"children":4898},{"style":3609},[4899],{"type":3079,"value":4711},{"type":3074,"tag":3444,"props":4901,"children":4902},{"style":3618},[4903],{"type":3079,"value":4904},"host",{"type":3074,"tag":3444,"props":4906,"children":4907},{"style":3609},[4908],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":4910,"children":4911},{"style":3609},[4912],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":4914,"children":4915},{"style":3609},[4916],{"type":3079,"value":4152},{"type":3074,"tag":3444,"props":4918,"children":4919},{"style":3465},[4920],{"type":3079,"value":4921},"localhost",{"type":3074,"tag":3444,"props":4923,"children":4924},{"style":3609},[4925],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":4927,"children":4928},{"style":3609},[4929],{"type":3079,"value":3654},{"type":3074,"tag":3444,"props":4931,"children":4932},{"class":3446,"line":3518},[4933,4937,4942,4946,4950],{"type":3074,"tag":3444,"props":4934,"children":4935},{"style":3609},[4936],{"type":3079,"value":4711},{"type":3074,"tag":3444,"props":4938,"children":4939},{"style":3618},[4940],{"type":3079,"value":4941},"port",{"type":3074,"tag":3444,"props":4943,"children":4944},{"style":3609},[4945],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":4947,"children":4948},{"style":3609},[4949],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":4951,"children":4952},{"style":3884},[4953],{"type":3079,"value":4954}," 6379\n",{"type":3074,"tag":3444,"props":4956,"children":4957},{"class":3446,"line":3063},[4958],{"type":3074,"tag":3444,"props":4959,"children":4960},{"style":3609},[4961],{"type":3079,"value":4746},{"type":3074,"tag":3444,"props":4963,"children":4964},{"class":3446,"line":3714},[4965],{"type":3074,"tag":3444,"props":4966,"children":4967},{"style":3609},[4968],{"type":3079,"value":4754},{"type":3074,"tag":3444,"props":4970,"children":4971},{"class":3446,"line":3723},[4972],{"type":3074,"tag":3444,"props":4973,"children":4974},{"style":3609},[4975],{"type":3079,"value":4417},{"type":3074,"tag":3444,"props":4977,"children":4978},{"class":3446,"line":3732},[4979],{"type":3074,"tag":3444,"props":4980,"children":4981},{"style":3609},[4982],{"type":3079,"value":4425},{"type":3074,"tag":3420,"props":4984,"children":4986},{"id":4985},"_4-schedule-bundled-cleanup-tasks-in-nuxtconfigts",[4987,4989],{"type":3079,"value":4988},"4. Schedule bundled cleanup tasks in ",{"type":3074,"tag":3231,"props":4990,"children":4992},{"className":4991},[],[4993],{"type":3079,"value":233},{"type":3074,"tag":3081,"props":4995,"children":4996},{},[4997,4999,5004,5006,5012,5014,5019,5021,5027,5029,5035,5037,5043,5045,5050,5052,5058],{"type":3079,"value":4998},"The module registers two Nitro tasks for you: ",{"type":3074,"tag":3231,"props":5000,"children":5002},{"className":5001},[],[5003],{"type":3079,"value":3328},{"type":3079,"value":5005}," (removes expired ",{"type":3074,"tag":3231,"props":5007,"children":5009},{"className":5008},[],[5010],{"type":3079,"value":5011},"ban:*",{"type":3079,"value":5013}," keys) and ",{"type":3074,"tag":3231,"props":5015,"children":5017},{"className":5016},[],[5018],{"type":3079,"value":3336},{"type":3079,"value":5020}," (removes stale ",{"type":3074,"tag":3231,"props":5022,"children":5024},{"className":5023},[],[5025],{"type":3079,"value":5026},"ip:*",{"type":3079,"value":5028}," keys using ",{"type":3074,"tag":3231,"props":5030,"children":5032},{"className":5031},[],[5033],{"type":3079,"value":5034},"ipTTL",{"type":3079,"value":5036},"). Turn on Nitro tasks and add ",{"type":3074,"tag":3231,"props":5038,"children":5040},{"className":5039},[],[5041],{"type":3079,"value":5042},"scheduledTasks",{"type":3079,"value":5044}," so they run on a cadence you choose. You do ",{"type":3074,"tag":3169,"props":5046,"children":5047},{},[5048],{"type":3079,"value":5049},"not",{"type":3079,"value":5051}," need files under ",{"type":3074,"tag":3231,"props":5053,"children":5055},{"className":5054},[],[5056],{"type":3079,"value":5057},"server\u002Ftasks\u002F",{"type":3079,"value":5059}," for this default setup.",{"type":3074,"tag":3434,"props":5061,"children":5063},{"className":4607,"code":5062,"language":4609,"meta":3018,"style":3018},"{\n  \"nitro\": {\n    \"experimental\": {\n      \"tasks\": true\n    },\n    \"scheduledTasks\": {\n      \"*\u002F15 * * * *\": [\"shield:cleanBans\"],\n      \"0 0 * * *\": [\"shield:cleanIpData\"]\n    }\n  }\n}\n",[5064],{"type":3074,"tag":3231,"props":5065,"children":5066},{"__ignoreMap":3018},[5067,5074,5097,5121,5146,5153,5176,5217,5258,5265,5272],{"type":3074,"tag":3444,"props":5068,"children":5069},{"class":3446,"line":3046},[5070],{"type":3074,"tag":3444,"props":5071,"children":5072},{"style":3609},[5073],{"type":3079,"value":3612},{"type":3074,"tag":3444,"props":5075,"children":5076},{"class":3446,"line":3042},[5077,5081,5085,5089,5093],{"type":3074,"tag":3444,"props":5078,"children":5079},{"style":3609},[5080],{"type":3079,"value":4628},{"type":3074,"tag":3444,"props":5082,"children":5083},{"style":4631},[5084],{"type":3079,"value":4634},{"type":3074,"tag":3444,"props":5086,"children":5087},{"style":3609},[5088],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":5090,"children":5091},{"style":3609},[5092],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":5094,"children":5095},{"style":3609},[5096],{"type":3079,"value":3671},{"type":3074,"tag":3444,"props":5098,"children":5099},{"class":3446,"line":3476},[5100,5104,5109,5113,5117],{"type":3074,"tag":3444,"props":5101,"children":5102},{"style":3609},[5103],{"type":3079,"value":4654},{"type":3074,"tag":3444,"props":5105,"children":5106},{"style":3459},[5107],{"type":3079,"value":5108},"experimental",{"type":3074,"tag":3444,"props":5110,"children":5111},{"style":3609},[5112],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":5114,"children":5115},{"style":3609},[5116],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":5118,"children":5119},{"style":3609},[5120],{"type":3079,"value":3671},{"type":3074,"tag":3444,"props":5122,"children":5123},{"class":3446,"line":3485},[5124,5128,5133,5137,5141],{"type":3074,"tag":3444,"props":5125,"children":5126},{"style":3609},[5127],{"type":3079,"value":4679},{"type":3074,"tag":3444,"props":5129,"children":5130},{"style":3884},[5131],{"type":3079,"value":5132},"tasks",{"type":3074,"tag":3444,"props":5134,"children":5135},{"style":3609},[5136],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":5138,"children":5139},{"style":3609},[5140],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":5142,"children":5143},{"style":3609},[5144],{"type":3079,"value":5145}," true\n",{"type":3074,"tag":3444,"props":5147,"children":5148},{"class":3446,"line":3038},[5149],{"type":3074,"tag":3444,"props":5150,"children":5151},{"style":3609},[5152],{"type":3079,"value":3720},{"type":3074,"tag":3444,"props":5154,"children":5155},{"class":3446,"line":3510},[5156,5160,5164,5168,5172],{"type":3074,"tag":3444,"props":5157,"children":5158},{"style":3609},[5159],{"type":3079,"value":4654},{"type":3074,"tag":3444,"props":5161,"children":5162},{"style":3459},[5163],{"type":3079,"value":5042},{"type":3074,"tag":3444,"props":5165,"children":5166},{"style":3609},[5167],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":5169,"children":5170},{"style":3609},[5171],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":5173,"children":5174},{"style":3609},[5175],{"type":3079,"value":3671},{"type":3074,"tag":3444,"props":5177,"children":5178},{"class":3446,"line":3518},[5179,5183,5188,5192,5196,5200,5204,5208,5212],{"type":3074,"tag":3444,"props":5180,"children":5181},{"style":3609},[5182],{"type":3079,"value":4679},{"type":3074,"tag":3444,"props":5184,"children":5185},{"style":3884},[5186],{"type":3079,"value":5187},"*\u002F15 * * * *",{"type":3074,"tag":3444,"props":5189,"children":5190},{"style":3609},[5191],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":5193,"children":5194},{"style":3609},[5195],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":5197,"children":5198},{"style":3609},[5199],{"type":3079,"value":3631},{"type":3074,"tag":3444,"props":5201,"children":5202},{"style":3609},[5203],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":5205,"children":5206},{"style":3465},[5207],{"type":3079,"value":3328},{"type":3074,"tag":3444,"props":5209,"children":5210},{"style":3609},[5211],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":5213,"children":5214},{"style":3609},[5215],{"type":3079,"value":5216},"],\n",{"type":3074,"tag":3444,"props":5218,"children":5219},{"class":3446,"line":3063},[5220,5224,5229,5233,5237,5241,5245,5249,5253],{"type":3074,"tag":3444,"props":5221,"children":5222},{"style":3609},[5223],{"type":3079,"value":4679},{"type":3074,"tag":3444,"props":5225,"children":5226},{"style":3884},[5227],{"type":3079,"value":5228},"0 0 * * *",{"type":3074,"tag":3444,"props":5230,"children":5231},{"style":3609},[5232],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":5234,"children":5235},{"style":3609},[5236],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":5238,"children":5239},{"style":3609},[5240],{"type":3079,"value":3631},{"type":3074,"tag":3444,"props":5242,"children":5243},{"style":3609},[5244],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":5246,"children":5247},{"style":3465},[5248],{"type":3079,"value":3336},{"type":3074,"tag":3444,"props":5250,"children":5251},{"style":3609},[5252],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":5254,"children":5255},{"style":3609},[5256],{"type":3079,"value":5257},"]\n",{"type":3074,"tag":3444,"props":5259,"children":5260},{"class":3446,"line":3714},[5261],{"type":3074,"tag":3444,"props":5262,"children":5263},{"style":3609},[5264],{"type":3079,"value":4754},{"type":3074,"tag":3444,"props":5266,"children":5267},{"class":3446,"line":3723},[5268],{"type":3074,"tag":3444,"props":5269,"children":5270},{"style":3609},[5271],{"type":3079,"value":4417},{"type":3074,"tag":3444,"props":5273,"children":5274},{"class":3446,"line":3732},[5275],{"type":3074,"tag":3444,"props":5276,"children":5277},{"style":3609},[5278],{"type":3079,"value":4425},{"type":3074,"tag":3081,"props":5280,"children":5281},{},[5282],{"type":3079,"value":5283},"Cron expressions are examples only: for instance, clean expired bans every 15 minutes and IP tracking data daily at midnight.",{"type":3074,"tag":3420,"props":5285,"children":5287},{"id":5286},"_5-optional-custom-cleanup-task-implementations",[5288],{"type":3079,"value":5289},"5. Optional: custom cleanup task implementations",{"type":3074,"tag":3081,"props":5291,"children":5292},{},[5293,5295,5300,5302,5307],{"type":3079,"value":5294},"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":3074,"tag":3169,"props":5296,"children":5297},{},[5298],{"type":3079,"value":5299},"another",{"type":3079,"value":5301}," task name and point ",{"type":3074,"tag":3231,"props":5303,"children":5305},{"className":5304},[],[5306],{"type":3079,"value":5042},{"type":3079,"value":5308}," at that name instead.",{"type":3074,"tag":5310,"props":5311,"children":5313},"h4",{"id":5312},"a-task-for-cleaning-expired-bans",[5314],{"type":3079,"value":5315},"a) Task for cleaning expired bans",{"type":3074,"tag":3081,"props":5317,"children":5318},{},[5319,5321,5327],{"type":3079,"value":5320},"Removes ban entries (",{"type":3074,"tag":3231,"props":5322,"children":5324},{"className":5323},[],[5325],{"type":3079,"value":5326},"ban:xxx.xxx.xxx.xxx",{"type":3079,"value":5328},") after the ban timestamp has passed.",{"type":3074,"tag":3081,"props":5330,"children":5331},{},[5332,5334,5340],{"type":3079,"value":5333},"Example ",{"type":3074,"tag":3231,"props":5335,"children":5337},{"className":5336},[],[5338],{"type":3079,"value":5339},"server\u002Ftasks\u002Fshield\u002FcleanBans.ts",{"type":3079,"value":5341}," (task name must match what you schedule):",{"type":3074,"tag":3434,"props":5343,"children":5347},{"className":5344,"code":5345,"language":5346,"meta":3018,"style":3018},"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",[5348],{"type":3074,"tag":3231,"props":5349,"children":5350},{"__ignoreMap":3018},[5351,5402,5409,5433,5449,5482,5511,5518,5540,5592,5599,5607,5666,5673,5698,5739,5790,5825,5862,5875,5882,5889,5951,5989,5996],{"type":3074,"tag":3444,"props":5352,"children":5353},{"class":3446,"line":3046},[5354,5359,5364,5369,5374,5379,5383,5388,5392,5397],{"type":3074,"tag":3444,"props":5355,"children":5356},{"style":3586},[5357],{"type":3079,"value":5358},"import",{"type":3074,"tag":3444,"props":5360,"children":5361},{"style":3609},[5362],{"type":3079,"value":5363}," {",{"type":3074,"tag":3444,"props":5365,"children":5366},{"style":3603},[5367],{"type":3079,"value":5368}," isActualBanTimestampExpired",{"type":3074,"tag":3444,"props":5370,"children":5371},{"style":3609},[5372],{"type":3079,"value":5373}," }",{"type":3074,"tag":3444,"props":5375,"children":5376},{"style":3586},[5377],{"type":3079,"value":5378}," from",{"type":3074,"tag":3444,"props":5380,"children":5381},{"style":3609},[5382],{"type":3079,"value":4152},{"type":3074,"tag":3444,"props":5384,"children":5385},{"style":3465},[5386],{"type":3079,"value":5387},"#imports",{"type":3074,"tag":3444,"props":5389,"children":5390},{"style":3609},[5391],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":5393,"children":5394},{"style":3609},[5395],{"type":3079,"value":5396},";",{"type":3074,"tag":3444,"props":5398,"children":5399},{"style":3450},[5400],{"type":3079,"value":5401}," \u002F\u002F Auto-imported utility from nuxt-api-shield\n",{"type":3074,"tag":3444,"props":5403,"children":5404},{"class":3446,"line":3042},[5405],{"type":3074,"tag":3444,"props":5406,"children":5407},{"emptyLinePlaceholder":1200},[5408],{"type":3079,"value":3482},{"type":3074,"tag":3444,"props":5410,"children":5411},{"class":3446,"line":3476},[5412,5416,5420,5425,5429],{"type":3074,"tag":3444,"props":5413,"children":5414},{"style":3586},[5415],{"type":3079,"value":3589},{"type":3074,"tag":3444,"props":5417,"children":5418},{"style":3586},[5419],{"type":3079,"value":3594},{"type":3074,"tag":3444,"props":5421,"children":5422},{"style":3597},[5423],{"type":3079,"value":5424}," defineTask",{"type":3074,"tag":3444,"props":5426,"children":5427},{"style":3603},[5428],{"type":3079,"value":3606},{"type":3074,"tag":3444,"props":5430,"children":5431},{"style":3609},[5432],{"type":3079,"value":3612},{"type":3074,"tag":3444,"props":5434,"children":5435},{"class":3446,"line":3485},[5436,5441,5445],{"type":3074,"tag":3444,"props":5437,"children":5438},{"style":3618},[5439],{"type":3079,"value":5440},"  meta",{"type":3074,"tag":3444,"props":5442,"children":5443},{"style":3609},[5444],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":5446,"children":5447},{"style":3609},[5448],{"type":3079,"value":3671},{"type":3074,"tag":3444,"props":5450,"children":5451},{"class":3446,"line":3038},[5452,5457,5461,5465,5469,5473,5477],{"type":3074,"tag":3444,"props":5453,"children":5454},{"style":3618},[5455],{"type":3079,"value":5456},"    name",{"type":3074,"tag":3444,"props":5458,"children":5459},{"style":3609},[5460],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":5462,"children":5463},{"style":3609},[5464],{"type":3079,"value":4152},{"type":3074,"tag":3444,"props":5466,"children":5467},{"style":3465},[5468],{"type":3079,"value":3328},{"type":3074,"tag":3444,"props":5470,"children":5471},{"style":3609},[5472],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":5474,"children":5475},{"style":3609},[5476],{"type":3079,"value":3846},{"type":3074,"tag":3444,"props":5478,"children":5479},{"style":3450},[5480],{"type":3079,"value":5481}," \u002F\u002F Match the name in scheduledTasks\n",{"type":3074,"tag":3444,"props":5483,"children":5484},{"class":3446,"line":3510},[5485,5490,5494,5498,5503,5507],{"type":3074,"tag":3444,"props":5486,"children":5487},{"style":3618},[5488],{"type":3079,"value":5489},"    description",{"type":3074,"tag":3444,"props":5491,"children":5492},{"style":3609},[5493],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":5495,"children":5496},{"style":3609},[5497],{"type":3079,"value":4152},{"type":3074,"tag":3444,"props":5499,"children":5500},{"style":3465},[5501],{"type":3079,"value":5502},"Clean expired bans from nuxt-api-shield storage.",{"type":3074,"tag":3444,"props":5504,"children":5505},{"style":3609},[5506],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":5508,"children":5509},{"style":3609},[5510],{"type":3079,"value":3654},{"type":3074,"tag":3444,"props":5512,"children":5513},{"class":3446,"line":3518},[5514],{"type":3074,"tag":3444,"props":5515,"children":5516},{"style":3609},[5517],{"type":3079,"value":3967},{"type":3074,"tag":3444,"props":5519,"children":5520},{"class":3446,"line":3063},[5521,5526,5531,5536],{"type":3074,"tag":3444,"props":5522,"children":5523},{"style":4631},[5524],{"type":3079,"value":5525},"  async",{"type":3074,"tag":3444,"props":5527,"children":5528},{"style":3618},[5529],{"type":3079,"value":5530}," run",{"type":3074,"tag":3444,"props":5532,"children":5533},{"style":3609},[5534],{"type":3079,"value":5535},"()",{"type":3074,"tag":3444,"props":5537,"children":5538},{"style":3609},[5539],{"type":3079,"value":3671},{"type":3074,"tag":3444,"props":5541,"children":5542},{"class":3446,"line":3714},[5543,5548,5553,5558,5563,5567,5571,5575,5579,5583,5587],{"type":3074,"tag":3444,"props":5544,"children":5545},{"style":4631},[5546],{"type":3079,"value":5547},"    const",{"type":3074,"tag":3444,"props":5549,"children":5550},{"style":3603},[5551],{"type":3079,"value":5552}," shieldStorage",{"type":3074,"tag":3444,"props":5554,"children":5555},{"style":3609},[5556],{"type":3079,"value":5557}," =",{"type":3074,"tag":3444,"props":5559,"children":5560},{"style":3597},[5561],{"type":3079,"value":5562}," useStorage",{"type":3074,"tag":3444,"props":5564,"children":5565},{"style":3618},[5566],{"type":3079,"value":3606},{"type":3074,"tag":3444,"props":5568,"children":5569},{"style":3609},[5570],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":5572,"children":5573},{"style":3465},[5574],{"type":3079,"value":4602},{"type":3074,"tag":3444,"props":5576,"children":5577},{"style":3609},[5578],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":5580,"children":5581},{"style":3618},[5582],{"type":3079,"value":3981},{"type":3074,"tag":3444,"props":5584,"children":5585},{"style":3609},[5586],{"type":3079,"value":5396},{"type":3074,"tag":3444,"props":5588,"children":5589},{"style":3450},[5590],{"type":3079,"value":5591}," \u002F\u002F Use your configured storage name\n",{"type":3074,"tag":3444,"props":5593,"children":5594},{"class":3446,"line":3723},[5595],{"type":3074,"tag":3444,"props":5596,"children":5597},{"emptyLinePlaceholder":1200},[5598],{"type":3079,"value":3482},{"type":3074,"tag":3444,"props":5600,"children":5601},{"class":3446,"line":3732},[5602],{"type":3074,"tag":3444,"props":5603,"children":5604},{"style":3450},[5605],{"type":3079,"value":5606},"    \u002F\u002F Only fetch keys that start with the 'ban:' prefix\n",{"type":3074,"tag":3444,"props":5608,"children":5609},{"class":3446,"line":3741},[5610,5614,5619,5623,5628,5632,5636,5641,5645,5649,5654,5658,5662],{"type":3074,"tag":3444,"props":5611,"children":5612},{"style":4631},[5613],{"type":3079,"value":5547},{"type":3074,"tag":3444,"props":5615,"children":5616},{"style":3603},[5617],{"type":3079,"value":5618}," banKeys",{"type":3074,"tag":3444,"props":5620,"children":5621},{"style":3609},[5622],{"type":3079,"value":5557},{"type":3074,"tag":3444,"props":5624,"children":5625},{"style":3586},[5626],{"type":3079,"value":5627}," await",{"type":3074,"tag":3444,"props":5629,"children":5630},{"style":3603},[5631],{"type":3079,"value":5552},{"type":3074,"tag":3444,"props":5633,"children":5634},{"style":3609},[5635],{"type":3079,"value":4573},{"type":3074,"tag":3444,"props":5637,"children":5638},{"style":3597},[5639],{"type":3079,"value":5640},"getKeys",{"type":3074,"tag":3444,"props":5642,"children":5643},{"style":3618},[5644],{"type":3079,"value":3606},{"type":3074,"tag":3444,"props":5646,"children":5647},{"style":3609},[5648],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":5650,"children":5651},{"style":3465},[5652],{"type":3079,"value":5653},"ban:",{"type":3074,"tag":3444,"props":5655,"children":5656},{"style":3609},[5657],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":5659,"children":5660},{"style":3618},[5661],{"type":3079,"value":3981},{"type":3074,"tag":3444,"props":5663,"children":5664},{"style":3609},[5665],{"type":3079,"value":3986},{"type":3074,"tag":3444,"props":5667,"children":5668},{"class":3446,"line":3750},[5669],{"type":3074,"tag":3444,"props":5670,"children":5671},{"emptyLinePlaceholder":1200},[5672],{"type":3079,"value":3482},{"type":3074,"tag":3444,"props":5674,"children":5675},{"class":3446,"line":3759},[5676,5681,5686,5690,5694],{"type":3074,"tag":3444,"props":5677,"children":5678},{"style":4631},[5679],{"type":3079,"value":5680},"    let",{"type":3074,"tag":3444,"props":5682,"children":5683},{"style":3603},[5684],{"type":3079,"value":5685}," cleanedCount",{"type":3074,"tag":3444,"props":5687,"children":5688},{"style":3609},[5689],{"type":3079,"value":5557},{"type":3074,"tag":3444,"props":5691,"children":5692},{"style":3884},[5693],{"type":3079,"value":4244},{"type":3074,"tag":3444,"props":5695,"children":5696},{"style":3609},[5697],{"type":3079,"value":3986},{"type":3074,"tag":3444,"props":5699,"children":5700},{"class":3446,"line":3768},[5701,5706,5711,5716,5721,5726,5730,5735],{"type":3074,"tag":3444,"props":5702,"children":5703},{"style":3586},[5704],{"type":3079,"value":5705},"    for",{"type":3074,"tag":3444,"props":5707,"children":5708},{"style":3618},[5709],{"type":3079,"value":5710}," (",{"type":3074,"tag":3444,"props":5712,"children":5713},{"style":4631},[5714],{"type":3079,"value":5715},"const",{"type":3074,"tag":3444,"props":5717,"children":5718},{"style":3603},[5719],{"type":3079,"value":5720}," key",{"type":3074,"tag":3444,"props":5722,"children":5723},{"style":3609},[5724],{"type":3079,"value":5725}," of",{"type":3074,"tag":3444,"props":5727,"children":5728},{"style":3603},[5729],{"type":3079,"value":5618},{"type":3074,"tag":3444,"props":5731,"children":5732},{"style":3618},[5733],{"type":3079,"value":5734},") ",{"type":3074,"tag":3444,"props":5736,"children":5737},{"style":3609},[5738],{"type":3079,"value":3612},{"type":3074,"tag":3444,"props":5740,"children":5741},{"class":3446,"line":3777},[5742,5747,5752,5756,5760,5764,5768,5773,5777,5782,5786],{"type":3074,"tag":3444,"props":5743,"children":5744},{"style":4631},[5745],{"type":3079,"value":5746},"      const",{"type":3074,"tag":3444,"props":5748,"children":5749},{"style":3603},[5750],{"type":3079,"value":5751}," bannedUntilRaw",{"type":3074,"tag":3444,"props":5753,"children":5754},{"style":3609},[5755],{"type":3079,"value":5557},{"type":3074,"tag":3444,"props":5757,"children":5758},{"style":3586},[5759],{"type":3079,"value":5627},{"type":3074,"tag":3444,"props":5761,"children":5762},{"style":3603},[5763],{"type":3079,"value":5552},{"type":3074,"tag":3444,"props":5765,"children":5766},{"style":3609},[5767],{"type":3079,"value":4573},{"type":3074,"tag":3444,"props":5769,"children":5770},{"style":3597},[5771],{"type":3079,"value":5772},"getItem",{"type":3074,"tag":3444,"props":5774,"children":5775},{"style":3618},[5776],{"type":3079,"value":3606},{"type":3074,"tag":3444,"props":5778,"children":5779},{"style":3603},[5780],{"type":3079,"value":5781},"key",{"type":3074,"tag":3444,"props":5783,"children":5784},{"style":3618},[5785],{"type":3079,"value":3981},{"type":3074,"tag":3444,"props":5787,"children":5788},{"style":3609},[5789],{"type":3079,"value":3986},{"type":3074,"tag":3444,"props":5791,"children":5792},{"class":3446,"line":3786},[5793,5798,5802,5807,5811,5816,5821],{"type":3074,"tag":3444,"props":5794,"children":5795},{"style":3586},[5796],{"type":3079,"value":5797},"      if",{"type":3074,"tag":3444,"props":5799,"children":5800},{"style":3618},[5801],{"type":3079,"value":5710},{"type":3074,"tag":3444,"props":5803,"children":5804},{"style":3597},[5805],{"type":3079,"value":5806},"isActualBanTimestampExpired",{"type":3074,"tag":3444,"props":5808,"children":5809},{"style":3618},[5810],{"type":3079,"value":3606},{"type":3074,"tag":3444,"props":5812,"children":5813},{"style":3603},[5814],{"type":3079,"value":5815},"bannedUntilRaw",{"type":3074,"tag":3444,"props":5817,"children":5818},{"style":3618},[5819],{"type":3079,"value":5820},")) ",{"type":3074,"tag":3444,"props":5822,"children":5823},{"style":3609},[5824],{"type":3079,"value":3612},{"type":3074,"tag":3444,"props":5826,"children":5827},{"class":3446,"line":3794},[5828,5833,5837,5841,5846,5850,5854,5858],{"type":3074,"tag":3444,"props":5829,"children":5830},{"style":3586},[5831],{"type":3079,"value":5832},"        await",{"type":3074,"tag":3444,"props":5834,"children":5835},{"style":3603},[5836],{"type":3079,"value":5552},{"type":3074,"tag":3444,"props":5838,"children":5839},{"style":3609},[5840],{"type":3079,"value":4573},{"type":3074,"tag":3444,"props":5842,"children":5843},{"style":3597},[5844],{"type":3079,"value":5845},"removeItem",{"type":3074,"tag":3444,"props":5847,"children":5848},{"style":3618},[5849],{"type":3079,"value":3606},{"type":3074,"tag":3444,"props":5851,"children":5852},{"style":3603},[5853],{"type":3079,"value":5781},{"type":3074,"tag":3444,"props":5855,"children":5856},{"style":3618},[5857],{"type":3079,"value":3981},{"type":3074,"tag":3444,"props":5859,"children":5860},{"style":3609},[5861],{"type":3079,"value":3986},{"type":3074,"tag":3444,"props":5863,"children":5864},{"class":3446,"line":3803},[5865,5870],{"type":3074,"tag":3444,"props":5866,"children":5867},{"style":3603},[5868],{"type":3079,"value":5869},"        cleanedCount",{"type":3074,"tag":3444,"props":5871,"children":5872},{"style":3609},[5873],{"type":3079,"value":5874},"++;\n",{"type":3074,"tag":3444,"props":5876,"children":5877},{"class":3446,"line":3812},[5878],{"type":3074,"tag":3444,"props":5879,"children":5880},{"style":3609},[5881],{"type":3079,"value":4746},{"type":3074,"tag":3444,"props":5883,"children":5884},{"class":3446,"line":3826},[5885],{"type":3074,"tag":3444,"props":5886,"children":5887},{"style":3609},[5888],{"type":3079,"value":4754},{"type":3074,"tag":3444,"props":5890,"children":5891},{"class":3446,"line":3854},[5892,5897,5901,5906,5910,5915,5920,5925,5930,5934,5939,5943,5947],{"type":3074,"tag":3444,"props":5893,"children":5894},{"style":3603},[5895],{"type":3079,"value":5896},"    console",{"type":3074,"tag":3444,"props":5898,"children":5899},{"style":3609},[5900],{"type":3079,"value":4573},{"type":3074,"tag":3444,"props":5902,"children":5903},{"style":3597},[5904],{"type":3079,"value":5905},"log",{"type":3074,"tag":3444,"props":5907,"children":5908},{"style":3618},[5909],{"type":3079,"value":3606},{"type":3074,"tag":3444,"props":5911,"children":5912},{"style":3609},[5913],{"type":3079,"value":5914},"`",{"type":3074,"tag":3444,"props":5916,"children":5917},{"style":3465},[5918],{"type":3079,"value":5919},"[nuxt-api-shield] Cleaned ",{"type":3074,"tag":3444,"props":5921,"children":5922},{"style":3609},[5923],{"type":3079,"value":5924},"${",{"type":3074,"tag":3444,"props":5926,"children":5927},{"style":3603},[5928],{"type":3079,"value":5929},"cleanedCount",{"type":3074,"tag":3444,"props":5931,"children":5932},{"style":3609},[5933],{"type":3079,"value":3976},{"type":3074,"tag":3444,"props":5935,"children":5936},{"style":3465},[5937],{"type":3079,"value":5938}," expired ban(s).",{"type":3074,"tag":3444,"props":5940,"children":5941},{"style":3609},[5942],{"type":3079,"value":5914},{"type":3074,"tag":3444,"props":5944,"children":5945},{"style":3618},[5946],{"type":3079,"value":3981},{"type":3074,"tag":3444,"props":5948,"children":5949},{"style":3609},[5950],{"type":3079,"value":3986},{"type":3074,"tag":3444,"props":5952,"children":5953},{"class":3446,"line":3862},[5954,5959,5963,5968,5972,5976,5980,5984],{"type":3074,"tag":3444,"props":5955,"children":5956},{"style":3586},[5957],{"type":3079,"value":5958},"    return",{"type":3074,"tag":3444,"props":5960,"children":5961},{"style":3609},[5962],{"type":3079,"value":5363},{"type":3074,"tag":3444,"props":5964,"children":5965},{"style":3618},[5966],{"type":3079,"value":5967}," result",{"type":3074,"tag":3444,"props":5969,"children":5970},{"style":3609},[5971],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":5973,"children":5974},{"style":3609},[5975],{"type":3079,"value":5363},{"type":3074,"tag":3444,"props":5977,"children":5978},{"style":3603},[5979],{"type":3079,"value":5685},{"type":3074,"tag":3444,"props":5981,"children":5982},{"style":3609},[5983],{"type":3079,"value":5373},{"type":3074,"tag":3444,"props":5985,"children":5986},{"style":3609},[5987],{"type":3079,"value":5988}," };\n",{"type":3074,"tag":3444,"props":5990,"children":5991},{"class":3446,"line":3871},[5992],{"type":3074,"tag":3444,"props":5993,"children":5994},{"style":3609},[5995],{"type":3079,"value":3967},{"type":3074,"tag":3444,"props":5997,"children":5998},{"class":3446,"line":3899},[5999,6003,6007],{"type":3074,"tag":3444,"props":6000,"children":6001},{"style":3609},[6002],{"type":3079,"value":3976},{"type":3074,"tag":3444,"props":6004,"children":6005},{"style":3603},[6006],{"type":3079,"value":3981},{"type":3074,"tag":3444,"props":6008,"children":6009},{"style":3609},[6010],{"type":3079,"value":3986},{"type":3074,"tag":3081,"props":6012,"children":6013},{},[6014,6015,6020,6022,6027,6029,6034],{"type":3079,"value":4444},{"type":3074,"tag":3231,"props":6016,"children":6018},{"className":6017},[],[6019],{"type":3079,"value":5806},{"type":3079,"value":6021}," utility is provided by ",{"type":3074,"tag":3231,"props":6023,"children":6025},{"className":6024},[],[6026],{"type":3079,"value":3015},{"type":3079,"value":6028}," and should be available via ",{"type":3074,"tag":3231,"props":6030,"children":6032},{"className":6031},[],[6033],{"type":3079,"value":5387},{"type":3079,"value":4573},{"type":3074,"tag":5310,"props":6036,"children":6038},{"id":6037},"b-task-for-cleaning-old-ip-tracking-data",[6039],{"type":3079,"value":6040},"b) Task for cleaning old IP tracking data",{"type":3074,"tag":3081,"props":6042,"children":6043},{},[6044,6046,6052,6054,6060,6062,6068],{"type":3079,"value":6045},"Cleans IP tracking entries (",{"type":3074,"tag":3231,"props":6047,"children":6049},{"className":6048},[],[6050],{"type":3079,"value":6051},"ip:xxx.xxx.xxx.xxx",{"type":3079,"value":6053},") whose ",{"type":3074,"tag":3231,"props":6055,"children":6057},{"className":6056},[],[6058],{"type":3079,"value":6059},"time",{"type":3079,"value":6061}," is older than ",{"type":3074,"tag":3231,"props":6063,"children":6065},{"className":6064},[],[6066],{"type":3079,"value":6067},"nuxtApiShield.ipTTL",{"type":3079,"value":6069}," (default 7 days), and drops malformed entries. That keeps storage from growing with one-off IPs that were never banned.",{"type":3074,"tag":3081,"props":6071,"children":6072},{},[6073,6074,6080],{"type":3079,"value":5333},{"type":3074,"tag":3231,"props":6075,"children":6077},{"className":6076},[],[6078],{"type":3079,"value":6079},"server\u002Ftasks\u002Fshield\u002FcleanIpData.ts",{"type":3079,"value":3626},{"type":3074,"tag":3434,"props":6082,"children":6084},{"className":5344,"code":6083,"language":5346,"meta":3018,"style":3018},"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",[6085],{"type":3074,"tag":3231,"props":6086,"children":6087},{"__ignoreMap":3018},[6088,6133,6173,6180,6203,6218,6249,6277,6284,6303,6346,6390,6397,6405,6437,6444,6492,6513,6529,6541,6608,6615,6648,6655,6712,6750,6773,6780,6815,6887,6894,6903,6968,7020,7057,7070,7079,7097,7106,7142,7154,7162,7170,7178,7198,7233,7246,7282,7290],{"type":3074,"tag":3444,"props":6089,"children":6090},{"class":3446,"line":3046},[6091,6095,6100,6104,6109,6113,6117,6121,6125,6129],{"type":3074,"tag":3444,"props":6092,"children":6093},{"style":3586},[6094],{"type":3079,"value":5358},{"type":3074,"tag":3444,"props":6096,"children":6097},{"style":3586},[6098],{"type":3079,"value":6099}," type",{"type":3074,"tag":3444,"props":6101,"children":6102},{"style":3609},[6103],{"type":3079,"value":5363},{"type":3074,"tag":3444,"props":6105,"children":6106},{"style":3603},[6107],{"type":3079,"value":6108}," RateLimit",{"type":3074,"tag":3444,"props":6110,"children":6111},{"style":3609},[6112],{"type":3079,"value":5373},{"type":3074,"tag":3444,"props":6114,"children":6115},{"style":3586},[6116],{"type":3079,"value":5378},{"type":3074,"tag":3444,"props":6118,"children":6119},{"style":3609},[6120],{"type":3079,"value":4152},{"type":3074,"tag":3444,"props":6122,"children":6123},{"style":3465},[6124],{"type":3079,"value":3015},{"type":3074,"tag":3444,"props":6126,"children":6127},{"style":3609},[6128],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":6130,"children":6131},{"style":3609},[6132],{"type":3079,"value":3986},{"type":3074,"tag":3444,"props":6134,"children":6135},{"class":3446,"line":3042},[6136,6140,6144,6149,6153,6157,6161,6165,6169],{"type":3074,"tag":3444,"props":6137,"children":6138},{"style":3586},[6139],{"type":3079,"value":5358},{"type":3074,"tag":3444,"props":6141,"children":6142},{"style":3609},[6143],{"type":3079,"value":5363},{"type":3074,"tag":3444,"props":6145,"children":6146},{"style":3603},[6147],{"type":3079,"value":6148}," useRuntimeConfig",{"type":3074,"tag":3444,"props":6150,"children":6151},{"style":3609},[6152],{"type":3079,"value":5373},{"type":3074,"tag":3444,"props":6154,"children":6155},{"style":3586},[6156],{"type":3079,"value":5378},{"type":3074,"tag":3444,"props":6158,"children":6159},{"style":3609},[6160],{"type":3079,"value":4152},{"type":3074,"tag":3444,"props":6162,"children":6163},{"style":3465},[6164],{"type":3079,"value":5387},{"type":3074,"tag":3444,"props":6166,"children":6167},{"style":3609},[6168],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":6170,"children":6171},{"style":3609},[6172],{"type":3079,"value":3986},{"type":3074,"tag":3444,"props":6174,"children":6175},{"class":3446,"line":3476},[6176],{"type":3074,"tag":3444,"props":6177,"children":6178},{"emptyLinePlaceholder":1200},[6179],{"type":3079,"value":3482},{"type":3074,"tag":3444,"props":6181,"children":6182},{"class":3446,"line":3485},[6183,6187,6191,6195,6199],{"type":3074,"tag":3444,"props":6184,"children":6185},{"style":3586},[6186],{"type":3079,"value":3589},{"type":3074,"tag":3444,"props":6188,"children":6189},{"style":3586},[6190],{"type":3079,"value":3594},{"type":3074,"tag":3444,"props":6192,"children":6193},{"style":3597},[6194],{"type":3079,"value":5424},{"type":3074,"tag":3444,"props":6196,"children":6197},{"style":3603},[6198],{"type":3079,"value":3606},{"type":3074,"tag":3444,"props":6200,"children":6201},{"style":3609},[6202],{"type":3079,"value":3612},{"type":3074,"tag":3444,"props":6204,"children":6205},{"class":3446,"line":3038},[6206,6210,6214],{"type":3074,"tag":3444,"props":6207,"children":6208},{"style":3618},[6209],{"type":3079,"value":5440},{"type":3074,"tag":3444,"props":6211,"children":6212},{"style":3609},[6213],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":6215,"children":6216},{"style":3609},[6217],{"type":3079,"value":3671},{"type":3074,"tag":3444,"props":6219,"children":6220},{"class":3446,"line":3510},[6221,6225,6229,6233,6237,6241,6245],{"type":3074,"tag":3444,"props":6222,"children":6223},{"style":3618},[6224],{"type":3079,"value":5456},{"type":3074,"tag":3444,"props":6226,"children":6227},{"style":3609},[6228],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":6230,"children":6231},{"style":3609},[6232],{"type":3079,"value":4152},{"type":3074,"tag":3444,"props":6234,"children":6235},{"style":3465},[6236],{"type":3079,"value":3336},{"type":3074,"tag":3444,"props":6238,"children":6239},{"style":3609},[6240],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":6242,"children":6243},{"style":3609},[6244],{"type":3079,"value":3846},{"type":3074,"tag":3444,"props":6246,"children":6247},{"style":3450},[6248],{"type":3079,"value":5481},{"type":3074,"tag":3444,"props":6250,"children":6251},{"class":3446,"line":3518},[6252,6256,6260,6264,6269,6273],{"type":3074,"tag":3444,"props":6253,"children":6254},{"style":3618},[6255],{"type":3079,"value":5489},{"type":3074,"tag":3444,"props":6257,"children":6258},{"style":3609},[6259],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":6261,"children":6262},{"style":3609},[6263],{"type":3079,"value":4152},{"type":3074,"tag":3444,"props":6265,"children":6266},{"style":3465},[6267],{"type":3079,"value":6268},"Clean old IP tracking data from nuxt-api-shield storage.",{"type":3074,"tag":3444,"props":6270,"children":6271},{"style":3609},[6272],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":6274,"children":6275},{"style":3609},[6276],{"type":3079,"value":3654},{"type":3074,"tag":3444,"props":6278,"children":6279},{"class":3446,"line":3063},[6280],{"type":3074,"tag":3444,"props":6281,"children":6282},{"style":3609},[6283],{"type":3079,"value":3967},{"type":3074,"tag":3444,"props":6285,"children":6286},{"class":3446,"line":3714},[6287,6291,6295,6299],{"type":3074,"tag":3444,"props":6288,"children":6289},{"style":4631},[6290],{"type":3079,"value":5525},{"type":3074,"tag":3444,"props":6292,"children":6293},{"style":3618},[6294],{"type":3079,"value":5530},{"type":3074,"tag":3444,"props":6296,"children":6297},{"style":3609},[6298],{"type":3079,"value":5535},{"type":3074,"tag":3444,"props":6300,"children":6301},{"style":3609},[6302],{"type":3079,"value":3671},{"type":3074,"tag":3444,"props":6304,"children":6305},{"class":3446,"line":3723},[6306,6310,6314,6318,6322,6326,6330,6334,6338,6342],{"type":3074,"tag":3444,"props":6307,"children":6308},{"style":4631},[6309],{"type":3079,"value":5547},{"type":3074,"tag":3444,"props":6311,"children":6312},{"style":3603},[6313],{"type":3079,"value":5552},{"type":3074,"tag":3444,"props":6315,"children":6316},{"style":3609},[6317],{"type":3079,"value":5557},{"type":3074,"tag":3444,"props":6319,"children":6320},{"style":3597},[6321],{"type":3079,"value":5562},{"type":3074,"tag":3444,"props":6323,"children":6324},{"style":3618},[6325],{"type":3079,"value":3606},{"type":3074,"tag":3444,"props":6327,"children":6328},{"style":3609},[6329],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":6331,"children":6332},{"style":3465},[6333],{"type":3079,"value":4602},{"type":3074,"tag":3444,"props":6335,"children":6336},{"style":3609},[6337],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":6339,"children":6340},{"style":3618},[6341],{"type":3079,"value":3981},{"type":3074,"tag":3444,"props":6343,"children":6344},{"style":3609},[6345],{"type":3079,"value":3986},{"type":3074,"tag":3444,"props":6347,"children":6348},{"class":3446,"line":3732},[6349,6353,6358,6362,6366,6370,6374,6378,6382,6386],{"type":3074,"tag":3444,"props":6350,"children":6351},{"style":4631},[6352],{"type":3079,"value":5547},{"type":3074,"tag":3444,"props":6354,"children":6355},{"style":3603},[6356],{"type":3079,"value":6357}," config",{"type":3074,"tag":3444,"props":6359,"children":6360},{"style":3609},[6361],{"type":3079,"value":5557},{"type":3074,"tag":3444,"props":6363,"children":6364},{"style":3597},[6365],{"type":3079,"value":6148},{"type":3074,"tag":3444,"props":6367,"children":6368},{"style":3618},[6369],{"type":3079,"value":5535},{"type":3074,"tag":3444,"props":6371,"children":6372},{"style":3609},[6373],{"type":3079,"value":4573},{"type":3074,"tag":3444,"props":6375,"children":6376},{"style":3603},[6377],{"type":3079,"value":180},{"type":3074,"tag":3444,"props":6379,"children":6380},{"style":3609},[6381],{"type":3079,"value":4573},{"type":3074,"tag":3444,"props":6383,"children":6384},{"style":3603},[6385],{"type":3079,"value":4002},{"type":3074,"tag":3444,"props":6387,"children":6388},{"style":3609},[6389],{"type":3079,"value":3986},{"type":3074,"tag":3444,"props":6391,"children":6392},{"class":3446,"line":3741},[6393],{"type":3074,"tag":3444,"props":6394,"children":6395},{"emptyLinePlaceholder":1200},[6396],{"type":3079,"value":3482},{"type":3074,"tag":3444,"props":6398,"children":6399},{"class":3446,"line":3750},[6400],{"type":3074,"tag":3444,"props":6401,"children":6402},{"style":3450},[6403],{"type":3079,"value":6404},"    \u002F\u002F ipTTL is expected to be in seconds from config (module applies default if not set by user)\n",{"type":3074,"tag":3444,"props":6406,"children":6407},{"class":3446,"line":3759},[6408,6412,6417,6421,6425,6429,6433],{"type":3074,"tag":3444,"props":6409,"children":6410},{"style":4631},[6411],{"type":3079,"value":5547},{"type":3074,"tag":3444,"props":6413,"children":6414},{"style":3603},[6415],{"type":3079,"value":6416}," ipTTLseconds",{"type":3074,"tag":3444,"props":6418,"children":6419},{"style":3609},[6420],{"type":3079,"value":5557},{"type":3074,"tag":3444,"props":6422,"children":6423},{"style":3603},[6424],{"type":3079,"value":6357},{"type":3074,"tag":3444,"props":6426,"children":6427},{"style":3609},[6428],{"type":3079,"value":4573},{"type":3074,"tag":3444,"props":6430,"children":6431},{"style":3603},[6432],{"type":3079,"value":5034},{"type":3074,"tag":3444,"props":6434,"children":6435},{"style":3609},[6436],{"type":3079,"value":3986},{"type":3074,"tag":3444,"props":6438,"children":6439},{"class":3446,"line":3768},[6440],{"type":3074,"tag":3444,"props":6441,"children":6442},{"emptyLinePlaceholder":1200},[6443],{"type":3079,"value":3482},{"type":3074,"tag":3444,"props":6445,"children":6446},{"class":3446,"line":3777},[6447,6452,6456,6461,6466,6471,6475,6480,6484,6488],{"type":3074,"tag":3444,"props":6448,"children":6449},{"style":3586},[6450],{"type":3079,"value":6451},"    if",{"type":3074,"tag":3444,"props":6453,"children":6454},{"style":3618},[6455],{"type":3079,"value":5710},{"type":3074,"tag":3444,"props":6457,"children":6458},{"style":3609},[6459],{"type":3079,"value":6460},"!",{"type":3074,"tag":3444,"props":6462,"children":6463},{"style":3603},[6464],{"type":3079,"value":6465},"ipTTLseconds",{"type":3074,"tag":3444,"props":6467,"children":6468},{"style":3609},[6469],{"type":3079,"value":6470}," ||",{"type":3074,"tag":3444,"props":6472,"children":6473},{"style":3603},[6474],{"type":3079,"value":6416},{"type":3074,"tag":3444,"props":6476,"children":6477},{"style":3609},[6478],{"type":3079,"value":6479}," \u003C=",{"type":3074,"tag":3444,"props":6481,"children":6482},{"style":3884},[6483],{"type":3079,"value":4244},{"type":3074,"tag":3444,"props":6485,"children":6486},{"style":3618},[6487],{"type":3079,"value":5734},{"type":3074,"tag":3444,"props":6489,"children":6490},{"style":3609},[6491],{"type":3079,"value":3612},{"type":3074,"tag":3444,"props":6493,"children":6494},{"class":3446,"line":3786},[6495,6500,6504,6508],{"type":3074,"tag":3444,"props":6496,"children":6497},{"style":3603},[6498],{"type":3079,"value":6499},"      console",{"type":3074,"tag":3444,"props":6501,"children":6502},{"style":3609},[6503],{"type":3079,"value":4573},{"type":3074,"tag":3444,"props":6505,"children":6506},{"style":3597},[6507],{"type":3079,"value":5905},{"type":3074,"tag":3444,"props":6509,"children":6510},{"style":3618},[6511],{"type":3079,"value":6512},"(\n",{"type":3074,"tag":3444,"props":6514,"children":6515},{"class":3446,"line":3794},[6516,6520,6525],{"type":3074,"tag":3444,"props":6517,"children":6518},{"style":3609},[6519],{"type":3079,"value":4711},{"type":3074,"tag":3444,"props":6521,"children":6522},{"style":3465},[6523],{"type":3079,"value":6524},"[nuxt-api-shield] IP data cleanup (ipTTL) is disabled or invalid.",{"type":3074,"tag":3444,"props":6526,"children":6527},{"style":3609},[6528],{"type":3079,"value":4738},{"type":3074,"tag":3444,"props":6530,"children":6531},{"class":3446,"line":3803},[6532,6537],{"type":3074,"tag":3444,"props":6533,"children":6534},{"style":3618},[6535],{"type":3079,"value":6536},"      )",{"type":3074,"tag":3444,"props":6538,"children":6539},{"style":3609},[6540],{"type":3079,"value":3986},{"type":3074,"tag":3444,"props":6542,"children":6543},{"class":3446,"line":3812},[6544,6549,6553,6557,6561,6565,6569,6573,6577,6582,6587,6591,6595,6600,6604],{"type":3074,"tag":3444,"props":6545,"children":6546},{"style":3586},[6547],{"type":3079,"value":6548},"      return",{"type":3074,"tag":3444,"props":6550,"children":6551},{"style":3609},[6552],{"type":3079,"value":5363},{"type":3074,"tag":3444,"props":6554,"children":6555},{"style":3618},[6556],{"type":3079,"value":5967},{"type":3074,"tag":3444,"props":6558,"children":6559},{"style":3609},[6560],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":6562,"children":6563},{"style":3609},[6564],{"type":3079,"value":5363},{"type":3074,"tag":3444,"props":6566,"children":6567},{"style":3618},[6568],{"type":3079,"value":5685},{"type":3074,"tag":3444,"props":6570,"children":6571},{"style":3609},[6572],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":6574,"children":6575},{"style":3884},[6576],{"type":3079,"value":4244},{"type":3074,"tag":3444,"props":6578,"children":6579},{"style":3609},[6580],{"type":3079,"value":6581}," },",{"type":3074,"tag":3444,"props":6583,"children":6584},{"style":3618},[6585],{"type":3079,"value":6586}," status",{"type":3074,"tag":3444,"props":6588,"children":6589},{"style":3609},[6590],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":6592,"children":6593},{"style":3609},[6594],{"type":3079,"value":4152},{"type":3074,"tag":3444,"props":6596,"children":6597},{"style":3465},[6598],{"type":3079,"value":6599},"disabled_or_invalid_ttl",{"type":3074,"tag":3444,"props":6601,"children":6602},{"style":3609},[6603],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":6605,"children":6606},{"style":3609},[6607],{"type":3079,"value":5988},{"type":3074,"tag":3444,"props":6609,"children":6610},{"class":3446,"line":3826},[6611],{"type":3074,"tag":3444,"props":6612,"children":6613},{"style":3609},[6614],{"type":3079,"value":4754},{"type":3074,"tag":3444,"props":6616,"children":6617},{"class":3446,"line":3854},[6618,6622,6627,6631,6635,6639,6644],{"type":3074,"tag":3444,"props":6619,"children":6620},{"style":4631},[6621],{"type":3079,"value":5547},{"type":3074,"tag":3444,"props":6623,"children":6624},{"style":3603},[6625],{"type":3079,"value":6626}," ipTTLms",{"type":3074,"tag":3444,"props":6628,"children":6629},{"style":3609},[6630],{"type":3079,"value":5557},{"type":3074,"tag":3444,"props":6632,"children":6633},{"style":3603},[6634],{"type":3079,"value":6416},{"type":3074,"tag":3444,"props":6636,"children":6637},{"style":3609},[6638],{"type":3079,"value":4342},{"type":3074,"tag":3444,"props":6640,"children":6641},{"style":3884},[6642],{"type":3079,"value":6643}," 1000",{"type":3074,"tag":3444,"props":6645,"children":6646},{"style":3609},[6647],{"type":3079,"value":3986},{"type":3074,"tag":3444,"props":6649,"children":6650},{"class":3446,"line":3862},[6651],{"type":3074,"tag":3444,"props":6652,"children":6653},{"emptyLinePlaceholder":1200},[6654],{"type":3079,"value":3482},{"type":3074,"tag":3444,"props":6656,"children":6657},{"class":3446,"line":3871},[6658,6662,6667,6671,6675,6679,6683,6687,6691,6695,6700,6704,6708],{"type":3074,"tag":3444,"props":6659,"children":6660},{"style":4631},[6661],{"type":3079,"value":5547},{"type":3074,"tag":3444,"props":6663,"children":6664},{"style":3603},[6665],{"type":3079,"value":6666}," ipKeys",{"type":3074,"tag":3444,"props":6668,"children":6669},{"style":3609},[6670],{"type":3079,"value":5557},{"type":3074,"tag":3444,"props":6672,"children":6673},{"style":3586},[6674],{"type":3079,"value":5627},{"type":3074,"tag":3444,"props":6676,"children":6677},{"style":3603},[6678],{"type":3079,"value":5552},{"type":3074,"tag":3444,"props":6680,"children":6681},{"style":3609},[6682],{"type":3079,"value":4573},{"type":3074,"tag":3444,"props":6684,"children":6685},{"style":3597},[6686],{"type":3079,"value":5640},{"type":3074,"tag":3444,"props":6688,"children":6689},{"style":3618},[6690],{"type":3079,"value":3606},{"type":3074,"tag":3444,"props":6692,"children":6693},{"style":3609},[6694],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":6696,"children":6697},{"style":3465},[6698],{"type":3079,"value":6699},"ip:",{"type":3074,"tag":3444,"props":6701,"children":6702},{"style":3609},[6703],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":6705,"children":6706},{"style":3618},[6707],{"type":3079,"value":3981},{"type":3074,"tag":3444,"props":6709,"children":6710},{"style":3609},[6711],{"type":3079,"value":3986},{"type":3074,"tag":3444,"props":6713,"children":6714},{"class":3446,"line":3899},[6715,6719,6724,6728,6733,6737,6742,6746],{"type":3074,"tag":3444,"props":6716,"children":6717},{"style":4631},[6718],{"type":3079,"value":5547},{"type":3074,"tag":3444,"props":6720,"children":6721},{"style":3603},[6722],{"type":3079,"value":6723}," currentTime",{"type":3074,"tag":3444,"props":6725,"children":6726},{"style":3609},[6727],{"type":3079,"value":5557},{"type":3074,"tag":3444,"props":6729,"children":6730},{"style":3603},[6731],{"type":3079,"value":6732}," Date",{"type":3074,"tag":3444,"props":6734,"children":6735},{"style":3609},[6736],{"type":3079,"value":4573},{"type":3074,"tag":3444,"props":6738,"children":6739},{"style":3597},[6740],{"type":3079,"value":6741},"now",{"type":3074,"tag":3444,"props":6743,"children":6744},{"style":3618},[6745],{"type":3079,"value":5535},{"type":3074,"tag":3444,"props":6747,"children":6748},{"style":3609},[6749],{"type":3079,"value":3986},{"type":3074,"tag":3444,"props":6751,"children":6752},{"class":3446,"line":3916},[6753,6757,6761,6765,6769],{"type":3074,"tag":3444,"props":6754,"children":6755},{"style":4631},[6756],{"type":3079,"value":5680},{"type":3074,"tag":3444,"props":6758,"children":6759},{"style":3603},[6760],{"type":3079,"value":5685},{"type":3074,"tag":3444,"props":6762,"children":6763},{"style":3609},[6764],{"type":3079,"value":5557},{"type":3074,"tag":3444,"props":6766,"children":6767},{"style":3884},[6768],{"type":3079,"value":4244},{"type":3074,"tag":3444,"props":6770,"children":6771},{"style":3609},[6772],{"type":3079,"value":3986},{"type":3074,"tag":3444,"props":6774,"children":6775},{"class":3446,"line":3925},[6776],{"type":3074,"tag":3444,"props":6777,"children":6778},{"emptyLinePlaceholder":1200},[6779],{"type":3079,"value":3482},{"type":3074,"tag":3444,"props":6781,"children":6782},{"class":3446,"line":3953},[6783,6787,6791,6795,6799,6803,6807,6811],{"type":3074,"tag":3444,"props":6784,"children":6785},{"style":3586},[6786],{"type":3079,"value":5705},{"type":3074,"tag":3444,"props":6788,"children":6789},{"style":3618},[6790],{"type":3079,"value":5710},{"type":3074,"tag":3444,"props":6792,"children":6793},{"style":4631},[6794],{"type":3079,"value":5715},{"type":3074,"tag":3444,"props":6796,"children":6797},{"style":3603},[6798],{"type":3079,"value":5720},{"type":3074,"tag":3444,"props":6800,"children":6801},{"style":3609},[6802],{"type":3079,"value":5725},{"type":3074,"tag":3444,"props":6804,"children":6805},{"style":3603},[6806],{"type":3079,"value":6666},{"type":3074,"tag":3444,"props":6808,"children":6809},{"style":3618},[6810],{"type":3079,"value":5734},{"type":3074,"tag":3444,"props":6812,"children":6813},{"style":3609},[6814],{"type":3079,"value":3612},{"type":3074,"tag":3444,"props":6816,"children":6817},{"class":3446,"line":3961},[6818,6822,6827,6831,6835,6840,6844,6848,6852,6856,6860,6864,6869,6873,6878,6883],{"type":3074,"tag":3444,"props":6819,"children":6820},{"style":4631},[6821],{"type":3079,"value":5746},{"type":3074,"tag":3444,"props":6823,"children":6824},{"style":3603},[6825],{"type":3079,"value":6826}," entry",{"type":3074,"tag":3444,"props":6828,"children":6829},{"style":3609},[6830],{"type":3079,"value":5557},{"type":3074,"tag":3444,"props":6832,"children":6833},{"style":3618},[6834],{"type":3079,"value":5710},{"type":3074,"tag":3444,"props":6836,"children":6837},{"style":3586},[6838],{"type":3079,"value":6839},"await",{"type":3074,"tag":3444,"props":6841,"children":6842},{"style":3603},[6843],{"type":3079,"value":5552},{"type":3074,"tag":3444,"props":6845,"children":6846},{"style":3609},[6847],{"type":3079,"value":4573},{"type":3074,"tag":3444,"props":6849,"children":6850},{"style":3597},[6851],{"type":3079,"value":5772},{"type":3074,"tag":3444,"props":6853,"children":6854},{"style":3618},[6855],{"type":3079,"value":3606},{"type":3074,"tag":3444,"props":6857,"children":6858},{"style":3603},[6859],{"type":3079,"value":5781},{"type":3074,"tag":3444,"props":6861,"children":6862},{"style":3618},[6863],{"type":3079,"value":5820},{"type":3074,"tag":3444,"props":6865,"children":6866},{"style":3586},[6867],{"type":3079,"value":6868},"as",{"type":3074,"tag":3444,"props":6870,"children":6871},{"style":3459},[6872],{"type":3079,"value":6108},{"type":3074,"tag":3444,"props":6874,"children":6875},{"style":3609},[6876],{"type":3079,"value":6877}," |",{"type":3074,"tag":3444,"props":6879,"children":6880},{"style":3459},[6881],{"type":3079,"value":6882}," null",{"type":3074,"tag":3444,"props":6884,"children":6885},{"style":3609},[6886],{"type":3079,"value":3986},{"type":3074,"tag":3444,"props":6888,"children":6889},{"class":3446,"line":3970},[6890],{"type":3074,"tag":3444,"props":6891,"children":6892},{"emptyLinePlaceholder":1200},[6893],{"type":3079,"value":3482},{"type":3074,"tag":3444,"props":6895,"children":6897},{"class":3446,"line":6896},31,[6898],{"type":3074,"tag":3444,"props":6899,"children":6900},{"style":3450},[6901],{"type":3079,"value":6902},"      \u002F\u002F Check if entry exists and has a numeric 'time' property\n",{"type":3074,"tag":3444,"props":6904,"children":6906},{"class":3446,"line":6905},32,[6907,6911,6915,6920,6925,6930,6934,6938,6942,6947,6951,6956,6960,6964],{"type":3074,"tag":3444,"props":6908,"children":6909},{"style":3586},[6910],{"type":3079,"value":5797},{"type":3074,"tag":3444,"props":6912,"children":6913},{"style":3618},[6914],{"type":3079,"value":5710},{"type":3074,"tag":3444,"props":6916,"children":6917},{"style":3603},[6918],{"type":3079,"value":6919},"entry",{"type":3074,"tag":3444,"props":6921,"children":6922},{"style":3609},[6923],{"type":3079,"value":6924}," &&",{"type":3074,"tag":3444,"props":6926,"children":6927},{"style":3609},[6928],{"type":3079,"value":6929}," typeof",{"type":3074,"tag":3444,"props":6931,"children":6932},{"style":3603},[6933],{"type":3079,"value":6826},{"type":3074,"tag":3444,"props":6935,"children":6936},{"style":3609},[6937],{"type":3079,"value":4573},{"type":3074,"tag":3444,"props":6939,"children":6940},{"style":3603},[6941],{"type":3079,"value":6059},{"type":3074,"tag":3444,"props":6943,"children":6944},{"style":3609},[6945],{"type":3079,"value":6946}," ===",{"type":3074,"tag":3444,"props":6948,"children":6949},{"style":3609},[6950],{"type":3079,"value":4152},{"type":3074,"tag":3444,"props":6952,"children":6953},{"style":3465},[6954],{"type":3079,"value":6955},"number",{"type":3074,"tag":3444,"props":6957,"children":6958},{"style":3609},[6959],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":6961,"children":6962},{"style":3618},[6963],{"type":3079,"value":5734},{"type":3074,"tag":3444,"props":6965,"children":6966},{"style":3609},[6967],{"type":3079,"value":3612},{"type":3074,"tag":3444,"props":6969,"children":6971},{"class":3446,"line":6970},33,[6972,6977,6981,6986,6991,6995,6999,7003,7008,7012,7016],{"type":3074,"tag":3444,"props":6973,"children":6974},{"style":3586},[6975],{"type":3079,"value":6976},"        if",{"type":3074,"tag":3444,"props":6978,"children":6979},{"style":3618},[6980],{"type":3079,"value":5710},{"type":3074,"tag":3444,"props":6982,"children":6983},{"style":3603},[6984],{"type":3079,"value":6985},"currentTime",{"type":3074,"tag":3444,"props":6987,"children":6988},{"style":3609},[6989],{"type":3079,"value":6990}," -",{"type":3074,"tag":3444,"props":6992,"children":6993},{"style":3603},[6994],{"type":3079,"value":6826},{"type":3074,"tag":3444,"props":6996,"children":6997},{"style":3609},[6998],{"type":3079,"value":4573},{"type":3074,"tag":3444,"props":7000,"children":7001},{"style":3603},[7002],{"type":3079,"value":6059},{"type":3074,"tag":3444,"props":7004,"children":7005},{"style":3609},[7006],{"type":3079,"value":7007}," >",{"type":3074,"tag":3444,"props":7009,"children":7010},{"style":3603},[7011],{"type":3079,"value":6626},{"type":3074,"tag":3444,"props":7013,"children":7014},{"style":3618},[7015],{"type":3079,"value":5734},{"type":3074,"tag":3444,"props":7017,"children":7018},{"style":3609},[7019],{"type":3079,"value":3612},{"type":3074,"tag":3444,"props":7021,"children":7023},{"class":3446,"line":7022},34,[7024,7029,7033,7037,7041,7045,7049,7053],{"type":3074,"tag":3444,"props":7025,"children":7026},{"style":3586},[7027],{"type":3079,"value":7028},"          await",{"type":3074,"tag":3444,"props":7030,"children":7031},{"style":3603},[7032],{"type":3079,"value":5552},{"type":3074,"tag":3444,"props":7034,"children":7035},{"style":3609},[7036],{"type":3079,"value":4573},{"type":3074,"tag":3444,"props":7038,"children":7039},{"style":3597},[7040],{"type":3079,"value":5845},{"type":3074,"tag":3444,"props":7042,"children":7043},{"style":3618},[7044],{"type":3079,"value":3606},{"type":3074,"tag":3444,"props":7046,"children":7047},{"style":3603},[7048],{"type":3079,"value":5781},{"type":3074,"tag":3444,"props":7050,"children":7051},{"style":3618},[7052],{"type":3079,"value":3981},{"type":3074,"tag":3444,"props":7054,"children":7055},{"style":3609},[7056],{"type":3079,"value":3986},{"type":3074,"tag":3444,"props":7058,"children":7060},{"class":3446,"line":7059},35,[7061,7066],{"type":3074,"tag":3444,"props":7062,"children":7063},{"style":3603},[7064],{"type":3079,"value":7065},"          cleanedCount",{"type":3074,"tag":3444,"props":7067,"children":7068},{"style":3609},[7069],{"type":3079,"value":5874},{"type":3074,"tag":3444,"props":7071,"children":7073},{"class":3446,"line":7072},36,[7074],{"type":3074,"tag":3444,"props":7075,"children":7076},{"style":3609},[7077],{"type":3079,"value":7078},"        }\n",{"type":3074,"tag":3444,"props":7080,"children":7082},{"class":3446,"line":7081},37,[7083,7088,7093],{"type":3074,"tag":3444,"props":7084,"children":7085},{"style":3609},[7086],{"type":3079,"value":7087},"      }",{"type":3074,"tag":3444,"props":7089,"children":7090},{"style":3586},[7091],{"type":3079,"value":7092}," else",{"type":3074,"tag":3444,"props":7094,"children":7095},{"style":3609},[7096],{"type":3079,"value":3671},{"type":3074,"tag":3444,"props":7098,"children":7100},{"class":3446,"line":7099},38,[7101],{"type":3074,"tag":3444,"props":7102,"children":7103},{"style":3450},[7104],{"type":3079,"value":7105},"        \u002F\u002F Clean up entries that are null, not an object, or missing a numeric 'time'\n",{"type":3074,"tag":3444,"props":7107,"children":7109},{"class":3446,"line":7108},39,[7110,7114,7118,7122,7126,7130,7134,7138],{"type":3074,"tag":3444,"props":7111,"children":7112},{"style":3586},[7113],{"type":3079,"value":5832},{"type":3074,"tag":3444,"props":7115,"children":7116},{"style":3603},[7117],{"type":3079,"value":5552},{"type":3074,"tag":3444,"props":7119,"children":7120},{"style":3609},[7121],{"type":3079,"value":4573},{"type":3074,"tag":3444,"props":7123,"children":7124},{"style":3597},[7125],{"type":3079,"value":5845},{"type":3074,"tag":3444,"props":7127,"children":7128},{"style":3618},[7129],{"type":3079,"value":3606},{"type":3074,"tag":3444,"props":7131,"children":7132},{"style":3603},[7133],{"type":3079,"value":5781},{"type":3074,"tag":3444,"props":7135,"children":7136},{"style":3618},[7137],{"type":3079,"value":3981},{"type":3074,"tag":3444,"props":7139,"children":7140},{"style":3609},[7141],{"type":3079,"value":3986},{"type":3074,"tag":3444,"props":7143,"children":7145},{"class":3446,"line":7144},40,[7146,7150],{"type":3074,"tag":3444,"props":7147,"children":7148},{"style":3603},[7149],{"type":3079,"value":5869},{"type":3074,"tag":3444,"props":7151,"children":7152},{"style":3609},[7153],{"type":3079,"value":5874},{"type":3074,"tag":3444,"props":7155,"children":7157},{"class":3446,"line":7156},41,[7158],{"type":3074,"tag":3444,"props":7159,"children":7160},{"style":3609},[7161],{"type":3079,"value":4746},{"type":3074,"tag":3444,"props":7163,"children":7165},{"class":3446,"line":7164},42,[7166],{"type":3074,"tag":3444,"props":7167,"children":7168},{"style":3609},[7169],{"type":3079,"value":4754},{"type":3074,"tag":3444,"props":7171,"children":7173},{"class":3446,"line":7172},43,[7174],{"type":3074,"tag":3444,"props":7175,"children":7176},{"emptyLinePlaceholder":1200},[7177],{"type":3079,"value":3482},{"type":3074,"tag":3444,"props":7179,"children":7181},{"class":3446,"line":7180},44,[7182,7186,7190,7194],{"type":3074,"tag":3444,"props":7183,"children":7184},{"style":3603},[7185],{"type":3079,"value":5896},{"type":3074,"tag":3444,"props":7187,"children":7188},{"style":3609},[7189],{"type":3079,"value":4573},{"type":3074,"tag":3444,"props":7191,"children":7192},{"style":3597},[7193],{"type":3079,"value":5905},{"type":3074,"tag":3444,"props":7195,"children":7196},{"style":3618},[7197],{"type":3079,"value":6512},{"type":3074,"tag":3444,"props":7199,"children":7201},{"class":3446,"line":7200},45,[7202,7207,7211,7215,7219,7223,7228],{"type":3074,"tag":3444,"props":7203,"children":7204},{"style":3609},[7205],{"type":3079,"value":7206},"      `",{"type":3074,"tag":3444,"props":7208,"children":7209},{"style":3465},[7210],{"type":3079,"value":5919},{"type":3074,"tag":3444,"props":7212,"children":7213},{"style":3609},[7214],{"type":3079,"value":5924},{"type":3074,"tag":3444,"props":7216,"children":7217},{"style":3603},[7218],{"type":3079,"value":5929},{"type":3074,"tag":3444,"props":7220,"children":7221},{"style":3609},[7222],{"type":3079,"value":3976},{"type":3074,"tag":3444,"props":7224,"children":7225},{"style":3465},[7226],{"type":3079,"value":7227}," old\u002Fmalformed IP data entries.",{"type":3074,"tag":3444,"props":7229,"children":7230},{"style":3609},[7231],{"type":3079,"value":7232},"`\n",{"type":3074,"tag":3444,"props":7234,"children":7236},{"class":3446,"line":7235},46,[7237,7242],{"type":3074,"tag":3444,"props":7238,"children":7239},{"style":3618},[7240],{"type":3079,"value":7241},"    )",{"type":3074,"tag":3444,"props":7243,"children":7244},{"style":3609},[7245],{"type":3079,"value":3986},{"type":3074,"tag":3444,"props":7247,"children":7249},{"class":3446,"line":7248},47,[7250,7254,7258,7262,7266,7270,7274,7278],{"type":3074,"tag":3444,"props":7251,"children":7252},{"style":3586},[7253],{"type":3079,"value":5958},{"type":3074,"tag":3444,"props":7255,"children":7256},{"style":3609},[7257],{"type":3079,"value":5363},{"type":3074,"tag":3444,"props":7259,"children":7260},{"style":3618},[7261],{"type":3079,"value":5967},{"type":3074,"tag":3444,"props":7263,"children":7264},{"style":3609},[7265],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":7267,"children":7268},{"style":3609},[7269],{"type":3079,"value":5363},{"type":3074,"tag":3444,"props":7271,"children":7272},{"style":3603},[7273],{"type":3079,"value":5685},{"type":3074,"tag":3444,"props":7275,"children":7276},{"style":3609},[7277],{"type":3079,"value":5373},{"type":3074,"tag":3444,"props":7279,"children":7280},{"style":3609},[7281],{"type":3079,"value":5988},{"type":3074,"tag":3444,"props":7283,"children":7285},{"class":3446,"line":7284},48,[7286],{"type":3074,"tag":3444,"props":7287,"children":7288},{"style":3609},[7289],{"type":3079,"value":3967},{"type":3074,"tag":3444,"props":7291,"children":7293},{"class":3446,"line":7292},49,[7294,7298,7302],{"type":3074,"tag":3444,"props":7295,"children":7296},{"style":3609},[7297],{"type":3079,"value":3976},{"type":3074,"tag":3444,"props":7299,"children":7300},{"style":3603},[7301],{"type":3079,"value":3981},{"type":3074,"tag":3444,"props":7303,"children":7304},{"style":3609},[7305],{"type":3079,"value":3986},{"type":3074,"tag":3081,"props":7307,"children":7308},{},[7309,7311,7316,7318,7323,7325,7330,7331,7337,7339,7344],{"type":3079,"value":7310},"Configure ",{"type":3074,"tag":3231,"props":7312,"children":7314},{"className":7313},[],[7315],{"type":3079,"value":5034},{"type":3079,"value":7317}," under ",{"type":3074,"tag":3231,"props":7319,"children":7321},{"className":7320},[],[7322],{"type":3079,"value":4002},{"type":3079,"value":7324}," if you want a TTL other than the default. Setting ",{"type":3074,"tag":3231,"props":7326,"children":7328},{"className":7327},[],[7329],{"type":3079,"value":5034},{"type":3079,"value":4587},{"type":3074,"tag":3231,"props":7332,"children":7334},{"className":7333},[],[7335],{"type":3079,"value":7336},"0",{"type":3079,"value":7338}," (or any non-positive value) makes the bundled ",{"type":3074,"tag":3231,"props":7340,"children":7342},{"className":7341},[],[7343],{"type":3079,"value":3336},{"type":3079,"value":7345}," task skip IP cleanup (it logs and exits).",{"type":3074,"tag":3081,"props":7347,"children":7348},{},[7349,7351,7357,7359,7364,7366,7371],{"type":3079,"value":7350},"If you add your own task file with the same ",{"type":3074,"tag":3231,"props":7352,"children":7354},{"className":7353},[],[7355],{"type":3079,"value":7356},"meta.name",{"type":3079,"value":7358}," as a bundled task (",{"type":3074,"tag":3231,"props":7360,"children":7362},{"className":7361},[],[7363],{"type":3079,"value":3328},{"type":3079,"value":7365}," or ",{"type":3074,"tag":3231,"props":7367,"children":7369},{"className":7368},[],[7370],{"type":3079,"value":3336},{"type":3079,"value":7372},"), Nitro may prefer your project file over the module—avoid duplicate names unless you intend to override.",{"type":3074,"tag":3157,"props":7374,"children":7376},{"id":7375},"production-deployment",[7377],{"type":3079,"value":7378},"Production Deployment",{"type":3074,"tag":3420,"props":7380,"children":7382},{"id":7381},"use-redis-as-the-storage-driver",[7383],{"type":3079,"value":7384},"Use Redis as the storage driver",{"type":3074,"tag":3081,"props":7386,"children":7387},{},[7388,7390,7395,7397,7402,7403,7409],{"type":3079,"value":7389},"For production deployments — especially with multiple server instances or significant traffic — ",{"type":3074,"tag":3169,"props":7391,"children":7392},{},[7393],{"type":3079,"value":7394},"Redis is the recommended storage driver",{"type":3079,"value":7396},". The ",{"type":3074,"tag":3231,"props":7398,"children":7400},{"className":7399},[],[7401],{"type":3079,"value":4733},{"type":3079,"value":3330},{"type":3074,"tag":3231,"props":7404,"children":7406},{"className":7405},[],[7407],{"type":3079,"value":7408},"fs",{"type":3079,"value":7410}," drivers have important limitations:",{"type":3074,"tag":7412,"props":7413,"children":7414},"table",{},[7415,7449],{"type":3074,"tag":7416,"props":7417,"children":7418},"thead",{},[7419],{"type":3074,"tag":7420,"props":7421,"children":7422},"tr",{},[7423,7429,7444],{"type":3074,"tag":7424,"props":7425,"children":7426},"th",{},[7427],{"type":3079,"value":7428},"Area",{"type":3074,"tag":7424,"props":7430,"children":7431},{},[7432,7437,7439],{"type":3074,"tag":3231,"props":7433,"children":7435},{"className":7434},[],[7436],{"type":3079,"value":4733},{"type":3079,"value":7438}," \u002F ",{"type":3074,"tag":3231,"props":7440,"children":7442},{"className":7441},[],[7443],{"type":3079,"value":7408},{"type":3074,"tag":7424,"props":7445,"children":7446},{},[7447],{"type":3079,"value":7448},"Redis",{"type":3074,"tag":7450,"props":7451,"children":7452},"tbody",{},[7453,7475,7496],{"type":3074,"tag":7420,"props":7454,"children":7455},{},[7456,7465,7470],{"type":3074,"tag":7457,"props":7458,"children":7459},"td",{},[7460],{"type":3074,"tag":3169,"props":7461,"children":7462},{},[7463],{"type":3079,"value":7464},"Multi-instance",{"type":3074,"tag":7457,"props":7466,"children":7467},{},[7468],{"type":3079,"value":7469},"Each process has its own isolated state. Rate limits reset per instance, allowing bypass.",{"type":3074,"tag":7457,"props":7471,"children":7472},{},[7473],{"type":3079,"value":7474},"Shared state across all instances.",{"type":3074,"tag":7420,"props":7476,"children":7477},{},[7478,7486,7491],{"type":3074,"tag":7457,"props":7479,"children":7480},{},[7481],{"type":3074,"tag":3169,"props":7482,"children":7483},{},[7484],{"type":3079,"value":7485},"Atomic operations",{"type":3074,"tag":7457,"props":7487,"children":7488},{},[7489],{"type":3079,"value":7490},"Read → increment → write is not atomic. Concurrent requests can both read the same count and exceed the limit simultaneously.",{"type":3074,"tag":7457,"props":7492,"children":7493},{},[7494],{"type":3079,"value":7495},"Single-threaded — reads and writes are naturally atomic. No race conditions.",{"type":3074,"tag":7420,"props":7497,"children":7498},{},[7499,7507,7533],{"type":3074,"tag":7457,"props":7500,"children":7501},{},[7502],{"type":3074,"tag":3169,"props":7503,"children":7504},{},[7505],{"type":3079,"value":7506},"Cleanup",{"type":3074,"tag":7457,"props":7508,"children":7509},{},[7510,7512,7517,7518,7523,7525,7531],{"type":3079,"value":7511},"Cleanup tasks (",{"type":3074,"tag":3231,"props":7513,"children":7515},{"className":7514},[],[7516],{"type":3079,"value":3328},{"type":3079,"value":3396},{"type":3074,"tag":3231,"props":7519,"children":7521},{"className":7520},[],[7522],{"type":3079,"value":3336},{"type":3079,"value":7524},") must scan all keys with ",{"type":3074,"tag":3231,"props":7526,"children":7528},{"className":7527},[],[7529],{"type":3079,"value":7530},"getKeys()",{"type":3079,"value":7532},". At scale this blocks the event loop.",{"type":3074,"tag":7457,"props":7534,"children":7535},{},[7536,7538,7544,7545,7551],{"type":3079,"value":7537},"Use ",{"type":3074,"tag":3231,"props":7539,"children":7541},{"className":7540},[],[7542],{"type":3079,"value":7543},"EXPIRE",{"type":3079,"value":7365},{"type":3074,"tag":3231,"props":7546,"children":7548},{"className":7547},[],[7549],{"type":3079,"value":7550},"TTL",{"type":3079,"value":7552}," natively — expired keys are reclaimed automatically without scanning.",{"type":3074,"tag":3081,"props":7554,"children":7555},{},[7556,7558,7563,7565,7570],{"type":3079,"value":7557},"To use Redis, configure the ",{"type":3074,"tag":3231,"props":7559,"children":7561},{"className":7560},[],[7562],{"type":3079,"value":4602},{"type":3079,"value":7564}," storage with the ",{"type":3074,"tag":3231,"props":7566,"children":7568},{"className":7567},[],[7569],{"type":3079,"value":4884},{"type":3079,"value":7571}," driver:",{"type":3074,"tag":3434,"props":7573,"children":7574},{"className":4607,"code":4776,"language":4609,"meta":3018,"style":3018},[7575],{"type":3074,"tag":3231,"props":7576,"children":7577},{"__ignoreMap":3018},[7578,7585,7608,7631,7654,7689,7724,7747,7754,7761,7768],{"type":3074,"tag":3444,"props":7579,"children":7580},{"class":3446,"line":3046},[7581],{"type":3074,"tag":3444,"props":7582,"children":7583},{"style":3609},[7584],{"type":3079,"value":3612},{"type":3074,"tag":3444,"props":7586,"children":7587},{"class":3446,"line":3042},[7588,7592,7596,7600,7604],{"type":3074,"tag":3444,"props":7589,"children":7590},{"style":3609},[7591],{"type":3079,"value":4628},{"type":3074,"tag":3444,"props":7593,"children":7594},{"style":4631},[7595],{"type":3079,"value":4634},{"type":3074,"tag":3444,"props":7597,"children":7598},{"style":3609},[7599],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":7601,"children":7602},{"style":3609},[7603],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":7605,"children":7606},{"style":3609},[7607],{"type":3079,"value":3671},{"type":3074,"tag":3444,"props":7609,"children":7610},{"class":3446,"line":3476},[7611,7615,7619,7623,7627],{"type":3074,"tag":3444,"props":7612,"children":7613},{"style":3609},[7614],{"type":3079,"value":4654},{"type":3074,"tag":3444,"props":7616,"children":7617},{"style":3459},[7618],{"type":3079,"value":4659},{"type":3074,"tag":3444,"props":7620,"children":7621},{"style":3609},[7622],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":7624,"children":7625},{"style":3609},[7626],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":7628,"children":7629},{"style":3609},[7630],{"type":3079,"value":3671},{"type":3074,"tag":3444,"props":7632,"children":7633},{"class":3446,"line":3485},[7634,7638,7642,7646,7650],{"type":3074,"tag":3444,"props":7635,"children":7636},{"style":3609},[7637],{"type":3079,"value":4679},{"type":3074,"tag":3444,"props":7639,"children":7640},{"style":3884},[7641],{"type":3079,"value":4602},{"type":3074,"tag":3444,"props":7643,"children":7644},{"style":3609},[7645],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":7647,"children":7648},{"style":3609},[7649],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":7651,"children":7652},{"style":3609},[7653],{"type":3079,"value":3671},{"type":3074,"tag":3444,"props":7655,"children":7656},{"class":3446,"line":3038},[7657,7661,7665,7669,7673,7677,7681,7685],{"type":3074,"tag":3444,"props":7658,"children":7659},{"style":3609},[7660],{"type":3079,"value":4711},{"type":3074,"tag":3444,"props":7662,"children":7663},{"style":3618},[7664],{"type":3079,"value":4716},{"type":3074,"tag":3444,"props":7666,"children":7667},{"style":3609},[7668],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":7670,"children":7671},{"style":3609},[7672],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":7674,"children":7675},{"style":3609},[7676],{"type":3079,"value":4152},{"type":3074,"tag":3444,"props":7678,"children":7679},{"style":3465},[7680],{"type":3079,"value":4884},{"type":3074,"tag":3444,"props":7682,"children":7683},{"style":3609},[7684],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":7686,"children":7687},{"style":3609},[7688],{"type":3079,"value":3654},{"type":3074,"tag":3444,"props":7690,"children":7691},{"class":3446,"line":3510},[7692,7696,7700,7704,7708,7712,7716,7720],{"type":3074,"tag":3444,"props":7693,"children":7694},{"style":3609},[7695],{"type":3079,"value":4711},{"type":3074,"tag":3444,"props":7697,"children":7698},{"style":3618},[7699],{"type":3079,"value":4904},{"type":3074,"tag":3444,"props":7701,"children":7702},{"style":3609},[7703],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":7705,"children":7706},{"style":3609},[7707],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":7709,"children":7710},{"style":3609},[7711],{"type":3079,"value":4152},{"type":3074,"tag":3444,"props":7713,"children":7714},{"style":3465},[7715],{"type":3079,"value":4921},{"type":3074,"tag":3444,"props":7717,"children":7718},{"style":3609},[7719],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":7721,"children":7722},{"style":3609},[7723],{"type":3079,"value":3654},{"type":3074,"tag":3444,"props":7725,"children":7726},{"class":3446,"line":3518},[7727,7731,7735,7739,7743],{"type":3074,"tag":3444,"props":7728,"children":7729},{"style":3609},[7730],{"type":3079,"value":4711},{"type":3074,"tag":3444,"props":7732,"children":7733},{"style":3618},[7734],{"type":3079,"value":4941},{"type":3074,"tag":3444,"props":7736,"children":7737},{"style":3609},[7738],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":7740,"children":7741},{"style":3609},[7742],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":7744,"children":7745},{"style":3884},[7746],{"type":3079,"value":4954},{"type":3074,"tag":3444,"props":7748,"children":7749},{"class":3446,"line":3063},[7750],{"type":3074,"tag":3444,"props":7751,"children":7752},{"style":3609},[7753],{"type":3079,"value":4746},{"type":3074,"tag":3444,"props":7755,"children":7756},{"class":3446,"line":3714},[7757],{"type":3074,"tag":3444,"props":7758,"children":7759},{"style":3609},[7760],{"type":3079,"value":4754},{"type":3074,"tag":3444,"props":7762,"children":7763},{"class":3446,"line":3723},[7764],{"type":3074,"tag":3444,"props":7765,"children":7766},{"style":3609},[7767],{"type":3079,"value":4417},{"type":3074,"tag":3444,"props":7769,"children":7770},{"class":3446,"line":3732},[7771],{"type":3074,"tag":3444,"props":7772,"children":7773},{"style":3609},[7774],{"type":3079,"value":4425},{"type":3074,"tag":3081,"props":7776,"children":7777},{},[7778,7780,7787],{"type":3079,"value":7779},"See the ",{"type":3074,"tag":3085,"props":7781,"children":7784},{"href":7782,"rel":7783},"https:\u002F\u002Funstorage.unjs.io\u002Fdrivers\u002Fredis",[3089],[7785],{"type":3079,"value":7786},"unstorage Redis driver docs",{"type":3079,"value":7788}," for all available options.",{"type":3074,"tag":3420,"props":7790,"children":7792},{"id":7791},"when-memory-fs-is-acceptable",[7793,7795,7800,7801,7806],{"type":3079,"value":7794},"When ",{"type":3074,"tag":3231,"props":7796,"children":7798},{"className":7797},[],[7799],{"type":3079,"value":4733},{"type":3079,"value":7438},{"type":3074,"tag":3231,"props":7802,"children":7804},{"className":7803},[],[7805],{"type":3079,"value":7408},{"type":3079,"value":7807}," is acceptable",{"type":3074,"tag":3081,"props":7809,"children":7810},{},[7811,7812,7817,7818,7823],{"type":3079,"value":4444},{"type":3074,"tag":3231,"props":7813,"children":7815},{"className":7814},[],[7816],{"type":3079,"value":4733},{"type":3079,"value":3330},{"type":3074,"tag":3231,"props":7819,"children":7821},{"className":7820},[],[7822],{"type":3079,"value":7408},{"type":3079,"value":7824}," drivers are fine for:",{"type":3074,"tag":3131,"props":7826,"children":7827},{},[7828,7833,7838],{"type":3074,"tag":3135,"props":7829,"children":7830},{},[7831],{"type":3079,"value":7832},"Single-instance deployments",{"type":3074,"tag":3135,"props":7834,"children":7835},{},[7836],{"type":3079,"value":7837},"Development environments",{"type":3074,"tag":3135,"props":7839,"children":7840},{},[7841],{"type":3079,"value":7842},"Low-traffic applications where occasional race conditions are acceptable",{"type":3074,"tag":3081,"props":7844,"children":7845},{},[7846],{"type":3079,"value":7847},"For everything else, use Redis.",{"type":3074,"tag":3157,"props":7849,"children":7851},{"id":7850},"fail2ban-integration",[7852],{"type":3079,"value":7853},"Fail2ban Integration",{"type":3074,"tag":3081,"props":7855,"children":7856},{},[7857,7859,7864,7866,7872],{"type":3079,"value":7858},"When a user exceeds the rate limit and gets banned, ",{"type":3074,"tag":3231,"props":7860,"children":7862},{"className":7861},[],[7863],{"type":3079,"value":3015},{"type":3079,"value":7865}," can write ban events to the log file in a ",{"type":3074,"tag":3231,"props":7867,"children":7869},{"className":7868},[],[7870],{"type":3079,"value":7871},"fail2ban",{"type":3079,"value":7873},"-compatible format. You can then configure fail2ban to watch these logs and automatically block the IP at the firewall level.",{"type":3074,"tag":3420,"props":7875,"children":7877},{"id":7876},"setup",[7878],{"type":3079,"value":7879},"Setup",{"type":3074,"tag":3081,"props":7881,"children":7882},{},[7883,7885,7891,7892,7897,7899,7905],{"type":3079,"value":7884},"Enable fail2ban logging by setting ",{"type":3074,"tag":3231,"props":7886,"children":7888},{"className":7887},[],[7889],{"type":3079,"value":7890},"log.fail2ban",{"type":3079,"value":4587},{"type":3074,"tag":3231,"props":7893,"children":7895},{"className":7894},[],[7896],{"type":3079,"value":4482},{"type":3079,"value":7898}," and configuring the ",{"type":3074,"tag":3231,"props":7900,"children":7902},{"className":7901},[],[7903],{"type":3079,"value":7904},"log.path",{"type":3079,"value":3626},{"type":3074,"tag":3434,"props":7907,"children":7909},{"className":3574,"code":7908,"language":3576,"meta":3018,"style":3018},"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",[7910],{"type":3074,"tag":3231,"props":7911,"children":7912},{"__ignoreMap":3018},[7913,7936,7971,7986,8002,8036,8062,8087,8094,8101],{"type":3074,"tag":3444,"props":7914,"children":7915},{"class":3446,"line":3046},[7916,7920,7924,7928,7932],{"type":3074,"tag":3444,"props":7917,"children":7918},{"style":3586},[7919],{"type":3079,"value":3589},{"type":3074,"tag":3444,"props":7921,"children":7922},{"style":3586},[7923],{"type":3079,"value":3594},{"type":3074,"tag":3444,"props":7925,"children":7926},{"style":3597},[7927],{"type":3079,"value":3600},{"type":3074,"tag":3444,"props":7929,"children":7930},{"style":3603},[7931],{"type":3079,"value":3606},{"type":3074,"tag":3444,"props":7933,"children":7934},{"style":3609},[7935],{"type":3079,"value":3612},{"type":3074,"tag":3444,"props":7937,"children":7938},{"class":3446,"line":3042},[7939,7943,7947,7951,7955,7959,7963,7967],{"type":3074,"tag":3444,"props":7940,"children":7941},{"style":3618},[7942],{"type":3079,"value":3621},{"type":3074,"tag":3444,"props":7944,"children":7945},{"style":3609},[7946],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":7948,"children":7949},{"style":3603},[7950],{"type":3079,"value":3631},{"type":3074,"tag":3444,"props":7952,"children":7953},{"style":3609},[7954],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":7956,"children":7957},{"style":3465},[7958],{"type":3079,"value":3015},{"type":3074,"tag":3444,"props":7960,"children":7961},{"style":3609},[7962],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":7964,"children":7965},{"style":3603},[7966],{"type":3079,"value":3649},{"type":3074,"tag":3444,"props":7968,"children":7969},{"style":3609},[7970],{"type":3079,"value":3654},{"type":3074,"tag":3444,"props":7972,"children":7973},{"class":3446,"line":3476},[7974,7978,7982],{"type":3074,"tag":3444,"props":7975,"children":7976},{"style":3618},[7977],{"type":3079,"value":3662},{"type":3074,"tag":3444,"props":7979,"children":7980},{"style":3609},[7981],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":7983,"children":7984},{"style":3609},[7985],{"type":3079,"value":3671},{"type":3074,"tag":3444,"props":7987,"children":7988},{"class":3446,"line":3485},[7989,7994,7998],{"type":3074,"tag":3444,"props":7990,"children":7991},{"style":3618},[7992],{"type":3079,"value":7993},"    log",{"type":3074,"tag":3444,"props":7995,"children":7996},{"style":3609},[7997],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":7999,"children":8000},{"style":3609},[8001],{"type":3079,"value":3671},{"type":3074,"tag":3444,"props":8003,"children":8004},{"class":3446,"line":3038},[8005,8010,8014,8018,8023,8027,8031],{"type":3074,"tag":3444,"props":8006,"children":8007},{"style":3618},[8008],{"type":3079,"value":8009},"      path",{"type":3074,"tag":3444,"props":8011,"children":8012},{"style":3609},[8013],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":8015,"children":8016},{"style":3609},[8017],{"type":3079,"value":4152},{"type":3074,"tag":3444,"props":8019,"children":8020},{"style":3465},[8021],{"type":3079,"value":8022},"\u002Fvar\u002Flog\u002Fnuxt-api-shield",{"type":3074,"tag":3444,"props":8024,"children":8025},{"style":3609},[8026],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":8028,"children":8029},{"style":3609},[8030],{"type":3079,"value":3846},{"type":3074,"tag":3444,"props":8032,"children":8033},{"style":3450},[8034],{"type":3079,"value":8035}," \u002F\u002F required — must be set\n",{"type":3074,"tag":3444,"props":8037,"children":8038},{"class":3446,"line":3510},[8039,8044,8048,8053,8057],{"type":3074,"tag":3444,"props":8040,"children":8041},{"style":3618},[8042],{"type":3079,"value":8043},"      attempts",{"type":3074,"tag":3444,"props":8045,"children":8046},{"style":3609},[8047],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":8049,"children":8050},{"style":3884},[8051],{"type":3079,"value":8052}," 1",{"type":3074,"tag":3444,"props":8054,"children":8055},{"style":3609},[8056],{"type":3079,"value":3846},{"type":3074,"tag":3444,"props":8058,"children":8059},{"style":3450},[8060],{"type":3079,"value":8061},"                       \u002F\u002F optional — threshold for regular request logging\n",{"type":3074,"tag":3444,"props":8063,"children":8064},{"class":3446,"line":3518},[8065,8070,8074,8078,8082],{"type":3074,"tag":3444,"props":8066,"children":8067},{"style":3618},[8068],{"type":3079,"value":8069},"      fail2ban",{"type":3074,"tag":3444,"props":8071,"children":8072},{"style":3609},[8073],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":8075,"children":8076},{"style":3938},[8077],{"type":3079,"value":4131},{"type":3074,"tag":3444,"props":8079,"children":8080},{"style":3609},[8081],{"type":3079,"value":3846},{"type":3074,"tag":3444,"props":8083,"children":8084},{"style":3450},[8085],{"type":3079,"value":8086},"                     \u002F\u002F enable fail2ban format\n",{"type":3074,"tag":3444,"props":8088,"children":8089},{"class":3446,"line":3063},[8090],{"type":3074,"tag":3444,"props":8091,"children":8092},{"style":3609},[8093],{"type":3079,"value":3720},{"type":3074,"tag":3444,"props":8095,"children":8096},{"class":3446,"line":3714},[8097],{"type":3074,"tag":3444,"props":8098,"children":8099},{"style":3609},[8100],{"type":3079,"value":3967},{"type":3074,"tag":3444,"props":8102,"children":8103},{"class":3446,"line":3723},[8104,8108],{"type":3074,"tag":3444,"props":8105,"children":8106},{"style":3609},[8107],{"type":3079,"value":3976},{"type":3074,"tag":3444,"props":8109,"children":8110},{"style":3603},[8111],{"type":3079,"value":8112},")\n",{"type":3074,"tag":3081,"props":8114,"children":8115},{},[8116],{"type":3079,"value":8117},"When enabled, every ban event writes a line like:",{"type":3074,"tag":3434,"props":8119,"children":8123},{"className":8120,"code":8122,"language":3079},[8121],"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",[8124],{"type":3074,"tag":3231,"props":8125,"children":8126},{"__ignoreMap":3018},[8127],{"type":3079,"value":8122},{"type":3074,"tag":3420,"props":8129,"children":8131},{"id":8130},"fail2ban-filter-configuration",[8132],{"type":3079,"value":8133},"Fail2ban filter configuration",{"type":3074,"tag":3081,"props":8135,"children":8136},{},[8137,8139,8145],{"type":3079,"value":8138},"Create ",{"type":3074,"tag":3231,"props":8140,"children":8142},{"className":8141},[],[8143],{"type":3079,"value":8144},"\u002Fetc\u002Ffail2ban\u002Ffilter.d\u002Fnuxt-api-shield.conf",{"type":3079,"value":3626},{"type":3074,"tag":3434,"props":8147,"children":8151},{"className":8148,"code":8149,"language":8150,"meta":3018,"style":3018},"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",[8152],{"type":3074,"tag":3231,"props":8153,"children":8154},{"__ignoreMap":3018},[8155,8163],{"type":3074,"tag":3444,"props":8156,"children":8157},{"class":3446,"line":3046},[8158],{"type":3074,"tag":3444,"props":8159,"children":8160},{"style":3609},[8161],{"type":3079,"value":8162},"[Definition]\n",{"type":3074,"tag":3444,"props":8164,"children":8165},{"class":3446,"line":3042},[8166,8171,8175],{"type":3074,"tag":3444,"props":8167,"children":8168},{"style":3618},[8169],{"type":3079,"value":8170},"failregex",{"type":3074,"tag":3444,"props":8172,"children":8173},{"style":3609},[8174],{"type":3079,"value":5557},{"type":3074,"tag":3444,"props":8176,"children":8177},{"style":3603},[8178],{"type":3079,"value":8179}," ^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2},\\d{3} nuxt-api-shield ban \u003CHOST>\n",{"type":3074,"tag":3420,"props":8181,"children":8183},{"id":8182},"jail-configuration",[8184],{"type":3079,"value":8185},"Jail configuration",{"type":3074,"tag":3081,"props":8187,"children":8188},{},[8189,8191,8197],{"type":3079,"value":8190},"Add a jail entry in ",{"type":3074,"tag":3231,"props":8192,"children":8194},{"className":8193},[],[8195],{"type":3079,"value":8196},"\u002Fetc\u002Ffail2ban\u002Fjail.local",{"type":3079,"value":3626},{"type":3074,"tag":3434,"props":8199,"children":8201},{"className":8148,"code":8200,"language":8150,"meta":3018,"style":3018},"[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",[8202],{"type":3074,"tag":3231,"props":8203,"children":8204},{"__ignoreMap":3018},[8205,8213,8230,8247,8264,8281,8298,8315,8331],{"type":3074,"tag":3444,"props":8206,"children":8207},{"class":3446,"line":3046},[8208],{"type":3074,"tag":3444,"props":8209,"children":8210},{"style":3609},[8211],{"type":3079,"value":8212},"[nuxt-api-shield]\n",{"type":3074,"tag":3444,"props":8214,"children":8215},{"class":3446,"line":3042},[8216,8221,8226],{"type":3074,"tag":3444,"props":8217,"children":8218},{"style":3618},[8219],{"type":3079,"value":8220},"enabled",{"type":3074,"tag":3444,"props":8222,"children":8223},{"style":3609},[8224],{"type":3079,"value":8225},"  =",{"type":3074,"tag":3444,"props":8227,"children":8228},{"style":3603},[8229],{"type":3079,"value":5145},{"type":3074,"tag":3444,"props":8231,"children":8232},{"class":3446,"line":3476},[8233,8238,8243],{"type":3074,"tag":3444,"props":8234,"children":8235},{"style":3618},[8236],{"type":3079,"value":8237},"filter",{"type":3074,"tag":3444,"props":8239,"children":8240},{"style":3609},[8241],{"type":3079,"value":8242},"   =",{"type":3074,"tag":3444,"props":8244,"children":8245},{"style":3603},[8246],{"type":3079,"value":3473},{"type":3074,"tag":3444,"props":8248,"children":8249},{"class":3446,"line":3485},[8250,8255,8259],{"type":3074,"tag":3444,"props":8251,"children":8252},{"style":3618},[8253],{"type":3079,"value":8254},"logpath",{"type":3074,"tag":3444,"props":8256,"children":8257},{"style":3609},[8258],{"type":3079,"value":8225},{"type":3074,"tag":3444,"props":8260,"children":8261},{"style":3603},[8262],{"type":3079,"value":8263}," \u002Fvar\u002Flog\u002Fnuxt-api-shield\u002Fshield-*.log\n",{"type":3074,"tag":3444,"props":8265,"children":8266},{"class":3446,"line":3038},[8267,8271,8276],{"type":3074,"tag":3444,"props":8268,"children":8269},{"style":3618},[8270],{"type":3079,"value":4941},{"type":3074,"tag":3444,"props":8272,"children":8273},{"style":3609},[8274],{"type":3079,"value":8275},"     =",{"type":3074,"tag":3444,"props":8277,"children":8278},{"style":3603},[8279],{"type":3079,"value":8280}," http,https\n",{"type":3074,"tag":3444,"props":8282,"children":8283},{"class":3446,"line":3510},[8284,8289,8293],{"type":3074,"tag":3444,"props":8285,"children":8286},{"style":3618},[8287],{"type":3079,"value":8288},"banaction",{"type":3074,"tag":3444,"props":8290,"children":8291},{"style":3609},[8292],{"type":3079,"value":5557},{"type":3074,"tag":3444,"props":8294,"children":8295},{"style":3603},[8296],{"type":3079,"value":8297}," iptables-multiport\n",{"type":3074,"tag":3444,"props":8299,"children":8300},{"class":3446,"line":3518},[8301,8306,8310],{"type":3074,"tag":3444,"props":8302,"children":8303},{"style":3618},[8304],{"type":3079,"value":8305},"maxretry",{"type":3074,"tag":3444,"props":8307,"children":8308},{"style":3609},[8309],{"type":3079,"value":5557},{"type":3074,"tag":3444,"props":8311,"children":8312},{"style":3603},[8313],{"type":3079,"value":8314}," 1\n",{"type":3074,"tag":3444,"props":8316,"children":8317},{"class":3446,"line":3063},[8318,8323,8327],{"type":3074,"tag":3444,"props":8319,"children":8320},{"style":3618},[8321],{"type":3079,"value":8322},"findtime",{"type":3074,"tag":3444,"props":8324,"children":8325},{"style":3609},[8326],{"type":3079,"value":5557},{"type":3074,"tag":3444,"props":8328,"children":8329},{"style":3603},[8330],{"type":3079,"value":8314},{"type":3074,"tag":3444,"props":8332,"children":8333},{"class":3446,"line":3714},[8334,8339,8343],{"type":3074,"tag":3444,"props":8335,"children":8336},{"style":3618},[8337],{"type":3079,"value":8338},"bantime",{"type":3074,"tag":3444,"props":8340,"children":8341},{"style":3609},[8342],{"type":3079,"value":8225},{"type":3074,"tag":3444,"props":8344,"children":8345},{"style":3603},[8346],{"type":3079,"value":8347}," 3600\n",{"type":3074,"tag":3081,"props":8349,"children":8350},{},[8351,8353,8358,8360,8366,8368,8374,8375,8381,8383,8388],{"type":3079,"value":8352},"Since ",{"type":3074,"tag":3231,"props":8354,"children":8356},{"className":8355},[],[8357],{"type":3079,"value":3015},{"type":3079,"value":8359}," already applies its own ban logic (configurable via ",{"type":3074,"tag":3231,"props":8361,"children":8363},{"className":8362},[],[8364],{"type":3079,"value":8365},"limit.ban",{"type":3079,"value":8367},"), set ",{"type":3074,"tag":3231,"props":8369,"children":8371},{"className":8370},[],[8372],{"type":3079,"value":8373},"maxretry = 1",{"type":3079,"value":3330},{"type":3074,"tag":3231,"props":8376,"children":8378},{"className":8377},[],[8379],{"type":3079,"value":8380},"findtime = 1",{"type":3079,"value":8382}," so fail2ban acts immediately on each ban log entry. Adjust ",{"type":3074,"tag":3231,"props":8384,"children":8386},{"className":8385},[],[8387],{"type":3079,"value":8338},{"type":3079,"value":8389}," to match or extend your module-level ban duration.",{"type":3074,"tag":3081,"props":8391,"children":8392},{},[8393],{"type":3079,"value":8394},"Restart fail2ban after adding the config:",{"type":3074,"tag":3434,"props":8396,"children":8398},{"className":3436,"code":8397,"language":3438,"meta":3018,"style":3018},"sudo systemctl restart fail2ban\n",[8399],{"type":3074,"tag":3231,"props":8400,"children":8401},{"__ignoreMap":3018},[8402],{"type":3074,"tag":3444,"props":8403,"children":8404},{"class":3446,"line":3046},[8405,8410,8415,8420],{"type":3074,"tag":3444,"props":8406,"children":8407},{"style":3459},[8408],{"type":3079,"value":8409},"sudo",{"type":3074,"tag":3444,"props":8411,"children":8412},{"style":3465},[8413],{"type":3079,"value":8414}," systemctl",{"type":3074,"tag":3444,"props":8416,"children":8417},{"style":3465},[8418],{"type":3079,"value":8419}," restart",{"type":3074,"tag":3444,"props":8421,"children":8422},{"style":3465},[8423],{"type":3079,"value":8424}," fail2ban\n",{"type":3074,"tag":8426,"props":8427,"children":8428},"blockquote",{},[8429],{"type":3074,"tag":3081,"props":8430,"children":8431},{},[8432,8437,8439,8444],{"type":3074,"tag":3169,"props":8433,"children":8434},{},[8435],{"type":3079,"value":8436},"Note:",{"type":3079,"value":8438}," The ",{"type":3074,"tag":3231,"props":8440,"children":8442},{"className":8441},[],[8443],{"type":3079,"value":7904},{"type":3079,"value":8445}," directory must be readable by the fail2ban service. Ensure permissions are set accordingly.",{"type":3074,"tag":3157,"props":8447,"children":8449},{"id":8448},"typescript-types",[8450],{"type":3079,"value":8451},"TypeScript Types",{"type":3074,"tag":3081,"props":8453,"children":8454},{},[8455],{"type":3079,"value":8456},"The module exports TypeScript types that you can use in your application:",{"type":3074,"tag":3420,"props":8458,"children":8460},{"id":8459},"ratelimit-type",[8461,8467],{"type":3074,"tag":3231,"props":8462,"children":8464},{"className":8463},[],[8465],{"type":3079,"value":8466},"RateLimit",{"type":3079,"value":8468}," Type",{"type":3074,"tag":3081,"props":8470,"children":8471},{},[8472,8473,8478],{"type":3079,"value":4444},{"type":3074,"tag":3231,"props":8474,"children":8476},{"className":8475},[],[8477],{"type":3079,"value":8466},{"type":3079,"value":8479}," type represents the structure of rate limit data stored for each IP address:",{"type":3074,"tag":3434,"props":8481,"children":8483},{"className":5344,"code":8482,"language":5346,"meta":3018,"style":3018},"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",[8484],{"type":3074,"tag":3231,"props":8485,"children":8486},{"__ignoreMap":3018},[8487,8530,8537,8545,8553,8566,8579],{"type":3074,"tag":3444,"props":8488,"children":8489},{"class":3446,"line":3046},[8490,8494,8498,8502,8506,8510,8514,8518,8522,8526],{"type":3074,"tag":3444,"props":8491,"children":8492},{"style":3586},[8493],{"type":3079,"value":5358},{"type":3074,"tag":3444,"props":8495,"children":8496},{"style":3586},[8497],{"type":3079,"value":6099},{"type":3074,"tag":3444,"props":8499,"children":8500},{"style":3609},[8501],{"type":3079,"value":5363},{"type":3074,"tag":3444,"props":8503,"children":8504},{"style":3603},[8505],{"type":3079,"value":6108},{"type":3074,"tag":3444,"props":8507,"children":8508},{"style":3609},[8509],{"type":3079,"value":5373},{"type":3074,"tag":3444,"props":8511,"children":8512},{"style":3586},[8513],{"type":3079,"value":5378},{"type":3074,"tag":3444,"props":8515,"children":8516},{"style":3609},[8517],{"type":3079,"value":4152},{"type":3074,"tag":3444,"props":8519,"children":8520},{"style":3465},[8521],{"type":3079,"value":3015},{"type":3074,"tag":3444,"props":8523,"children":8524},{"style":3609},[8525],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":8527,"children":8528},{"style":3609},[8529],{"type":3079,"value":3986},{"type":3074,"tag":3444,"props":8531,"children":8532},{"class":3446,"line":3042},[8533],{"type":3074,"tag":3444,"props":8534,"children":8535},{"emptyLinePlaceholder":1200},[8536],{"type":3079,"value":3482},{"type":3074,"tag":3444,"props":8538,"children":8539},{"class":3446,"line":3476},[8540],{"type":3074,"tag":3444,"props":8541,"children":8542},{"style":3450},[8543],{"type":3079,"value":8544},"\u002F\u002F RateLimit structure:\n",{"type":3074,"tag":3444,"props":8546,"children":8547},{"class":3446,"line":3485},[8548],{"type":3074,"tag":3444,"props":8549,"children":8550},{"style":3450},[8551],{"type":3079,"value":8552},"\u002F\u002F {\n",{"type":3074,"tag":3444,"props":8554,"children":8555},{"class":3446,"line":3038},[8556,8561],{"type":3074,"tag":3444,"props":8557,"children":8558},{"style":3450},[8559],{"type":3079,"value":8560},"\u002F\u002F   count: number",{"type":3074,"tag":3444,"props":8562,"children":8563},{"style":3450},[8564],{"type":3079,"value":8565},"  \u002F\u002F Number of requests made\n",{"type":3074,"tag":3444,"props":8567,"children":8568},{"class":3446,"line":3510},[8569,8574],{"type":3074,"tag":3444,"props":8570,"children":8571},{"style":3450},[8572],{"type":3079,"value":8573},"\u002F\u002F   time: number",{"type":3074,"tag":3444,"props":8575,"children":8576},{"style":3450},[8577],{"type":3079,"value":8578},"   \u002F\u002F Timestamp of the last request\n",{"type":3074,"tag":3444,"props":8580,"children":8581},{"class":3446,"line":3518},[8582],{"type":3074,"tag":3444,"props":8583,"children":8584},{"style":3450},[8585],{"type":3079,"value":8586},"\u002F\u002F }\n",{"type":3074,"tag":3081,"props":8588,"children":8589},{},[8590],{"type":3074,"tag":3169,"props":8591,"children":8592},{},[8593],{"type":3079,"value":8594},"Usage Example:",{"type":3074,"tag":3434,"props":8596,"children":8598},{"className":5344,"code":8597,"language":5346,"meta":3018,"style":3018},"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",[8599],{"type":3074,"tag":3231,"props":8600,"children":8601},{"__ignoreMap":3018},[8602,8645,8684,8691,8736,8769,8830,8837,8854,8921,9002],{"type":3074,"tag":3444,"props":8603,"children":8604},{"class":3446,"line":3046},[8605,8609,8613,8617,8621,8625,8629,8633,8637,8641],{"type":3074,"tag":3444,"props":8606,"children":8607},{"style":3586},[8608],{"type":3079,"value":5358},{"type":3074,"tag":3444,"props":8610,"children":8611},{"style":3586},[8612],{"type":3079,"value":6099},{"type":3074,"tag":3444,"props":8614,"children":8615},{"style":3609},[8616],{"type":3079,"value":5363},{"type":3074,"tag":3444,"props":8618,"children":8619},{"style":3603},[8620],{"type":3079,"value":6108},{"type":3074,"tag":3444,"props":8622,"children":8623},{"style":3609},[8624],{"type":3079,"value":5373},{"type":3074,"tag":3444,"props":8626,"children":8627},{"style":3586},[8628],{"type":3079,"value":5378},{"type":3074,"tag":3444,"props":8630,"children":8631},{"style":3609},[8632],{"type":3079,"value":4152},{"type":3074,"tag":3444,"props":8634,"children":8635},{"style":3465},[8636],{"type":3079,"value":3015},{"type":3074,"tag":3444,"props":8638,"children":8639},{"style":3609},[8640],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":8642,"children":8643},{"style":3609},[8644],{"type":3079,"value":3986},{"type":3074,"tag":3444,"props":8646,"children":8647},{"class":3446,"line":3042},[8648,8652,8656,8660,8664,8668,8672,8676,8680],{"type":3074,"tag":3444,"props":8649,"children":8650},{"style":3586},[8651],{"type":3079,"value":5358},{"type":3074,"tag":3444,"props":8653,"children":8654},{"style":3609},[8655],{"type":3079,"value":5363},{"type":3074,"tag":3444,"props":8657,"children":8658},{"style":3603},[8659],{"type":3079,"value":5562},{"type":3074,"tag":3444,"props":8661,"children":8662},{"style":3609},[8663],{"type":3079,"value":5373},{"type":3074,"tag":3444,"props":8665,"children":8666},{"style":3586},[8667],{"type":3079,"value":5378},{"type":3074,"tag":3444,"props":8669,"children":8670},{"style":3609},[8671],{"type":3079,"value":4152},{"type":3074,"tag":3444,"props":8673,"children":8674},{"style":3465},[8675],{"type":3079,"value":5387},{"type":3074,"tag":3444,"props":8677,"children":8678},{"style":3609},[8679],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":8681,"children":8682},{"style":3609},[8683],{"type":3079,"value":3986},{"type":3074,"tag":3444,"props":8685,"children":8686},{"class":3446,"line":3476},[8687],{"type":3074,"tag":3444,"props":8688,"children":8689},{"emptyLinePlaceholder":1200},[8690],{"type":3079,"value":3482},{"type":3074,"tag":3444,"props":8692,"children":8693},{"class":3446,"line":3485},[8694,8698,8703,8708,8712,8716,8720,8724,8728,8732],{"type":3074,"tag":3444,"props":8695,"children":8696},{"style":4631},[8697],{"type":3079,"value":5715},{"type":3074,"tag":3444,"props":8699,"children":8700},{"style":3603},[8701],{"type":3079,"value":8702}," shieldStorage ",{"type":3074,"tag":3444,"props":8704,"children":8705},{"style":3609},[8706],{"type":3079,"value":8707},"=",{"type":3074,"tag":3444,"props":8709,"children":8710},{"style":3597},[8711],{"type":3079,"value":5562},{"type":3074,"tag":3444,"props":8713,"children":8714},{"style":3603},[8715],{"type":3079,"value":3606},{"type":3074,"tag":3444,"props":8717,"children":8718},{"style":3609},[8719],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":8721,"children":8722},{"style":3465},[8723],{"type":3079,"value":4602},{"type":3074,"tag":3444,"props":8725,"children":8726},{"style":3609},[8727],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":8729,"children":8730},{"style":3603},[8731],{"type":3079,"value":3981},{"type":3074,"tag":3444,"props":8733,"children":8734},{"style":3609},[8735],{"type":3079,"value":3986},{"type":3074,"tag":3444,"props":8737,"children":8738},{"class":3446,"line":3038},[8739,8743,8748,8752,8756,8761,8765],{"type":3074,"tag":3444,"props":8740,"children":8741},{"style":4631},[8742],{"type":3079,"value":5715},{"type":3074,"tag":3444,"props":8744,"children":8745},{"style":3603},[8746],{"type":3079,"value":8747}," ipKey ",{"type":3074,"tag":3444,"props":8749,"children":8750},{"style":3609},[8751],{"type":3079,"value":8707},{"type":3074,"tag":3444,"props":8753,"children":8754},{"style":3609},[8755],{"type":3079,"value":4152},{"type":3074,"tag":3444,"props":8757,"children":8758},{"style":3465},[8759],{"type":3079,"value":8760},"ip:192.168.1.1",{"type":3074,"tag":3444,"props":8762,"children":8763},{"style":3609},[8764],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":8766,"children":8767},{"style":3609},[8768],{"type":3079,"value":3986},{"type":3074,"tag":3444,"props":8770,"children":8771},{"class":3446,"line":3510},[8772,8776,8781,8785,8789,8793,8797,8801,8805,8810,8814,8818,8822,8826],{"type":3074,"tag":3444,"props":8773,"children":8774},{"style":4631},[8775],{"type":3079,"value":5715},{"type":3074,"tag":3444,"props":8777,"children":8778},{"style":3603},[8779],{"type":3079,"value":8780}," entry ",{"type":3074,"tag":3444,"props":8782,"children":8783},{"style":3609},[8784],{"type":3079,"value":8707},{"type":3074,"tag":3444,"props":8786,"children":8787},{"style":3603},[8788],{"type":3079,"value":5710},{"type":3074,"tag":3444,"props":8790,"children":8791},{"style":3586},[8792],{"type":3079,"value":6839},{"type":3074,"tag":3444,"props":8794,"children":8795},{"style":3603},[8796],{"type":3079,"value":5552},{"type":3074,"tag":3444,"props":8798,"children":8799},{"style":3609},[8800],{"type":3079,"value":4573},{"type":3074,"tag":3444,"props":8802,"children":8803},{"style":3597},[8804],{"type":3079,"value":5772},{"type":3074,"tag":3444,"props":8806,"children":8807},{"style":3603},[8808],{"type":3079,"value":8809},"(ipKey)) ",{"type":3074,"tag":3444,"props":8811,"children":8812},{"style":3586},[8813],{"type":3079,"value":6868},{"type":3074,"tag":3444,"props":8815,"children":8816},{"style":3459},[8817],{"type":3079,"value":6108},{"type":3074,"tag":3444,"props":8819,"children":8820},{"style":3609},[8821],{"type":3079,"value":6877},{"type":3074,"tag":3444,"props":8823,"children":8824},{"style":3459},[8825],{"type":3079,"value":6882},{"type":3074,"tag":3444,"props":8827,"children":8828},{"style":3609},[8829],{"type":3079,"value":3986},{"type":3074,"tag":3444,"props":8831,"children":8832},{"class":3446,"line":3518},[8833],{"type":3074,"tag":3444,"props":8834,"children":8835},{"emptyLinePlaceholder":1200},[8836],{"type":3079,"value":3482},{"type":3074,"tag":3444,"props":8838,"children":8839},{"class":3446,"line":3063},[8840,8845,8850],{"type":3074,"tag":3444,"props":8841,"children":8842},{"style":3586},[8843],{"type":3079,"value":8844},"if",{"type":3074,"tag":3444,"props":8846,"children":8847},{"style":3603},[8848],{"type":3079,"value":8849}," (entry) ",{"type":3074,"tag":3444,"props":8851,"children":8852},{"style":3609},[8853],{"type":3079,"value":3612},{"type":3074,"tag":3444,"props":8855,"children":8856},{"class":3446,"line":3714},[8857,8862,8866,8870,8874,8878,8883,8887,8891,8895,8900,8904,8909,8913,8917],{"type":3074,"tag":3444,"props":8858,"children":8859},{"style":3603},[8860],{"type":3079,"value":8861},"  console",{"type":3074,"tag":3444,"props":8863,"children":8864},{"style":3609},[8865],{"type":3079,"value":4573},{"type":3074,"tag":3444,"props":8867,"children":8868},{"style":3597},[8869],{"type":3079,"value":5905},{"type":3074,"tag":3444,"props":8871,"children":8872},{"style":3618},[8873],{"type":3079,"value":3606},{"type":3074,"tag":3444,"props":8875,"children":8876},{"style":3609},[8877],{"type":3079,"value":5914},{"type":3074,"tag":3444,"props":8879,"children":8880},{"style":3465},[8881],{"type":3079,"value":8882},"IP has made ",{"type":3074,"tag":3444,"props":8884,"children":8885},{"style":3609},[8886],{"type":3079,"value":5924},{"type":3074,"tag":3444,"props":8888,"children":8889},{"style":3603},[8890],{"type":3079,"value":6919},{"type":3074,"tag":3444,"props":8892,"children":8893},{"style":3609},[8894],{"type":3079,"value":4573},{"type":3074,"tag":3444,"props":8896,"children":8897},{"style":3603},[8898],{"type":3079,"value":8899},"count",{"type":3074,"tag":3444,"props":8901,"children":8902},{"style":3609},[8903],{"type":3079,"value":3976},{"type":3074,"tag":3444,"props":8905,"children":8906},{"style":3465},[8907],{"type":3079,"value":8908}," requests",{"type":3074,"tag":3444,"props":8910,"children":8911},{"style":3609},[8912],{"type":3079,"value":5914},{"type":3074,"tag":3444,"props":8914,"children":8915},{"style":3618},[8916],{"type":3079,"value":3981},{"type":3074,"tag":3444,"props":8918,"children":8919},{"style":3609},[8920],{"type":3079,"value":3986},{"type":3074,"tag":3444,"props":8922,"children":8923},{"class":3446,"line":3723},[8924,8928,8932,8936,8940,8944,8949,8953,8958,8962,8967,8971,8976,8980,8985,8989,8994,8998],{"type":3074,"tag":3444,"props":8925,"children":8926},{"style":3603},[8927],{"type":3079,"value":8861},{"type":3074,"tag":3444,"props":8929,"children":8930},{"style":3609},[8931],{"type":3079,"value":4573},{"type":3074,"tag":3444,"props":8933,"children":8934},{"style":3597},[8935],{"type":3079,"value":5905},{"type":3074,"tag":3444,"props":8937,"children":8938},{"style":3618},[8939],{"type":3079,"value":3606},{"type":3074,"tag":3444,"props":8941,"children":8942},{"style":3609},[8943],{"type":3079,"value":5914},{"type":3074,"tag":3444,"props":8945,"children":8946},{"style":3465},[8947],{"type":3079,"value":8948},"Last request at: ",{"type":3074,"tag":3444,"props":8950,"children":8951},{"style":3609},[8952],{"type":3079,"value":5924},{"type":3074,"tag":3444,"props":8954,"children":8955},{"style":3609},[8956],{"type":3079,"value":8957},"new",{"type":3074,"tag":3444,"props":8959,"children":8960},{"style":3597},[8961],{"type":3079,"value":6732},{"type":3074,"tag":3444,"props":8963,"children":8964},{"style":3603},[8965],{"type":3079,"value":8966},"(entry",{"type":3074,"tag":3444,"props":8968,"children":8969},{"style":3609},[8970],{"type":3079,"value":4573},{"type":3074,"tag":3444,"props":8972,"children":8973},{"style":3603},[8974],{"type":3079,"value":8975},"time)",{"type":3074,"tag":3444,"props":8977,"children":8978},{"style":3609},[8979],{"type":3079,"value":4573},{"type":3074,"tag":3444,"props":8981,"children":8982},{"style":3597},[8983],{"type":3079,"value":8984},"toISOString",{"type":3074,"tag":3444,"props":8986,"children":8987},{"style":3603},[8988],{"type":3079,"value":5535},{"type":3074,"tag":3444,"props":8990,"children":8991},{"style":3609},[8992],{"type":3079,"value":8993},"}`",{"type":3074,"tag":3444,"props":8995,"children":8996},{"style":3618},[8997],{"type":3079,"value":3981},{"type":3074,"tag":3444,"props":8999,"children":9000},{"style":3609},[9001],{"type":3079,"value":3986},{"type":3074,"tag":3444,"props":9003,"children":9004},{"class":3446,"line":3732},[9005],{"type":3074,"tag":3444,"props":9006,"children":9007},{"style":3609},[9008],{"type":3079,"value":4425},{"type":3074,"tag":3420,"props":9010,"children":9012},{"id":9011},"moduleoptions-type",[9013,9019],{"type":3074,"tag":3231,"props":9014,"children":9016},{"className":9015},[],[9017],{"type":3079,"value":9018},"ModuleOptions",{"type":3079,"value":8468},{"type":3074,"tag":3081,"props":9021,"children":9022},{},[9023],{"type":3079,"value":9024},"You can also import the module configuration type:",{"type":3074,"tag":3434,"props":9026,"children":9028},{"className":5344,"code":9027,"language":5346,"meta":3018,"style":3018},"import type { ModuleOptions } from \"nuxt-api-shield\";\n",[9029],{"type":3074,"tag":3231,"props":9030,"children":9031},{"__ignoreMap":3018},[9032],{"type":3074,"tag":3444,"props":9033,"children":9034},{"class":3446,"line":3046},[9035,9039,9043,9047,9052,9056,9060,9064,9068,9072],{"type":3074,"tag":3444,"props":9036,"children":9037},{"style":3586},[9038],{"type":3079,"value":5358},{"type":3074,"tag":3444,"props":9040,"children":9041},{"style":3586},[9042],{"type":3079,"value":6099},{"type":3074,"tag":3444,"props":9044,"children":9045},{"style":3609},[9046],{"type":3079,"value":5363},{"type":3074,"tag":3444,"props":9048,"children":9049},{"style":3603},[9050],{"type":3079,"value":9051}," ModuleOptions",{"type":3074,"tag":3444,"props":9053,"children":9054},{"style":3609},[9055],{"type":3079,"value":5373},{"type":3074,"tag":3444,"props":9057,"children":9058},{"style":3586},[9059],{"type":3079,"value":5378},{"type":3074,"tag":3444,"props":9061,"children":9062},{"style":3609},[9063],{"type":3079,"value":4152},{"type":3074,"tag":3444,"props":9065,"children":9066},{"style":3465},[9067],{"type":3079,"value":3015},{"type":3074,"tag":3444,"props":9069,"children":9070},{"style":3609},[9071],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":9073,"children":9074},{"style":3609},[9075],{"type":3079,"value":3986},{"type":3074,"tag":3157,"props":9077,"children":9079},{"id":9078},"per-route-rate-limiting",[9080],{"type":3079,"value":9081},"Per-Route Rate Limiting",{"type":3074,"tag":3081,"props":9083,"children":9084},{},[9085,9090,9092,9097],{"type":3074,"tag":3231,"props":9086,"children":9088},{"className":9087},[],[9089],{"type":3079,"value":3015},{"type":3079,"value":9091}," supports ",{"type":3074,"tag":3169,"props":9093,"children":9094},{},[9095],{"type":3079,"value":9096},"per-route rate limiting",{"type":3079,"value":9098},", allowing you to define custom limits for specific API endpoints while keeping a global default configuration for all other routes.",{"type":3074,"tag":3081,"props":9100,"children":9101},{},[9102,9104,9110,9111,9117,9119,9125],{"type":3079,"value":9103},"This is useful when certain endpoints (such as ",{"type":3074,"tag":3231,"props":9105,"children":9107},{"className":9106},[],[9108],{"type":3079,"value":9109},"\u002Fapi\u002Flogin",{"type":3079,"value":3396},{"type":3074,"tag":3231,"props":9112,"children":9114},{"className":9113},[],[9115],{"type":3079,"value":9116},"\u002Fapi\u002Fauth",{"type":3079,"value":9118},", or ",{"type":3074,"tag":3231,"props":9120,"children":9122},{"className":9121},[],[9123],{"type":3079,"value":9124},"\u002Fapi\u002Fpayment",{"type":3079,"value":9126},") require stricter protection.",{"type":3074,"tag":9128,"props":9129,"children":9130},"hr",{},[],{"type":3074,"tag":3420,"props":9132,"children":9134},{"id":9133},"configuration-example",[9135],{"type":3079,"value":9136},"Configuration Example",{"type":3074,"tag":3081,"props":9138,"children":9139},{},[9140,9141,9147],{"type":3079,"value":4444},{"type":3074,"tag":3231,"props":9142,"children":9144},{"className":9143},[],[9145],{"type":3079,"value":9146},"routes",{"type":3079,"value":9148}," option accepts a mixed array of strings (exact matches) and objects (custom limits or patterns).",{"type":3074,"tag":3434,"props":9150,"children":9152},{"className":5344,"code":9151,"language":5346,"meta":3018,"style":3018},"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",[9153],{"type":3074,"tag":3231,"props":9154,"children":9155},{"__ignoreMap":3018},[9156,9179,9214,9221,9236,9252,9272,9292,9312,9319,9326,9343,9351,9371,9378,9386,9394,9423,9444,9465,9473,9481,9488,9496,9503,9531,9551,9570,9586,9593,9605,9612],{"type":3074,"tag":3444,"props":9157,"children":9158},{"class":3446,"line":3046},[9159,9163,9167,9171,9175],{"type":3074,"tag":3444,"props":9160,"children":9161},{"style":3586},[9162],{"type":3079,"value":3589},{"type":3074,"tag":3444,"props":9164,"children":9165},{"style":3586},[9166],{"type":3079,"value":3594},{"type":3074,"tag":3444,"props":9168,"children":9169},{"style":3597},[9170],{"type":3079,"value":3600},{"type":3074,"tag":3444,"props":9172,"children":9173},{"style":3603},[9174],{"type":3079,"value":3606},{"type":3074,"tag":3444,"props":9176,"children":9177},{"style":3609},[9178],{"type":3079,"value":3612},{"type":3074,"tag":3444,"props":9180,"children":9181},{"class":3446,"line":3042},[9182,9186,9190,9194,9198,9202,9206,9210],{"type":3074,"tag":3444,"props":9183,"children":9184},{"style":3618},[9185],{"type":3079,"value":3621},{"type":3074,"tag":3444,"props":9187,"children":9188},{"style":3609},[9189],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":9191,"children":9192},{"style":3603},[9193],{"type":3079,"value":3631},{"type":3074,"tag":3444,"props":9195,"children":9196},{"style":3609},[9197],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":9199,"children":9200},{"style":3465},[9201],{"type":3079,"value":3015},{"type":3074,"tag":3444,"props":9203,"children":9204},{"style":3609},[9205],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":9207,"children":9208},{"style":3603},[9209],{"type":3079,"value":3649},{"type":3074,"tag":3444,"props":9211,"children":9212},{"style":3609},[9213],{"type":3079,"value":3654},{"type":3074,"tag":3444,"props":9215,"children":9216},{"class":3446,"line":3476},[9217],{"type":3074,"tag":3444,"props":9218,"children":9219},{"emptyLinePlaceholder":1200},[9220],{"type":3079,"value":3482},{"type":3074,"tag":3444,"props":9222,"children":9223},{"class":3446,"line":3485},[9224,9228,9232],{"type":3074,"tag":3444,"props":9225,"children":9226},{"style":3618},[9227],{"type":3079,"value":3662},{"type":3074,"tag":3444,"props":9229,"children":9230},{"style":3609},[9231],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":9233,"children":9234},{"style":3609},[9235],{"type":3079,"value":3671},{"type":3074,"tag":3444,"props":9237,"children":9238},{"class":3446,"line":3038},[9239,9244,9248],{"type":3074,"tag":3444,"props":9240,"children":9241},{"style":3618},[9242],{"type":3079,"value":9243},"    limit",{"type":3074,"tag":3444,"props":9245,"children":9246},{"style":3609},[9247],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":9249,"children":9250},{"style":3609},[9251],{"type":3079,"value":3671},{"type":3074,"tag":3444,"props":9253,"children":9254},{"class":3446,"line":3510},[9255,9260,9264,9268],{"type":3074,"tag":3444,"props":9256,"children":9257},{"style":3618},[9258],{"type":3079,"value":9259},"      max",{"type":3074,"tag":3444,"props":9261,"children":9262},{"style":3609},[9263],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":9265,"children":9266},{"style":3884},[9267],{"type":3079,"value":4051},{"type":3074,"tag":3444,"props":9269,"children":9270},{"style":3609},[9271],{"type":3079,"value":3654},{"type":3074,"tag":3444,"props":9273,"children":9274},{"class":3446,"line":3518},[9275,9280,9284,9288],{"type":3074,"tag":3444,"props":9276,"children":9277},{"style":3618},[9278],{"type":3079,"value":9279},"      duration",{"type":3074,"tag":3444,"props":9281,"children":9282},{"style":3609},[9283],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":9285,"children":9286},{"style":3884},[9287],{"type":3079,"value":4072},{"type":3074,"tag":3444,"props":9289,"children":9290},{"style":3609},[9291],{"type":3079,"value":3654},{"type":3074,"tag":3444,"props":9293,"children":9294},{"class":3446,"line":3063},[9295,9300,9304,9308],{"type":3074,"tag":3444,"props":9296,"children":9297},{"style":3618},[9298],{"type":3079,"value":9299},"      ban",{"type":3074,"tag":3444,"props":9301,"children":9302},{"style":3609},[9303],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":9305,"children":9306},{"style":3884},[9307],{"type":3079,"value":4098},{"type":3074,"tag":3444,"props":9309,"children":9310},{"style":3609},[9311],{"type":3079,"value":3654},{"type":3074,"tag":3444,"props":9313,"children":9314},{"class":3446,"line":3714},[9315],{"type":3074,"tag":3444,"props":9316,"children":9317},{"style":3609},[9318],{"type":3079,"value":3720},{"type":3074,"tag":3444,"props":9320,"children":9321},{"class":3446,"line":3723},[9322],{"type":3074,"tag":3444,"props":9323,"children":9324},{"emptyLinePlaceholder":1200},[9325],{"type":3079,"value":3482},{"type":3074,"tag":3444,"props":9327,"children":9328},{"class":3446,"line":3732},[9329,9334,9338],{"type":3074,"tag":3444,"props":9330,"children":9331},{"style":3618},[9332],{"type":3079,"value":9333},"    routes",{"type":3074,"tag":3444,"props":9335,"children":9336},{"style":3609},[9337],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":9339,"children":9340},{"style":3603},[9341],{"type":3079,"value":9342}," [\n",{"type":3074,"tag":3444,"props":9344,"children":9345},{"class":3446,"line":3741},[9346],{"type":3074,"tag":3444,"props":9347,"children":9348},{"style":3450},[9349],{"type":3079,"value":9350},"      \u002F\u002F 1. String: uses the global default limit (exact match)\n",{"type":3074,"tag":3444,"props":9352,"children":9353},{"class":3446,"line":3750},[9354,9358,9363,9367],{"type":3074,"tag":3444,"props":9355,"children":9356},{"style":3609},[9357],{"type":3079,"value":4679},{"type":3074,"tag":3444,"props":9359,"children":9360},{"style":3465},[9361],{"type":3079,"value":9362},"\u002Fapi\u002Fexample",{"type":3074,"tag":3444,"props":9364,"children":9365},{"style":3609},[9366],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":9368,"children":9369},{"style":3609},[9370],{"type":3079,"value":3654},{"type":3074,"tag":3444,"props":9372,"children":9373},{"class":3446,"line":3759},[9374],{"type":3074,"tag":3444,"props":9375,"children":9376},{"emptyLinePlaceholder":1200},[9377],{"type":3079,"value":3482},{"type":3074,"tag":3444,"props":9379,"children":9380},{"class":3446,"line":3768},[9381],{"type":3074,"tag":3444,"props":9382,"children":9383},{"style":3450},[9384],{"type":3079,"value":9385},"      \u002F\u002F 2. Object: custom rate limit for a specific route (exact match)\n",{"type":3074,"tag":3444,"props":9387,"children":9388},{"class":3446,"line":3777},[9389],{"type":3074,"tag":3444,"props":9390,"children":9391},{"style":3609},[9392],{"type":3079,"value":9393},"      {\n",{"type":3074,"tag":3444,"props":9395,"children":9396},{"class":3446,"line":3786},[9397,9402,9406,9410,9415,9419],{"type":3074,"tag":3444,"props":9398,"children":9399},{"style":3618},[9400],{"type":3079,"value":9401},"        path",{"type":3074,"tag":3444,"props":9403,"children":9404},{"style":3609},[9405],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":9407,"children":9408},{"style":3609},[9409],{"type":3079,"value":4152},{"type":3074,"tag":3444,"props":9411,"children":9412},{"style":3465},[9413],{"type":3079,"value":9414},"\u002Fapi\u002Fexample-per-route",{"type":3074,"tag":3444,"props":9416,"children":9417},{"style":3609},[9418],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":9420,"children":9421},{"style":3609},[9422],{"type":3079,"value":3654},{"type":3074,"tag":3444,"props":9424,"children":9425},{"class":3446,"line":3794},[9426,9431,9435,9440],{"type":3074,"tag":3444,"props":9427,"children":9428},{"style":3618},[9429],{"type":3079,"value":9430},"        max",{"type":3074,"tag":3444,"props":9432,"children":9433},{"style":3609},[9434],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":9436,"children":9437},{"style":3884},[9438],{"type":3079,"value":9439}," 5",{"type":3074,"tag":3444,"props":9441,"children":9442},{"style":3609},[9443],{"type":3079,"value":3654},{"type":3074,"tag":3444,"props":9445,"children":9446},{"class":3446,"line":3803},[9447,9452,9456,9461],{"type":3074,"tag":3444,"props":9448,"children":9449},{"style":3618},[9450],{"type":3079,"value":9451},"        duration",{"type":3074,"tag":3444,"props":9453,"children":9454},{"style":3609},[9455],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":9457,"children":9458},{"style":3884},[9459],{"type":3079,"value":9460}," 10",{"type":3074,"tag":3444,"props":9462,"children":9463},{"style":3609},[9464],{"type":3079,"value":3654},{"type":3074,"tag":3444,"props":9466,"children":9467},{"class":3446,"line":3812},[9468],{"type":3074,"tag":3444,"props":9469,"children":9470},{"style":3450},[9471],{"type":3079,"value":9472},"        \u002F\u002F \"ban\" can also be overridden per route\n",{"type":3074,"tag":3444,"props":9474,"children":9475},{"class":3446,"line":3826},[9476],{"type":3074,"tag":3444,"props":9477,"children":9478},{"style":3609},[9479],{"type":3079,"value":9480},"      },\n",{"type":3074,"tag":3444,"props":9482,"children":9483},{"class":3446,"line":3854},[9484],{"type":3074,"tag":3444,"props":9485,"children":9486},{"emptyLinePlaceholder":1200},[9487],{"type":3079,"value":3482},{"type":3074,"tag":3444,"props":9489,"children":9490},{"class":3446,"line":3862},[9491],{"type":3074,"tag":3444,"props":9492,"children":9493},{"style":3450},[9494],{"type":3079,"value":9495},"      \u002F\u002F 3. Object: Wildcard pattern\n",{"type":3074,"tag":3444,"props":9497,"children":9498},{"class":3446,"line":3871},[9499],{"type":3074,"tag":3444,"props":9500,"children":9501},{"style":3609},[9502],{"type":3079,"value":9393},{"type":3074,"tag":3444,"props":9504,"children":9505},{"class":3446,"line":3899},[9506,9510,9514,9518,9523,9527],{"type":3074,"tag":3444,"props":9507,"children":9508},{"style":3618},[9509],{"type":3079,"value":9401},{"type":3074,"tag":3444,"props":9511,"children":9512},{"style":3609},[9513],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":9515,"children":9516},{"style":3609},[9517],{"type":3079,"value":4152},{"type":3074,"tag":3444,"props":9519,"children":9520},{"style":3465},[9521],{"type":3079,"value":9522},"\u002Fapi\u002Fusers\u002F*\u002Fprofile",{"type":3074,"tag":3444,"props":9524,"children":9525},{"style":3609},[9526],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":9528,"children":9529},{"style":3609},[9530],{"type":3079,"value":3654},{"type":3074,"tag":3444,"props":9532,"children":9533},{"class":3446,"line":3916},[9534,9539,9543,9547],{"type":3074,"tag":3444,"props":9535,"children":9536},{"style":3618},[9537],{"type":3079,"value":9538},"        pattern",{"type":3074,"tag":3444,"props":9540,"children":9541},{"style":3609},[9542],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":9544,"children":9545},{"style":3938},[9546],{"type":3079,"value":4131},{"type":3074,"tag":3444,"props":9548,"children":9549},{"style":3609},[9550],{"type":3079,"value":3654},{"type":3074,"tag":3444,"props":9552,"children":9553},{"class":3446,"line":3925},[9554,9558,9562,9566],{"type":3074,"tag":3444,"props":9555,"children":9556},{"style":3618},[9557],{"type":3079,"value":9430},{"type":3074,"tag":3444,"props":9559,"children":9560},{"style":3609},[9561],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":9563,"children":9564},{"style":3884},[9565],{"type":3079,"value":9460},{"type":3074,"tag":3444,"props":9567,"children":9568},{"style":3609},[9569],{"type":3079,"value":3654},{"type":3074,"tag":3444,"props":9571,"children":9572},{"class":3446,"line":3953},[9573,9577,9581],{"type":3074,"tag":3444,"props":9574,"children":9575},{"style":3618},[9576],{"type":3079,"value":9451},{"type":3074,"tag":3444,"props":9578,"children":9579},{"style":3609},[9580],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":9582,"children":9583},{"style":3884},[9584],{"type":3079,"value":9585}," 60\n",{"type":3074,"tag":3444,"props":9587,"children":9588},{"class":3446,"line":3961},[9589],{"type":3074,"tag":3444,"props":9590,"children":9591},{"style":3609},[9592],{"type":3079,"value":4746},{"type":3074,"tag":3444,"props":9594,"children":9595},{"class":3446,"line":3970},[9596,9601],{"type":3074,"tag":3444,"props":9597,"children":9598},{"style":3603},[9599],{"type":3079,"value":9600},"    ]",{"type":3074,"tag":3444,"props":9602,"children":9603},{"style":3609},[9604],{"type":3079,"value":3654},{"type":3074,"tag":3444,"props":9606,"children":9607},{"class":3446,"line":6896},[9608],{"type":3074,"tag":3444,"props":9609,"children":9610},{"style":3609},[9611],{"type":3079,"value":3967},{"type":3074,"tag":3444,"props":9613,"children":9614},{"class":3446,"line":6905},[9615,9619,9623],{"type":3074,"tag":3444,"props":9616,"children":9617},{"style":3609},[9618],{"type":3079,"value":3976},{"type":3074,"tag":3444,"props":9620,"children":9621},{"style":3603},[9622],{"type":3079,"value":3981},{"type":3074,"tag":3444,"props":9624,"children":9625},{"style":3609},[9626],{"type":3079,"value":3986},{"type":3074,"tag":3420,"props":9628,"children":9630},{"id":9629},"wildcard-route-support",[9631],{"type":3079,"value":9632},"Wildcard Route Support",{"type":3074,"tag":3081,"props":9634,"children":9635},{},[9636,9638,9644],{"type":3079,"value":9637},"Wildcard patterns allow you to apply the same limits to groups of related API endpoints. Enable them by setting ",{"type":3074,"tag":3231,"props":9639,"children":9641},{"className":9640},[],[9642],{"type":3079,"value":9643},"pattern: true",{"type":3079,"value":9645}," in your route configuration.",{"type":3074,"tag":5310,"props":9647,"children":9649},{"id":9648},"wildcard-pattern-syntax",[9650],{"type":3079,"value":9651},"Wildcard Pattern Syntax",{"type":3074,"tag":3131,"props":9653,"children":9654},{},[9655,9699],{"type":3074,"tag":3135,"props":9656,"children":9657},{},[9658,9670,9672],{"type":3074,"tag":3169,"props":9659,"children":9660},{},[9661,9663,9669],{"type":3079,"value":9662},"Single-Segment Wildcard (",{"type":3074,"tag":3231,"props":9664,"children":9666},{"className":9665},[],[9667],{"type":3079,"value":9668},"*",{"type":3079,"value":3981},{"type":3079,"value":9671},": Matches exactly one path segment.\n",{"type":3074,"tag":3131,"props":9673,"children":9674},{},[9675],{"type":3074,"tag":3135,"props":9676,"children":9677},{},[9678,9683,9685,9691,9692,9698],{"type":3074,"tag":3231,"props":9679,"children":9681},{"className":9680},[],[9682],{"type":3079,"value":9522},{"type":3079,"value":9684}," matches ",{"type":3074,"tag":3231,"props":9686,"children":9688},{"className":9687},[],[9689],{"type":3079,"value":9690},"\u002Fapi\u002Fusers\u002F123\u002Fprofile",{"type":3079,"value":7365},{"type":3074,"tag":3231,"props":9693,"children":9695},{"className":9694},[],[9696],{"type":3079,"value":9697},"\u002Fapi\u002Fusers\u002Fadmin\u002Fprofile",{"type":3079,"value":4573},{"type":3074,"tag":3135,"props":9700,"children":9701},{},[9702,9714,9716],{"type":3074,"tag":3169,"props":9703,"children":9704},{},[9705,9707,9713],{"type":3079,"value":9706},"Multi-Segment Wildcard (",{"type":3074,"tag":3231,"props":9708,"children":9710},{"className":9709},[],[9711],{"type":3079,"value":9712},"**",{"type":3079,"value":3981},{"type":3079,"value":9715},": Matches zero or more path segments.\n",{"type":3074,"tag":3131,"props":9717,"children":9718},{},[9719],{"type":3074,"tag":3135,"props":9720,"children":9721},{},[9722,9728,9729,9735,9736,9742],{"type":3074,"tag":3231,"props":9723,"children":9725},{"className":9724},[],[9726],{"type":3079,"value":9727},"\u002Fapi\u002Freports\u002F**\u002Fsummary",{"type":3079,"value":9684},{"type":3074,"tag":3231,"props":9730,"children":9732},{"className":9731},[],[9733],{"type":3079,"value":9734},"\u002Fapi\u002Freports\u002Fmonthly\u002F2023\u002Fsummary",{"type":3079,"value":7365},{"type":3074,"tag":3231,"props":9737,"children":9739},{"className":9738},[],[9740],{"type":3079,"value":9741},"\u002Fapi\u002Freports\u002Fsummary",{"type":3079,"value":4573},{"type":3074,"tag":5310,"props":9744,"children":9746},{"id":9745},"pattern-precedence",[9747],{"type":3079,"value":9748},"Pattern Precedence",{"type":3074,"tag":9750,"props":9751,"children":9752},"ol",{},[9753,9763,9773],{"type":3074,"tag":3135,"props":9754,"children":9755},{},[9756,9761],{"type":3074,"tag":3169,"props":9757,"children":9758},{},[9759],{"type":3079,"value":9760},"Exact matches",{"type":3079,"value":9762}," always take precedence over wildcard patterns.",{"type":3074,"tag":3135,"props":9764,"children":9765},{},[9766,9771],{"type":3074,"tag":3169,"props":9767,"children":9768},{},[9769],{"type":3079,"value":9770},"More specific wildcards",{"type":3079,"value":9772}," take precedence over less specific ones.",{"type":3074,"tag":3135,"props":9774,"children":9775},{},[9776],{"type":3079,"value":9777},"When multiple wildcard patterns match, the most specific one is used.",{"type":3074,"tag":5310,"props":9779,"children":9781},{"id":9780},"important-notes",[9782],{"type":3079,"value":9783},"Important Notes",{"type":3074,"tag":3131,"props":9785,"children":9786},{},[9787,9797],{"type":3074,"tag":3135,"props":9788,"children":9789},{},[9790,9795],{"type":3074,"tag":3169,"props":9791,"children":9792},{},[9793],{"type":3079,"value":9794},"Shared Rate Limits:",{"type":3079,"value":9796}," All requests that match the same wildcard pattern share the same rate limit counter.",{"type":3074,"tag":3135,"props":9798,"children":9799},{},[9800,9805,9807,9813,9814,9820],{"type":3074,"tag":3169,"props":9801,"children":9802},{},[9803],{"type":3079,"value":9804},"Security:",{"type":3079,"value":9806}," Broad or dangerous patterns like ",{"type":3074,"tag":3231,"props":9808,"children":9810},{"className":9809},[],[9811],{"type":3079,"value":9812},"\u002F**",{"type":3079,"value":7365},{"type":3074,"tag":3231,"props":9815,"children":9817},{"className":9816},[],[9818],{"type":3079,"value":9819},"\u002F*",{"type":3079,"value":9821}," are automatically rejected to prevent accidental global blocking.",{"type":3074,"tag":3157,"props":9823,"children":9825},{"id":9824},"skipping-routes",[9826],{"type":3079,"value":9827},"Skipping Routes",{"type":3074,"tag":3081,"props":9829,"children":9830},{},[9831,9832,9838,9840,9845],{"type":3079,"value":4444},{"type":3074,"tag":3231,"props":9833,"children":9835},{"className":9834},[],[9836],{"type":3079,"value":9837},"skipRoutes",{"type":3079,"value":9839}," 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":3074,"tag":3231,"props":9841,"children":9843},{"className":9842},[],[9844],{"type":3079,"value":9146},{"type":3079,"value":9846}," array.",{"type":3074,"tag":3081,"props":9848,"children":9849},{},[9850],{"type":3079,"value":9851},"This is useful for health checks, webhook endpoints, monitoring probes, or internal status routes that should always respond regardless of traffic.",{"type":3074,"tag":3420,"props":9853,"children":9855},{"id":9854},"configuration-example-1",[9856],{"type":3079,"value":9136},{"type":3074,"tag":3434,"props":9858,"children":9860},{"className":5344,"code":9859,"language":5346,"meta":3018,"style":3018},"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",[9861],{"type":3074,"tag":3231,"props":9862,"children":9863},{"__ignoreMap":3018},[9864,9887,9922,9929,9944,9959,9978,9997,10016,10023,10030,10045,10070,10095,10120,10131,10138],{"type":3074,"tag":3444,"props":9865,"children":9866},{"class":3446,"line":3046},[9867,9871,9875,9879,9883],{"type":3074,"tag":3444,"props":9868,"children":9869},{"style":3586},[9870],{"type":3079,"value":3589},{"type":3074,"tag":3444,"props":9872,"children":9873},{"style":3586},[9874],{"type":3079,"value":3594},{"type":3074,"tag":3444,"props":9876,"children":9877},{"style":3597},[9878],{"type":3079,"value":3600},{"type":3074,"tag":3444,"props":9880,"children":9881},{"style":3603},[9882],{"type":3079,"value":3606},{"type":3074,"tag":3444,"props":9884,"children":9885},{"style":3609},[9886],{"type":3079,"value":3612},{"type":3074,"tag":3444,"props":9888,"children":9889},{"class":3446,"line":3042},[9890,9894,9898,9902,9906,9910,9914,9918],{"type":3074,"tag":3444,"props":9891,"children":9892},{"style":3618},[9893],{"type":3079,"value":3621},{"type":3074,"tag":3444,"props":9895,"children":9896},{"style":3609},[9897],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":9899,"children":9900},{"style":3603},[9901],{"type":3079,"value":3631},{"type":3074,"tag":3444,"props":9903,"children":9904},{"style":3609},[9905],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":9907,"children":9908},{"style":3465},[9909],{"type":3079,"value":3015},{"type":3074,"tag":3444,"props":9911,"children":9912},{"style":3609},[9913],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":9915,"children":9916},{"style":3603},[9917],{"type":3079,"value":3649},{"type":3074,"tag":3444,"props":9919,"children":9920},{"style":3609},[9921],{"type":3079,"value":3654},{"type":3074,"tag":3444,"props":9923,"children":9924},{"class":3446,"line":3476},[9925],{"type":3074,"tag":3444,"props":9926,"children":9927},{"emptyLinePlaceholder":1200},[9928],{"type":3079,"value":3482},{"type":3074,"tag":3444,"props":9930,"children":9931},{"class":3446,"line":3485},[9932,9936,9940],{"type":3074,"tag":3444,"props":9933,"children":9934},{"style":3618},[9935],{"type":3079,"value":3662},{"type":3074,"tag":3444,"props":9937,"children":9938},{"style":3609},[9939],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":9941,"children":9942},{"style":3609},[9943],{"type":3079,"value":3671},{"type":3074,"tag":3444,"props":9945,"children":9946},{"class":3446,"line":3038},[9947,9951,9955],{"type":3074,"tag":3444,"props":9948,"children":9949},{"style":3618},[9950],{"type":3079,"value":9243},{"type":3074,"tag":3444,"props":9952,"children":9953},{"style":3609},[9954],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":9956,"children":9957},{"style":3609},[9958],{"type":3079,"value":3671},{"type":3074,"tag":3444,"props":9960,"children":9961},{"class":3446,"line":3510},[9962,9966,9970,9974],{"type":3074,"tag":3444,"props":9963,"children":9964},{"style":3618},[9965],{"type":3079,"value":9259},{"type":3074,"tag":3444,"props":9967,"children":9968},{"style":3609},[9969],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":9971,"children":9972},{"style":3884},[9973],{"type":3079,"value":4051},{"type":3074,"tag":3444,"props":9975,"children":9976},{"style":3609},[9977],{"type":3079,"value":3654},{"type":3074,"tag":3444,"props":9979,"children":9980},{"class":3446,"line":3518},[9981,9985,9989,9993],{"type":3074,"tag":3444,"props":9982,"children":9983},{"style":3618},[9984],{"type":3079,"value":9279},{"type":3074,"tag":3444,"props":9986,"children":9987},{"style":3609},[9988],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":9990,"children":9991},{"style":3884},[9992],{"type":3079,"value":4072},{"type":3074,"tag":3444,"props":9994,"children":9995},{"style":3609},[9996],{"type":3079,"value":3654},{"type":3074,"tag":3444,"props":9998,"children":9999},{"class":3446,"line":3063},[10000,10004,10008,10012],{"type":3074,"tag":3444,"props":10001,"children":10002},{"style":3618},[10003],{"type":3079,"value":9299},{"type":3074,"tag":3444,"props":10005,"children":10006},{"style":3609},[10007],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":10009,"children":10010},{"style":3884},[10011],{"type":3079,"value":4098},{"type":3074,"tag":3444,"props":10013,"children":10014},{"style":3609},[10015],{"type":3079,"value":3654},{"type":3074,"tag":3444,"props":10017,"children":10018},{"class":3446,"line":3714},[10019],{"type":3074,"tag":3444,"props":10020,"children":10021},{"style":3609},[10022],{"type":3079,"value":3720},{"type":3074,"tag":3444,"props":10024,"children":10025},{"class":3446,"line":3723},[10026],{"type":3074,"tag":3444,"props":10027,"children":10028},{"emptyLinePlaceholder":1200},[10029],{"type":3079,"value":3482},{"type":3074,"tag":3444,"props":10031,"children":10032},{"class":3446,"line":3732},[10033,10037,10041],{"type":3074,"tag":3444,"props":10034,"children":10035},{"style":3618},[10036],{"type":3079,"value":3832},{"type":3074,"tag":3444,"props":10038,"children":10039},{"style":3609},[10040],{"type":3079,"value":3626},{"type":3074,"tag":3444,"props":10042,"children":10043},{"style":3603},[10044],{"type":3079,"value":9342},{"type":3074,"tag":3444,"props":10046,"children":10047},{"class":3446,"line":3741},[10048,10052,10057,10061,10065],{"type":3074,"tag":3444,"props":10049,"children":10050},{"style":3609},[10051],{"type":3079,"value":4679},{"type":3074,"tag":3444,"props":10053,"children":10054},{"style":3465},[10055],{"type":3079,"value":10056},"\u002Fapi\u002Fhealth",{"type":3074,"tag":3444,"props":10058,"children":10059},{"style":3609},[10060],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":10062,"children":10063},{"style":3609},[10064],{"type":3079,"value":3846},{"type":3074,"tag":3444,"props":10066,"children":10067},{"style":3450},[10068],{"type":3079,"value":10069},"          \u002F\u002F exact match\n",{"type":3074,"tag":3444,"props":10071,"children":10072},{"class":3446,"line":3750},[10073,10077,10082,10086,10090],{"type":3074,"tag":3444,"props":10074,"children":10075},{"style":3609},[10076],{"type":3079,"value":4679},{"type":3074,"tag":3444,"props":10078,"children":10079},{"style":3465},[10080],{"type":3079,"value":10081},"\u002Fapi\u002F_nuxt\u002F**",{"type":3074,"tag":3444,"props":10083,"children":10084},{"style":3609},[10085],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":10087,"children":10088},{"style":3609},[10089],{"type":3079,"value":3846},{"type":3074,"tag":3444,"props":10091,"children":10092},{"style":3450},[10093],{"type":3079,"value":10094},"        \u002F\u002F multi-segment wildcard\n",{"type":3074,"tag":3444,"props":10096,"children":10097},{"class":3446,"line":3759},[10098,10102,10107,10111,10115],{"type":3074,"tag":3444,"props":10099,"children":10100},{"style":3609},[10101],{"type":3079,"value":4679},{"type":3074,"tag":3444,"props":10103,"children":10104},{"style":3465},[10105],{"type":3079,"value":10106},"\u002Fapi\u002Fwebhooks\u002Fstripe",{"type":3074,"tag":3444,"props":10108,"children":10109},{"style":3609},[10110],{"type":3079,"value":3636},{"type":3074,"tag":3444,"props":10112,"children":10113},{"style":3609},[10114],{"type":3079,"value":3846},{"type":3074,"tag":3444,"props":10116,"children":10117},{"style":3450},[10118],{"type":3079,"value":10119}," \u002F\u002F exact match\n",{"type":3074,"tag":3444,"props":10121,"children":10122},{"class":3446,"line":3768},[10123,10127],{"type":3074,"tag":3444,"props":10124,"children":10125},{"style":3603},[10126],{"type":3079,"value":9600},{"type":3074,"tag":3444,"props":10128,"children":10129},{"style":3609},[10130],{"type":3079,"value":3654},{"type":3074,"tag":3444,"props":10132,"children":10133},{"class":3446,"line":3777},[10134],{"type":3074,"tag":3444,"props":10135,"children":10136},{"style":3609},[10137],{"type":3079,"value":3967},{"type":3074,"tag":3444,"props":10139,"children":10140},{"class":3446,"line":3786},[10141,10145],{"type":3074,"tag":3444,"props":10142,"children":10143},{"style":3609},[10144],{"type":3079,"value":3976},{"type":3074,"tag":3444,"props":10146,"children":10147},{"style":3603},[10148],{"type":3079,"value":8112},{"type":3074,"tag":3420,"props":10150,"children":10152},{"id":10151},"how-it-works",[10153],{"type":3079,"value":10154},"How It Works",{"type":3074,"tag":3131,"props":10156,"children":10157},{},[10158,10170,10182],{"type":3074,"tag":3135,"props":10159,"children":10160},{},[10161,10163,10168],{"type":3079,"value":10162},"Routes in ",{"type":3074,"tag":3231,"props":10164,"children":10166},{"className":10165},[],[10167],{"type":3079,"value":9837},{"type":3079,"value":10169}," bypass the middleware entirely — no ban check, no rate limit counter, no log entry.",{"type":3074,"tag":3135,"props":10171,"children":10172},{},[10173,10175,10180],{"type":3079,"value":10174},"The rest of your API routes (those matching the global defaults or the ",{"type":3074,"tag":3231,"props":10176,"children":10178},{"className":10177},[],[10179],{"type":3079,"value":9146},{"type":3079,"value":10181}," option) continue to be rate limited normally.",{"type":3074,"tag":3135,"props":10183,"children":10184},{},[10185,10187,10192,10194,10199],{"type":3079,"value":10186},"Supports the same wildcard syntax as per-route patterns: ",{"type":3074,"tag":3231,"props":10188,"children":10190},{"className":10189},[],[10191],{"type":3079,"value":9668},{"type":3079,"value":10193}," for single segment, ",{"type":3074,"tag":3231,"props":10195,"children":10197},{"className":10196},[],[10198],{"type":3079,"value":9712},{"type":3079,"value":10200}," for multi-segment.",{"type":3074,"tag":3157,"props":10202,"children":10204},{"id":10203},"important-considerations",[10205],{"type":3079,"value":10206},"Important Considerations",{"type":3074,"tag":3420,"props":10208,"children":10210},{"id":10209},"data-privacy-ip-address-storage",[10211],{"type":3079,"value":10212},"Data Privacy (IP Address Storage)",{"type":3074,"tag":3081,"props":10214,"children":10215},{},[10216,10221],{"type":3074,"tag":3231,"props":10217,"children":10219},{"className":10218},[],[10220],{"type":3079,"value":3015},{"type":3079,"value":10222}," 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":3074,"tag":3131,"props":10224,"children":10225},{},[10226,10267,10277],{"type":3074,"tag":3135,"props":10227,"children":10228},{},[10229,10234],{"type":3074,"tag":3169,"props":10230,"children":10231},{},[10232],{"type":3079,"value":10233},"Data Stored:",{"type":3074,"tag":3131,"props":10235,"children":10236},{},[10237,10256],{"type":3074,"tag":3135,"props":10238,"children":10239},{},[10240,10246,10248,10254],{"type":3074,"tag":3231,"props":10241,"children":10243},{"className":10242},[],[10244],{"type":3079,"value":10245},"ip:\u003CIP_ADDRESS>",{"type":3079,"value":10247},": Stores ",{"type":3074,"tag":3231,"props":10249,"children":10251},{"className":10250},[],[10252],{"type":3079,"value":10253},"{ count: number, time: number }",{"type":3079,"value":10255}," for tracking request rates.",{"type":3074,"tag":3135,"props":10257,"children":10258},{},[10259,10265],{"type":3074,"tag":3231,"props":10260,"children":10262},{"className":10261},[],[10263],{"type":3079,"value":10264},"ban:\u003CIP_ADDRESS>",{"type":3079,"value":10266},": Stores a timestamp indicating when a ban on an IP address expires.",{"type":3074,"tag":3135,"props":10268,"children":10269},{},[10270,10275],{"type":3074,"tag":3169,"props":10271,"children":10272},{},[10273],{"type":3079,"value":10274},"Compliance:",{"type":3079,"value":10276}," 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":3074,"tag":3135,"props":10278,"children":10279},{},[10280,10285],{"type":3074,"tag":3169,"props":10281,"children":10282},{},[10283],{"type":3079,"value":10284},"Data Retention:",{"type":3074,"tag":3131,"props":10286,"children":10287},{},[10288,10300],{"type":3074,"tag":3135,"props":10289,"children":10290},{},[10291,10293,10298],{"type":3079,"value":10292},"Ban entries are cleaned up by the ",{"type":3074,"tag":3231,"props":10294,"children":10296},{"className":10295},[],[10297],{"type":3079,"value":3328},{"type":3079,"value":10299}," task after expiry.",{"type":3074,"tag":3135,"props":10301,"children":10302},{},[10303,10305,10310,10312,10317],{"type":3079,"value":10304},"IP tracking entries are cleaned up by the ",{"type":3074,"tag":3231,"props":10306,"children":10308},{"className":10307},[],[10309],{"type":3079,"value":3336},{"type":3079,"value":10311}," task based on the ",{"type":3074,"tag":3231,"props":10313,"children":10315},{"className":10314},[],[10316],{"type":3079,"value":5034},{"type":3079,"value":10318}," setting.",{"type":3074,"tag":3420,"props":10320,"children":10322},{"id":10321},"storage-security",[10323],{"type":3079,"value":10324},"Storage Security",{"type":3074,"tag":3131,"props":10326,"children":10327},{},[10328,10406],{"type":3074,"tag":3135,"props":10329,"children":10330},{},[10331,10344,10346,10352,10354,10359,10360,10366,10368,10374,10376,10381,10383],{"type":3074,"tag":3169,"props":10332,"children":10333},{},[10334,10336,10342],{"type":3079,"value":10335},"Filesystem Driver (",{"type":3074,"tag":3231,"props":10337,"children":10339},{"className":10338},[],[10340],{"type":3079,"value":10341},"driver: 'fs'",{"type":3079,"value":10343},"):",{"type":3079,"value":10345}," If you use the filesystem driver for ",{"type":3074,"tag":3231,"props":10347,"children":10349},{"className":10348},[],[10350],{"type":3079,"value":10351},"unstorage",{"type":3079,"value":10353}," (e.g., ",{"type":3074,"tag":3231,"props":10355,"children":10357},{"className":10356},[],[10358],{"type":3079,"value":10341},{"type":3079,"value":3396},{"type":3074,"tag":3231,"props":10361,"children":10363},{"className":10362},[],[10364],{"type":3079,"value":10365},"base: '.shield'",{"type":3079,"value":10367},"), ensure that the storage directory (and the ",{"type":3074,"tag":3231,"props":10369,"children":10371},{"className":10370},[],[10372],{"type":3079,"value":10373},"logs",{"type":3079,"value":10375}," directory if logging is enabled via ",{"type":3074,"tag":3231,"props":10377,"children":10379},{"className":10378},[],[10380],{"type":3079,"value":7904},{"type":3079,"value":10382},") is:\n",{"type":3074,"tag":3131,"props":10384,"children":10385},{},[10386,10396],{"type":3074,"tag":3135,"props":10387,"children":10388},{},[10389,10394],{"type":3074,"tag":3169,"props":10390,"children":10391},{},[10392],{"type":3079,"value":10393},"Not web-accessible:",{"type":3079,"value":10395}," Your web server should not be configured to serve files from these directories.",{"type":3074,"tag":3135,"props":10397,"children":10398},{},[10399,10404],{"type":3074,"tag":3169,"props":10400,"children":10401},{},[10402],{"type":3079,"value":10403},"Properly permissioned:",{"type":3079,"value":10405}," The directories should have appropriate server-side file permissions to prevent unauthorized reading or writing.",{"type":3074,"tag":3135,"props":10407,"children":10408},{},[10409,10414],{"type":3074,"tag":3169,"props":10410,"children":10411},{},[10412],{"type":3079,"value":10413},"Other Drivers (Redis, etc.):",{"type":3079,"value":10415}," If using database drivers like Redis, ensure your database server itself is secured (e.g., authentication, network access controls).",{"type":3074,"tag":3420,"props":10417,"children":10419},{"id":10418},"error-message-errormessage",[10420,10422,10428],{"type":3079,"value":10421},"Error Message (",{"type":3074,"tag":3231,"props":10423,"children":10425},{"className":10424},[],[10426],{"type":3079,"value":10427},"errorMessage",{"type":3079,"value":3981},{"type":3074,"tag":3081,"props":10430,"children":10431},{},[10432,10433,10438],{"type":3079,"value":4444},{"type":3074,"tag":3231,"props":10434,"children":10436},{"className":10435},[],[10437],{"type":3079,"value":10427},{"type":3079,"value":10439}," option in the module configuration is returned in the body of a 429 response.",{"type":3074,"tag":3131,"props":10441,"children":10442},{},[10443,10448],{"type":3074,"tag":3135,"props":10444,"children":10445},{},[10446],{"type":3079,"value":10447},"It's recommended to use a plain text message.",{"type":3074,"tag":3135,"props":10449,"children":10450},{},[10451,10453,10458],{"type":3079,"value":10452},"If you choose to use HTML in your ",{"type":3074,"tag":3231,"props":10454,"children":10456},{"className":10455},[],[10457],{"type":3079,"value":10427},{"type":3079,"value":10459},", 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":3074,"tag":3157,"props":10461,"children":10463},{"id":10462},"development",[10464],{"type":3079,"value":10465},"Development",{"type":3074,"tag":3434,"props":10467,"children":10469},{"className":3436,"code":10468,"language":3438,"meta":3018,"style":3018},"# 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",[10470],{"type":3074,"tag":3231,"props":10471,"children":10472},{"__ignoreMap":3018},[10473,10481,10489,10496,10504,10516,10523,10531,10543,10550,10558,10570,10577,10585,10597,10604,10612,10624,10636,10643,10651,10663],{"type":3074,"tag":3444,"props":10474,"children":10475},{"class":3446,"line":3046},[10476],{"type":3074,"tag":3444,"props":10477,"children":10478},{"style":3450},[10479],{"type":3079,"value":10480},"# Install dependencies\n",{"type":3074,"tag":3444,"props":10482,"children":10483},{"class":3446,"line":3042},[10484],{"type":3074,"tag":3444,"props":10485,"children":10486},{"style":3459},[10487],{"type":3079,"value":10488},"yarn\n",{"type":3074,"tag":3444,"props":10490,"children":10491},{"class":3446,"line":3476},[10492],{"type":3074,"tag":3444,"props":10493,"children":10494},{"emptyLinePlaceholder":1200},[10495],{"type":3079,"value":3482},{"type":3074,"tag":3444,"props":10497,"children":10498},{"class":3446,"line":3485},[10499],{"type":3074,"tag":3444,"props":10500,"children":10501},{"style":3450},[10502],{"type":3079,"value":10503},"# Generate type stubs\n",{"type":3074,"tag":3444,"props":10505,"children":10506},{"class":3446,"line":3038},[10507,10511],{"type":3074,"tag":3444,"props":10508,"children":10509},{"style":3459},[10510],{"type":3079,"value":3499},{"type":3074,"tag":3444,"props":10512,"children":10513},{"style":3465},[10514],{"type":3079,"value":10515}," dev:prepare\n",{"type":3074,"tag":3444,"props":10517,"children":10518},{"class":3446,"line":3510},[10519],{"type":3074,"tag":3444,"props":10520,"children":10521},{"emptyLinePlaceholder":1200},[10522],{"type":3079,"value":3482},{"type":3074,"tag":3444,"props":10524,"children":10525},{"class":3446,"line":3518},[10526],{"type":3074,"tag":3444,"props":10527,"children":10528},{"style":3450},[10529],{"type":3079,"value":10530},"# Develop with the playground\n",{"type":3074,"tag":3444,"props":10532,"children":10533},{"class":3446,"line":3063},[10534,10538],{"type":3074,"tag":3444,"props":10535,"children":10536},{"style":3459},[10537],{"type":3079,"value":3499},{"type":3074,"tag":3444,"props":10539,"children":10540},{"style":3465},[10541],{"type":3079,"value":10542}," dev\n",{"type":3074,"tag":3444,"props":10544,"children":10545},{"class":3446,"line":3714},[10546],{"type":3074,"tag":3444,"props":10547,"children":10548},{"emptyLinePlaceholder":1200},[10549],{"type":3079,"value":3482},{"type":3074,"tag":3444,"props":10551,"children":10552},{"class":3446,"line":3723},[10553],{"type":3074,"tag":3444,"props":10554,"children":10555},{"style":3450},[10556],{"type":3079,"value":10557},"# Build the playground\n",{"type":3074,"tag":3444,"props":10559,"children":10560},{"class":3446,"line":3732},[10561,10565],{"type":3074,"tag":3444,"props":10562,"children":10563},{"style":3459},[10564],{"type":3079,"value":3499},{"type":3074,"tag":3444,"props":10566,"children":10567},{"style":3465},[10568],{"type":3079,"value":10569}," dev:build\n",{"type":3074,"tag":3444,"props":10571,"children":10572},{"class":3446,"line":3741},[10573],{"type":3074,"tag":3444,"props":10574,"children":10575},{"emptyLinePlaceholder":1200},[10576],{"type":3079,"value":3482},{"type":3074,"tag":3444,"props":10578,"children":10579},{"class":3446,"line":3750},[10580],{"type":3074,"tag":3444,"props":10581,"children":10582},{"style":3450},[10583],{"type":3079,"value":10584},"# Run ESLint\n",{"type":3074,"tag":3444,"props":10586,"children":10587},{"class":3446,"line":3759},[10588,10592],{"type":3074,"tag":3444,"props":10589,"children":10590},{"style":3459},[10591],{"type":3079,"value":3499},{"type":3074,"tag":3444,"props":10593,"children":10594},{"style":3465},[10595],{"type":3079,"value":10596}," lint\n",{"type":3074,"tag":3444,"props":10598,"children":10599},{"class":3446,"line":3768},[10600],{"type":3074,"tag":3444,"props":10601,"children":10602},{"emptyLinePlaceholder":1200},[10603],{"type":3079,"value":3482},{"type":3074,"tag":3444,"props":10605,"children":10606},{"class":3446,"line":3777},[10607],{"type":3074,"tag":3444,"props":10608,"children":10609},{"style":3450},[10610],{"type":3079,"value":10611},"# Run Vitest\n",{"type":3074,"tag":3444,"props":10613,"children":10614},{"class":3446,"line":3786},[10615,10619],{"type":3074,"tag":3444,"props":10616,"children":10617},{"style":3459},[10618],{"type":3079,"value":3499},{"type":3074,"tag":3444,"props":10620,"children":10621},{"style":3465},[10622],{"type":3079,"value":10623}," test\n",{"type":3074,"tag":3444,"props":10625,"children":10626},{"class":3446,"line":3794},[10627,10631],{"type":3074,"tag":3444,"props":10628,"children":10629},{"style":3459},[10630],{"type":3079,"value":3499},{"type":3074,"tag":3444,"props":10632,"children":10633},{"style":3465},[10634],{"type":3079,"value":10635}," test:watch\n",{"type":3074,"tag":3444,"props":10637,"children":10638},{"class":3446,"line":3803},[10639],{"type":3074,"tag":3444,"props":10640,"children":10641},{"emptyLinePlaceholder":1200},[10642],{"type":3079,"value":3482},{"type":3074,"tag":3444,"props":10644,"children":10645},{"class":3446,"line":3812},[10646],{"type":3074,"tag":3444,"props":10647,"children":10648},{"style":3450},[10649],{"type":3079,"value":10650},"# Release new version\n",{"type":3074,"tag":3444,"props":10652,"children":10653},{"class":3446,"line":3826},[10654,10658],{"type":3074,"tag":3444,"props":10655,"children":10656},{"style":3459},[10657],{"type":3079,"value":3499},{"type":3074,"tag":3444,"props":10659,"children":10660},{"style":3465},[10661],{"type":3079,"value":10662}," release:patch\n",{"type":3074,"tag":3444,"props":10664,"children":10665},{"class":3446,"line":3854},[10666,10670],{"type":3074,"tag":3444,"props":10667,"children":10668},{"style":3459},[10669],{"type":3079,"value":3499},{"type":3074,"tag":3444,"props":10671,"children":10672},{"style":3465},[10673],{"type":3079,"value":10674}," release:minor\n",{"type":3074,"tag":10676,"props":10677,"children":10678},"style",{},[10679],{"type":3079,"value":10680},"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":3018,"searchDepth":3042,"depth":3042,"links":10682},[10683,10684,10695,10700,10705,10711,10715,10719,10725],{"id":3159,"depth":3042,"text":399},{"id":3415,"depth":3042,"text":3418,"children":10685},[10686,10688,10690,10692,10694],{"id":3422,"depth":3476,"text":10687},"1. Add nuxt-api-shield dependency to your project",{"id":3544,"depth":3476,"text":10689},"2. Add nuxt-api-shield to the modules section of nuxt.config.ts",{"id":4576,"depth":3476,"text":10691},"3. Add nitro\u002Fstorage to nuxt.config.ts",{"id":4985,"depth":3476,"text":10693},"4. Schedule bundled cleanup tasks in nuxt.config.ts",{"id":5286,"depth":3476,"text":5289},{"id":7375,"depth":3042,"text":7378,"children":10696},[10697,10698],{"id":7381,"depth":3476,"text":7384},{"id":7791,"depth":3476,"text":10699},"When memory \u002F fs is acceptable",{"id":7850,"depth":3042,"text":7853,"children":10701},[10702,10703,10704],{"id":7876,"depth":3476,"text":7879},{"id":8130,"depth":3476,"text":8133},{"id":8182,"depth":3476,"text":8185},{"id":8448,"depth":3042,"text":8451,"children":10706},[10707,10709],{"id":8459,"depth":3476,"text":10708},"RateLimit Type",{"id":9011,"depth":3476,"text":10710},"ModuleOptions Type",{"id":9078,"depth":3042,"text":9081,"children":10712},[10713,10714],{"id":9133,"depth":3476,"text":9136},{"id":9629,"depth":3476,"text":9632},{"id":9824,"depth":3042,"text":9827,"children":10716},[10717,10718],{"id":9854,"depth":3476,"text":9136},{"id":10151,"depth":3476,"text":10154},{"id":10203,"depth":3042,"text":10206,"children":10720},[10721,10722,10723],{"id":10209,"depth":3476,"text":10212},{"id":10321,"depth":3476,"text":10324},{"id":10418,"depth":3476,"text":10724},"Error Message (errorMessage)",{"id":10462,"depth":3042,"text":10465},{"v5":10727,"v4":10728,"v3":10729,"v2":10730},"5 (nightly)","4.5.1","3.21.10","2.18.1"]