[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f30r277ag21rfj":3,"module-api-shield":3032,"versions":10747},[4,1124,1983,2826],{"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,1431,1813,1890,1912,1946],{"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,1313,1335,1345,1373,1393],{"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,1307,1310],{"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":1304,"path":1305,"stem":1306,"titleTemplate":6},"Server Components","\u002Fdocs\u002F4.x\u002Fguide\u002Fconcepts\u002Fserver-components","docs\u002F4.x\u002F3.guide\u002F1.concepts\u002F6.server-components",{"title":280,"path":1308,"stem":1309,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fconcepts\u002Ftypescript","docs\u002F4.x\u002F3.guide\u002F1.concepts\u002F8.typescript",{"title":284,"path":1311,"stem":1312,"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":1314,"stem":1315,"children":1316,"page":108},"\u002Fdocs\u002F4.x\u002Fguide\u002Fbest-practices","docs\u002F4.x\u002F3.guide\u002F2.best-practices",[1317,1321,1325,1329,1332],{"title":1318,"path":1319,"stem":1320,"titleTemplate":6},"Accessibility","\u002Fdocs\u002F4.x\u002Fguide\u002Fbest-practices\u002Faccessibility","docs\u002F4.x\u002F3.guide\u002F2.best-practices\u002Faccessibility",{"title":1322,"path":1323,"stem":1324,"titleTemplate":6},"Dev Containers","\u002Fdocs\u002F4.x\u002Fguide\u002Fbest-practices\u002Fdevcontainers","docs\u002F4.x\u002F3.guide\u002F2.best-practices\u002Fdevcontainers",{"title":1326,"path":1327,"stem":1328,"titleTemplate":6},"Nuxt and Hydration","\u002Fdocs\u002F4.x\u002Fguide\u002Fbest-practices\u002Fhydration","docs\u002F4.x\u002F3.guide\u002F2.best-practices\u002Fhydration",{"title":299,"path":1330,"stem":1331,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fbest-practices\u002Fperformance","docs\u002F4.x\u002F3.guide\u002F2.best-practices\u002Fperformance",{"title":303,"path":1333,"stem":1334,"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":1336,"stem":1337,"children":1338,"page":108},"\u002Fdocs\u002F4.x\u002Fguide\u002Fai","docs\u002F4.x\u002F3.guide\u002F3.ai",[1339,1342],{"title":314,"path":1340,"stem":1341,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fai\u002Fmcp","docs\u002F4.x\u002F3.guide\u002F3.ai\u002F1.mcp",{"title":318,"path":1343,"stem":1344,"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":1346,"stem":1347,"children":1348,"page":108},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules","docs\u002F4.x\u002F3.guide\u002F4.modules",[1349,1352,1355,1358,1361,1364,1367,1370],{"title":329,"path":1350,"stem":1351,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Fgetting-started","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F1.getting-started",{"title":333,"path":1353,"stem":1354,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Fmodule-anatomy","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F2.module-anatomy",{"title":337,"path":1356,"stem":1357,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Frecipes-basics","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F3.recipes-basics",{"title":341,"path":1359,"stem":1360,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Fmodule-dependencies","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F4.module-dependencies",{"title":345,"path":1362,"stem":1363,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Frecipes-advanced","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F5.recipes-advanced",{"title":349,"path":1365,"stem":1366,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Ftesting","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F6.testing",{"title":353,"path":1368,"stem":1369,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Fbest-practices","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F7.best-practices",{"title":357,"path":1371,"stem":1372,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Fecosystem","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F8.ecosystem",{"title":361,"titleTemplate":362,"icon":363,"path":1374,"stem":1375,"children":1376,"page":108},"\u002Fdocs\u002F4.x\u002Fguide\u002Frecipes","docs\u002F4.x\u002F3.guide\u002F5.recipes",[1377,1380,1383,1386,1389],{"title":368,"path":1378,"stem":1379,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Frecipes\u002Fcustom-routing","docs\u002F4.x\u002F3.guide\u002F5.recipes\u002F1.custom-routing",{"title":372,"path":1381,"stem":1382,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Frecipes\u002Fvite-plugin","docs\u002F4.x\u002F3.guide\u002F5.recipes\u002F2.vite-plugin",{"title":376,"path":1384,"stem":1385,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Frecipes\u002Fcustom-usefetch","docs\u002F4.x\u002F3.guide\u002F5.recipes\u002F3.custom-usefetch",{"title":380,"path":1387,"stem":1388,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Frecipes\u002Fsessions-and-authentication","docs\u002F4.x\u002F3.guide\u002F5.recipes\u002F4.sessions-and-authentication",{"title":1390,"path":1391,"stem":1392,"titleTemplate":6},"Mostly-Static Sites","\u002Fdocs\u002F4.x\u002Fguide\u002Frecipes\u002Fmostly-static-sites","docs\u002F4.x\u002F3.guide\u002F5.recipes\u002F5.mostly-static-sites",{"title":384,"titleTemplate":385,"icon":386,"path":1394,"stem":1395,"children":1396,"page":108},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further","docs\u002F4.x\u002F3.guide\u002F6.going-further",[1397,1400,1403,1406,1409,1412,1415,1418,1421,1424,1428],{"title":391,"path":1398,"stem":1399,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fevents","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F1.events",{"title":395,"path":1401,"stem":1402,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fexperimental-features","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F1.experimental-features",{"title":399,"path":1404,"stem":1405,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Ffeatures","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F1.features",{"title":403,"path":1407,"stem":1408,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fruntime-config","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F10.runtime-config",{"title":407,"path":1410,"stem":1411,"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":1413,"stem":1414,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fhooks","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F2.hooks",{"title":415,"path":1416,"stem":1417,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fkit","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F4.kit",{"title":419,"path":1419,"stem":1420,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fnuxt-app","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F6.nuxt-app",{"title":423,"path":1422,"stem":1423,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Flayers","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F7.layers",{"title":1425,"path":1426,"stem":1427,"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":1429,"stem":1430,"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":1432,"stem":1433,"children":1434,"page":108},"\u002Fdocs\u002F4.x\u002Fapi","docs\u002F4.x\u002F4.api",[1435,1488,1595,1686,1738,1800,1810],{"title":438,"titleTemplate":439,"icon":324,"path":1436,"stem":1437,"children":1438,"page":108},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents","docs\u002F4.x\u002F4.api\u002F1.components",[1439,1442,1445,1448,1451,1454,1457,1460,1464,1467,1470,1473,1476,1479,1482,1485],{"title":444,"path":1440,"stem":1441,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fclient-only","docs\u002F4.x\u002F4.api\u002F1.components\u002F1.client-only",{"title":448,"path":1443,"stem":1444,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fdev-only","docs\u002F4.x\u002F4.api\u002F1.components\u002F1.dev-only",{"title":452,"path":1446,"stem":1447,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-client-fallback","docs\u002F4.x\u002F4.api\u002F1.components\u002F1.nuxt-client-fallback",{"title":456,"path":1449,"stem":1450,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-picture","docs\u002F4.x\u002F4.api\u002F1.components\u002F10.nuxt-picture",{"title":460,"path":1452,"stem":1453,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fteleports","docs\u002F4.x\u002F4.api\u002F1.components\u002F11.teleports",{"title":464,"path":1455,"stem":1456,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-route-announcer","docs\u002F4.x\u002F4.api\u002F1.components\u002F12.nuxt-route-announcer",{"title":468,"path":1458,"stem":1459,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-time","docs\u002F4.x\u002F4.api\u002F1.components\u002F13.nuxt-time",{"title":1461,"path":1462,"stem":1463,"titleTemplate":6},"\u003CNuxtAnnouncer>","\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-announcer","docs\u002F4.x\u002F4.api\u002F1.components\u002F14.nuxt-announcer",{"title":472,"path":1465,"stem":1466,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-page","docs\u002F4.x\u002F4.api\u002F1.components\u002F2.nuxt-page",{"title":476,"path":1468,"stem":1469,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-layout","docs\u002F4.x\u002F4.api\u002F1.components\u002F3.nuxt-layout",{"title":480,"path":1471,"stem":1472,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-link","docs\u002F4.x\u002F4.api\u002F1.components\u002F4.nuxt-link",{"title":484,"path":1474,"stem":1475,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-loading-indicator","docs\u002F4.x\u002F4.api\u002F1.components\u002F5.nuxt-loading-indicator",{"title":488,"path":1477,"stem":1478,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-error-boundary","docs\u002F4.x\u002F4.api\u002F1.components\u002F6.nuxt-error-boundary",{"title":492,"path":1480,"stem":1481,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-welcome","docs\u002F4.x\u002F4.api\u002F1.components\u002F7.nuxt-welcome",{"title":496,"path":1483,"stem":1484,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-island","docs\u002F4.x\u002F4.api\u002F1.components\u002F8.nuxt-island",{"title":500,"path":1486,"stem":1487,"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":1489,"stem":1490,"children":1491,"page":108},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables","docs\u002F4.x\u002F4.api\u002F2.composables",[1492,1496,1500,1503,1507,1510,1513,1516,1519,1522,1525,1528,1531,1535,1538,1541,1544,1547,1550,1553,1556,1559,1562,1565,1568,1571,1574,1577,1580,1583,1586,1589,1592],{"title":1493,"path":1494,"stem":1495,"titleTemplate":6},"createUseAsyncData","\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fcreate-use-async-data","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fcreate-use-async-data",{"title":1497,"path":1498,"stem":1499,"titleTemplate":6},"createUseFetch","\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fcreate-use-fetch","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fcreate-use-fetch",{"title":511,"path":1501,"stem":1502,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fon-prehydrate","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fon-prehydrate",{"title":1504,"path":1505,"stem":1506,"titleTemplate":6},"useAnnouncer","\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-announcer","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-announcer",{"title":515,"path":1508,"stem":1509,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-app-config","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-app-config",{"title":519,"path":1511,"stem":1512,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-async-data","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-async-data",{"title":523,"path":1514,"stem":1515,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-cookie","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-cookie",{"title":527,"path":1517,"stem":1518,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-error","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-error",{"title":531,"path":1520,"stem":1521,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-fetch","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-fetch",{"title":535,"path":1523,"stem":1524,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-head","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-head",{"title":539,"path":1526,"stem":1527,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-head-safe","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-head-safe",{"title":543,"path":1529,"stem":1530,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-hydration","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-hydration",{"title":1532,"path":1533,"stem":1534,"titleTemplate":6},"useLayout","\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-layout","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-layout",{"title":547,"path":1536,"stem":1537,"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":1539,"stem":1540,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-lazy-fetch","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-lazy-fetch",{"title":555,"path":1542,"stem":1543,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-loading-indicator","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-loading-indicator",{"title":559,"path":1545,"stem":1546,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-nuxt-app","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-nuxt-app",{"title":563,"path":1548,"stem":1549,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-nuxt-data","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-nuxt-data",{"title":567,"path":1551,"stem":1552,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-preview-mode","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-preview-mode",{"title":571,"path":1554,"stem":1555,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-request-event","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-request-event",{"title":575,"path":1557,"stem":1558,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-request-fetch","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-request-fetch",{"title":579,"path":1560,"stem":1561,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-request-header","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-request-header",{"title":583,"path":1563,"stem":1564,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-request-headers","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-request-headers",{"title":587,"path":1566,"stem":1567,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-request-url","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-request-url",{"title":591,"path":1569,"stem":1570,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-response-header","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-response-header",{"title":595,"path":1572,"stem":1573,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-route","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-route",{"title":599,"path":1575,"stem":1576,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-route-announcer","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-route-announcer",{"title":603,"path":1578,"stem":1579,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-router","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-router",{"title":607,"path":1581,"stem":1582,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-runtime-config","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-runtime-config",{"title":611,"path":1584,"stem":1585,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-runtime-hook","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-runtime-hook",{"title":615,"path":1587,"stem":1588,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-seo-meta","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-seo-meta",{"title":619,"path":1590,"stem":1591,"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":1593,"stem":1594,"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":1596,"stem":1597,"children":1598,"page":108},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils","docs\u002F4.x\u002F4.api\u002F3.utils",[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,1674,1677,1680,1683],{"title":634,"path":1600,"stem":1601,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fdollarfetch","docs\u002F4.x\u002F4.api\u002F3.utils\u002F$fetch",{"title":638,"path":1603,"stem":1604,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fabort-navigation","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fabort-navigation",{"title":642,"path":1606,"stem":1607,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fadd-route-middleware","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fadd-route-middleware",{"title":646,"path":1609,"stem":1610,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fcall-once","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fcall-once",{"title":650,"path":1612,"stem":1613,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fclear-error","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fclear-error",{"title":654,"path":1615,"stem":1616,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fclear-nuxt-data","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fclear-nuxt-data",{"title":658,"path":1618,"stem":1619,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fclear-nuxt-state","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fclear-nuxt-state",{"title":662,"path":1621,"stem":1622,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fcreate-error","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fcreate-error",{"title":666,"path":1624,"stem":1625,"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":1627,"stem":1628,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fdefine-nuxt-component","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fdefine-nuxt-component",{"title":674,"path":1630,"stem":1631,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fdefine-nuxt-plugin","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fdefine-nuxt-plugin",{"title":678,"path":1633,"stem":1634,"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":1636,"stem":1637,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fdefine-page-meta","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fdefine-page-meta",{"title":686,"path":1639,"stem":1640,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fdefine-route-rules","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fdefine-route-rules",{"title":690,"path":1642,"stem":1643,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fnavigate-to","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fnavigate-to",{"title":694,"path":1645,"stem":1646,"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":1648,"stem":1649,"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":1651,"stem":1652,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fon-nuxt-ready","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fon-nuxt-ready",{"title":706,"path":1654,"stem":1655,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fprefetch-components","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fprefetch-components",{"title":710,"path":1657,"stem":1658,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fpreload-components","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fpreload-components",{"title":714,"path":1660,"stem":1661,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fpreload-route-components","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fpreload-route-components",{"title":718,"path":1663,"stem":1664,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fprerender-routes","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fprerender-routes",{"title":722,"path":1666,"stem":1667,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Frefresh-cookie","docs\u002F4.x\u002F4.api\u002F3.utils\u002Frefresh-cookie",{"title":726,"path":1669,"stem":1670,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Frefresh-nuxt-data","docs\u002F4.x\u002F4.api\u002F3.utils\u002Frefresh-nuxt-data",{"title":730,"path":1672,"stem":1673,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Freload-nuxt-app","docs\u002F4.x\u002F4.api\u002F3.utils\u002Freload-nuxt-app",{"title":734,"path":1675,"stem":1676,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fset-page-layout","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fset-page-layout",{"title":738,"path":1678,"stem":1679,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fset-response-status","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fset-response-status",{"title":742,"path":1681,"stem":1682,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fshow-error","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fshow-error",{"title":746,"path":1684,"stem":1685,"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":1687,"stem":1688,"children":1689,"page":108},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands","docs\u002F4.x\u002F4.api\u002F4.commands",[1690,1693,1696,1699,1702,1705,1708,1711,1714,1717,1720,1723,1726,1729,1732,1735],{"title":757,"path":1691,"stem":1692,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fadd","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fadd",{"title":761,"path":1694,"stem":1695,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fanalyze","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fanalyze",{"title":765,"path":1697,"stem":1698,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fbuild","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fbuild",{"title":769,"path":1700,"stem":1701,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fbuild-module","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fbuild-module",{"title":773,"path":1703,"stem":1704,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fcleanup","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fcleanup",{"title":777,"path":1706,"stem":1707,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fdev","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fdev",{"title":781,"path":1709,"stem":1710,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fdevtools","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fdevtools",{"title":785,"path":1712,"stem":1713,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fgenerate","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fgenerate",{"title":789,"path":1715,"stem":1716,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Finfo","docs\u002F4.x\u002F4.api\u002F4.commands\u002Finfo",{"title":793,"path":1718,"stem":1719,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Finit","docs\u002F4.x\u002F4.api\u002F4.commands\u002Finit",{"title":797,"path":1721,"stem":1722,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fmodule","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fmodule",{"title":801,"path":1724,"stem":1725,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fprepare","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fprepare",{"title":805,"path":1727,"stem":1728,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fpreview","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fpreview",{"title":809,"path":1730,"stem":1731,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Ftest","docs\u002F4.x\u002F4.api\u002F4.commands\u002Ftest",{"title":813,"path":1733,"stem":1734,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Ftypecheck","docs\u002F4.x\u002F4.api\u002F4.commands\u002Ftypecheck",{"title":817,"path":1736,"stem":1737,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fupgrade","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fupgrade",{"title":415,"titleTemplate":821,"icon":822,"path":1739,"stem":1740,"children":1741,"page":108},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit","docs\u002F4.x\u002F4.api\u002F5.kit",[1742,1745,1748,1751,1755,1758,1761,1764,1767,1770,1773,1776,1779,1782,1785,1788,1791,1794,1797],{"title":276,"path":1743,"stem":1744,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fmodules","docs\u002F4.x\u002F4.api\u002F5.kit\u002F1.modules",{"title":403,"path":1746,"stem":1747,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fruntime-config","docs\u002F4.x\u002F4.api\u002F5.kit\u002F10.runtime-config",{"title":833,"path":1749,"stem":1750,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Ftemplates","docs\u002F4.x\u002F4.api\u002F5.kit\u002F10.templates",{"title":1752,"path":1753,"stem":1754,"titleTemplate":6},"App Config","\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fapp-config","docs\u002F4.x\u002F4.api\u002F5.kit\u002F11.app-config",{"title":837,"path":1756,"stem":1757,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fnitro","docs\u002F4.x\u002F4.api\u002F5.kit\u002F12.nitro",{"title":841,"path":1759,"stem":1760,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fresolving","docs\u002F4.x\u002F4.api\u002F5.kit\u002F13.resolving",{"title":845,"path":1762,"stem":1763,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Flogging","docs\u002F4.x\u002F4.api\u002F5.kit\u002F14.logging",{"title":849,"path":1765,"stem":1766,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fbuilder","docs\u002F4.x\u002F4.api\u002F5.kit\u002F15.builder",{"title":853,"path":1768,"stem":1769,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fexamples","docs\u002F4.x\u002F4.api\u002F5.kit\u002F16.examples",{"title":84,"path":1771,"stem":1772,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Flayers","docs\u002F4.x\u002F4.api\u002F5.kit\u002F17.layers",{"title":860,"path":1774,"stem":1775,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fprogrammatic","docs\u002F4.x\u002F4.api\u002F5.kit\u002F2.programmatic",{"title":864,"path":1777,"stem":1778,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fcompatibility","docs\u002F4.x\u002F4.api\u002F5.kit\u002F3.compatibility",{"title":268,"path":1780,"stem":1781,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fautoimports","docs\u002F4.x\u002F4.api\u002F5.kit\u002F4.autoimports",{"title":438,"path":1783,"stem":1784,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fcomponents","docs\u002F4.x\u002F4.api\u002F5.kit\u002F5.components",{"title":874,"path":1786,"stem":1787,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fcontext","docs\u002F4.x\u002F4.api\u002F5.kit\u002F6.context",{"title":878,"path":1789,"stem":1790,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fpages","docs\u002F4.x\u002F4.api\u002F5.kit\u002F7.pages",{"title":882,"path":1792,"stem":1793,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Flayout","docs\u002F4.x\u002F4.api\u002F5.kit\u002F8.layout",{"title":886,"path":1795,"stem":1796,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fhead","docs\u002F4.x\u002F4.api\u002F5.kit\u002F9.head",{"title":890,"path":1798,"stem":1799,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fplugins","docs\u002F4.x\u002F4.api\u002F5.kit\u002F9.plugins",{"title":894,"titleTemplate":6,"icon":895,"path":1801,"stem":1802,"children":1803,"page":108},"\u002Fdocs\u002F4.x\u002Fapi\u002Fadvanced","docs\u002F4.x\u002F4.api\u002F6.advanced",[1804,1807],{"title":411,"path":1805,"stem":1806,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fadvanced\u002Fhooks","docs\u002F4.x\u002F4.api\u002F6.advanced\u002F1.hooks",{"title":903,"path":1808,"stem":1809,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fadvanced\u002Fimport-meta","docs\u002F4.x\u002F4.api\u002F6.advanced\u002F2.import-meta",{"title":907,"path":1811,"stem":1812,"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":1814,"stem":1815,"children":1816,"page":108},"\u002Fdocs\u002F4.x\u002Fexamples","docs\u002F4.x\u002F4.examples",[1817,1820,1839,1852,1883],{"title":918,"path":1818,"stem":1819,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fhello-world","docs\u002F4.x\u002F4.examples\u002F0.hello-world",{"title":399,"path":1821,"stem":1822,"children":1823,"page":108},"\u002Fdocs\u002F4.x\u002Fexamples\u002Ffeatures","docs\u002F4.x\u002F4.examples\u002F1.features",[1824,1827,1830,1833,1836],{"title":926,"path":1825,"stem":1826,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Ffeatures\u002Fauto-imports","docs\u002F4.x\u002F4.examples\u002F1.features\u002F1.auto-imports",{"title":64,"path":1828,"stem":1829,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Ffeatures\u002Fdata-fetching","docs\u002F4.x\u002F4.examples\u002F1.features\u002F2.data-fetching",{"title":69,"path":1831,"stem":1832,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Ffeatures\u002Fstate-management","docs\u002F4.x\u002F4.examples\u002F1.features\u002F3.state-management",{"title":936,"path":1834,"stem":1835,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Ffeatures\u002Fmeta-tags","docs\u002F4.x\u002F4.examples\u002F1.features\u002F4.meta-tags",{"title":940,"path":1837,"stem":1838,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Ffeatures\u002Flayouts","docs\u002F4.x\u002F4.examples\u002F1.features\u002F5.layouts",{"title":49,"path":1840,"stem":1841,"children":1842,"page":108},"\u002Fdocs\u002F4.x\u002Fexamples\u002Frouting","docs\u002F4.x\u002F4.examples\u002F2.routing",[1843,1846,1849],{"title":948,"path":1844,"stem":1845,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Frouting\u002Fmiddleware","docs\u002F4.x\u002F4.examples\u002F2.routing\u002Fmiddleware",{"title":878,"path":1847,"stem":1848,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Frouting\u002Fpages","docs\u002F4.x\u002F4.examples\u002F2.routing\u002Fpages",{"title":955,"path":1850,"stem":1851,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Frouting\u002Funiversal-router","docs\u002F4.x\u002F4.examples\u002F2.routing\u002Funiversal-router",{"title":894,"path":1853,"stem":1854,"children":1855,"page":108},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced","docs\u002F4.x\u002F4.examples\u002F4.advanced",[1856,1859,1862,1865,1868,1871,1874,1877,1880],{"title":84,"path":1857,"stem":1858,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Fconfig-extends","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Fconfig-extends",{"title":74,"path":1860,"stem":1861,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Ferror-handling","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Ferror-handling",{"title":969,"path":1863,"stem":1864,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Fjsx","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Fjsx",{"title":973,"path":1866,"stem":1867,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Flocale","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Flocale",{"title":977,"path":1869,"stem":1870,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Fmodule-extend-pages","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Fmodule-extend-pages",{"title":981,"path":1872,"stem":1873,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Fteleport","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Fteleport",{"title":99,"path":1875,"stem":1876,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Ftesting","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Ftesting",{"title":523,"path":1878,"stem":1879,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Fuse-cookie","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Fuse-cookie",{"title":991,"path":1881,"stem":1882,"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":1884,"stem":1885,"children":1886,"page":108},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fexperimental","docs\u002F4.x\u002F4.examples\u002F7.experimental",[1887],{"title":1000,"path":1888,"stem":1889,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fexperimental\u002Fwasm","docs\u002F4.x\u002F4.examples\u002F7.experimental\u002Fwasm",{"title":1004,"titleTemplate":1005,"icon":1006,"path":1891,"stem":1892,"children":1893,"page":108},"\u002Fdocs\u002F4.x\u002Fcommunity","docs\u002F4.x\u002F5.community",[1894,1897,1900,1903,1906,1909],{"title":1011,"path":1895,"stem":1896,"titleTemplate":6,"icon":1014},"\u002Fdocs\u002F4.x\u002Fcommunity\u002Fgetting-help","docs\u002F4.x\u002F5.community\u002F2.getting-help",{"title":1016,"path":1898,"stem":1899,"titleTemplate":6,"icon":1019},"\u002Fdocs\u002F4.x\u002Fcommunity\u002Freporting-bugs","docs\u002F4.x\u002F5.community\u002F3.reporting-bugs",{"title":1021,"path":1901,"stem":1902,"titleTemplate":6,"icon":1024},"\u002Fdocs\u002F4.x\u002Fcommunity\u002Fcontribution","docs\u002F4.x\u002F5.community\u002F4.contribution",{"title":1026,"path":1904,"stem":1905,"titleTemplate":6,"icon":1029},"\u002Fdocs\u002F4.x\u002Fcommunity\u002Fframework-contribution","docs\u002F4.x\u002F5.community\u002F5.framework-contribution",{"title":1031,"path":1907,"stem":1908,"titleTemplate":6,"icon":1034},"\u002Fdocs\u002F4.x\u002Fcommunity\u002Froadmap","docs\u002F4.x\u002F5.community\u002F6.roadmap",{"title":1036,"path":1910,"stem":1911,"titleTemplate":6,"icon":1039},"\u002Fdocs\u002F4.x\u002Fcommunity\u002Fchangelog","docs\u002F4.x\u002F5.community\u002F7.changelog",{"title":1041,"titleTemplate":1042,"icon":1043,"path":1913,"stem":1914,"children":1915,"page":108},"\u002Fdocs\u002F4.x\u002Fbridge","docs\u002F4.x\u002F6.bridge",[1916,1919,1922,1925,1928,1931,1934,1937,1940,1943],{"title":1048,"path":1917,"stem":1918,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Foverview","docs\u002F4.x\u002F6.bridge\u002F1.overview",{"title":29,"path":1920,"stem":1921,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fconfiguration","docs\u002F4.x\u002F6.bridge\u002F10.configuration",{"title":280,"path":1923,"stem":1924,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Ftypescript","docs\u002F4.x\u002F6.bridge\u002F2.typescript",{"title":1058,"path":1926,"stem":1927,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fbridge-composition-api","docs\u002F4.x\u002F6.bridge\u002F3.bridge-composition-api",{"title":1062,"path":1929,"stem":1930,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fplugins-and-middleware","docs\u002F4.x\u002F6.bridge\u002F4.plugins-and-middleware",{"title":1066,"path":1932,"stem":1933,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fnuxt3-compatible-api","docs\u002F4.x\u002F6.bridge\u002F5.nuxt3-compatible-api",{"title":936,"path":1935,"stem":1936,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fmeta","docs\u002F4.x\u002F6.bridge\u002F6.meta",{"title":403,"path":1938,"stem":1939,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fruntime-config","docs\u002F4.x\u002F6.bridge\u002F7.runtime-config",{"title":837,"path":1941,"stem":1942,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fnitro","docs\u002F4.x\u002F6.bridge\u002F8.nitro",{"title":1079,"path":1944,"stem":1945,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fvite","docs\u002F4.x\u002F6.bridge\u002F9.vite",{"title":1083,"titleTemplate":1084,"icon":107,"path":1947,"stem":1948,"children":1949,"page":108},"\u002Fdocs\u002F4.x\u002Fmigration","docs\u002F4.x\u002F7.migration",[1950,1953,1956,1959,1962,1965,1968,1971,1974,1977,1980],{"title":1048,"path":1951,"stem":1952,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Foverview","docs\u002F4.x\u002F7.migration\u002F1.overview",{"title":1092,"path":1954,"stem":1955,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fbundling","docs\u002F4.x\u002F7.migration\u002F10.bundling",{"title":79,"path":1957,"stem":1958,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fserver","docs\u002F4.x\u002F7.migration\u002F11.server",{"title":29,"path":1960,"stem":1961,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fconfiguration","docs\u002F4.x\u002F7.migration\u002F2.configuration",{"title":276,"path":1963,"stem":1964,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fmodule-authors","docs\u002F4.x\u002F7.migration\u002F20.module-authors",{"title":926,"path":1966,"stem":1967,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fauto-imports","docs\u002F4.x\u002F7.migration\u002F3.auto-imports",{"title":936,"path":1969,"stem":1970,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fmeta","docs\u002F4.x\u002F7.migration\u002F4.meta",{"title":1062,"path":1972,"stem":1973,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fplugins-and-middleware","docs\u002F4.x\u002F7.migration\u002F5.plugins-and-middleware",{"title":1114,"path":1975,"stem":1976,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fpages-and-layouts","docs\u002F4.x\u002F7.migration\u002F6.pages-and-layouts",{"title":1118,"path":1978,"stem":1979,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fcomponent-options","docs\u002F4.x\u002F7.migration\u002F7.component-options",{"title":403,"path":1981,"stem":1982,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fruntime-config","docs\u002F4.x\u002F7.migration\u002F8.runtime-config",{"title":5,"titleTemplate":6,"icon":7,"path":1984,"stem":1985,"children":1986,"page":108},"\u002Fdocs\u002F5.x","docs\u002F5.x",[1987,2045,2135,2280,2656,2733,2755,2789],{"title":12,"titleTemplate":13,"icon":14,"path":1988,"stem":1989,"children":1990,"page":108},"\u002Fdocs\u002F5.x\u002Fgetting-started","docs\u002F5.x\u002F1.getting-started",[1991,1994,1997,2000,2003,2006,2009,2012,2015,2018,2021,2024,2027,2030,2033,2036,2039,2042],{"title":19,"path":1992,"stem":1993,"titleTemplate":6,"icon":22},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fintroduction","docs\u002F5.x\u002F1.getting-started\u002F01.introduction",{"title":24,"path":1995,"stem":1996,"titleTemplate":6,"icon":27},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Finstallation","docs\u002F5.x\u002F1.getting-started\u002F02.installation",{"title":29,"path":1998,"stem":1999,"titleTemplate":6,"icon":32},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fconfiguration","docs\u002F5.x\u002F1.getting-started\u002F03.configuration",{"title":34,"path":2001,"stem":2002,"titleTemplate":6,"icon":37},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fviews","docs\u002F5.x\u002F1.getting-started\u002F04.views",{"title":39,"path":2004,"stem":2005,"titleTemplate":6,"icon":42},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fassets","docs\u002F5.x\u002F1.getting-started\u002F05.assets",{"title":44,"path":2007,"stem":2008,"titleTemplate":6,"icon":47},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fstyling","docs\u002F5.x\u002F1.getting-started\u002F06.styling",{"title":49,"path":2010,"stem":2011,"titleTemplate":6,"icon":52},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Frouting","docs\u002F5.x\u002F1.getting-started\u002F07.routing",{"title":54,"path":2013,"stem":2014,"titleTemplate":6,"icon":57},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fseo-meta","docs\u002F5.x\u002F1.getting-started\u002F08.seo-meta",{"title":59,"path":2016,"stem":2017,"titleTemplate":6,"icon":62},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Ftransitions","docs\u002F5.x\u002F1.getting-started\u002F09.transitions",{"title":64,"path":2019,"stem":2020,"titleTemplate":6,"icon":67},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fdata-fetching","docs\u002F5.x\u002F1.getting-started\u002F10.data-fetching",{"title":69,"path":2022,"stem":2023,"titleTemplate":6,"icon":72},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fstate-management","docs\u002F5.x\u002F1.getting-started\u002F11.state-management",{"title":74,"path":2025,"stem":2026,"titleTemplate":6,"icon":77},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Ferror-handling","docs\u002F5.x\u002F1.getting-started\u002F12.error-handling",{"title":79,"path":2028,"stem":2029,"titleTemplate":6,"icon":82},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fserver","docs\u002F5.x\u002F1.getting-started\u002F13.server",{"title":84,"path":2031,"stem":2032,"titleTemplate":6,"icon":87},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Flayers","docs\u002F5.x\u002F1.getting-started\u002F14.layers",{"title":89,"path":2034,"stem":2035,"titleTemplate":6,"icon":92},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fprerendering","docs\u002F5.x\u002F1.getting-started\u002F15.prerendering",{"title":94,"path":2037,"stem":2038,"titleTemplate":6,"icon":97},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fdeployment","docs\u002F5.x\u002F1.getting-started\u002F16.deployment",{"title":99,"path":2040,"stem":2041,"titleTemplate":6,"icon":102},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Ftesting","docs\u002F5.x\u002F1.getting-started\u002F17.testing",{"title":104,"path":2043,"stem":2044,"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":2046,"stem":2047,"children":2048,"page":108},"\u002Fdocs\u002F5.x\u002Fdirectory-structure","docs\u002F5.x\u002F2.directory-structure",[2049,2052,2055,2093,2096,2099,2102,2105,2108,2111,2114,2117,2120,2123,2126,2129,2132],{"title":117,"path":2050,"stem":2051,"titleTemplate":6,"icon":120},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fnuxt","docs\u002F5.x\u002F2.directory-structure\u002F0.nuxt",{"title":122,"path":2053,"stem":2054,"titleTemplate":6,"icon":125},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Foutput","docs\u002F5.x\u002F2.directory-structure\u002F0.output",{"title":1197,"titleTemplate":111,"head":2056,"defaultOpen":1200,"icon":1201,"path":2057,"stem":2058,"children":2059,"page":108},{"title":1199},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp","docs\u002F5.x\u002F2.directory-structure\u002F1.app",[2060,2063,2066,2069,2072,2075,2078,2081,2084,2087,2090],{"title":127,"path":2061,"stem":2062,"titleTemplate":6,"icon":130},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fassets","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.assets",{"title":132,"path":2064,"stem":2065,"titleTemplate":6,"icon":135},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fcomponents","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.components",{"title":137,"path":2067,"stem":2068,"titleTemplate":6,"icon":140},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fcomposables","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.composables",{"title":152,"path":2070,"stem":2071,"titleTemplate":6,"icon":155},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Flayouts","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.layouts",{"title":157,"path":2073,"stem":2074,"titleTemplate":6,"icon":160},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fmiddleware","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.middleware",{"title":171,"path":2076,"stem":2077,"titleTemplate":6,"icon":155},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fpages","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.pages",{"title":175,"path":2079,"stem":2080,"titleTemplate":6,"icon":178},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fplugins","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.plugins",{"title":195,"path":2082,"stem":2083,"titleTemplate":6,"icon":198},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Futils","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.utils",{"title":219,"path":2085,"stem":2086,"titleTemplate":6,"icon":222},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fapp","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F3.app",{"title":224,"path":2088,"stem":2089,"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":2091,"stem":2092,"titleTemplate":6,"icon":222},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Ferror","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F3.error",{"title":142,"path":2094,"stem":2095,"titleTemplate":6,"icon":145},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fcontent","docs\u002F5.x\u002F2.directory-structure\u002F1.content",{"title":147,"path":2097,"stem":2098,"titleTemplate":6,"icon":150},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Flayers","docs\u002F5.x\u002F2.directory-structure\u002F1.layers",{"title":162,"path":2100,"stem":2101,"titleTemplate":6,"icon":150},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fmodules","docs\u002F5.x\u002F2.directory-structure\u002F1.modules",{"title":166,"path":2103,"stem":2104,"titleTemplate":6,"icon":169},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fnode_modules","docs\u002F5.x\u002F2.directory-structure\u002F1.node_modules",{"title":180,"path":2106,"stem":2107,"titleTemplate":6,"icon":183},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fpublic","docs\u002F5.x\u002F2.directory-structure\u002F1.public",{"title":185,"path":2109,"stem":2110,"titleTemplate":6,"icon":188},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fserver","docs\u002F5.x\u002F2.directory-structure\u002F1.server",{"title":190,"path":2112,"stem":2113,"titleTemplate":6,"icon":193},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fshared","docs\u002F5.x\u002F2.directory-structure\u002F1.shared",{"title":200,"path":2115,"stem":2116,"titleTemplate":6,"icon":203},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fenv","docs\u002F5.x\u002F2.directory-structure\u002F2.env",{"title":205,"path":2118,"stem":2119,"titleTemplate":6,"icon":208},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fgitignore","docs\u002F5.x\u002F2.directory-structure\u002F2.gitignore",{"title":210,"path":2121,"stem":2122,"titleTemplate":6,"icon":213},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fnuxtignore","docs\u002F5.x\u002F2.directory-structure\u002F2.nuxtignore",{"title":215,"path":2124,"stem":2125,"titleTemplate":6,"icon":213},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fnuxtrc","docs\u002F5.x\u002F2.directory-structure\u002F2.nuxtrc",{"title":233,"path":2127,"stem":2128,"titleTemplate":6,"icon":213},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fnuxt-config","docs\u002F5.x\u002F2.directory-structure\u002F3.nuxt-config",{"title":237,"path":2130,"stem":2131,"titleTemplate":6,"icon":240},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fpackage","docs\u002F5.x\u002F2.directory-structure\u002F3.package",{"title":242,"path":2133,"stem":2134,"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":2136,"stem":2137,"children":2138,"page":108},"\u002Fdocs\u002F5.x\u002Fguide","docs\u002F5.x\u002F3.guide",[2139,2167,2186,2196,2224,2243],{"title":253,"titleTemplate":254,"icon":255,"path":2140,"stem":2141,"children":2142,"page":108},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts","docs\u002F5.x\u002F3.guide\u002F1.concepts",[2143,2146,2149,2152,2155,2158,2161,2164],{"title":260,"path":2144,"stem":2145,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts\u002Frendering","docs\u002F5.x\u002F3.guide\u002F1.concepts\u002F1.rendering",{"title":264,"path":2147,"stem":2148,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts\u002Fnuxt-lifecycle","docs\u002F5.x\u002F3.guide\u002F1.concepts\u002F2.nuxt-lifecycle",{"title":268,"path":2150,"stem":2151,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts\u002Fauto-imports","docs\u002F5.x\u002F3.guide\u002F1.concepts\u002F3.auto-imports",{"title":272,"path":2153,"stem":2154,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts\u002Fserver-engine","docs\u002F5.x\u002F3.guide\u002F1.concepts\u002F4.server-engine",{"title":276,"path":2156,"stem":2157,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts\u002Fmodules","docs\u002F5.x\u002F3.guide\u002F1.concepts\u002F5.modules",{"title":1304,"path":2159,"stem":2160,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts\u002Fserver-components","docs\u002F5.x\u002F3.guide\u002F1.concepts\u002F6.server-components",{"title":280,"path":2162,"stem":2163,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts\u002Ftypescript","docs\u002F5.x\u002F3.guide\u002F1.concepts\u002F8.typescript",{"title":284,"path":2165,"stem":2166,"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":2168,"stem":2169,"children":2170,"page":108},"\u002Fdocs\u002F5.x\u002Fguide\u002Fbest-practices","docs\u002F5.x\u002F3.guide\u002F2.best-practices",[2171,2174,2177,2180,2183],{"title":1318,"path":2172,"stem":2173,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fbest-practices\u002Faccessibility","docs\u002F5.x\u002F3.guide\u002F2.best-practices\u002Faccessibility",{"title":1322,"path":2175,"stem":2176,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fbest-practices\u002Fdevcontainers","docs\u002F5.x\u002F3.guide\u002F2.best-practices\u002Fdevcontainers",{"title":1326,"path":2178,"stem":2179,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fbest-practices\u002Fhydration","docs\u002F5.x\u002F3.guide\u002F2.best-practices\u002Fhydration",{"title":299,"path":2181,"stem":2182,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fbest-practices\u002Fperformance","docs\u002F5.x\u002F3.guide\u002F2.best-practices\u002Fperformance",{"title":303,"path":2184,"stem":2185,"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":2187,"stem":2188,"children":2189,"page":108},"\u002Fdocs\u002F5.x\u002Fguide\u002Fai","docs\u002F5.x\u002F3.guide\u002F3.ai",[2190,2193],{"title":314,"path":2191,"stem":2192,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fai\u002Fmcp","docs\u002F5.x\u002F3.guide\u002F3.ai\u002F1.mcp",{"title":318,"path":2194,"stem":2195,"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":2197,"stem":2198,"children":2199,"page":108},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules","docs\u002F5.x\u002F3.guide\u002F4.modules",[2200,2203,2206,2209,2212,2215,2218,2221],{"title":329,"path":2201,"stem":2202,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Fgetting-started","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F1.getting-started",{"title":333,"path":2204,"stem":2205,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Fmodule-anatomy","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F2.module-anatomy",{"title":337,"path":2207,"stem":2208,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Frecipes-basics","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F3.recipes-basics",{"title":341,"path":2210,"stem":2211,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Fmodule-dependencies","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F4.module-dependencies",{"title":345,"path":2213,"stem":2214,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Frecipes-advanced","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F5.recipes-advanced",{"title":349,"path":2216,"stem":2217,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Ftesting","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F6.testing",{"title":353,"path":2219,"stem":2220,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Fbest-practices","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F7.best-practices",{"title":357,"path":2222,"stem":2223,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Fecosystem","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F8.ecosystem",{"title":361,"titleTemplate":362,"icon":363,"path":2225,"stem":2226,"children":2227,"page":108},"\u002Fdocs\u002F5.x\u002Fguide\u002Frecipes","docs\u002F5.x\u002F3.guide\u002F5.recipes",[2228,2231,2234,2237,2240],{"title":368,"path":2229,"stem":2230,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Frecipes\u002Fcustom-routing","docs\u002F5.x\u002F3.guide\u002F5.recipes\u002F1.custom-routing",{"title":372,"path":2232,"stem":2233,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Frecipes\u002Fvite-plugin","docs\u002F5.x\u002F3.guide\u002F5.recipes\u002F2.vite-plugin",{"title":376,"path":2235,"stem":2236,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Frecipes\u002Fcustom-usefetch","docs\u002F5.x\u002F3.guide\u002F5.recipes\u002F3.custom-usefetch",{"title":380,"path":2238,"stem":2239,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Frecipes\u002Fsessions-and-authentication","docs\u002F5.x\u002F3.guide\u002F5.recipes\u002F4.sessions-and-authentication",{"title":1390,"path":2241,"stem":2242,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Frecipes\u002Fmostly-static-sites","docs\u002F5.x\u002F3.guide\u002F5.recipes\u002F5.mostly-static-sites",{"title":384,"titleTemplate":385,"icon":386,"path":2244,"stem":2245,"children":2246,"page":108},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further","docs\u002F5.x\u002F3.guide\u002F6.going-further",[2247,2250,2253,2256,2259,2262,2265,2268,2271,2274,2277],{"title":391,"path":2248,"stem":2249,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fevents","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F1.events",{"title":395,"path":2251,"stem":2252,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fexperimental-features","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F1.experimental-features",{"title":399,"path":2254,"stem":2255,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Ffeatures","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F1.features",{"title":403,"path":2257,"stem":2258,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fruntime-config","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F10.runtime-config",{"title":407,"path":2260,"stem":2261,"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":2263,"stem":2264,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fhooks","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F2.hooks",{"title":415,"path":2266,"stem":2267,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fkit","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F4.kit",{"title":419,"path":2269,"stem":2270,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fnuxt-app","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F6.nuxt-app",{"title":423,"path":2272,"stem":2273,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Flayers","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F7.layers",{"title":1425,"path":2275,"stem":2276,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fbuilders","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F8.builders",{"title":427,"path":2278,"stem":2279,"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":2281,"stem":2282,"children":2283,"page":108},"\u002Fdocs\u002F5.x\u002Fapi","docs\u002F5.x\u002F4.api",[2284,2336,2439,2530,2582,2643,2653],{"title":438,"titleTemplate":439,"icon":324,"path":2285,"stem":2286,"children":2287,"page":108},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents","docs\u002F5.x\u002F4.api\u002F1.components",[2288,2291,2294,2297,2300,2303,2306,2309,2312,2315,2318,2321,2324,2327,2330,2333],{"title":444,"path":2289,"stem":2290,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fclient-only","docs\u002F5.x\u002F4.api\u002F1.components\u002F1.client-only",{"title":448,"path":2292,"stem":2293,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fdev-only","docs\u002F5.x\u002F4.api\u002F1.components\u002F1.dev-only",{"title":452,"path":2295,"stem":2296,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-client-fallback","docs\u002F5.x\u002F4.api\u002F1.components\u002F1.nuxt-client-fallback",{"title":456,"path":2298,"stem":2299,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-picture","docs\u002F5.x\u002F4.api\u002F1.components\u002F10.nuxt-picture",{"title":460,"path":2301,"stem":2302,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fteleports","docs\u002F5.x\u002F4.api\u002F1.components\u002F11.teleports",{"title":464,"path":2304,"stem":2305,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-route-announcer","docs\u002F5.x\u002F4.api\u002F1.components\u002F12.nuxt-route-announcer",{"title":468,"path":2307,"stem":2308,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-time","docs\u002F5.x\u002F4.api\u002F1.components\u002F13.nuxt-time",{"title":1461,"path":2310,"stem":2311,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-announcer","docs\u002F5.x\u002F4.api\u002F1.components\u002F14.nuxt-announcer",{"title":472,"path":2313,"stem":2314,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-page","docs\u002F5.x\u002F4.api\u002F1.components\u002F2.nuxt-page",{"title":476,"path":2316,"stem":2317,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-layout","docs\u002F5.x\u002F4.api\u002F1.components\u002F3.nuxt-layout",{"title":480,"path":2319,"stem":2320,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-link","docs\u002F5.x\u002F4.api\u002F1.components\u002F4.nuxt-link",{"title":484,"path":2322,"stem":2323,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-loading-indicator","docs\u002F5.x\u002F4.api\u002F1.components\u002F5.nuxt-loading-indicator",{"title":488,"path":2325,"stem":2326,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-error-boundary","docs\u002F5.x\u002F4.api\u002F1.components\u002F6.nuxt-error-boundary",{"title":492,"path":2328,"stem":2329,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-welcome","docs\u002F5.x\u002F4.api\u002F1.components\u002F7.nuxt-welcome",{"title":496,"path":2331,"stem":2332,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-island","docs\u002F5.x\u002F4.api\u002F1.components\u002F8.nuxt-island",{"title":500,"path":2334,"stem":2335,"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":2337,"stem":2338,"children":2339,"page":108},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables","docs\u002F5.x\u002F4.api\u002F2.composables",[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,2418,2421,2424,2427,2430,2433,2436],{"title":1493,"path":2341,"stem":2342,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fcreate-use-async-data","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fcreate-use-async-data",{"title":1497,"path":2344,"stem":2345,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fcreate-use-fetch","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fcreate-use-fetch",{"title":511,"path":2347,"stem":2348,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fon-prehydrate","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fon-prehydrate",{"title":1504,"path":2350,"stem":2351,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-announcer","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-announcer",{"title":515,"path":2353,"stem":2354,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-app-config","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-app-config",{"title":519,"path":2356,"stem":2357,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-async-data","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-async-data",{"title":523,"path":2359,"stem":2360,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-cookie","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-cookie",{"title":527,"path":2362,"stem":2363,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-error","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-error",{"title":531,"path":2365,"stem":2366,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-fetch","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-fetch",{"title":535,"path":2368,"stem":2369,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-head","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-head",{"title":539,"path":2371,"stem":2372,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-head-safe","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-head-safe",{"title":543,"path":2374,"stem":2375,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-hydration","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-hydration",{"title":1532,"path":2377,"stem":2378,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-layout","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-layout",{"title":547,"path":2380,"stem":2381,"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":2383,"stem":2384,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-lazy-fetch","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-lazy-fetch",{"title":555,"path":2386,"stem":2387,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-loading-indicator","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-loading-indicator",{"title":559,"path":2389,"stem":2390,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-nuxt-app","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-nuxt-app",{"title":563,"path":2392,"stem":2393,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-nuxt-data","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-nuxt-data",{"title":567,"path":2395,"stem":2396,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-preview-mode","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-preview-mode",{"title":571,"path":2398,"stem":2399,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-request-event","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-request-event",{"title":575,"path":2401,"stem":2402,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-request-fetch","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-request-fetch",{"title":579,"path":2404,"stem":2405,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-request-header","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-request-header",{"title":583,"path":2407,"stem":2408,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-request-headers","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-request-headers",{"title":587,"path":2410,"stem":2411,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-request-url","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-request-url",{"title":591,"path":2413,"stem":2414,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-response-header","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-response-header",{"title":595,"path":2416,"stem":2417,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-route","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-route",{"title":599,"path":2419,"stem":2420,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-route-announcer","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-route-announcer",{"title":603,"path":2422,"stem":2423,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-router","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-router",{"title":607,"path":2425,"stem":2426,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-runtime-config","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-runtime-config",{"title":611,"path":2428,"stem":2429,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-runtime-hook","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-runtime-hook",{"title":615,"path":2431,"stem":2432,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-seo-meta","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-seo-meta",{"title":619,"path":2434,"stem":2435,"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":2437,"stem":2438,"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":2440,"stem":2441,"children":2442,"page":108},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils","docs\u002F5.x\u002F4.api\u002F3.utils",[2443,2446,2449,2452,2455,2458,2461,2464,2467,2470,2473,2476,2479,2482,2485,2488,2491,2494,2497,2500,2503,2506,2509,2512,2515,2518,2521,2524,2527],{"title":634,"path":2444,"stem":2445,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fdollarfetch","docs\u002F5.x\u002F4.api\u002F3.utils\u002F$fetch",{"title":638,"path":2447,"stem":2448,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fabort-navigation","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fabort-navigation",{"title":642,"path":2450,"stem":2451,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fadd-route-middleware","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fadd-route-middleware",{"title":646,"path":2453,"stem":2454,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fcall-once","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fcall-once",{"title":650,"path":2456,"stem":2457,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fclear-error","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fclear-error",{"title":654,"path":2459,"stem":2460,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fclear-nuxt-data","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fclear-nuxt-data",{"title":658,"path":2462,"stem":2463,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fclear-nuxt-state","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fclear-nuxt-state",{"title":662,"path":2465,"stem":2466,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fcreate-error","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fcreate-error",{"title":666,"path":2468,"stem":2469,"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":2471,"stem":2472,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fdefine-nuxt-component","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fdefine-nuxt-component",{"title":674,"path":2474,"stem":2475,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fdefine-nuxt-plugin","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fdefine-nuxt-plugin",{"title":678,"path":2477,"stem":2478,"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":2480,"stem":2481,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fdefine-page-meta","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fdefine-page-meta",{"title":686,"path":2483,"stem":2484,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fdefine-route-rules","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fdefine-route-rules",{"title":690,"path":2486,"stem":2487,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fnavigate-to","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fnavigate-to",{"title":694,"path":2489,"stem":2490,"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":2492,"stem":2493,"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":2495,"stem":2496,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fon-nuxt-ready","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fon-nuxt-ready",{"title":706,"path":2498,"stem":2499,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fprefetch-components","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fprefetch-components",{"title":710,"path":2501,"stem":2502,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fpreload-components","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fpreload-components",{"title":714,"path":2504,"stem":2505,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fpreload-route-components","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fpreload-route-components",{"title":718,"path":2507,"stem":2508,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fprerender-routes","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fprerender-routes",{"title":722,"path":2510,"stem":2511,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Frefresh-cookie","docs\u002F5.x\u002F4.api\u002F3.utils\u002Frefresh-cookie",{"title":726,"path":2513,"stem":2514,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Frefresh-nuxt-data","docs\u002F5.x\u002F4.api\u002F3.utils\u002Frefresh-nuxt-data",{"title":730,"path":2516,"stem":2517,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Freload-nuxt-app","docs\u002F5.x\u002F4.api\u002F3.utils\u002Freload-nuxt-app",{"title":734,"path":2519,"stem":2520,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fset-page-layout","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fset-page-layout",{"title":738,"path":2522,"stem":2523,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fset-response-status","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fset-response-status",{"title":742,"path":2525,"stem":2526,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fshow-error","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fshow-error",{"title":746,"path":2528,"stem":2529,"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":2531,"stem":2532,"children":2533,"page":108},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands","docs\u002F5.x\u002F4.api\u002F4.commands",[2534,2537,2540,2543,2546,2549,2552,2555,2558,2561,2564,2567,2570,2573,2576,2579],{"title":757,"path":2535,"stem":2536,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fadd","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fadd",{"title":761,"path":2538,"stem":2539,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fanalyze","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fanalyze",{"title":765,"path":2541,"stem":2542,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fbuild","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fbuild",{"title":769,"path":2544,"stem":2545,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fbuild-module","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fbuild-module",{"title":773,"path":2547,"stem":2548,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fcleanup","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fcleanup",{"title":777,"path":2550,"stem":2551,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fdev","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fdev",{"title":781,"path":2553,"stem":2554,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fdevtools","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fdevtools",{"title":785,"path":2556,"stem":2557,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fgenerate","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fgenerate",{"title":789,"path":2559,"stem":2560,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Finfo","docs\u002F5.x\u002F4.api\u002F4.commands\u002Finfo",{"title":793,"path":2562,"stem":2563,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Finit","docs\u002F5.x\u002F4.api\u002F4.commands\u002Finit",{"title":797,"path":2565,"stem":2566,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fmodule","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fmodule",{"title":801,"path":2568,"stem":2569,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fprepare","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fprepare",{"title":805,"path":2571,"stem":2572,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fpreview","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fpreview",{"title":809,"path":2574,"stem":2575,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Ftest","docs\u002F5.x\u002F4.api\u002F4.commands\u002Ftest",{"title":813,"path":2577,"stem":2578,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Ftypecheck","docs\u002F5.x\u002F4.api\u002F4.commands\u002Ftypecheck",{"title":817,"path":2580,"stem":2581,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fupgrade","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fupgrade",{"title":415,"titleTemplate":821,"icon":822,"path":2583,"stem":2584,"children":2585,"page":108},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit","docs\u002F5.x\u002F4.api\u002F5.kit",[2586,2589,2592,2595,2598,2601,2604,2607,2610,2613,2616,2619,2622,2625,2628,2631,2634,2637,2640],{"title":276,"path":2587,"stem":2588,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fmodules","docs\u002F5.x\u002F4.api\u002F5.kit\u002F1.modules",{"title":403,"path":2590,"stem":2591,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fruntime-config","docs\u002F5.x\u002F4.api\u002F5.kit\u002F10.runtime-config",{"title":833,"path":2593,"stem":2594,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Ftemplates","docs\u002F5.x\u002F4.api\u002F5.kit\u002F10.templates",{"title":1752,"path":2596,"stem":2597,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fapp-config","docs\u002F5.x\u002F4.api\u002F5.kit\u002F11.app-config",{"title":837,"path":2599,"stem":2600,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fnitro","docs\u002F5.x\u002F4.api\u002F5.kit\u002F12.nitro",{"title":841,"path":2602,"stem":2603,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fresolving","docs\u002F5.x\u002F4.api\u002F5.kit\u002F13.resolving",{"title":845,"path":2605,"stem":2606,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Flogging","docs\u002F5.x\u002F4.api\u002F5.kit\u002F14.logging",{"title":849,"path":2608,"stem":2609,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fbuilder","docs\u002F5.x\u002F4.api\u002F5.kit\u002F15.builder",{"title":853,"path":2611,"stem":2612,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fexamples","docs\u002F5.x\u002F4.api\u002F5.kit\u002F16.examples",{"title":84,"path":2614,"stem":2615,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Flayers","docs\u002F5.x\u002F4.api\u002F5.kit\u002F17.layers",{"title":860,"path":2617,"stem":2618,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fprogrammatic","docs\u002F5.x\u002F4.api\u002F5.kit\u002F2.programmatic",{"title":864,"path":2620,"stem":2621,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fcompatibility","docs\u002F5.x\u002F4.api\u002F5.kit\u002F3.compatibility",{"title":268,"path":2623,"stem":2624,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fautoimports","docs\u002F5.x\u002F4.api\u002F5.kit\u002F4.autoimports",{"title":438,"path":2626,"stem":2627,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fcomponents","docs\u002F5.x\u002F4.api\u002F5.kit\u002F5.components",{"title":874,"path":2629,"stem":2630,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fcontext","docs\u002F5.x\u002F4.api\u002F5.kit\u002F6.context",{"title":878,"path":2632,"stem":2633,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fpages","docs\u002F5.x\u002F4.api\u002F5.kit\u002F7.pages",{"title":882,"path":2635,"stem":2636,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Flayout","docs\u002F5.x\u002F4.api\u002F5.kit\u002F8.layout",{"title":886,"path":2638,"stem":2639,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fhead","docs\u002F5.x\u002F4.api\u002F5.kit\u002F9.head",{"title":890,"path":2641,"stem":2642,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fplugins","docs\u002F5.x\u002F4.api\u002F5.kit\u002F9.plugins",{"title":894,"titleTemplate":6,"icon":895,"path":2644,"stem":2645,"children":2646,"page":108},"\u002Fdocs\u002F5.x\u002Fapi\u002Fadvanced","docs\u002F5.x\u002F4.api\u002F6.advanced",[2647,2650],{"title":411,"path":2648,"stem":2649,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fadvanced\u002Fhooks","docs\u002F5.x\u002F4.api\u002F6.advanced\u002F1.hooks",{"title":903,"path":2651,"stem":2652,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fadvanced\u002Fimport-meta","docs\u002F5.x\u002F4.api\u002F6.advanced\u002F2.import-meta",{"title":907,"path":2654,"stem":2655,"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":2657,"stem":2658,"children":2659,"page":108},"\u002Fdocs\u002F5.x\u002Fexamples","docs\u002F5.x\u002F4.examples",[2660,2663,2682,2695,2726],{"title":918,"path":2661,"stem":2662,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fhello-world","docs\u002F5.x\u002F4.examples\u002F0.hello-world",{"title":399,"path":2664,"stem":2665,"children":2666,"page":108},"\u002Fdocs\u002F5.x\u002Fexamples\u002Ffeatures","docs\u002F5.x\u002F4.examples\u002F1.features",[2667,2670,2673,2676,2679],{"title":926,"path":2668,"stem":2669,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Ffeatures\u002Fauto-imports","docs\u002F5.x\u002F4.examples\u002F1.features\u002F1.auto-imports",{"title":64,"path":2671,"stem":2672,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Ffeatures\u002Fdata-fetching","docs\u002F5.x\u002F4.examples\u002F1.features\u002F2.data-fetching",{"title":69,"path":2674,"stem":2675,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Ffeatures\u002Fstate-management","docs\u002F5.x\u002F4.examples\u002F1.features\u002F3.state-management",{"title":936,"path":2677,"stem":2678,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Ffeatures\u002Fmeta-tags","docs\u002F5.x\u002F4.examples\u002F1.features\u002F4.meta-tags",{"title":940,"path":2680,"stem":2681,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Ffeatures\u002Flayouts","docs\u002F5.x\u002F4.examples\u002F1.features\u002F5.layouts",{"title":49,"path":2683,"stem":2684,"children":2685,"page":108},"\u002Fdocs\u002F5.x\u002Fexamples\u002Frouting","docs\u002F5.x\u002F4.examples\u002F2.routing",[2686,2689,2692],{"title":948,"path":2687,"stem":2688,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Frouting\u002Fmiddleware","docs\u002F5.x\u002F4.examples\u002F2.routing\u002Fmiddleware",{"title":878,"path":2690,"stem":2691,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Frouting\u002Fpages","docs\u002F5.x\u002F4.examples\u002F2.routing\u002Fpages",{"title":955,"path":2693,"stem":2694,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Frouting\u002Funiversal-router","docs\u002F5.x\u002F4.examples\u002F2.routing\u002Funiversal-router",{"title":894,"path":2696,"stem":2697,"children":2698,"page":108},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced","docs\u002F5.x\u002F4.examples\u002F4.advanced",[2699,2702,2705,2708,2711,2714,2717,2720,2723],{"title":84,"path":2700,"stem":2701,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Fconfig-extends","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Fconfig-extends",{"title":74,"path":2703,"stem":2704,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Ferror-handling","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Ferror-handling",{"title":969,"path":2706,"stem":2707,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Fjsx","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Fjsx",{"title":973,"path":2709,"stem":2710,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Flocale","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Flocale",{"title":977,"path":2712,"stem":2713,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Fmodule-extend-pages","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Fmodule-extend-pages",{"title":981,"path":2715,"stem":2716,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Fteleport","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Fteleport",{"title":99,"path":2718,"stem":2719,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Ftesting","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Ftesting",{"title":523,"path":2721,"stem":2722,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Fuse-cookie","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Fuse-cookie",{"title":991,"path":2724,"stem":2725,"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":2727,"stem":2728,"children":2729,"page":108},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fexperimental","docs\u002F5.x\u002F4.examples\u002F7.experimental",[2730],{"title":1000,"path":2731,"stem":2732,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fexperimental\u002Fwasm","docs\u002F5.x\u002F4.examples\u002F7.experimental\u002Fwasm",{"title":1004,"titleTemplate":1005,"icon":1006,"path":2734,"stem":2735,"children":2736,"page":108},"\u002Fdocs\u002F5.x\u002Fcommunity","docs\u002F5.x\u002F5.community",[2737,2740,2743,2746,2749,2752],{"title":1011,"path":2738,"stem":2739,"titleTemplate":6,"icon":1014},"\u002Fdocs\u002F5.x\u002Fcommunity\u002Fgetting-help","docs\u002F5.x\u002F5.community\u002F2.getting-help",{"title":1016,"path":2741,"stem":2742,"titleTemplate":6,"icon":1019},"\u002Fdocs\u002F5.x\u002Fcommunity\u002Freporting-bugs","docs\u002F5.x\u002F5.community\u002F3.reporting-bugs",{"title":1021,"path":2744,"stem":2745,"titleTemplate":6,"icon":1024},"\u002Fdocs\u002F5.x\u002Fcommunity\u002Fcontribution","docs\u002F5.x\u002F5.community\u002F4.contribution",{"title":1026,"path":2747,"stem":2748,"titleTemplate":6,"icon":1029},"\u002Fdocs\u002F5.x\u002Fcommunity\u002Fframework-contribution","docs\u002F5.x\u002F5.community\u002F5.framework-contribution",{"title":1031,"path":2750,"stem":2751,"titleTemplate":6,"icon":1034},"\u002Fdocs\u002F5.x\u002Fcommunity\u002Froadmap","docs\u002F5.x\u002F5.community\u002F6.roadmap",{"title":1036,"path":2753,"stem":2754,"titleTemplate":6,"icon":1039},"\u002Fdocs\u002F5.x\u002Fcommunity\u002Fchangelog","docs\u002F5.x\u002F5.community\u002F7.changelog",{"title":1041,"titleTemplate":1042,"icon":1043,"path":2756,"stem":2757,"children":2758,"page":108},"\u002Fdocs\u002F5.x\u002Fbridge","docs\u002F5.x\u002F6.bridge",[2759,2762,2765,2768,2771,2774,2777,2780,2783,2786],{"title":1048,"path":2760,"stem":2761,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Foverview","docs\u002F5.x\u002F6.bridge\u002F1.overview",{"title":29,"path":2763,"stem":2764,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fconfiguration","docs\u002F5.x\u002F6.bridge\u002F10.configuration",{"title":280,"path":2766,"stem":2767,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Ftypescript","docs\u002F5.x\u002F6.bridge\u002F2.typescript",{"title":1058,"path":2769,"stem":2770,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fbridge-composition-api","docs\u002F5.x\u002F6.bridge\u002F3.bridge-composition-api",{"title":1062,"path":2772,"stem":2773,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fplugins-and-middleware","docs\u002F5.x\u002F6.bridge\u002F4.plugins-and-middleware",{"title":1066,"path":2775,"stem":2776,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fnuxt3-compatible-api","docs\u002F5.x\u002F6.bridge\u002F5.nuxt3-compatible-api",{"title":936,"path":2778,"stem":2779,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fmeta","docs\u002F5.x\u002F6.bridge\u002F6.meta",{"title":403,"path":2781,"stem":2782,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fruntime-config","docs\u002F5.x\u002F6.bridge\u002F7.runtime-config",{"title":837,"path":2784,"stem":2785,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fnitro","docs\u002F5.x\u002F6.bridge\u002F8.nitro",{"title":1079,"path":2787,"stem":2788,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fvite","docs\u002F5.x\u002F6.bridge\u002F9.vite",{"title":1083,"titleTemplate":1084,"icon":107,"path":2790,"stem":2791,"children":2792,"page":108},"\u002Fdocs\u002F5.x\u002Fmigration","docs\u002F5.x\u002F7.migration",[2793,2796,2799,2802,2805,2808,2811,2814,2817,2820,2823],{"title":1048,"path":2794,"stem":2795,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Foverview","docs\u002F5.x\u002F7.migration\u002F1.overview",{"title":1092,"path":2797,"stem":2798,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fbundling","docs\u002F5.x\u002F7.migration\u002F10.bundling",{"title":79,"path":2800,"stem":2801,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fserver","docs\u002F5.x\u002F7.migration\u002F11.server",{"title":29,"path":2803,"stem":2804,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fconfiguration","docs\u002F5.x\u002F7.migration\u002F2.configuration",{"title":276,"path":2806,"stem":2807,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fmodule-authors","docs\u002F5.x\u002F7.migration\u002F20.module-authors",{"title":926,"path":2809,"stem":2810,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fauto-imports","docs\u002F5.x\u002F7.migration\u002F3.auto-imports",{"title":936,"path":2812,"stem":2813,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fmeta","docs\u002F5.x\u002F7.migration\u002F4.meta",{"title":1062,"path":2815,"stem":2816,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fplugins-and-middleware","docs\u002F5.x\u002F7.migration\u002F5.plugins-and-middleware",{"title":1114,"path":2818,"stem":2819,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fpages-and-layouts","docs\u002F5.x\u002F7.migration\u002F6.pages-and-layouts",{"title":1118,"path":2821,"stem":2822,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fcomponent-options","docs\u002F5.x\u002F7.migration\u002F7.component-options",{"title":403,"path":2824,"stem":2825,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fruntime-config","docs\u002F5.x\u002F7.migration\u002F8.runtime-config",{"title":2827,"icon":2828,"path":2829,"stem":2830,"children":2831,"page":108},"Blog","i-lucide-newspaper","\u002Fblog","blog",[2832,2836,2840,2844,2848,2852,2856,2860,2864,2868,2872,2876,2880,2884,2888,2892,2896,2900,2904,2908,2912,2916,2920,2924,2928,2932,2936,2940,2944,2948,2952,2956,2960,2964,2968,2972,2976,2980,2984,2988,2992,2996,3000,3004,3008,3012,3016,3020,3024,3028],{"title":2833,"path":2834,"stem":2835},"Announcing 3.0","\u002Fblog\u002Fv3","blog\u002F1.v3",{"title":2837,"path":2838,"stem":2839},"Nuxt 3.3","\u002Fblog\u002Fv3-3","blog\u002F10.v3-3",{"title":2841,"path":2842,"stem":2843},"Nuxt 3.4","\u002Fblog\u002Fv3-4","blog\u002F11.v3-4",{"title":2845,"path":2846,"stem":2847},"Nuxt 3.5","\u002Fblog\u002Fv3-5","blog\u002F12.v3-5",{"title":2849,"path":2850,"stem":2851},"Nuxt 3.6","\u002Fblog\u002Fv3-6","blog\u002F13.v3-6",{"title":2853,"path":2854,"stem":2855},"Nuxt on the Edge","\u002Fblog\u002Fnuxt-on-the-edge","blog\u002F14.nuxt-on-the-edge",{"title":2857,"path":2858,"stem":2859},"Nuxt 3.7","\u002Fblog\u002Fv3-7","blog\u002F15.v3-7",{"title":2861,"path":2862,"stem":2863},"A New Website","\u002Fblog\u002Fnew-website","blog\u002F16.new-website",{"title":2865,"path":2866,"stem":2867},"Nuxt 3.8","\u002Fblog\u002Fv3-8","blog\u002F17.v3-8",{"title":2869,"path":2870,"stem":2871},"Nuxt DevTools v1.0","\u002Fblog\u002Fnuxt-devtools-v1-0","blog\u002F18.nuxt-devtools-v1-0",{"title":2873,"path":2874,"stem":2875},"Nuxt 3.9","\u002Fblog\u002Fv3-9","blog\u002F19.v3-9",{"title":2877,"path":2878,"stem":2879},"Nuxt: A vision for 2023","\u002Fblog\u002Fvision-2023","blog\u002F2.vision-2023",{"title":2881,"path":2882,"stem":2883},"Nuxt 3.10","\u002Fblog\u002Fv3-10","blog\u002F20.v3-10",{"title":2885,"path":2886,"stem":2887},"The Evolution of Shiki v1.0","\u002Fblog\u002Fshiki-v1","blog\u002F21.shiki-v1",{"title":2889,"path":2890,"stem":2891},"Nuxt 3.11","\u002Fblog\u002Fv3-11","blog\u002F22.v3-11",{"title":2893,"path":2894,"stem":2895},"Nuxt: Looking forward","\u002Fblog\u002Flooking-forward-2024","blog\u002F23.looking-forward-2024",{"title":2897,"path":2898,"stem":2899},"Refreshed Nuxt ESLint Integrations","\u002Fblog\u002Feslint-module","blog\u002F24.eslint-module",{"title":2901,"path":2902,"stem":2903},"Nuxt 3.12","\u002Fblog\u002Fv3-12","blog\u002F25.v3-12",{"title":2905,"path":2906,"stem":2907},"Introducing Nuxt Scripts","\u002Fblog\u002Fnuxt-scripts","blog\u002F26.nuxt-scripts",{"title":2909,"path":2910,"stem":2911},"Nuxt 3.13","\u002Fblog\u002Fv3-13","blog\u002F27.v3-13",{"title":2913,"path":2914,"stem":2915},"Nuxt 3.14","\u002Fblog\u002Fv3-14","blog\u002F27.v3-14",{"title":2917,"path":2918,"stem":2919},"Introducing Nuxt Icon v1","\u002Fblog\u002Fnuxt-icon-v1-0","blog\u002F29.nuxt-icon-v1-0",{"title":2921,"path":2922,"stem":2923},"Introducing Nuxt DevTools","\u002Fblog\u002Fintroducing-nuxt-devtools","blog\u002F3.introducing-nuxt-devtools",{"title":2925,"path":2926,"stem":2927},"Announcing Nuxt 3 Release Candidate","\u002Fblog\u002Fnuxt3-rc","blog\u002F3.nuxt3-rc",{"title":2929,"path":2930,"stem":2931},"Nuxt 3.15","\u002Fblog\u002Fv3-15","blog\u002F30.v3-15",{"title":2933,"path":2934,"stem":2935},"Nuxt 3.16","\u002Fblog\u002Fv3-16","blog\u002F31.v3-16",{"title":2937,"path":2938,"stem":2939},"Nuxt UI v3","\u002Fblog\u002Fnuxt-ui-v3","blog\u002F32.nuxt-ui-v3",{"title":2941,"path":2942,"stem":2943},"Nuxt 3.17","\u002Fblog\u002Fv3-17","blog\u002F33.v3-17",{"title":2945,"path":2946,"stem":2947},"Roadmap to v4","\u002Fblog\u002Froadmap-v4","blog\u002F34.roadmap-v4",{"title":2949,"path":2950,"stem":2951},"Building a Privacy-First Feedback Widget","\u002Fblog\u002Fbuilding-a-feedback-widget","blog\u002F35.building-a-feedback-widget",{"title":2953,"path":2954,"stem":2955},"Announcing Nuxt 4.0","\u002Fblog\u002Fv4","blog\u002F36.v4",{"title":2957,"path":2958,"stem":2959},"Nuxt 3.18","\u002Fblog\u002Fv3-18","blog\u002F37.v3-18",{"title":2961,"path":2962,"stem":2963},"Nuxt 4.1","\u002Fblog\u002Fv4-1","blog\u002F38.v4-1",{"title":2965,"path":2966,"stem":2967},"Nuxt UI v4","\u002Fblog\u002Fnuxt-ui-v4","blog\u002F39.nuxt-ui-v4",{"title":2969,"path":2970,"stem":2971},"Nuxt 2 End-of-Life (EOL)","\u002Fblog\u002Fnuxt2-eol","blog\u002F4.nuxt2-eol",{"title":2973,"path":2974,"stem":2975},"Introducing Nuxt 3 Beta","\u002Fblog\u002Fnuxt3-beta","blog\u002F4.nuxt3-beta",{"title":2977,"path":2978,"stem":2979},"Building an MCP Server for Nuxt","\u002Fblog\u002Fbuilding-nuxt-mcp","blog\u002F40.building-nuxt-mcp",{"title":2981,"path":2982,"stem":2983},"Nuxt 4.2","\u002Fblog\u002Fv4-2","blog\u002F40.v4-2",{"title":2985,"path":2986,"stem":2987},"Nuxt Image v2","\u002Fblog\u002Fnuxt-image-v2","blog\u002F41.nuxt-image-v2",{"title":2989,"path":2990,"stem":2991},"Nuxt 4.3","\u002Fblog\u002Fv4-3","blog\u002F42.v4-3",{"title":2993,"path":2994,"stem":2995},"Nuxt 4.4","\u002Fblog\u002Fv4-4","blog\u002F43.v4-4",{"title":2997,"path":2998,"stem":2999},"Introducing the Nuxt Agent","\u002Fblog\u002Fintroducing-nuxt-agent","blog\u002F44.introducing-nuxt-agent",{"title":3001,"path":3002,"stem":3003},"Meet Nuxi","\u002Fblog\u002Fmeet-nuxi","blog\u002F45.meet-nuxi",{"title":3005,"path":3006,"stem":3007},"Nuxt 4.5","\u002Fblog\u002Fv4-5","blog\u002F46.v4-5",{"title":3009,"path":3010,"stem":3011},"Nuxt Security Patch Releases","\u002Fblog\u002Fv4-5-security","blog\u002F47.v4-5-security",{"title":3013,"path":3014,"stem":3015},"Going Full Static","\u002Fblog\u002Fgoing-full-static","blog\u002F5.going-full-static",{"title":3017,"path":3018,"stem":3019},"Introducing Smart Prefetching","\u002Fblog\u002Fintroducing-smart-prefetching","blog\u002F6.introducing-smart-prefetching",{"title":3021,"path":3022,"stem":3023},"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":3025,"path":3026,"stem":3027},"Nuxt 2 Static Improvements","\u002Fblog\u002Fnuxt-static-improvements","blog\u002F8.nuxt-static-improvements",{"title":3029,"path":3030,"stem":3031},"Nuxt 2: From Terminal to Browser","\u002Fblog\u002Fnuxtjs-from-terminal-to-browser","blog\u002F9.nuxtjs-from-terminal-to-browser",{"name":3033,"description":3034,"repo":3035,"npm":3036,"icon":3037,"github":3038,"website":3038,"learn_more":3039,"category":3040,"type":3041,"maintainers":3042,"compatibility":3048,"generatedAt":3051,"contributors":3052,"stats":3080,"readme":3088},"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",[3043],{"name":3044,"github":3045,"twitter":3046,"bluesky":3047},"rrd","rrd108","radharadhya","rrd108.bsky.social",{"nuxt":3049,"requires":3050},">=3.0.0",{},"2026-08-07T06:20:19.356Z",[3053,3056,3060,3064,3068,3071,3074,3077],{"id":3054,"username":3045,"contributions":3055},3147489,282,{"id":3057,"username":3058,"contributions":3059},31929574,"ravesandstorm",5,{"id":3061,"username":3062,"contributions":3063},28706372,"danielroe",2,{"id":3065,"username":3066,"contributions":3067},20068593,"kschnekenburger",1,{"id":3069,"username":3070,"contributions":3067},32599710,"simonmaass",{"id":3072,"username":3073,"contributions":3067},125942725,"nd2024",{"id":3075,"username":3076,"contributions":3067},10197526,"chachew",{"id":3078,"username":3079,"contributions":3067},55457896,"LeeKrane",{"version":3081,"downloads":3082,"stars":3083,"watchers":3083,"forks":3084,"defaultBranch":3085,"publishedAt":3086,"createdAt":3087},"1.0.0",11818,56,8,"main",1782038138831,1711731542236,{"data":3089,"body":3091,"toc":10702},{"title":3090,"description":3039},"Nuxt API Shield",{"type":3092,"children":3093},"root",[3094,3101,3146,3151,3177,3183,3434,3440,3454,3563,3588,3593,4008,4026,4447,4461,4490,4595,4614,4626,4790,4795,5004,5015,5081,5300,5305,5311,5330,5337,5350,5363,6032,6056,6062,6091,6102,7327,7367,7394,7400,7406,7432,7574,7593,7796,7810,7829,7846,7864,7869,7875,7895,7901,7927,8134,8139,8149,8155,8167,8201,8207,8219,8369,8411,8416,8446,8467,8473,8478,8490,8501,8608,8616,9030,9041,9046,9097,9103,9120,9148,9152,9158,9170,9648,9654,9667,9673,9764,9770,9799,9805,9843,9849,9868,9873,9878,10170,10176,10222,10228,10234,10244,10340,10346,10437,10450,10461,10481,10487,10696],{"type":3095,"tag":3096,"props":3097,"children":3098},"element","h1",{"id":3036},[3099],{"type":3100,"value":3090},"text",{"type":3095,"tag":3102,"props":3103,"children":3104},"p",{},[3105,3118,3127,3136],{"type":3095,"tag":3106,"props":3107,"children":3111},"a",{"href":3108,"rel":3109},"https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fnuxt-api-shield",[3110],"nofollow",[3112],{"type":3095,"tag":3113,"props":3114,"children":3117},"img",{"alt":3115,"src":3116},"npm version","https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002Fnuxt-api-shield\u002Flatest.svg?style=flat&colorA=020420&colorB=00DC82",[],{"type":3095,"tag":3106,"props":3119,"children":3121},{"href":3108,"rel":3120},[3110],[3122],{"type":3095,"tag":3113,"props":3123,"children":3126},{"alt":3124,"src":3125},"npm downloads","https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fdm\u002Fnuxt-api-shield.svg?style=flat&colorA=020420&colorB=00DC82",[],{"type":3095,"tag":3106,"props":3128,"children":3130},{"href":3108,"rel":3129},[3110],[3131],{"type":3095,"tag":3113,"props":3132,"children":3135},{"alt":3133,"src":3134},"License","https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fl\u002Fnuxt-api-shield.svg?style=flat&colorA=020420&colorB=00DC82",[],{"type":3095,"tag":3106,"props":3137,"children":3140},{"href":3138,"rel":3139},"https:\u002F\u002Fnuxt.com",[3110],[3141],{"type":3095,"tag":3113,"props":3142,"children":3145},{"alt":3143,"src":3144},"Nuxt","https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FNuxt-020420?logo=nuxt.js",[],{"type":3095,"tag":3102,"props":3147,"children":3148},{},[3149],{"type":3100,"value":3150},"This Nuxt module implements a rate limiting middleware to protect your API endpoints from excessive requests.",{"type":3095,"tag":3152,"props":3153,"children":3154},"ul",{},[3155],{"type":3095,"tag":3156,"props":3157,"children":3158},"li",{},[3159,3165],{"type":3095,"tag":3106,"props":3160,"children":3162},{"href":3161},"\u002FCHANGELOG.md",[3163],{"type":3100,"value":3164},"✨  Release Notes",{"type":3095,"tag":3152,"props":3166,"children":3167},{},[3168],{"type":3095,"tag":3156,"props":3169,"children":3170},{},[3171],{"type":3095,"tag":3106,"props":3172,"children":3174},{"href":3038,"rel":3173},[3110],[3175],{"type":3100,"value":3176},"📖  Documentation",{"type":3095,"tag":3178,"props":3179,"children":3181},"h2",{"id":3180},"features",[3182],{"type":3100,"value":399},{"type":3095,"tag":3152,"props":3184,"children":3185},{},[3186,3208,3265,3286,3307,3328,3360,3394],{"type":3095,"tag":3156,"props":3187,"children":3188},{},[3189,3195],{"type":3095,"tag":3190,"props":3191,"children":3192},"strong",{},[3193],{"type":3100,"value":3194},"IP-Based Rate limiting and Brute Force Protection",{"type":3095,"tag":3152,"props":3196,"children":3197},{},[3198,3203],{"type":3095,"tag":3156,"props":3199,"children":3200},{},[3201],{"type":3100,"value":3202},"Tracks and enforces rate limits for individual IP addresses.",{"type":3095,"tag":3156,"props":3204,"children":3205},{},[3206],{"type":3100,"value":3207},"Prevents malicious actors or excessive requests from a single source from overwhelming your API.",{"type":3095,"tag":3156,"props":3209,"children":3210},{},[3211,3216],{"type":3095,"tag":3190,"props":3212,"children":3213},{},[3214],{"type":3100,"value":3215},"Customizable Rate Limits",{"type":3095,"tag":3152,"props":3217,"children":3218},{},[3219,3224,3236,3241,3246,3260],{"type":3095,"tag":3156,"props":3220,"children":3221},{},[3222],{"type":3100,"value":3223},"Configure maximum request count, duration within which the limit applies, and a ban period for exceeding the limit.",{"type":3095,"tag":3156,"props":3225,"children":3226},{},[3227,3229,3234],{"type":3100,"value":3228},"If the request limit is exceeded, the user is banned for the configured ban period. During the ban period, ",{"type":3095,"tag":3190,"props":3230,"children":3231},{},[3232],{"type":3100,"value":3233},"all requests are blocked with a 429 error",{"type":3100,"value":3235},", regardless of the rate limit window.",{"type":3095,"tag":3156,"props":3237,"children":3238},{},[3239],{"type":3100,"value":3240},"Add a delay to responses when a user is banned to discourage further abuse (optional).",{"type":3095,"tag":3156,"props":3242,"children":3243},{},[3244],{"type":3100,"value":3245},"Customize the error message for banned users.",{"type":3095,"tag":3156,"props":3247,"children":3248},{},[3249,3251,3258],{"type":3100,"value":3250},"Optionally include the ",{"type":3095,"tag":3252,"props":3253,"children":3255},"code",{"className":3254},[],[3256],{"type":3100,"value":3257},"Retry-After",{"type":3100,"value":3259}," header in responses when a user is banned.",{"type":3095,"tag":3156,"props":3261,"children":3262},{},[3263],{"type":3100,"value":3264},"Tailor the rate-limiting behavior to align with your API's specific needs and usage patterns.",{"type":3095,"tag":3156,"props":3266,"children":3267},{},[3268,3273],{"type":3095,"tag":3190,"props":3269,"children":3270},{},[3271],{"type":3100,"value":3272},"Event-Driven Handling",{"type":3095,"tag":3152,"props":3274,"children":3275},{},[3276,3281],{"type":3095,"tag":3156,"props":3277,"children":3278},{},[3279],{"type":3100,"value":3280},"Intercepts incoming API requests efficiently using Nuxt's event system.",{"type":3095,"tag":3156,"props":3282,"children":3283},{},[3284],{"type":3100,"value":3285},"Ensures seamless integration with your Nuxt application's request lifecycle.",{"type":3095,"tag":3156,"props":3287,"children":3288},{},[3289,3294],{"type":3095,"tag":3190,"props":3290,"children":3291},{},[3292],{"type":3100,"value":3293},"Flexible Storage",{"type":3095,"tag":3152,"props":3295,"children":3296},{},[3297,3302],{"type":3095,"tag":3156,"props":3298,"children":3299},{},[3300],{"type":3100,"value":3301},"Utilizes Nuxt's unstorage abstraction for versatile storage options.",{"type":3095,"tag":3156,"props":3303,"children":3304},{},[3305],{"type":3100,"value":3306},"Store rate-limiting data in various storage providers (filesystem, memory, databases, etc.) based on your project's requirements.",{"type":3095,"tag":3156,"props":3308,"children":3309},{},[3310,3315],{"type":3095,"tag":3190,"props":3311,"children":3312},{},[3313],{"type":3100,"value":3314},"Configurable with Runtime Config",{"type":3095,"tag":3152,"props":3316,"children":3317},{},[3318,3323],{"type":3095,"tag":3156,"props":3319,"children":3320},{},[3321],{"type":3100,"value":3322},"Easily adjust rate-limiting parameters without code changes.",{"type":3095,"tag":3156,"props":3324,"children":3325},{},[3326],{"type":3100,"value":3327},"Adapt to dynamic needs and maintain control over rate-limiting behavior through Nuxt's runtime configuration.",{"type":3095,"tag":3156,"props":3329,"children":3330},{},[3331,3336],{"type":3095,"tag":3190,"props":3332,"children":3333},{},[3334],{"type":3100,"value":3335},"Bundled cleanup tasks",{"type":3095,"tag":3152,"props":3337,"children":3338},{},[3339],{"type":3095,"tag":3156,"props":3340,"children":3341},{},[3342,3344,3350,3352,3358],{"type":3100,"value":3343},"Registers Nitro tasks ",{"type":3095,"tag":3252,"props":3345,"children":3347},{"className":3346},[],[3348],{"type":3100,"value":3349},"shield:cleanBans",{"type":3100,"value":3351}," and ",{"type":3095,"tag":3252,"props":3353,"children":3355},{"className":3354},[],[3356],{"type":3100,"value":3357},"shield:cleanIpData",{"type":3100,"value":3359}," so you can schedule maintenance without adding task files (see setup step 4).",{"type":3095,"tag":3156,"props":3361,"children":3362},{},[3363,3368],{"type":3095,"tag":3190,"props":3364,"children":3365},{},[3366],{"type":3100,"value":3367},"Clear Error Handling",{"type":3095,"tag":3152,"props":3369,"children":3370},{},[3371,3376,3389],{"type":3095,"tag":3156,"props":3372,"children":3373},{},[3374],{"type":3100,"value":3375},"Returns a standardized 429 \"Too Many Requests\" error response when rate limits are exceeded or when a user is banned.",{"type":3095,"tag":3156,"props":3377,"children":3378},{},[3379,3381,3387],{"type":3100,"value":3380},"The 429 body is JSON (",{"type":3095,"tag":3252,"props":3382,"children":3384},{"className":3383},[],[3385],{"type":3100,"value":3386},"{ error, retryAfter }",{"type":3100,"value":3388},") for predictable client-side handling.",{"type":3095,"tag":3156,"props":3390,"children":3391},{},[3392],{"type":3100,"value":3393},"Facilitates proper error handling in client-side applications for a smooth user experience.",{"type":3095,"tag":3156,"props":3395,"children":3396},{},[3397,3402],{"type":3095,"tag":3190,"props":3398,"children":3399},{},[3400],{"type":3100,"value":3401},"Standard Rate-Limit Headers",{"type":3095,"tag":3152,"props":3403,"children":3404},{},[3405],{"type":3095,"tag":3156,"props":3406,"children":3407},{},[3408,3410,3416,3418,3424,3426,3432],{"type":3100,"value":3409},"Every response includes ",{"type":3095,"tag":3252,"props":3411,"children":3413},{"className":3412},[],[3414],{"type":3100,"value":3415},"X-RateLimit-Limit",{"type":3100,"value":3417},", ",{"type":3095,"tag":3252,"props":3419,"children":3421},{"className":3420},[],[3422],{"type":3100,"value":3423},"X-RateLimit-Remaining",{"type":3100,"value":3425},", and ",{"type":3095,"tag":3252,"props":3427,"children":3429},{"className":3428},[],[3430],{"type":3100,"value":3431},"X-RateLimit-Reset",{"type":3100,"value":3433}," headers so clients and CDNs can track usage without parsing response bodies.",{"type":3095,"tag":3178,"props":3435,"children":3437},{"id":3436},"quick-setup",[3438],{"type":3100,"value":3439},"Quick Setup",{"type":3095,"tag":3441,"props":3442,"children":3444},"h3",{"id":3443},"_1-add-nuxt-api-shield-dependency-to-your-project",[3445,3447,3452],{"type":3100,"value":3446},"1. Add ",{"type":3095,"tag":3252,"props":3448,"children":3450},{"className":3449},[],[3451],{"type":3100,"value":3036},{"type":3100,"value":3453}," dependency to your project",{"type":3095,"tag":3455,"props":3456,"children":3460},"pre",{"className":3457,"code":3458,"language":3459,"meta":3039,"style":3039},"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",[3461],{"type":3095,"tag":3252,"props":3462,"children":3463},{"__ignoreMap":3039},[3464,3475,3495,3504,3513,3529,3537,3546],{"type":3095,"tag":3465,"props":3466,"children":3468},"span",{"class":3467,"line":3067},"line",[3469],{"type":3095,"tag":3465,"props":3470,"children":3472},{"style":3471},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#90A4AE;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[3473],{"type":3100,"value":3474},"# Using pnpm\n",{"type":3095,"tag":3465,"props":3476,"children":3477},{"class":3467,"line":3063},[3478,3484,3490],{"type":3095,"tag":3465,"props":3479,"children":3481},{"style":3480},"--shiki-light:#E2931D;--shiki-default:#E2931D;--shiki-dark:#FFCB6B",[3482],{"type":3100,"value":3483},"pnpm",{"type":3095,"tag":3465,"props":3485,"children":3487},{"style":3486},"--shiki-light:#91B859;--shiki-default:#91B859;--shiki-dark:#C3E88D",[3488],{"type":3100,"value":3489}," add",{"type":3095,"tag":3465,"props":3491,"children":3492},{"style":3486},[3493],{"type":3100,"value":3494}," nuxt-api-shield\n",{"type":3095,"tag":3465,"props":3496,"children":3498},{"class":3467,"line":3497},3,[3499],{"type":3095,"tag":3465,"props":3500,"children":3501},{"emptyLinePlaceholder":1200},[3502],{"type":3100,"value":3503},"\n",{"type":3095,"tag":3465,"props":3505,"children":3507},{"class":3467,"line":3506},4,[3508],{"type":3095,"tag":3465,"props":3509,"children":3510},{"style":3471},[3511],{"type":3100,"value":3512},"# Using yarn\n",{"type":3095,"tag":3465,"props":3514,"children":3515},{"class":3467,"line":3059},[3516,3521,3525],{"type":3095,"tag":3465,"props":3517,"children":3518},{"style":3480},[3519],{"type":3100,"value":3520},"yarn",{"type":3095,"tag":3465,"props":3522,"children":3523},{"style":3486},[3524],{"type":3100,"value":3489},{"type":3095,"tag":3465,"props":3526,"children":3527},{"style":3486},[3528],{"type":3100,"value":3494},{"type":3095,"tag":3465,"props":3530,"children":3532},{"class":3467,"line":3531},6,[3533],{"type":3095,"tag":3465,"props":3534,"children":3535},{"emptyLinePlaceholder":1200},[3536],{"type":3100,"value":3503},{"type":3095,"tag":3465,"props":3538,"children":3540},{"class":3467,"line":3539},7,[3541],{"type":3095,"tag":3465,"props":3542,"children":3543},{"style":3471},[3544],{"type":3100,"value":3545},"# Using npm\n",{"type":3095,"tag":3465,"props":3547,"children":3548},{"class":3467,"line":3084},[3549,3554,3559],{"type":3095,"tag":3465,"props":3550,"children":3551},{"style":3480},[3552],{"type":3100,"value":3553},"npm",{"type":3095,"tag":3465,"props":3555,"children":3556},{"style":3486},[3557],{"type":3100,"value":3558}," install",{"type":3095,"tag":3465,"props":3560,"children":3561},{"style":3486},[3562],{"type":3100,"value":3494},{"type":3095,"tag":3441,"props":3564,"children":3566},{"id":3565},"_2-add-nuxt-api-shield-to-the-modules-section-of-nuxtconfigts",[3567,3569,3574,3576,3581,3583],{"type":3100,"value":3568},"2. Add ",{"type":3095,"tag":3252,"props":3570,"children":3572},{"className":3571},[],[3573],{"type":3100,"value":3036},{"type":3100,"value":3575}," to the ",{"type":3095,"tag":3252,"props":3577,"children":3579},{"className":3578},[],[3580],{"type":3100,"value":162},{"type":3100,"value":3582}," section of ",{"type":3095,"tag":3252,"props":3584,"children":3586},{"className":3585},[],[3587],{"type":3100,"value":233},{"type":3095,"tag":3102,"props":3589,"children":3590},{},[3591],{"type":3100,"value":3592},"You should add only the values you want to use differently from the default values.",{"type":3095,"tag":3455,"props":3594,"children":3598},{"className":3595,"code":3596,"language":3597,"meta":3039,"style":3039},"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",[3599],{"type":3095,"tag":3252,"props":3600,"children":3601},{"__ignoreMap":3039},[3602,3634,3676,3693,3701,3709,3717,3725,3733,3742,3751,3760,3769,3778,3787,3796,3805,3813,3822,3831,3845,3873,3881,3890,3918,3935,3944,3972,3980,3989],{"type":3095,"tag":3465,"props":3603,"children":3604},{"class":3467,"line":3067},[3605,3611,3616,3622,3628],{"type":3095,"tag":3465,"props":3606,"children":3608},{"style":3607},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#39ADB5;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[3609],{"type":3100,"value":3610},"export",{"type":3095,"tag":3465,"props":3612,"children":3613},{"style":3607},[3614],{"type":3100,"value":3615}," default",{"type":3095,"tag":3465,"props":3617,"children":3619},{"style":3618},"--shiki-light:#6182B8;--shiki-default:#6182B8;--shiki-dark:#82AAFF",[3620],{"type":3100,"value":3621}," defineNuxtConfig",{"type":3095,"tag":3465,"props":3623,"children":3625},{"style":3624},"--shiki-light:#90A4AE;--shiki-default:#90A4AE;--shiki-dark:#BABED8",[3626],{"type":3100,"value":3627},"(",{"type":3095,"tag":3465,"props":3629,"children":3631},{"style":3630},"--shiki-light:#39ADB5;--shiki-default:#39ADB5;--shiki-dark:#89DDFF",[3632],{"type":3100,"value":3633},"{\n",{"type":3095,"tag":3465,"props":3635,"children":3636},{"class":3467,"line":3063},[3637,3643,3648,3653,3658,3662,3666,3671],{"type":3095,"tag":3465,"props":3638,"children":3640},{"style":3639},"--shiki-light:#E53935;--shiki-default:#E53935;--shiki-dark:#F07178",[3641],{"type":3100,"value":3642},"  modules",{"type":3095,"tag":3465,"props":3644,"children":3645},{"style":3630},[3646],{"type":3100,"value":3647},":",{"type":3095,"tag":3465,"props":3649,"children":3650},{"style":3624},[3651],{"type":3100,"value":3652}," [",{"type":3095,"tag":3465,"props":3654,"children":3655},{"style":3630},[3656],{"type":3100,"value":3657},"\"",{"type":3095,"tag":3465,"props":3659,"children":3660},{"style":3486},[3661],{"type":3100,"value":3036},{"type":3095,"tag":3465,"props":3663,"children":3664},{"style":3630},[3665],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":3667,"children":3668},{"style":3624},[3669],{"type":3100,"value":3670},"]",{"type":3095,"tag":3465,"props":3672,"children":3673},{"style":3630},[3674],{"type":3100,"value":3675},",\n",{"type":3095,"tag":3465,"props":3677,"children":3678},{"class":3467,"line":3497},[3679,3684,3688],{"type":3095,"tag":3465,"props":3680,"children":3681},{"style":3639},[3682],{"type":3100,"value":3683},"  nuxtApiShield",{"type":3095,"tag":3465,"props":3685,"children":3686},{"style":3630},[3687],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":3689,"children":3690},{"style":3630},[3691],{"type":3100,"value":3692}," {\n",{"type":3095,"tag":3465,"props":3694,"children":3695},{"class":3467,"line":3506},[3696],{"type":3095,"tag":3465,"props":3697,"children":3698},{"style":3471},[3699],{"type":3100,"value":3700},"    \u002F*limit: {\n",{"type":3095,"tag":3465,"props":3702,"children":3703},{"class":3467,"line":3059},[3704],{"type":3095,"tag":3465,"props":3705,"children":3706},{"style":3471},[3707],{"type":3100,"value":3708},"      max: 12,        \u002F\u002F maximum requests per duration time, default is 12\u002Fduration\n",{"type":3095,"tag":3465,"props":3710,"children":3711},{"class":3467,"line":3531},[3712],{"type":3095,"tag":3465,"props":3713,"children":3714},{"style":3471},[3715],{"type":3100,"value":3716},"      duration: 108,   \u002F\u002F duration time in seconds, default is 108 seconds\n",{"type":3095,"tag":3465,"props":3718,"children":3719},{"class":3467,"line":3539},[3720],{"type":3095,"tag":3465,"props":3721,"children":3722},{"style":3471},[3723],{"type":3100,"value":3724},"      ban: 3600,      \u002F\u002F ban time in seconds, default is 3600 seconds = 1 hour\n",{"type":3095,"tag":3465,"props":3726,"children":3727},{"class":3467,"line":3084},[3728],{"type":3095,"tag":3465,"props":3729,"children":3730},{"style":3471},[3731],{"type":3100,"value":3732},"      \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":3095,"tag":3465,"props":3734,"children":3736},{"class":3467,"line":3735},9,[3737],{"type":3095,"tag":3465,"props":3738,"children":3739},{"style":3471},[3740],{"type":3100,"value":3741},"    },\n",{"type":3095,"tag":3465,"props":3743,"children":3745},{"class":3467,"line":3744},10,[3746],{"type":3095,"tag":3465,"props":3747,"children":3748},{"style":3471},[3749],{"type":3100,"value":3750},"    delayOnBan: true  \u002F\u002F delay every response with +1sec when the user is banned, default is true\n",{"type":3095,"tag":3465,"props":3752,"children":3754},{"class":3467,"line":3753},11,[3755],{"type":3095,"tag":3465,"props":3756,"children":3757},{"style":3471},[3758],{"type":3100,"value":3759},"    errorMessage: \"Too Many Requests\",  \u002F\u002F error message when the user is banned, default is \"Too Many Requests\"\n",{"type":3095,"tag":3465,"props":3761,"children":3763},{"class":3467,"line":3762},12,[3764],{"type":3095,"tag":3465,"props":3765,"children":3766},{"style":3471},[3767],{"type":3100,"value":3768},"    retryAfterHeader: false, \u002F\u002F when the user is banned add the Retry-After header to the response, default is false\n",{"type":3095,"tag":3465,"props":3770,"children":3772},{"class":3467,"line":3771},13,[3773],{"type":3095,"tag":3465,"props":3774,"children":3775},{"style":3471},[3776],{"type":3100,"value":3777},"    log: {\n",{"type":3095,"tag":3465,"props":3779,"children":3781},{"class":3467,"line":3780},14,[3782],{"type":3095,"tag":3465,"props":3783,"children":3784},{"style":3471},[3785],{"type":3100,"value":3786},"      path: \"\", \u002F\u002F path to the log file, every day a new log file will be created, use \"\" to disable logging\n",{"type":3095,"tag":3465,"props":3788,"children":3790},{"class":3467,"line":3789},15,[3791],{"type":3095,"tag":3465,"props":3792,"children":3793},{"style":3471},[3794],{"type":3100,"value":3795},"      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":3095,"tag":3465,"props":3797,"children":3799},{"class":3467,"line":3798},16,[3800],{"type":3095,"tag":3465,"props":3801,"children":3802},{"style":3471},[3803],{"type":3100,"value":3804},"      fail2ban: false, \u002F\u002F enable fail2ban-compatible log format for ban events (see fail2ban section)\n",{"type":3095,"tag":3465,"props":3806,"children":3808},{"class":3467,"line":3807},17,[3809],{"type":3095,"tag":3465,"props":3810,"children":3811},{"style":3471},[3812],{"type":3100,"value":3741},{"type":3095,"tag":3465,"props":3814,"children":3816},{"class":3467,"line":3815},18,[3817],{"type":3095,"tag":3465,"props":3818,"children":3819},{"style":3471},[3820],{"type":3100,"value":3821},"    routes: [], \u002F\u002F specify routes to apply rate limiting to, default is an empty array meaning all routes are protected.\n",{"type":3095,"tag":3465,"props":3823,"children":3825},{"class":3467,"line":3824},19,[3826],{"type":3095,"tag":3465,"props":3827,"children":3828},{"style":3471},[3829],{"type":3100,"value":3830},"    \u002F\u002F Example:\n",{"type":3095,"tag":3465,"props":3832,"children":3834},{"class":3467,"line":3833},20,[3835,3840],{"type":3095,"tag":3465,"props":3836,"children":3837},{"style":3471},[3838],{"type":3100,"value":3839},"    \u002F\u002F routes: [\"\u002Fapi\u002Fv2\u002F\", \"\u002Fapi\u002Fv3\u002F\"],",{"type":3095,"tag":3465,"props":3841,"children":3842},{"style":3471},[3843],{"type":3100,"value":3844}," \u002F\u002F \u002Fapi\u002Fv1 will not be protected, \u002Fapi\u002Fv2\u002F and \u002Fapi\u002Fv3\u002F will be protected *\u002F\n",{"type":3095,"tag":3465,"props":3846,"children":3848},{"class":3467,"line":3847},21,[3849,3854,3858,3863,3868],{"type":3095,"tag":3465,"props":3850,"children":3851},{"style":3639},[3852],{"type":3100,"value":3853},"    skipRoutes",{"type":3095,"tag":3465,"props":3855,"children":3856},{"style":3630},[3857],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":3859,"children":3860},{"style":3624},[3861],{"type":3100,"value":3862}," []",{"type":3095,"tag":3465,"props":3864,"children":3865},{"style":3630},[3866],{"type":3100,"value":3867},",",{"type":3095,"tag":3465,"props":3869,"children":3870},{"style":3471},[3871],{"type":3100,"value":3872}," \u002F\u002F specify routes to skip\u002Fexempt from rate limiting, supports wildcard patterns (*\u002F**)\n",{"type":3095,"tag":3465,"props":3874,"children":3876},{"class":3467,"line":3875},22,[3877],{"type":3095,"tag":3465,"props":3878,"children":3879},{"style":3471},[3880],{"type":3100,"value":3830},{"type":3095,"tag":3465,"props":3882,"children":3884},{"class":3467,"line":3883},23,[3885],{"type":3095,"tag":3465,"props":3886,"children":3887},{"style":3471},[3888],{"type":3100,"value":3889},"    \u002F\u002F skipRoutes: [\"\u002Fapi\u002Fhealth\", \"\u002Fapi\u002F_nuxt\u002F**\", \"\u002Fapi\u002Fwebhooks\u002Fstripe\"],\n",{"type":3095,"tag":3465,"props":3891,"children":3893},{"class":3467,"line":3892},24,[3894,3899,3903,3909,3913],{"type":3095,"tag":3465,"props":3895,"children":3896},{"style":3639},[3897],{"type":3100,"value":3898},"    ipTTL",{"type":3095,"tag":3465,"props":3900,"children":3901},{"style":3630},[3902],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":3904,"children":3906},{"style":3905},"--shiki-light:#F76D47;--shiki-default:#F76D47;--shiki-dark:#F78C6C",[3907],{"type":3100,"value":3908}," 604800",{"type":3095,"tag":3465,"props":3910,"children":3911},{"style":3630},[3912],{"type":3100,"value":3867},{"type":3095,"tag":3465,"props":3914,"children":3915},{"style":3471},[3916],{"type":3100,"value":3917}," \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":3095,"tag":3465,"props":3919,"children":3921},{"class":3467,"line":3920},25,[3922,3927,3931],{"type":3095,"tag":3465,"props":3923,"children":3924},{"style":3639},[3925],{"type":3100,"value":3926},"    security",{"type":3095,"tag":3465,"props":3928,"children":3929},{"style":3630},[3930],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":3932,"children":3933},{"style":3630},[3934],{"type":3100,"value":3692},{"type":3095,"tag":3465,"props":3936,"children":3938},{"class":3467,"line":3937},26,[3939],{"type":3095,"tag":3465,"props":3940,"children":3941},{"style":3471},[3942],{"type":3100,"value":3943},"      \u002F\u002F Optional: Security-related configurations\n",{"type":3095,"tag":3465,"props":3945,"children":3947},{"class":3467,"line":3946},27,[3948,3953,3957,3963,3967],{"type":3095,"tag":3465,"props":3949,"children":3950},{"style":3639},[3951],{"type":3100,"value":3952},"      trustXForwardedFor",{"type":3095,"tag":3465,"props":3954,"children":3955},{"style":3630},[3956],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":3958,"children":3960},{"style":3959},"--shiki-light:#FF5370;--shiki-default:#FF5370;--shiki-dark:#FF9CAC",[3961],{"type":3100,"value":3962}," false",{"type":3095,"tag":3465,"props":3964,"children":3965},{"style":3630},[3966],{"type":3100,"value":3867},{"type":3095,"tag":3465,"props":3968,"children":3969},{"style":3471},[3970],{"type":3100,"value":3971}," \u002F\u002F Default: false. Whether to trust X-Forwarded-For headers. See warning below.\n",{"type":3095,"tag":3465,"props":3973,"children":3975},{"class":3467,"line":3974},28,[3976],{"type":3095,"tag":3465,"props":3977,"children":3978},{"style":3630},[3979],{"type":3100,"value":3741},{"type":3095,"tag":3465,"props":3981,"children":3983},{"class":3467,"line":3982},29,[3984],{"type":3095,"tag":3465,"props":3985,"children":3986},{"style":3630},[3987],{"type":3100,"value":3988},"  },\n",{"type":3095,"tag":3465,"props":3990,"children":3992},{"class":3467,"line":3991},30,[3993,3998,4003],{"type":3095,"tag":3465,"props":3994,"children":3995},{"style":3630},[3996],{"type":3100,"value":3997},"}",{"type":3095,"tag":3465,"props":3999,"children":4000},{"style":3624},[4001],{"type":3100,"value":4002},")",{"type":3095,"tag":3465,"props":4004,"children":4005},{"style":3630},[4006],{"type":3100,"value":4007},";\n",{"type":3095,"tag":3102,"props":4009,"children":4010},{},[4011,4016,4018,4024],{"type":3095,"tag":3190,"props":4012,"children":4013},{},[4014],{"type":3100,"value":4015},"Default Configuration Values:",{"type":3100,"value":4017},"\n(These are applied by the module if not specified in your ",{"type":3095,"tag":3252,"props":4019,"children":4021},{"className":4020},[],[4022],{"type":3100,"value":4023},"nuxtApiShield",{"type":3100,"value":4025}," config)",{"type":3095,"tag":3455,"props":4027,"children":4029},{"className":3595,"code":4028,"language":3597,"meta":3039,"style":3039},"{\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",[4030],{"type":3095,"tag":3252,"props":4031,"children":4032},{"__ignoreMap":3039},[4033,4040,4056,4077,4103,4129,4136,4157,4187,4207,4223,4249,4275,4295,4302,4322,4342,4395,4411,4431,4439],{"type":3095,"tag":3465,"props":4034,"children":4035},{"class":3467,"line":3067},[4036],{"type":3095,"tag":3465,"props":4037,"children":4038},{"style":3630},[4039],{"type":3100,"value":3633},{"type":3095,"tag":3465,"props":4041,"children":4042},{"class":3467,"line":3063},[4043,4048,4052],{"type":3095,"tag":3465,"props":4044,"children":4045},{"style":3480},[4046],{"type":3100,"value":4047},"  limit",{"type":3095,"tag":3465,"props":4049,"children":4050},{"style":3630},[4051],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":4053,"children":4054},{"style":3630},[4055],{"type":3100,"value":3692},{"type":3095,"tag":3465,"props":4057,"children":4058},{"class":3467,"line":3497},[4059,4064,4068,4073],{"type":3095,"tag":3465,"props":4060,"children":4061},{"style":3480},[4062],{"type":3100,"value":4063},"    max",{"type":3095,"tag":3465,"props":4065,"children":4066},{"style":3630},[4067],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":4069,"children":4070},{"style":3905},[4071],{"type":3100,"value":4072}," 12",{"type":3095,"tag":3465,"props":4074,"children":4075},{"style":3630},[4076],{"type":3100,"value":3675},{"type":3095,"tag":3465,"props":4078,"children":4079},{"class":3467,"line":3506},[4080,4085,4089,4094,4098],{"type":3095,"tag":3465,"props":4081,"children":4082},{"style":3480},[4083],{"type":3100,"value":4084},"    duration",{"type":3095,"tag":3465,"props":4086,"children":4087},{"style":3630},[4088],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":4090,"children":4091},{"style":3905},[4092],{"type":3100,"value":4093}," 108",{"type":3095,"tag":3465,"props":4095,"children":4096},{"style":3630},[4097],{"type":3100,"value":3867},{"type":3095,"tag":3465,"props":4099,"children":4100},{"style":3471},[4101],{"type":3100,"value":4102}," \u002F\u002F seconds\n",{"type":3095,"tag":3465,"props":4104,"children":4105},{"class":3467,"line":3059},[4106,4111,4115,4120,4124],{"type":3095,"tag":3465,"props":4107,"children":4108},{"style":3480},[4109],{"type":3100,"value":4110},"    ban",{"type":3095,"tag":3465,"props":4112,"children":4113},{"style":3630},[4114],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":4116,"children":4117},{"style":3905},[4118],{"type":3100,"value":4119}," 3600",{"type":3095,"tag":3465,"props":4121,"children":4122},{"style":3630},[4123],{"type":3100,"value":3867},{"type":3095,"tag":3465,"props":4125,"children":4126},{"style":3471},[4127],{"type":3100,"value":4128},"     \u002F\u002F seconds\n",{"type":3095,"tag":3465,"props":4130,"children":4131},{"class":3467,"line":3531},[4132],{"type":3095,"tag":3465,"props":4133,"children":4134},{"style":3630},[4135],{"type":3100,"value":3988},{"type":3095,"tag":3465,"props":4137,"children":4138},{"class":3467,"line":3539},[4139,4144,4148,4153],{"type":3095,"tag":3465,"props":4140,"children":4141},{"style":3480},[4142],{"type":3100,"value":4143},"  delayOnBan",{"type":3095,"tag":3465,"props":4145,"children":4146},{"style":3630},[4147],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":4149,"children":4150},{"style":3959},[4151],{"type":3100,"value":4152}," true",{"type":3095,"tag":3465,"props":4154,"children":4155},{"style":3630},[4156],{"type":3100,"value":3675},{"type":3095,"tag":3465,"props":4158,"children":4159},{"class":3467,"line":3084},[4160,4165,4169,4174,4179,4183],{"type":3095,"tag":3465,"props":4161,"children":4162},{"style":3480},[4163],{"type":3100,"value":4164},"  errorMessage",{"type":3095,"tag":3465,"props":4166,"children":4167},{"style":3630},[4168],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":4170,"children":4171},{"style":3630},[4172],{"type":3100,"value":4173}," \"",{"type":3095,"tag":3465,"props":4175,"children":4176},{"style":3486},[4177],{"type":3100,"value":4178},"Too Many Requests",{"type":3095,"tag":3465,"props":4180,"children":4181},{"style":3630},[4182],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":4184,"children":4185},{"style":3630},[4186],{"type":3100,"value":3675},{"type":3095,"tag":3465,"props":4188,"children":4189},{"class":3467,"line":3735},[4190,4195,4199,4203],{"type":3095,"tag":3465,"props":4191,"children":4192},{"style":3480},[4193],{"type":3100,"value":4194},"  retryAfterHeader",{"type":3095,"tag":3465,"props":4196,"children":4197},{"style":3630},[4198],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":4200,"children":4201},{"style":3959},[4202],{"type":3100,"value":3962},{"type":3095,"tag":3465,"props":4204,"children":4205},{"style":3630},[4206],{"type":3100,"value":3675},{"type":3095,"tag":3465,"props":4208,"children":4209},{"class":3467,"line":3744},[4210,4215,4219],{"type":3095,"tag":3465,"props":4211,"children":4212},{"style":3480},[4213],{"type":3100,"value":4214},"  log",{"type":3095,"tag":3465,"props":4216,"children":4217},{"style":3630},[4218],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":4220,"children":4221},{"style":3630},[4222],{"type":3100,"value":3692},{"type":3095,"tag":3465,"props":4224,"children":4225},{"class":3467,"line":3753},[4226,4231,4235,4240,4244],{"type":3095,"tag":3465,"props":4227,"children":4228},{"style":3480},[4229],{"type":3100,"value":4230},"    path",{"type":3095,"tag":3465,"props":4232,"children":4233},{"style":3630},[4234],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":4236,"children":4237},{"style":3630},[4238],{"type":3100,"value":4239}," \"\"",{"type":3095,"tag":3465,"props":4241,"children":4242},{"style":3630},[4243],{"type":3100,"value":3867},{"type":3095,"tag":3465,"props":4245,"children":4246},{"style":3471},[4247],{"type":3100,"value":4248}," \u002F\u002F Logging is disabled if path is empty\n",{"type":3095,"tag":3465,"props":4250,"children":4251},{"class":3467,"line":3762},[4252,4257,4261,4266,4270],{"type":3095,"tag":3465,"props":4253,"children":4254},{"style":3480},[4255],{"type":3100,"value":4256},"    attempts",{"type":3095,"tag":3465,"props":4258,"children":4259},{"style":3630},[4260],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":4262,"children":4263},{"style":3905},[4264],{"type":3100,"value":4265}," 0",{"type":3095,"tag":3465,"props":4267,"children":4268},{"style":3630},[4269],{"type":3100,"value":3867},{"type":3095,"tag":3465,"props":4271,"children":4272},{"style":3471},[4273],{"type":3100,"value":4274}," \u002F\u002F Logging per IP is disabled if attempts is 0\n",{"type":3095,"tag":3465,"props":4276,"children":4277},{"class":3467,"line":3771},[4278,4283,4287,4291],{"type":3095,"tag":3465,"props":4279,"children":4280},{"style":3480},[4281],{"type":3100,"value":4282},"    fail2ban",{"type":3095,"tag":3465,"props":4284,"children":4285},{"style":3630},[4286],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":4288,"children":4289},{"style":3959},[4290],{"type":3100,"value":3962},{"type":3095,"tag":3465,"props":4292,"children":4293},{"style":3630},[4294],{"type":3100,"value":3675},{"type":3095,"tag":3465,"props":4296,"children":4297},{"class":3467,"line":3780},[4298],{"type":3095,"tag":3465,"props":4299,"children":4300},{"style":3630},[4301],{"type":3100,"value":3988},{"type":3095,"tag":3465,"props":4303,"children":4304},{"class":3467,"line":3789},[4305,4310,4314,4318],{"type":3095,"tag":3465,"props":4306,"children":4307},{"style":3480},[4308],{"type":3100,"value":4309},"  routes",{"type":3095,"tag":3465,"props":4311,"children":4312},{"style":3630},[4313],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":4315,"children":4316},{"style":3639},[4317],{"type":3100,"value":3862},{"type":3095,"tag":3465,"props":4319,"children":4320},{"style":3630},[4321],{"type":3100,"value":3675},{"type":3095,"tag":3465,"props":4323,"children":4324},{"class":3467,"line":3798},[4325,4330,4334,4338],{"type":3095,"tag":3465,"props":4326,"children":4327},{"style":3480},[4328],{"type":3100,"value":4329},"  skipRoutes",{"type":3095,"tag":3465,"props":4331,"children":4332},{"style":3630},[4333],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":4335,"children":4336},{"style":3639},[4337],{"type":3100,"value":3862},{"type":3095,"tag":3465,"props":4339,"children":4340},{"style":3630},[4341],{"type":3100,"value":3675},{"type":3095,"tag":3465,"props":4343,"children":4344},{"class":3467,"line":3807},[4345,4350,4354,4359,4364,4369,4373,4378,4382,4386,4390],{"type":3095,"tag":3465,"props":4346,"children":4347},{"style":3480},[4348],{"type":3100,"value":4349},"  ipTTL",{"type":3095,"tag":3465,"props":4351,"children":4352},{"style":3630},[4353],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":4355,"children":4356},{"style":3905},[4357],{"type":3100,"value":4358}," 7",{"type":3095,"tag":3465,"props":4360,"children":4361},{"style":3630},[4362],{"type":3100,"value":4363}," *",{"type":3095,"tag":3465,"props":4365,"children":4366},{"style":3905},[4367],{"type":3100,"value":4368}," 24",{"type":3095,"tag":3465,"props":4370,"children":4371},{"style":3630},[4372],{"type":3100,"value":4363},{"type":3095,"tag":3465,"props":4374,"children":4375},{"style":3905},[4376],{"type":3100,"value":4377}," 60",{"type":3095,"tag":3465,"props":4379,"children":4380},{"style":3630},[4381],{"type":3100,"value":4363},{"type":3095,"tag":3465,"props":4383,"children":4384},{"style":3905},[4385],{"type":3100,"value":4377},{"type":3095,"tag":3465,"props":4387,"children":4388},{"style":3630},[4389],{"type":3100,"value":3867},{"type":3095,"tag":3465,"props":4391,"children":4392},{"style":3471},[4393],{"type":3100,"value":4394}," \u002F\u002F 7 days in seconds\n",{"type":3095,"tag":3465,"props":4396,"children":4397},{"class":3467,"line":3815},[4398,4403,4407],{"type":3095,"tag":3465,"props":4399,"children":4400},{"style":3480},[4401],{"type":3100,"value":4402},"  security",{"type":3095,"tag":3465,"props":4404,"children":4405},{"style":3630},[4406],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":4408,"children":4409},{"style":3630},[4410],{"type":3100,"value":3692},{"type":3095,"tag":3465,"props":4412,"children":4413},{"class":3467,"line":3824},[4414,4419,4423,4427],{"type":3095,"tag":3465,"props":4415,"children":4416},{"style":3480},[4417],{"type":3100,"value":4418},"    trustXForwardedFor",{"type":3095,"tag":3465,"props":4420,"children":4421},{"style":3630},[4422],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":4424,"children":4425},{"style":3959},[4426],{"type":3100,"value":3962},{"type":3095,"tag":3465,"props":4428,"children":4429},{"style":3630},[4430],{"type":3100,"value":3675},{"type":3095,"tag":3465,"props":4432,"children":4433},{"class":3467,"line":3833},[4434],{"type":3095,"tag":3465,"props":4435,"children":4436},{"style":3630},[4437],{"type":3100,"value":4438},"  }\n",{"type":3095,"tag":3465,"props":4440,"children":4441},{"class":3467,"line":3847},[4442],{"type":3095,"tag":3465,"props":4443,"children":4444},{"style":3630},[4445],{"type":3100,"value":4446},"}\n",{"type":3095,"tag":3102,"props":4448,"children":4449},{},[4450],{"type":3095,"tag":3190,"props":4451,"children":4452},{},[4453,4455],{"type":3100,"value":4454},"Security Warning: ",{"type":3095,"tag":3252,"props":4456,"children":4458},{"className":4457},[],[4459],{"type":3100,"value":4460},"trustXForwardedFor",{"type":3095,"tag":3102,"props":4462,"children":4463},{},[4464,4466,4472,4474,4480,4482,4488],{"type":3100,"value":4465},"The ",{"type":3095,"tag":3252,"props":4467,"children":4469},{"className":4468},[],[4470],{"type":3100,"value":4471},"security.trustXForwardedFor",{"type":3100,"value":4473}," option (default is ",{"type":3095,"tag":3252,"props":4475,"children":4477},{"className":4476},[],[4478],{"type":3100,"value":4479},"false",{"type":3100,"value":4481},", set by the module) determines if the module uses the ",{"type":3095,"tag":3252,"props":4483,"children":4485},{"className":4484},[],[4486],{"type":3100,"value":4487},"X-Forwarded-For",{"type":3100,"value":4489}," HTTP header to identify the client's IP address.",{"type":3095,"tag":3152,"props":4491,"children":4492},{},[4493,4513,4551,4570],{"type":3095,"tag":3156,"props":4494,"children":4495},{},[4496,4498,4504,4506,4511],{"type":3100,"value":4497},"If set to ",{"type":3095,"tag":3252,"props":4499,"children":4501},{"className":4500},[],[4502],{"type":3100,"value":4503},"true",{"type":3100,"value":4505},": The module will use the IP address provided in the ",{"type":3095,"tag":3252,"props":4507,"children":4509},{"className":4508},[],[4510],{"type":3100,"value":4487},{"type":3100,"value":4512}," 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":3095,"tag":3156,"props":4514,"children":4515},{},[4516,4521,4523,4528,4530,4535,4537,4542,4544,4549],{"type":3095,"tag":3190,"props":4517,"children":4518},{},[4519],{"type":3100,"value":4520},"WARNING:",{"type":3100,"value":4522}," If ",{"type":3095,"tag":3252,"props":4524,"children":4526},{"className":4525},[],[4527],{"type":3100,"value":4460},{"type":3100,"value":4529}," is ",{"type":3095,"tag":3252,"props":4531,"children":4533},{"className":4532},[],[4534],{"type":3100,"value":4503},{"type":3100,"value":4536}," and your application is directly internet-facing OR your proxy is not configured to strip incoming ",{"type":3095,"tag":3252,"props":4538,"children":4540},{"className":4539},[],[4541],{"type":3100,"value":4487},{"type":3100,"value":4543}," headers from clients, malicious users can spoof their IP address by sending a fake ",{"type":3095,"tag":3252,"props":4545,"children":4547},{"className":4546},[],[4548],{"type":3100,"value":4487},{"type":3100,"value":4550}," header. This would allow them to bypass rate limits or cause other users to be incorrectly rate-limited.",{"type":3095,"tag":3156,"props":4552,"children":4553},{},[4554,4555,4560,4562,4568],{"type":3100,"value":4497},{"type":3095,"tag":3252,"props":4556,"children":4558},{"className":4557},[],[4559],{"type":3100,"value":4479},{"type":3100,"value":4561},": The module will use the direct IP address of the incoming connection (i.e., ",{"type":3095,"tag":3252,"props":4563,"children":4565},{"className":4564},[],[4566],{"type":3100,"value":4567},"event.node.req.socket.remoteAddress",{"type":3100,"value":4569},"). Use this setting if your application is directly internet-facing or if you are unsure about your proxy's configuration.",{"type":3095,"tag":3156,"props":4571,"children":4572},{},[4573,4578,4580,4586,4588,4593],{"type":3095,"tag":3190,"props":4574,"children":4575},{},[4576],{"type":3100,"value":4577},"Recommendation:",{"type":3100,"value":4579}," Only enable ",{"type":3095,"tag":3252,"props":4581,"children":4583},{"className":4582},[],[4584],{"type":3100,"value":4585},"trustXForwardedFor: true",{"type":3100,"value":4587}," 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":3095,"tag":3252,"props":4589,"children":4591},{"className":4590},[],[4592],{"type":3100,"value":4479},{"type":3100,"value":4594},".",{"type":3095,"tag":3441,"props":4596,"children":4598},{"id":4597},"_3-add-nitrostorage-to-nuxtconfigts",[4599,4601,4607,4609],{"type":3100,"value":4600},"3. Add ",{"type":3095,"tag":3252,"props":4602,"children":4604},{"className":4603},[],[4605],{"type":3100,"value":4606},"nitro\u002Fstorage",{"type":3100,"value":4608}," to ",{"type":3095,"tag":3252,"props":4610,"children":4612},{"className":4611},[],[4613],{"type":3100,"value":233},{"type":3095,"tag":3102,"props":4615,"children":4616},{},[4617,4619,4624],{"type":3100,"value":4618},"You can use any storage you want, but you have to use ",{"type":3095,"tag":3190,"props":4620,"children":4621},{},[4622],{"type":3100,"value":4623},"shield",{"type":3100,"value":4625}," as the name of the storage.",{"type":3095,"tag":3455,"props":4627,"children":4631},{"className":4628,"code":4629,"language":4630,"meta":3039,"style":3039},"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",[4632],{"type":3095,"tag":3252,"props":4633,"children":4634},{"__ignoreMap":3039},[4635,4642,4668,4693,4717,4725,4760,4768,4776,4783],{"type":3095,"tag":3465,"props":4636,"children":4637},{"class":3467,"line":3067},[4638],{"type":3095,"tag":3465,"props":4639,"children":4640},{"style":3630},[4641],{"type":3100,"value":3633},{"type":3095,"tag":3465,"props":4643,"children":4644},{"class":3467,"line":3063},[4645,4650,4656,4660,4664],{"type":3095,"tag":3465,"props":4646,"children":4647},{"style":3630},[4648],{"type":3100,"value":4649},"  \"",{"type":3095,"tag":3465,"props":4651,"children":4653},{"style":4652},"--shiki-light:#9C3EDA;--shiki-default:#9C3EDA;--shiki-dark:#C792EA",[4654],{"type":3100,"value":4655},"nitro",{"type":3095,"tag":3465,"props":4657,"children":4658},{"style":3630},[4659],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":4661,"children":4662},{"style":3630},[4663],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":4665,"children":4666},{"style":3630},[4667],{"type":3100,"value":3692},{"type":3095,"tag":3465,"props":4669,"children":4670},{"class":3467,"line":3497},[4671,4676,4681,4685,4689],{"type":3095,"tag":3465,"props":4672,"children":4673},{"style":3630},[4674],{"type":3100,"value":4675},"    \"",{"type":3095,"tag":3465,"props":4677,"children":4678},{"style":3480},[4679],{"type":3100,"value":4680},"storage",{"type":3095,"tag":3465,"props":4682,"children":4683},{"style":3630},[4684],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":4686,"children":4687},{"style":3630},[4688],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":4690,"children":4691},{"style":3630},[4692],{"type":3100,"value":3692},{"type":3095,"tag":3465,"props":4694,"children":4695},{"class":3467,"line":3506},[4696,4701,4705,4709,4713],{"type":3095,"tag":3465,"props":4697,"children":4698},{"style":3630},[4699],{"type":3100,"value":4700},"      \"",{"type":3095,"tag":3465,"props":4702,"children":4703},{"style":3905},[4704],{"type":3100,"value":4623},{"type":3095,"tag":3465,"props":4706,"children":4707},{"style":3630},[4708],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":4710,"children":4711},{"style":3630},[4712],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":4714,"children":4715},{"style":3630},[4716],{"type":3100,"value":3692},{"type":3095,"tag":3465,"props":4718,"children":4719},{"class":3467,"line":3059},[4720],{"type":3095,"tag":3465,"props":4721,"children":4722},{"style":3471},[4723],{"type":3100,"value":4724},"        \u002F\u002F storage name, you **must** use \"shield\" as the name\n",{"type":3095,"tag":3465,"props":4726,"children":4727},{"class":3467,"line":3531},[4728,4733,4738,4742,4746,4750,4755],{"type":3095,"tag":3465,"props":4729,"children":4730},{"style":3630},[4731],{"type":3100,"value":4732},"        \"",{"type":3095,"tag":3465,"props":4734,"children":4735},{"style":3639},[4736],{"type":3100,"value":4737},"driver",{"type":3095,"tag":3465,"props":4739,"children":4740},{"style":3630},[4741],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":4743,"children":4744},{"style":3630},[4745],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":4747,"children":4748},{"style":3630},[4749],{"type":3100,"value":4173},{"type":3095,"tag":3465,"props":4751,"children":4752},{"style":3486},[4753],{"type":3100,"value":4754},"memory",{"type":3095,"tag":3465,"props":4756,"children":4757},{"style":3630},[4758],{"type":3100,"value":4759},"\"\n",{"type":3095,"tag":3465,"props":4761,"children":4762},{"class":3467,"line":3539},[4763],{"type":3095,"tag":3465,"props":4764,"children":4765},{"style":3630},[4766],{"type":3100,"value":4767},"      }\n",{"type":3095,"tag":3465,"props":4769,"children":4770},{"class":3467,"line":3084},[4771],{"type":3095,"tag":3465,"props":4772,"children":4773},{"style":3630},[4774],{"type":3100,"value":4775},"    }\n",{"type":3095,"tag":3465,"props":4777,"children":4778},{"class":3467,"line":3735},[4779],{"type":3095,"tag":3465,"props":4780,"children":4781},{"style":3630},[4782],{"type":3100,"value":4438},{"type":3095,"tag":3465,"props":4784,"children":4785},{"class":3467,"line":3744},[4786],{"type":3095,"tag":3465,"props":4787,"children":4788},{"style":3630},[4789],{"type":3100,"value":4446},{"type":3095,"tag":3102,"props":4791,"children":4792},{},[4793],{"type":3100,"value":4794},"If you use for example redis, you can use the following configuration, define the host and port.",{"type":3095,"tag":3455,"props":4796,"children":4798},{"className":4628,"code":4797,"language":4630,"meta":3039,"style":3039},"{\n  \"nitro\": {\n    \"storage\": {\n      \"shield\": {\n        \"driver\": \"redis\",\n        \"host\": \"localhost\",\n        \"port\": 6379\n      }\n    }\n  }\n}\n",[4799],{"type":3095,"tag":3252,"props":4800,"children":4801},{"__ignoreMap":3039},[4802,4809,4832,4855,4878,4914,4951,4976,4983,4990,4997],{"type":3095,"tag":3465,"props":4803,"children":4804},{"class":3467,"line":3067},[4805],{"type":3095,"tag":3465,"props":4806,"children":4807},{"style":3630},[4808],{"type":3100,"value":3633},{"type":3095,"tag":3465,"props":4810,"children":4811},{"class":3467,"line":3063},[4812,4816,4820,4824,4828],{"type":3095,"tag":3465,"props":4813,"children":4814},{"style":3630},[4815],{"type":3100,"value":4649},{"type":3095,"tag":3465,"props":4817,"children":4818},{"style":4652},[4819],{"type":3100,"value":4655},{"type":3095,"tag":3465,"props":4821,"children":4822},{"style":3630},[4823],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":4825,"children":4826},{"style":3630},[4827],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":4829,"children":4830},{"style":3630},[4831],{"type":3100,"value":3692},{"type":3095,"tag":3465,"props":4833,"children":4834},{"class":3467,"line":3497},[4835,4839,4843,4847,4851],{"type":3095,"tag":3465,"props":4836,"children":4837},{"style":3630},[4838],{"type":3100,"value":4675},{"type":3095,"tag":3465,"props":4840,"children":4841},{"style":3480},[4842],{"type":3100,"value":4680},{"type":3095,"tag":3465,"props":4844,"children":4845},{"style":3630},[4846],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":4848,"children":4849},{"style":3630},[4850],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":4852,"children":4853},{"style":3630},[4854],{"type":3100,"value":3692},{"type":3095,"tag":3465,"props":4856,"children":4857},{"class":3467,"line":3506},[4858,4862,4866,4870,4874],{"type":3095,"tag":3465,"props":4859,"children":4860},{"style":3630},[4861],{"type":3100,"value":4700},{"type":3095,"tag":3465,"props":4863,"children":4864},{"style":3905},[4865],{"type":3100,"value":4623},{"type":3095,"tag":3465,"props":4867,"children":4868},{"style":3630},[4869],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":4871,"children":4872},{"style":3630},[4873],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":4875,"children":4876},{"style":3630},[4877],{"type":3100,"value":3692},{"type":3095,"tag":3465,"props":4879,"children":4880},{"class":3467,"line":3059},[4881,4885,4889,4893,4897,4901,4906,4910],{"type":3095,"tag":3465,"props":4882,"children":4883},{"style":3630},[4884],{"type":3100,"value":4732},{"type":3095,"tag":3465,"props":4886,"children":4887},{"style":3639},[4888],{"type":3100,"value":4737},{"type":3095,"tag":3465,"props":4890,"children":4891},{"style":3630},[4892],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":4894,"children":4895},{"style":3630},[4896],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":4898,"children":4899},{"style":3630},[4900],{"type":3100,"value":4173},{"type":3095,"tag":3465,"props":4902,"children":4903},{"style":3486},[4904],{"type":3100,"value":4905},"redis",{"type":3095,"tag":3465,"props":4907,"children":4908},{"style":3630},[4909],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":4911,"children":4912},{"style":3630},[4913],{"type":3100,"value":3675},{"type":3095,"tag":3465,"props":4915,"children":4916},{"class":3467,"line":3531},[4917,4921,4926,4930,4934,4938,4943,4947],{"type":3095,"tag":3465,"props":4918,"children":4919},{"style":3630},[4920],{"type":3100,"value":4732},{"type":3095,"tag":3465,"props":4922,"children":4923},{"style":3639},[4924],{"type":3100,"value":4925},"host",{"type":3095,"tag":3465,"props":4927,"children":4928},{"style":3630},[4929],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":4931,"children":4932},{"style":3630},[4933],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":4935,"children":4936},{"style":3630},[4937],{"type":3100,"value":4173},{"type":3095,"tag":3465,"props":4939,"children":4940},{"style":3486},[4941],{"type":3100,"value":4942},"localhost",{"type":3095,"tag":3465,"props":4944,"children":4945},{"style":3630},[4946],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":4948,"children":4949},{"style":3630},[4950],{"type":3100,"value":3675},{"type":3095,"tag":3465,"props":4952,"children":4953},{"class":3467,"line":3539},[4954,4958,4963,4967,4971],{"type":3095,"tag":3465,"props":4955,"children":4956},{"style":3630},[4957],{"type":3100,"value":4732},{"type":3095,"tag":3465,"props":4959,"children":4960},{"style":3639},[4961],{"type":3100,"value":4962},"port",{"type":3095,"tag":3465,"props":4964,"children":4965},{"style":3630},[4966],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":4968,"children":4969},{"style":3630},[4970],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":4972,"children":4973},{"style":3905},[4974],{"type":3100,"value":4975}," 6379\n",{"type":3095,"tag":3465,"props":4977,"children":4978},{"class":3467,"line":3084},[4979],{"type":3095,"tag":3465,"props":4980,"children":4981},{"style":3630},[4982],{"type":3100,"value":4767},{"type":3095,"tag":3465,"props":4984,"children":4985},{"class":3467,"line":3735},[4986],{"type":3095,"tag":3465,"props":4987,"children":4988},{"style":3630},[4989],{"type":3100,"value":4775},{"type":3095,"tag":3465,"props":4991,"children":4992},{"class":3467,"line":3744},[4993],{"type":3095,"tag":3465,"props":4994,"children":4995},{"style":3630},[4996],{"type":3100,"value":4438},{"type":3095,"tag":3465,"props":4998,"children":4999},{"class":3467,"line":3753},[5000],{"type":3095,"tag":3465,"props":5001,"children":5002},{"style":3630},[5003],{"type":3100,"value":4446},{"type":3095,"tag":3441,"props":5005,"children":5007},{"id":5006},"_4-schedule-bundled-cleanup-tasks-in-nuxtconfigts",[5008,5010],{"type":3100,"value":5009},"4. Schedule bundled cleanup tasks in ",{"type":3095,"tag":3252,"props":5011,"children":5013},{"className":5012},[],[5014],{"type":3100,"value":233},{"type":3095,"tag":3102,"props":5016,"children":5017},{},[5018,5020,5025,5027,5033,5035,5040,5042,5048,5050,5056,5058,5064,5066,5071,5073,5079],{"type":3100,"value":5019},"The module registers two Nitro tasks for you: ",{"type":3095,"tag":3252,"props":5021,"children":5023},{"className":5022},[],[5024],{"type":3100,"value":3349},{"type":3100,"value":5026}," (removes expired ",{"type":3095,"tag":3252,"props":5028,"children":5030},{"className":5029},[],[5031],{"type":3100,"value":5032},"ban:*",{"type":3100,"value":5034}," keys) and ",{"type":3095,"tag":3252,"props":5036,"children":5038},{"className":5037},[],[5039],{"type":3100,"value":3357},{"type":3100,"value":5041}," (removes stale ",{"type":3095,"tag":3252,"props":5043,"children":5045},{"className":5044},[],[5046],{"type":3100,"value":5047},"ip:*",{"type":3100,"value":5049}," keys using ",{"type":3095,"tag":3252,"props":5051,"children":5053},{"className":5052},[],[5054],{"type":3100,"value":5055},"ipTTL",{"type":3100,"value":5057},"). Turn on Nitro tasks and add ",{"type":3095,"tag":3252,"props":5059,"children":5061},{"className":5060},[],[5062],{"type":3100,"value":5063},"scheduledTasks",{"type":3100,"value":5065}," so they run on a cadence you choose. You do ",{"type":3095,"tag":3190,"props":5067,"children":5068},{},[5069],{"type":3100,"value":5070},"not",{"type":3100,"value":5072}," need files under ",{"type":3095,"tag":3252,"props":5074,"children":5076},{"className":5075},[],[5077],{"type":3100,"value":5078},"server\u002Ftasks\u002F",{"type":3100,"value":5080}," for this default setup.",{"type":3095,"tag":3455,"props":5082,"children":5084},{"className":4628,"code":5083,"language":4630,"meta":3039,"style":3039},"{\n  \"nitro\": {\n    \"experimental\": {\n      \"tasks\": true\n    },\n    \"scheduledTasks\": {\n      \"*\u002F15 * * * *\": [\"shield:cleanBans\"],\n      \"0 0 * * *\": [\"shield:cleanIpData\"]\n    }\n  }\n}\n",[5085],{"type":3095,"tag":3252,"props":5086,"children":5087},{"__ignoreMap":3039},[5088,5095,5118,5142,5167,5174,5197,5238,5279,5286,5293],{"type":3095,"tag":3465,"props":5089,"children":5090},{"class":3467,"line":3067},[5091],{"type":3095,"tag":3465,"props":5092,"children":5093},{"style":3630},[5094],{"type":3100,"value":3633},{"type":3095,"tag":3465,"props":5096,"children":5097},{"class":3467,"line":3063},[5098,5102,5106,5110,5114],{"type":3095,"tag":3465,"props":5099,"children":5100},{"style":3630},[5101],{"type":3100,"value":4649},{"type":3095,"tag":3465,"props":5103,"children":5104},{"style":4652},[5105],{"type":3100,"value":4655},{"type":3095,"tag":3465,"props":5107,"children":5108},{"style":3630},[5109],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":5111,"children":5112},{"style":3630},[5113],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":5115,"children":5116},{"style":3630},[5117],{"type":3100,"value":3692},{"type":3095,"tag":3465,"props":5119,"children":5120},{"class":3467,"line":3497},[5121,5125,5130,5134,5138],{"type":3095,"tag":3465,"props":5122,"children":5123},{"style":3630},[5124],{"type":3100,"value":4675},{"type":3095,"tag":3465,"props":5126,"children":5127},{"style":3480},[5128],{"type":3100,"value":5129},"experimental",{"type":3095,"tag":3465,"props":5131,"children":5132},{"style":3630},[5133],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":5135,"children":5136},{"style":3630},[5137],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":5139,"children":5140},{"style":3630},[5141],{"type":3100,"value":3692},{"type":3095,"tag":3465,"props":5143,"children":5144},{"class":3467,"line":3506},[5145,5149,5154,5158,5162],{"type":3095,"tag":3465,"props":5146,"children":5147},{"style":3630},[5148],{"type":3100,"value":4700},{"type":3095,"tag":3465,"props":5150,"children":5151},{"style":3905},[5152],{"type":3100,"value":5153},"tasks",{"type":3095,"tag":3465,"props":5155,"children":5156},{"style":3630},[5157],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":5159,"children":5160},{"style":3630},[5161],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":5163,"children":5164},{"style":3630},[5165],{"type":3100,"value":5166}," true\n",{"type":3095,"tag":3465,"props":5168,"children":5169},{"class":3467,"line":3059},[5170],{"type":3095,"tag":3465,"props":5171,"children":5172},{"style":3630},[5173],{"type":3100,"value":3741},{"type":3095,"tag":3465,"props":5175,"children":5176},{"class":3467,"line":3531},[5177,5181,5185,5189,5193],{"type":3095,"tag":3465,"props":5178,"children":5179},{"style":3630},[5180],{"type":3100,"value":4675},{"type":3095,"tag":3465,"props":5182,"children":5183},{"style":3480},[5184],{"type":3100,"value":5063},{"type":3095,"tag":3465,"props":5186,"children":5187},{"style":3630},[5188],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":5190,"children":5191},{"style":3630},[5192],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":5194,"children":5195},{"style":3630},[5196],{"type":3100,"value":3692},{"type":3095,"tag":3465,"props":5198,"children":5199},{"class":3467,"line":3539},[5200,5204,5209,5213,5217,5221,5225,5229,5233],{"type":3095,"tag":3465,"props":5201,"children":5202},{"style":3630},[5203],{"type":3100,"value":4700},{"type":3095,"tag":3465,"props":5205,"children":5206},{"style":3905},[5207],{"type":3100,"value":5208},"*\u002F15 * * * *",{"type":3095,"tag":3465,"props":5210,"children":5211},{"style":3630},[5212],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":5214,"children":5215},{"style":3630},[5216],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":5218,"children":5219},{"style":3630},[5220],{"type":3100,"value":3652},{"type":3095,"tag":3465,"props":5222,"children":5223},{"style":3630},[5224],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":5226,"children":5227},{"style":3486},[5228],{"type":3100,"value":3349},{"type":3095,"tag":3465,"props":5230,"children":5231},{"style":3630},[5232],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":5234,"children":5235},{"style":3630},[5236],{"type":3100,"value":5237},"],\n",{"type":3095,"tag":3465,"props":5239,"children":5240},{"class":3467,"line":3084},[5241,5245,5250,5254,5258,5262,5266,5270,5274],{"type":3095,"tag":3465,"props":5242,"children":5243},{"style":3630},[5244],{"type":3100,"value":4700},{"type":3095,"tag":3465,"props":5246,"children":5247},{"style":3905},[5248],{"type":3100,"value":5249},"0 0 * * *",{"type":3095,"tag":3465,"props":5251,"children":5252},{"style":3630},[5253],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":5255,"children":5256},{"style":3630},[5257],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":5259,"children":5260},{"style":3630},[5261],{"type":3100,"value":3652},{"type":3095,"tag":3465,"props":5263,"children":5264},{"style":3630},[5265],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":5267,"children":5268},{"style":3486},[5269],{"type":3100,"value":3357},{"type":3095,"tag":3465,"props":5271,"children":5272},{"style":3630},[5273],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":5275,"children":5276},{"style":3630},[5277],{"type":3100,"value":5278},"]\n",{"type":3095,"tag":3465,"props":5280,"children":5281},{"class":3467,"line":3735},[5282],{"type":3095,"tag":3465,"props":5283,"children":5284},{"style":3630},[5285],{"type":3100,"value":4775},{"type":3095,"tag":3465,"props":5287,"children":5288},{"class":3467,"line":3744},[5289],{"type":3095,"tag":3465,"props":5290,"children":5291},{"style":3630},[5292],{"type":3100,"value":4438},{"type":3095,"tag":3465,"props":5294,"children":5295},{"class":3467,"line":3753},[5296],{"type":3095,"tag":3465,"props":5297,"children":5298},{"style":3630},[5299],{"type":3100,"value":4446},{"type":3095,"tag":3102,"props":5301,"children":5302},{},[5303],{"type":3100,"value":5304},"Cron expressions are examples only: for instance, clean expired bans every 15 minutes and IP tracking data daily at midnight.",{"type":3095,"tag":3441,"props":5306,"children":5308},{"id":5307},"_5-optional-custom-cleanup-task-implementations",[5309],{"type":3100,"value":5310},"5. Optional: custom cleanup task implementations",{"type":3095,"tag":3102,"props":5312,"children":5313},{},[5314,5316,5321,5323,5328],{"type":3100,"value":5315},"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":3095,"tag":3190,"props":5317,"children":5318},{},[5319],{"type":3100,"value":5320},"another",{"type":3100,"value":5322}," task name and point ",{"type":3095,"tag":3252,"props":5324,"children":5326},{"className":5325},[],[5327],{"type":3100,"value":5063},{"type":3100,"value":5329}," at that name instead.",{"type":3095,"tag":5331,"props":5332,"children":5334},"h4",{"id":5333},"a-task-for-cleaning-expired-bans",[5335],{"type":3100,"value":5336},"a) Task for cleaning expired bans",{"type":3095,"tag":3102,"props":5338,"children":5339},{},[5340,5342,5348],{"type":3100,"value":5341},"Removes ban entries (",{"type":3095,"tag":3252,"props":5343,"children":5345},{"className":5344},[],[5346],{"type":3100,"value":5347},"ban:xxx.xxx.xxx.xxx",{"type":3100,"value":5349},") after the ban timestamp has passed.",{"type":3095,"tag":3102,"props":5351,"children":5352},{},[5353,5355,5361],{"type":3100,"value":5354},"Example ",{"type":3095,"tag":3252,"props":5356,"children":5358},{"className":5357},[],[5359],{"type":3100,"value":5360},"server\u002Ftasks\u002Fshield\u002FcleanBans.ts",{"type":3100,"value":5362}," (task name must match what you schedule):",{"type":3095,"tag":3455,"props":5364,"children":5368},{"className":5365,"code":5366,"language":5367,"meta":3039,"style":3039},"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",[5369],{"type":3095,"tag":3252,"props":5370,"children":5371},{"__ignoreMap":3039},[5372,5423,5430,5454,5470,5503,5532,5539,5561,5613,5620,5628,5687,5694,5719,5760,5811,5846,5883,5896,5903,5910,5972,6010,6017],{"type":3095,"tag":3465,"props":5373,"children":5374},{"class":3467,"line":3067},[5375,5380,5385,5390,5395,5400,5404,5409,5413,5418],{"type":3095,"tag":3465,"props":5376,"children":5377},{"style":3607},[5378],{"type":3100,"value":5379},"import",{"type":3095,"tag":3465,"props":5381,"children":5382},{"style":3630},[5383],{"type":3100,"value":5384}," {",{"type":3095,"tag":3465,"props":5386,"children":5387},{"style":3624},[5388],{"type":3100,"value":5389}," isActualBanTimestampExpired",{"type":3095,"tag":3465,"props":5391,"children":5392},{"style":3630},[5393],{"type":3100,"value":5394}," }",{"type":3095,"tag":3465,"props":5396,"children":5397},{"style":3607},[5398],{"type":3100,"value":5399}," from",{"type":3095,"tag":3465,"props":5401,"children":5402},{"style":3630},[5403],{"type":3100,"value":4173},{"type":3095,"tag":3465,"props":5405,"children":5406},{"style":3486},[5407],{"type":3100,"value":5408},"#imports",{"type":3095,"tag":3465,"props":5410,"children":5411},{"style":3630},[5412],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":5414,"children":5415},{"style":3630},[5416],{"type":3100,"value":5417},";",{"type":3095,"tag":3465,"props":5419,"children":5420},{"style":3471},[5421],{"type":3100,"value":5422}," \u002F\u002F Auto-imported utility from nuxt-api-shield\n",{"type":3095,"tag":3465,"props":5424,"children":5425},{"class":3467,"line":3063},[5426],{"type":3095,"tag":3465,"props":5427,"children":5428},{"emptyLinePlaceholder":1200},[5429],{"type":3100,"value":3503},{"type":3095,"tag":3465,"props":5431,"children":5432},{"class":3467,"line":3497},[5433,5437,5441,5446,5450],{"type":3095,"tag":3465,"props":5434,"children":5435},{"style":3607},[5436],{"type":3100,"value":3610},{"type":3095,"tag":3465,"props":5438,"children":5439},{"style":3607},[5440],{"type":3100,"value":3615},{"type":3095,"tag":3465,"props":5442,"children":5443},{"style":3618},[5444],{"type":3100,"value":5445}," defineTask",{"type":3095,"tag":3465,"props":5447,"children":5448},{"style":3624},[5449],{"type":3100,"value":3627},{"type":3095,"tag":3465,"props":5451,"children":5452},{"style":3630},[5453],{"type":3100,"value":3633},{"type":3095,"tag":3465,"props":5455,"children":5456},{"class":3467,"line":3506},[5457,5462,5466],{"type":3095,"tag":3465,"props":5458,"children":5459},{"style":3639},[5460],{"type":3100,"value":5461},"  meta",{"type":3095,"tag":3465,"props":5463,"children":5464},{"style":3630},[5465],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":5467,"children":5468},{"style":3630},[5469],{"type":3100,"value":3692},{"type":3095,"tag":3465,"props":5471,"children":5472},{"class":3467,"line":3059},[5473,5478,5482,5486,5490,5494,5498],{"type":3095,"tag":3465,"props":5474,"children":5475},{"style":3639},[5476],{"type":3100,"value":5477},"    name",{"type":3095,"tag":3465,"props":5479,"children":5480},{"style":3630},[5481],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":5483,"children":5484},{"style":3630},[5485],{"type":3100,"value":4173},{"type":3095,"tag":3465,"props":5487,"children":5488},{"style":3486},[5489],{"type":3100,"value":3349},{"type":3095,"tag":3465,"props":5491,"children":5492},{"style":3630},[5493],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":5495,"children":5496},{"style":3630},[5497],{"type":3100,"value":3867},{"type":3095,"tag":3465,"props":5499,"children":5500},{"style":3471},[5501],{"type":3100,"value":5502}," \u002F\u002F Match the name in scheduledTasks\n",{"type":3095,"tag":3465,"props":5504,"children":5505},{"class":3467,"line":3531},[5506,5511,5515,5519,5524,5528],{"type":3095,"tag":3465,"props":5507,"children":5508},{"style":3639},[5509],{"type":3100,"value":5510},"    description",{"type":3095,"tag":3465,"props":5512,"children":5513},{"style":3630},[5514],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":5516,"children":5517},{"style":3630},[5518],{"type":3100,"value":4173},{"type":3095,"tag":3465,"props":5520,"children":5521},{"style":3486},[5522],{"type":3100,"value":5523},"Clean expired bans from nuxt-api-shield storage.",{"type":3095,"tag":3465,"props":5525,"children":5526},{"style":3630},[5527],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":5529,"children":5530},{"style":3630},[5531],{"type":3100,"value":3675},{"type":3095,"tag":3465,"props":5533,"children":5534},{"class":3467,"line":3539},[5535],{"type":3095,"tag":3465,"props":5536,"children":5537},{"style":3630},[5538],{"type":3100,"value":3988},{"type":3095,"tag":3465,"props":5540,"children":5541},{"class":3467,"line":3084},[5542,5547,5552,5557],{"type":3095,"tag":3465,"props":5543,"children":5544},{"style":4652},[5545],{"type":3100,"value":5546},"  async",{"type":3095,"tag":3465,"props":5548,"children":5549},{"style":3639},[5550],{"type":3100,"value":5551}," run",{"type":3095,"tag":3465,"props":5553,"children":5554},{"style":3630},[5555],{"type":3100,"value":5556},"()",{"type":3095,"tag":3465,"props":5558,"children":5559},{"style":3630},[5560],{"type":3100,"value":3692},{"type":3095,"tag":3465,"props":5562,"children":5563},{"class":3467,"line":3735},[5564,5569,5574,5579,5584,5588,5592,5596,5600,5604,5608],{"type":3095,"tag":3465,"props":5565,"children":5566},{"style":4652},[5567],{"type":3100,"value":5568},"    const",{"type":3095,"tag":3465,"props":5570,"children":5571},{"style":3624},[5572],{"type":3100,"value":5573}," shieldStorage",{"type":3095,"tag":3465,"props":5575,"children":5576},{"style":3630},[5577],{"type":3100,"value":5578}," =",{"type":3095,"tag":3465,"props":5580,"children":5581},{"style":3618},[5582],{"type":3100,"value":5583}," useStorage",{"type":3095,"tag":3465,"props":5585,"children":5586},{"style":3639},[5587],{"type":3100,"value":3627},{"type":3095,"tag":3465,"props":5589,"children":5590},{"style":3630},[5591],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":5593,"children":5594},{"style":3486},[5595],{"type":3100,"value":4623},{"type":3095,"tag":3465,"props":5597,"children":5598},{"style":3630},[5599],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":5601,"children":5602},{"style":3639},[5603],{"type":3100,"value":4002},{"type":3095,"tag":3465,"props":5605,"children":5606},{"style":3630},[5607],{"type":3100,"value":5417},{"type":3095,"tag":3465,"props":5609,"children":5610},{"style":3471},[5611],{"type":3100,"value":5612}," \u002F\u002F Use your configured storage name\n",{"type":3095,"tag":3465,"props":5614,"children":5615},{"class":3467,"line":3744},[5616],{"type":3095,"tag":3465,"props":5617,"children":5618},{"emptyLinePlaceholder":1200},[5619],{"type":3100,"value":3503},{"type":3095,"tag":3465,"props":5621,"children":5622},{"class":3467,"line":3753},[5623],{"type":3095,"tag":3465,"props":5624,"children":5625},{"style":3471},[5626],{"type":3100,"value":5627},"    \u002F\u002F Only fetch keys that start with the 'ban:' prefix\n",{"type":3095,"tag":3465,"props":5629,"children":5630},{"class":3467,"line":3762},[5631,5635,5640,5644,5649,5653,5657,5662,5666,5670,5675,5679,5683],{"type":3095,"tag":3465,"props":5632,"children":5633},{"style":4652},[5634],{"type":3100,"value":5568},{"type":3095,"tag":3465,"props":5636,"children":5637},{"style":3624},[5638],{"type":3100,"value":5639}," banKeys",{"type":3095,"tag":3465,"props":5641,"children":5642},{"style":3630},[5643],{"type":3100,"value":5578},{"type":3095,"tag":3465,"props":5645,"children":5646},{"style":3607},[5647],{"type":3100,"value":5648}," await",{"type":3095,"tag":3465,"props":5650,"children":5651},{"style":3624},[5652],{"type":3100,"value":5573},{"type":3095,"tag":3465,"props":5654,"children":5655},{"style":3630},[5656],{"type":3100,"value":4594},{"type":3095,"tag":3465,"props":5658,"children":5659},{"style":3618},[5660],{"type":3100,"value":5661},"getKeys",{"type":3095,"tag":3465,"props":5663,"children":5664},{"style":3639},[5665],{"type":3100,"value":3627},{"type":3095,"tag":3465,"props":5667,"children":5668},{"style":3630},[5669],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":5671,"children":5672},{"style":3486},[5673],{"type":3100,"value":5674},"ban:",{"type":3095,"tag":3465,"props":5676,"children":5677},{"style":3630},[5678],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":5680,"children":5681},{"style":3639},[5682],{"type":3100,"value":4002},{"type":3095,"tag":3465,"props":5684,"children":5685},{"style":3630},[5686],{"type":3100,"value":4007},{"type":3095,"tag":3465,"props":5688,"children":5689},{"class":3467,"line":3771},[5690],{"type":3095,"tag":3465,"props":5691,"children":5692},{"emptyLinePlaceholder":1200},[5693],{"type":3100,"value":3503},{"type":3095,"tag":3465,"props":5695,"children":5696},{"class":3467,"line":3780},[5697,5702,5707,5711,5715],{"type":3095,"tag":3465,"props":5698,"children":5699},{"style":4652},[5700],{"type":3100,"value":5701},"    let",{"type":3095,"tag":3465,"props":5703,"children":5704},{"style":3624},[5705],{"type":3100,"value":5706}," cleanedCount",{"type":3095,"tag":3465,"props":5708,"children":5709},{"style":3630},[5710],{"type":3100,"value":5578},{"type":3095,"tag":3465,"props":5712,"children":5713},{"style":3905},[5714],{"type":3100,"value":4265},{"type":3095,"tag":3465,"props":5716,"children":5717},{"style":3630},[5718],{"type":3100,"value":4007},{"type":3095,"tag":3465,"props":5720,"children":5721},{"class":3467,"line":3789},[5722,5727,5732,5737,5742,5747,5751,5756],{"type":3095,"tag":3465,"props":5723,"children":5724},{"style":3607},[5725],{"type":3100,"value":5726},"    for",{"type":3095,"tag":3465,"props":5728,"children":5729},{"style":3639},[5730],{"type":3100,"value":5731}," (",{"type":3095,"tag":3465,"props":5733,"children":5734},{"style":4652},[5735],{"type":3100,"value":5736},"const",{"type":3095,"tag":3465,"props":5738,"children":5739},{"style":3624},[5740],{"type":3100,"value":5741}," key",{"type":3095,"tag":3465,"props":5743,"children":5744},{"style":3630},[5745],{"type":3100,"value":5746}," of",{"type":3095,"tag":3465,"props":5748,"children":5749},{"style":3624},[5750],{"type":3100,"value":5639},{"type":3095,"tag":3465,"props":5752,"children":5753},{"style":3639},[5754],{"type":3100,"value":5755},") ",{"type":3095,"tag":3465,"props":5757,"children":5758},{"style":3630},[5759],{"type":3100,"value":3633},{"type":3095,"tag":3465,"props":5761,"children":5762},{"class":3467,"line":3798},[5763,5768,5773,5777,5781,5785,5789,5794,5798,5803,5807],{"type":3095,"tag":3465,"props":5764,"children":5765},{"style":4652},[5766],{"type":3100,"value":5767},"      const",{"type":3095,"tag":3465,"props":5769,"children":5770},{"style":3624},[5771],{"type":3100,"value":5772}," bannedUntilRaw",{"type":3095,"tag":3465,"props":5774,"children":5775},{"style":3630},[5776],{"type":3100,"value":5578},{"type":3095,"tag":3465,"props":5778,"children":5779},{"style":3607},[5780],{"type":3100,"value":5648},{"type":3095,"tag":3465,"props":5782,"children":5783},{"style":3624},[5784],{"type":3100,"value":5573},{"type":3095,"tag":3465,"props":5786,"children":5787},{"style":3630},[5788],{"type":3100,"value":4594},{"type":3095,"tag":3465,"props":5790,"children":5791},{"style":3618},[5792],{"type":3100,"value":5793},"getItem",{"type":3095,"tag":3465,"props":5795,"children":5796},{"style":3639},[5797],{"type":3100,"value":3627},{"type":3095,"tag":3465,"props":5799,"children":5800},{"style":3624},[5801],{"type":3100,"value":5802},"key",{"type":3095,"tag":3465,"props":5804,"children":5805},{"style":3639},[5806],{"type":3100,"value":4002},{"type":3095,"tag":3465,"props":5808,"children":5809},{"style":3630},[5810],{"type":3100,"value":4007},{"type":3095,"tag":3465,"props":5812,"children":5813},{"class":3467,"line":3807},[5814,5819,5823,5828,5832,5837,5842],{"type":3095,"tag":3465,"props":5815,"children":5816},{"style":3607},[5817],{"type":3100,"value":5818},"      if",{"type":3095,"tag":3465,"props":5820,"children":5821},{"style":3639},[5822],{"type":3100,"value":5731},{"type":3095,"tag":3465,"props":5824,"children":5825},{"style":3618},[5826],{"type":3100,"value":5827},"isActualBanTimestampExpired",{"type":3095,"tag":3465,"props":5829,"children":5830},{"style":3639},[5831],{"type":3100,"value":3627},{"type":3095,"tag":3465,"props":5833,"children":5834},{"style":3624},[5835],{"type":3100,"value":5836},"bannedUntilRaw",{"type":3095,"tag":3465,"props":5838,"children":5839},{"style":3639},[5840],{"type":3100,"value":5841},")) ",{"type":3095,"tag":3465,"props":5843,"children":5844},{"style":3630},[5845],{"type":3100,"value":3633},{"type":3095,"tag":3465,"props":5847,"children":5848},{"class":3467,"line":3815},[5849,5854,5858,5862,5867,5871,5875,5879],{"type":3095,"tag":3465,"props":5850,"children":5851},{"style":3607},[5852],{"type":3100,"value":5853},"        await",{"type":3095,"tag":3465,"props":5855,"children":5856},{"style":3624},[5857],{"type":3100,"value":5573},{"type":3095,"tag":3465,"props":5859,"children":5860},{"style":3630},[5861],{"type":3100,"value":4594},{"type":3095,"tag":3465,"props":5863,"children":5864},{"style":3618},[5865],{"type":3100,"value":5866},"removeItem",{"type":3095,"tag":3465,"props":5868,"children":5869},{"style":3639},[5870],{"type":3100,"value":3627},{"type":3095,"tag":3465,"props":5872,"children":5873},{"style":3624},[5874],{"type":3100,"value":5802},{"type":3095,"tag":3465,"props":5876,"children":5877},{"style":3639},[5878],{"type":3100,"value":4002},{"type":3095,"tag":3465,"props":5880,"children":5881},{"style":3630},[5882],{"type":3100,"value":4007},{"type":3095,"tag":3465,"props":5884,"children":5885},{"class":3467,"line":3824},[5886,5891],{"type":3095,"tag":3465,"props":5887,"children":5888},{"style":3624},[5889],{"type":3100,"value":5890},"        cleanedCount",{"type":3095,"tag":3465,"props":5892,"children":5893},{"style":3630},[5894],{"type":3100,"value":5895},"++;\n",{"type":3095,"tag":3465,"props":5897,"children":5898},{"class":3467,"line":3833},[5899],{"type":3095,"tag":3465,"props":5900,"children":5901},{"style":3630},[5902],{"type":3100,"value":4767},{"type":3095,"tag":3465,"props":5904,"children":5905},{"class":3467,"line":3847},[5906],{"type":3095,"tag":3465,"props":5907,"children":5908},{"style":3630},[5909],{"type":3100,"value":4775},{"type":3095,"tag":3465,"props":5911,"children":5912},{"class":3467,"line":3875},[5913,5918,5922,5927,5931,5936,5941,5946,5951,5955,5960,5964,5968],{"type":3095,"tag":3465,"props":5914,"children":5915},{"style":3624},[5916],{"type":3100,"value":5917},"    console",{"type":3095,"tag":3465,"props":5919,"children":5920},{"style":3630},[5921],{"type":3100,"value":4594},{"type":3095,"tag":3465,"props":5923,"children":5924},{"style":3618},[5925],{"type":3100,"value":5926},"log",{"type":3095,"tag":3465,"props":5928,"children":5929},{"style":3639},[5930],{"type":3100,"value":3627},{"type":3095,"tag":3465,"props":5932,"children":5933},{"style":3630},[5934],{"type":3100,"value":5935},"`",{"type":3095,"tag":3465,"props":5937,"children":5938},{"style":3486},[5939],{"type":3100,"value":5940},"[nuxt-api-shield] Cleaned ",{"type":3095,"tag":3465,"props":5942,"children":5943},{"style":3630},[5944],{"type":3100,"value":5945},"${",{"type":3095,"tag":3465,"props":5947,"children":5948},{"style":3624},[5949],{"type":3100,"value":5950},"cleanedCount",{"type":3095,"tag":3465,"props":5952,"children":5953},{"style":3630},[5954],{"type":3100,"value":3997},{"type":3095,"tag":3465,"props":5956,"children":5957},{"style":3486},[5958],{"type":3100,"value":5959}," expired ban(s).",{"type":3095,"tag":3465,"props":5961,"children":5962},{"style":3630},[5963],{"type":3100,"value":5935},{"type":3095,"tag":3465,"props":5965,"children":5966},{"style":3639},[5967],{"type":3100,"value":4002},{"type":3095,"tag":3465,"props":5969,"children":5970},{"style":3630},[5971],{"type":3100,"value":4007},{"type":3095,"tag":3465,"props":5973,"children":5974},{"class":3467,"line":3883},[5975,5980,5984,5989,5993,5997,6001,6005],{"type":3095,"tag":3465,"props":5976,"children":5977},{"style":3607},[5978],{"type":3100,"value":5979},"    return",{"type":3095,"tag":3465,"props":5981,"children":5982},{"style":3630},[5983],{"type":3100,"value":5384},{"type":3095,"tag":3465,"props":5985,"children":5986},{"style":3639},[5987],{"type":3100,"value":5988}," result",{"type":3095,"tag":3465,"props":5990,"children":5991},{"style":3630},[5992],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":5994,"children":5995},{"style":3630},[5996],{"type":3100,"value":5384},{"type":3095,"tag":3465,"props":5998,"children":5999},{"style":3624},[6000],{"type":3100,"value":5706},{"type":3095,"tag":3465,"props":6002,"children":6003},{"style":3630},[6004],{"type":3100,"value":5394},{"type":3095,"tag":3465,"props":6006,"children":6007},{"style":3630},[6008],{"type":3100,"value":6009}," };\n",{"type":3095,"tag":3465,"props":6011,"children":6012},{"class":3467,"line":3892},[6013],{"type":3095,"tag":3465,"props":6014,"children":6015},{"style":3630},[6016],{"type":3100,"value":3988},{"type":3095,"tag":3465,"props":6018,"children":6019},{"class":3467,"line":3920},[6020,6024,6028],{"type":3095,"tag":3465,"props":6021,"children":6022},{"style":3630},[6023],{"type":3100,"value":3997},{"type":3095,"tag":3465,"props":6025,"children":6026},{"style":3624},[6027],{"type":3100,"value":4002},{"type":3095,"tag":3465,"props":6029,"children":6030},{"style":3630},[6031],{"type":3100,"value":4007},{"type":3095,"tag":3102,"props":6033,"children":6034},{},[6035,6036,6041,6043,6048,6050,6055],{"type":3100,"value":4465},{"type":3095,"tag":3252,"props":6037,"children":6039},{"className":6038},[],[6040],{"type":3100,"value":5827},{"type":3100,"value":6042}," utility is provided by ",{"type":3095,"tag":3252,"props":6044,"children":6046},{"className":6045},[],[6047],{"type":3100,"value":3036},{"type":3100,"value":6049}," and should be available via ",{"type":3095,"tag":3252,"props":6051,"children":6053},{"className":6052},[],[6054],{"type":3100,"value":5408},{"type":3100,"value":4594},{"type":3095,"tag":5331,"props":6057,"children":6059},{"id":6058},"b-task-for-cleaning-old-ip-tracking-data",[6060],{"type":3100,"value":6061},"b) Task for cleaning old IP tracking data",{"type":3095,"tag":3102,"props":6063,"children":6064},{},[6065,6067,6073,6075,6081,6083,6089],{"type":3100,"value":6066},"Cleans IP tracking entries (",{"type":3095,"tag":3252,"props":6068,"children":6070},{"className":6069},[],[6071],{"type":3100,"value":6072},"ip:xxx.xxx.xxx.xxx",{"type":3100,"value":6074},") whose ",{"type":3095,"tag":3252,"props":6076,"children":6078},{"className":6077},[],[6079],{"type":3100,"value":6080},"time",{"type":3100,"value":6082}," is older than ",{"type":3095,"tag":3252,"props":6084,"children":6086},{"className":6085},[],[6087],{"type":3100,"value":6088},"nuxtApiShield.ipTTL",{"type":3100,"value":6090}," (default 7 days), and drops malformed entries. That keeps storage from growing with one-off IPs that were never banned.",{"type":3095,"tag":3102,"props":6092,"children":6093},{},[6094,6095,6101],{"type":3100,"value":5354},{"type":3095,"tag":3252,"props":6096,"children":6098},{"className":6097},[],[6099],{"type":3100,"value":6100},"server\u002Ftasks\u002Fshield\u002FcleanIpData.ts",{"type":3100,"value":3647},{"type":3095,"tag":3455,"props":6103,"children":6105},{"className":5365,"code":6104,"language":5367,"meta":3039,"style":3039},"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",[6106],{"type":3095,"tag":3252,"props":6107,"children":6108},{"__ignoreMap":3039},[6109,6154,6194,6201,6224,6239,6270,6298,6305,6324,6367,6411,6418,6426,6458,6465,6513,6534,6550,6562,6629,6636,6669,6676,6733,6771,6794,6801,6836,6908,6915,6924,6989,7041,7078,7091,7100,7118,7127,7163,7175,7183,7191,7199,7219,7254,7267,7303,7311],{"type":3095,"tag":3465,"props":6110,"children":6111},{"class":3467,"line":3067},[6112,6116,6121,6125,6130,6134,6138,6142,6146,6150],{"type":3095,"tag":3465,"props":6113,"children":6114},{"style":3607},[6115],{"type":3100,"value":5379},{"type":3095,"tag":3465,"props":6117,"children":6118},{"style":3607},[6119],{"type":3100,"value":6120}," type",{"type":3095,"tag":3465,"props":6122,"children":6123},{"style":3630},[6124],{"type":3100,"value":5384},{"type":3095,"tag":3465,"props":6126,"children":6127},{"style":3624},[6128],{"type":3100,"value":6129}," RateLimit",{"type":3095,"tag":3465,"props":6131,"children":6132},{"style":3630},[6133],{"type":3100,"value":5394},{"type":3095,"tag":3465,"props":6135,"children":6136},{"style":3607},[6137],{"type":3100,"value":5399},{"type":3095,"tag":3465,"props":6139,"children":6140},{"style":3630},[6141],{"type":3100,"value":4173},{"type":3095,"tag":3465,"props":6143,"children":6144},{"style":3486},[6145],{"type":3100,"value":3036},{"type":3095,"tag":3465,"props":6147,"children":6148},{"style":3630},[6149],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":6151,"children":6152},{"style":3630},[6153],{"type":3100,"value":4007},{"type":3095,"tag":3465,"props":6155,"children":6156},{"class":3467,"line":3063},[6157,6161,6165,6170,6174,6178,6182,6186,6190],{"type":3095,"tag":3465,"props":6158,"children":6159},{"style":3607},[6160],{"type":3100,"value":5379},{"type":3095,"tag":3465,"props":6162,"children":6163},{"style":3630},[6164],{"type":3100,"value":5384},{"type":3095,"tag":3465,"props":6166,"children":6167},{"style":3624},[6168],{"type":3100,"value":6169}," useRuntimeConfig",{"type":3095,"tag":3465,"props":6171,"children":6172},{"style":3630},[6173],{"type":3100,"value":5394},{"type":3095,"tag":3465,"props":6175,"children":6176},{"style":3607},[6177],{"type":3100,"value":5399},{"type":3095,"tag":3465,"props":6179,"children":6180},{"style":3630},[6181],{"type":3100,"value":4173},{"type":3095,"tag":3465,"props":6183,"children":6184},{"style":3486},[6185],{"type":3100,"value":5408},{"type":3095,"tag":3465,"props":6187,"children":6188},{"style":3630},[6189],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":6191,"children":6192},{"style":3630},[6193],{"type":3100,"value":4007},{"type":3095,"tag":3465,"props":6195,"children":6196},{"class":3467,"line":3497},[6197],{"type":3095,"tag":3465,"props":6198,"children":6199},{"emptyLinePlaceholder":1200},[6200],{"type":3100,"value":3503},{"type":3095,"tag":3465,"props":6202,"children":6203},{"class":3467,"line":3506},[6204,6208,6212,6216,6220],{"type":3095,"tag":3465,"props":6205,"children":6206},{"style":3607},[6207],{"type":3100,"value":3610},{"type":3095,"tag":3465,"props":6209,"children":6210},{"style":3607},[6211],{"type":3100,"value":3615},{"type":3095,"tag":3465,"props":6213,"children":6214},{"style":3618},[6215],{"type":3100,"value":5445},{"type":3095,"tag":3465,"props":6217,"children":6218},{"style":3624},[6219],{"type":3100,"value":3627},{"type":3095,"tag":3465,"props":6221,"children":6222},{"style":3630},[6223],{"type":3100,"value":3633},{"type":3095,"tag":3465,"props":6225,"children":6226},{"class":3467,"line":3059},[6227,6231,6235],{"type":3095,"tag":3465,"props":6228,"children":6229},{"style":3639},[6230],{"type":3100,"value":5461},{"type":3095,"tag":3465,"props":6232,"children":6233},{"style":3630},[6234],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":6236,"children":6237},{"style":3630},[6238],{"type":3100,"value":3692},{"type":3095,"tag":3465,"props":6240,"children":6241},{"class":3467,"line":3531},[6242,6246,6250,6254,6258,6262,6266],{"type":3095,"tag":3465,"props":6243,"children":6244},{"style":3639},[6245],{"type":3100,"value":5477},{"type":3095,"tag":3465,"props":6247,"children":6248},{"style":3630},[6249],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":6251,"children":6252},{"style":3630},[6253],{"type":3100,"value":4173},{"type":3095,"tag":3465,"props":6255,"children":6256},{"style":3486},[6257],{"type":3100,"value":3357},{"type":3095,"tag":3465,"props":6259,"children":6260},{"style":3630},[6261],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":6263,"children":6264},{"style":3630},[6265],{"type":3100,"value":3867},{"type":3095,"tag":3465,"props":6267,"children":6268},{"style":3471},[6269],{"type":3100,"value":5502},{"type":3095,"tag":3465,"props":6271,"children":6272},{"class":3467,"line":3539},[6273,6277,6281,6285,6290,6294],{"type":3095,"tag":3465,"props":6274,"children":6275},{"style":3639},[6276],{"type":3100,"value":5510},{"type":3095,"tag":3465,"props":6278,"children":6279},{"style":3630},[6280],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":6282,"children":6283},{"style":3630},[6284],{"type":3100,"value":4173},{"type":3095,"tag":3465,"props":6286,"children":6287},{"style":3486},[6288],{"type":3100,"value":6289},"Clean old IP tracking data from nuxt-api-shield storage.",{"type":3095,"tag":3465,"props":6291,"children":6292},{"style":3630},[6293],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":6295,"children":6296},{"style":3630},[6297],{"type":3100,"value":3675},{"type":3095,"tag":3465,"props":6299,"children":6300},{"class":3467,"line":3084},[6301],{"type":3095,"tag":3465,"props":6302,"children":6303},{"style":3630},[6304],{"type":3100,"value":3988},{"type":3095,"tag":3465,"props":6306,"children":6307},{"class":3467,"line":3735},[6308,6312,6316,6320],{"type":3095,"tag":3465,"props":6309,"children":6310},{"style":4652},[6311],{"type":3100,"value":5546},{"type":3095,"tag":3465,"props":6313,"children":6314},{"style":3639},[6315],{"type":3100,"value":5551},{"type":3095,"tag":3465,"props":6317,"children":6318},{"style":3630},[6319],{"type":3100,"value":5556},{"type":3095,"tag":3465,"props":6321,"children":6322},{"style":3630},[6323],{"type":3100,"value":3692},{"type":3095,"tag":3465,"props":6325,"children":6326},{"class":3467,"line":3744},[6327,6331,6335,6339,6343,6347,6351,6355,6359,6363],{"type":3095,"tag":3465,"props":6328,"children":6329},{"style":4652},[6330],{"type":3100,"value":5568},{"type":3095,"tag":3465,"props":6332,"children":6333},{"style":3624},[6334],{"type":3100,"value":5573},{"type":3095,"tag":3465,"props":6336,"children":6337},{"style":3630},[6338],{"type":3100,"value":5578},{"type":3095,"tag":3465,"props":6340,"children":6341},{"style":3618},[6342],{"type":3100,"value":5583},{"type":3095,"tag":3465,"props":6344,"children":6345},{"style":3639},[6346],{"type":3100,"value":3627},{"type":3095,"tag":3465,"props":6348,"children":6349},{"style":3630},[6350],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":6352,"children":6353},{"style":3486},[6354],{"type":3100,"value":4623},{"type":3095,"tag":3465,"props":6356,"children":6357},{"style":3630},[6358],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":6360,"children":6361},{"style":3639},[6362],{"type":3100,"value":4002},{"type":3095,"tag":3465,"props":6364,"children":6365},{"style":3630},[6366],{"type":3100,"value":4007},{"type":3095,"tag":3465,"props":6368,"children":6369},{"class":3467,"line":3753},[6370,6374,6379,6383,6387,6391,6395,6399,6403,6407],{"type":3095,"tag":3465,"props":6371,"children":6372},{"style":4652},[6373],{"type":3100,"value":5568},{"type":3095,"tag":3465,"props":6375,"children":6376},{"style":3624},[6377],{"type":3100,"value":6378}," config",{"type":3095,"tag":3465,"props":6380,"children":6381},{"style":3630},[6382],{"type":3100,"value":5578},{"type":3095,"tag":3465,"props":6384,"children":6385},{"style":3618},[6386],{"type":3100,"value":6169},{"type":3095,"tag":3465,"props":6388,"children":6389},{"style":3639},[6390],{"type":3100,"value":5556},{"type":3095,"tag":3465,"props":6392,"children":6393},{"style":3630},[6394],{"type":3100,"value":4594},{"type":3095,"tag":3465,"props":6396,"children":6397},{"style":3624},[6398],{"type":3100,"value":180},{"type":3095,"tag":3465,"props":6400,"children":6401},{"style":3630},[6402],{"type":3100,"value":4594},{"type":3095,"tag":3465,"props":6404,"children":6405},{"style":3624},[6406],{"type":3100,"value":4023},{"type":3095,"tag":3465,"props":6408,"children":6409},{"style":3630},[6410],{"type":3100,"value":4007},{"type":3095,"tag":3465,"props":6412,"children":6413},{"class":3467,"line":3762},[6414],{"type":3095,"tag":3465,"props":6415,"children":6416},{"emptyLinePlaceholder":1200},[6417],{"type":3100,"value":3503},{"type":3095,"tag":3465,"props":6419,"children":6420},{"class":3467,"line":3771},[6421],{"type":3095,"tag":3465,"props":6422,"children":6423},{"style":3471},[6424],{"type":3100,"value":6425},"    \u002F\u002F ipTTL is expected to be in seconds from config (module applies default if not set by user)\n",{"type":3095,"tag":3465,"props":6427,"children":6428},{"class":3467,"line":3780},[6429,6433,6438,6442,6446,6450,6454],{"type":3095,"tag":3465,"props":6430,"children":6431},{"style":4652},[6432],{"type":3100,"value":5568},{"type":3095,"tag":3465,"props":6434,"children":6435},{"style":3624},[6436],{"type":3100,"value":6437}," ipTTLseconds",{"type":3095,"tag":3465,"props":6439,"children":6440},{"style":3630},[6441],{"type":3100,"value":5578},{"type":3095,"tag":3465,"props":6443,"children":6444},{"style":3624},[6445],{"type":3100,"value":6378},{"type":3095,"tag":3465,"props":6447,"children":6448},{"style":3630},[6449],{"type":3100,"value":4594},{"type":3095,"tag":3465,"props":6451,"children":6452},{"style":3624},[6453],{"type":3100,"value":5055},{"type":3095,"tag":3465,"props":6455,"children":6456},{"style":3630},[6457],{"type":3100,"value":4007},{"type":3095,"tag":3465,"props":6459,"children":6460},{"class":3467,"line":3789},[6461],{"type":3095,"tag":3465,"props":6462,"children":6463},{"emptyLinePlaceholder":1200},[6464],{"type":3100,"value":3503},{"type":3095,"tag":3465,"props":6466,"children":6467},{"class":3467,"line":3798},[6468,6473,6477,6482,6487,6492,6496,6501,6505,6509],{"type":3095,"tag":3465,"props":6469,"children":6470},{"style":3607},[6471],{"type":3100,"value":6472},"    if",{"type":3095,"tag":3465,"props":6474,"children":6475},{"style":3639},[6476],{"type":3100,"value":5731},{"type":3095,"tag":3465,"props":6478,"children":6479},{"style":3630},[6480],{"type":3100,"value":6481},"!",{"type":3095,"tag":3465,"props":6483,"children":6484},{"style":3624},[6485],{"type":3100,"value":6486},"ipTTLseconds",{"type":3095,"tag":3465,"props":6488,"children":6489},{"style":3630},[6490],{"type":3100,"value":6491}," ||",{"type":3095,"tag":3465,"props":6493,"children":6494},{"style":3624},[6495],{"type":3100,"value":6437},{"type":3095,"tag":3465,"props":6497,"children":6498},{"style":3630},[6499],{"type":3100,"value":6500}," \u003C=",{"type":3095,"tag":3465,"props":6502,"children":6503},{"style":3905},[6504],{"type":3100,"value":4265},{"type":3095,"tag":3465,"props":6506,"children":6507},{"style":3639},[6508],{"type":3100,"value":5755},{"type":3095,"tag":3465,"props":6510,"children":6511},{"style":3630},[6512],{"type":3100,"value":3633},{"type":3095,"tag":3465,"props":6514,"children":6515},{"class":3467,"line":3807},[6516,6521,6525,6529],{"type":3095,"tag":3465,"props":6517,"children":6518},{"style":3624},[6519],{"type":3100,"value":6520},"      console",{"type":3095,"tag":3465,"props":6522,"children":6523},{"style":3630},[6524],{"type":3100,"value":4594},{"type":3095,"tag":3465,"props":6526,"children":6527},{"style":3618},[6528],{"type":3100,"value":5926},{"type":3095,"tag":3465,"props":6530,"children":6531},{"style":3639},[6532],{"type":3100,"value":6533},"(\n",{"type":3095,"tag":3465,"props":6535,"children":6536},{"class":3467,"line":3815},[6537,6541,6546],{"type":3095,"tag":3465,"props":6538,"children":6539},{"style":3630},[6540],{"type":3100,"value":4732},{"type":3095,"tag":3465,"props":6542,"children":6543},{"style":3486},[6544],{"type":3100,"value":6545},"[nuxt-api-shield] IP data cleanup (ipTTL) is disabled or invalid.",{"type":3095,"tag":3465,"props":6547,"children":6548},{"style":3630},[6549],{"type":3100,"value":4759},{"type":3095,"tag":3465,"props":6551,"children":6552},{"class":3467,"line":3824},[6553,6558],{"type":3095,"tag":3465,"props":6554,"children":6555},{"style":3639},[6556],{"type":3100,"value":6557},"      )",{"type":3095,"tag":3465,"props":6559,"children":6560},{"style":3630},[6561],{"type":3100,"value":4007},{"type":3095,"tag":3465,"props":6563,"children":6564},{"class":3467,"line":3833},[6565,6570,6574,6578,6582,6586,6590,6594,6598,6603,6608,6612,6616,6621,6625],{"type":3095,"tag":3465,"props":6566,"children":6567},{"style":3607},[6568],{"type":3100,"value":6569},"      return",{"type":3095,"tag":3465,"props":6571,"children":6572},{"style":3630},[6573],{"type":3100,"value":5384},{"type":3095,"tag":3465,"props":6575,"children":6576},{"style":3639},[6577],{"type":3100,"value":5988},{"type":3095,"tag":3465,"props":6579,"children":6580},{"style":3630},[6581],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":6583,"children":6584},{"style":3630},[6585],{"type":3100,"value":5384},{"type":3095,"tag":3465,"props":6587,"children":6588},{"style":3639},[6589],{"type":3100,"value":5706},{"type":3095,"tag":3465,"props":6591,"children":6592},{"style":3630},[6593],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":6595,"children":6596},{"style":3905},[6597],{"type":3100,"value":4265},{"type":3095,"tag":3465,"props":6599,"children":6600},{"style":3630},[6601],{"type":3100,"value":6602}," },",{"type":3095,"tag":3465,"props":6604,"children":6605},{"style":3639},[6606],{"type":3100,"value":6607}," status",{"type":3095,"tag":3465,"props":6609,"children":6610},{"style":3630},[6611],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":6613,"children":6614},{"style":3630},[6615],{"type":3100,"value":4173},{"type":3095,"tag":3465,"props":6617,"children":6618},{"style":3486},[6619],{"type":3100,"value":6620},"disabled_or_invalid_ttl",{"type":3095,"tag":3465,"props":6622,"children":6623},{"style":3630},[6624],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":6626,"children":6627},{"style":3630},[6628],{"type":3100,"value":6009},{"type":3095,"tag":3465,"props":6630,"children":6631},{"class":3467,"line":3847},[6632],{"type":3095,"tag":3465,"props":6633,"children":6634},{"style":3630},[6635],{"type":3100,"value":4775},{"type":3095,"tag":3465,"props":6637,"children":6638},{"class":3467,"line":3875},[6639,6643,6648,6652,6656,6660,6665],{"type":3095,"tag":3465,"props":6640,"children":6641},{"style":4652},[6642],{"type":3100,"value":5568},{"type":3095,"tag":3465,"props":6644,"children":6645},{"style":3624},[6646],{"type":3100,"value":6647}," ipTTLms",{"type":3095,"tag":3465,"props":6649,"children":6650},{"style":3630},[6651],{"type":3100,"value":5578},{"type":3095,"tag":3465,"props":6653,"children":6654},{"style":3624},[6655],{"type":3100,"value":6437},{"type":3095,"tag":3465,"props":6657,"children":6658},{"style":3630},[6659],{"type":3100,"value":4363},{"type":3095,"tag":3465,"props":6661,"children":6662},{"style":3905},[6663],{"type":3100,"value":6664}," 1000",{"type":3095,"tag":3465,"props":6666,"children":6667},{"style":3630},[6668],{"type":3100,"value":4007},{"type":3095,"tag":3465,"props":6670,"children":6671},{"class":3467,"line":3883},[6672],{"type":3095,"tag":3465,"props":6673,"children":6674},{"emptyLinePlaceholder":1200},[6675],{"type":3100,"value":3503},{"type":3095,"tag":3465,"props":6677,"children":6678},{"class":3467,"line":3892},[6679,6683,6688,6692,6696,6700,6704,6708,6712,6716,6721,6725,6729],{"type":3095,"tag":3465,"props":6680,"children":6681},{"style":4652},[6682],{"type":3100,"value":5568},{"type":3095,"tag":3465,"props":6684,"children":6685},{"style":3624},[6686],{"type":3100,"value":6687}," ipKeys",{"type":3095,"tag":3465,"props":6689,"children":6690},{"style":3630},[6691],{"type":3100,"value":5578},{"type":3095,"tag":3465,"props":6693,"children":6694},{"style":3607},[6695],{"type":3100,"value":5648},{"type":3095,"tag":3465,"props":6697,"children":6698},{"style":3624},[6699],{"type":3100,"value":5573},{"type":3095,"tag":3465,"props":6701,"children":6702},{"style":3630},[6703],{"type":3100,"value":4594},{"type":3095,"tag":3465,"props":6705,"children":6706},{"style":3618},[6707],{"type":3100,"value":5661},{"type":3095,"tag":3465,"props":6709,"children":6710},{"style":3639},[6711],{"type":3100,"value":3627},{"type":3095,"tag":3465,"props":6713,"children":6714},{"style":3630},[6715],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":6717,"children":6718},{"style":3486},[6719],{"type":3100,"value":6720},"ip:",{"type":3095,"tag":3465,"props":6722,"children":6723},{"style":3630},[6724],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":6726,"children":6727},{"style":3639},[6728],{"type":3100,"value":4002},{"type":3095,"tag":3465,"props":6730,"children":6731},{"style":3630},[6732],{"type":3100,"value":4007},{"type":3095,"tag":3465,"props":6734,"children":6735},{"class":3467,"line":3920},[6736,6740,6745,6749,6754,6758,6763,6767],{"type":3095,"tag":3465,"props":6737,"children":6738},{"style":4652},[6739],{"type":3100,"value":5568},{"type":3095,"tag":3465,"props":6741,"children":6742},{"style":3624},[6743],{"type":3100,"value":6744}," currentTime",{"type":3095,"tag":3465,"props":6746,"children":6747},{"style":3630},[6748],{"type":3100,"value":5578},{"type":3095,"tag":3465,"props":6750,"children":6751},{"style":3624},[6752],{"type":3100,"value":6753}," Date",{"type":3095,"tag":3465,"props":6755,"children":6756},{"style":3630},[6757],{"type":3100,"value":4594},{"type":3095,"tag":3465,"props":6759,"children":6760},{"style":3618},[6761],{"type":3100,"value":6762},"now",{"type":3095,"tag":3465,"props":6764,"children":6765},{"style":3639},[6766],{"type":3100,"value":5556},{"type":3095,"tag":3465,"props":6768,"children":6769},{"style":3630},[6770],{"type":3100,"value":4007},{"type":3095,"tag":3465,"props":6772,"children":6773},{"class":3467,"line":3937},[6774,6778,6782,6786,6790],{"type":3095,"tag":3465,"props":6775,"children":6776},{"style":4652},[6777],{"type":3100,"value":5701},{"type":3095,"tag":3465,"props":6779,"children":6780},{"style":3624},[6781],{"type":3100,"value":5706},{"type":3095,"tag":3465,"props":6783,"children":6784},{"style":3630},[6785],{"type":3100,"value":5578},{"type":3095,"tag":3465,"props":6787,"children":6788},{"style":3905},[6789],{"type":3100,"value":4265},{"type":3095,"tag":3465,"props":6791,"children":6792},{"style":3630},[6793],{"type":3100,"value":4007},{"type":3095,"tag":3465,"props":6795,"children":6796},{"class":3467,"line":3946},[6797],{"type":3095,"tag":3465,"props":6798,"children":6799},{"emptyLinePlaceholder":1200},[6800],{"type":3100,"value":3503},{"type":3095,"tag":3465,"props":6802,"children":6803},{"class":3467,"line":3974},[6804,6808,6812,6816,6820,6824,6828,6832],{"type":3095,"tag":3465,"props":6805,"children":6806},{"style":3607},[6807],{"type":3100,"value":5726},{"type":3095,"tag":3465,"props":6809,"children":6810},{"style":3639},[6811],{"type":3100,"value":5731},{"type":3095,"tag":3465,"props":6813,"children":6814},{"style":4652},[6815],{"type":3100,"value":5736},{"type":3095,"tag":3465,"props":6817,"children":6818},{"style":3624},[6819],{"type":3100,"value":5741},{"type":3095,"tag":3465,"props":6821,"children":6822},{"style":3630},[6823],{"type":3100,"value":5746},{"type":3095,"tag":3465,"props":6825,"children":6826},{"style":3624},[6827],{"type":3100,"value":6687},{"type":3095,"tag":3465,"props":6829,"children":6830},{"style":3639},[6831],{"type":3100,"value":5755},{"type":3095,"tag":3465,"props":6833,"children":6834},{"style":3630},[6835],{"type":3100,"value":3633},{"type":3095,"tag":3465,"props":6837,"children":6838},{"class":3467,"line":3982},[6839,6843,6848,6852,6856,6861,6865,6869,6873,6877,6881,6885,6890,6894,6899,6904],{"type":3095,"tag":3465,"props":6840,"children":6841},{"style":4652},[6842],{"type":3100,"value":5767},{"type":3095,"tag":3465,"props":6844,"children":6845},{"style":3624},[6846],{"type":3100,"value":6847}," entry",{"type":3095,"tag":3465,"props":6849,"children":6850},{"style":3630},[6851],{"type":3100,"value":5578},{"type":3095,"tag":3465,"props":6853,"children":6854},{"style":3639},[6855],{"type":3100,"value":5731},{"type":3095,"tag":3465,"props":6857,"children":6858},{"style":3607},[6859],{"type":3100,"value":6860},"await",{"type":3095,"tag":3465,"props":6862,"children":6863},{"style":3624},[6864],{"type":3100,"value":5573},{"type":3095,"tag":3465,"props":6866,"children":6867},{"style":3630},[6868],{"type":3100,"value":4594},{"type":3095,"tag":3465,"props":6870,"children":6871},{"style":3618},[6872],{"type":3100,"value":5793},{"type":3095,"tag":3465,"props":6874,"children":6875},{"style":3639},[6876],{"type":3100,"value":3627},{"type":3095,"tag":3465,"props":6878,"children":6879},{"style":3624},[6880],{"type":3100,"value":5802},{"type":3095,"tag":3465,"props":6882,"children":6883},{"style":3639},[6884],{"type":3100,"value":5841},{"type":3095,"tag":3465,"props":6886,"children":6887},{"style":3607},[6888],{"type":3100,"value":6889},"as",{"type":3095,"tag":3465,"props":6891,"children":6892},{"style":3480},[6893],{"type":3100,"value":6129},{"type":3095,"tag":3465,"props":6895,"children":6896},{"style":3630},[6897],{"type":3100,"value":6898}," |",{"type":3095,"tag":3465,"props":6900,"children":6901},{"style":3480},[6902],{"type":3100,"value":6903}," null",{"type":3095,"tag":3465,"props":6905,"children":6906},{"style":3630},[6907],{"type":3100,"value":4007},{"type":3095,"tag":3465,"props":6909,"children":6910},{"class":3467,"line":3991},[6911],{"type":3095,"tag":3465,"props":6912,"children":6913},{"emptyLinePlaceholder":1200},[6914],{"type":3100,"value":3503},{"type":3095,"tag":3465,"props":6916,"children":6918},{"class":3467,"line":6917},31,[6919],{"type":3095,"tag":3465,"props":6920,"children":6921},{"style":3471},[6922],{"type":3100,"value":6923},"      \u002F\u002F Check if entry exists and has a numeric 'time' property\n",{"type":3095,"tag":3465,"props":6925,"children":6927},{"class":3467,"line":6926},32,[6928,6932,6936,6941,6946,6951,6955,6959,6963,6968,6972,6977,6981,6985],{"type":3095,"tag":3465,"props":6929,"children":6930},{"style":3607},[6931],{"type":3100,"value":5818},{"type":3095,"tag":3465,"props":6933,"children":6934},{"style":3639},[6935],{"type":3100,"value":5731},{"type":3095,"tag":3465,"props":6937,"children":6938},{"style":3624},[6939],{"type":3100,"value":6940},"entry",{"type":3095,"tag":3465,"props":6942,"children":6943},{"style":3630},[6944],{"type":3100,"value":6945}," &&",{"type":3095,"tag":3465,"props":6947,"children":6948},{"style":3630},[6949],{"type":3100,"value":6950}," typeof",{"type":3095,"tag":3465,"props":6952,"children":6953},{"style":3624},[6954],{"type":3100,"value":6847},{"type":3095,"tag":3465,"props":6956,"children":6957},{"style":3630},[6958],{"type":3100,"value":4594},{"type":3095,"tag":3465,"props":6960,"children":6961},{"style":3624},[6962],{"type":3100,"value":6080},{"type":3095,"tag":3465,"props":6964,"children":6965},{"style":3630},[6966],{"type":3100,"value":6967}," ===",{"type":3095,"tag":3465,"props":6969,"children":6970},{"style":3630},[6971],{"type":3100,"value":4173},{"type":3095,"tag":3465,"props":6973,"children":6974},{"style":3486},[6975],{"type":3100,"value":6976},"number",{"type":3095,"tag":3465,"props":6978,"children":6979},{"style":3630},[6980],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":6982,"children":6983},{"style":3639},[6984],{"type":3100,"value":5755},{"type":3095,"tag":3465,"props":6986,"children":6987},{"style":3630},[6988],{"type":3100,"value":3633},{"type":3095,"tag":3465,"props":6990,"children":6992},{"class":3467,"line":6991},33,[6993,6998,7002,7007,7012,7016,7020,7024,7029,7033,7037],{"type":3095,"tag":3465,"props":6994,"children":6995},{"style":3607},[6996],{"type":3100,"value":6997},"        if",{"type":3095,"tag":3465,"props":6999,"children":7000},{"style":3639},[7001],{"type":3100,"value":5731},{"type":3095,"tag":3465,"props":7003,"children":7004},{"style":3624},[7005],{"type":3100,"value":7006},"currentTime",{"type":3095,"tag":3465,"props":7008,"children":7009},{"style":3630},[7010],{"type":3100,"value":7011}," -",{"type":3095,"tag":3465,"props":7013,"children":7014},{"style":3624},[7015],{"type":3100,"value":6847},{"type":3095,"tag":3465,"props":7017,"children":7018},{"style":3630},[7019],{"type":3100,"value":4594},{"type":3095,"tag":3465,"props":7021,"children":7022},{"style":3624},[7023],{"type":3100,"value":6080},{"type":3095,"tag":3465,"props":7025,"children":7026},{"style":3630},[7027],{"type":3100,"value":7028}," >",{"type":3095,"tag":3465,"props":7030,"children":7031},{"style":3624},[7032],{"type":3100,"value":6647},{"type":3095,"tag":3465,"props":7034,"children":7035},{"style":3639},[7036],{"type":3100,"value":5755},{"type":3095,"tag":3465,"props":7038,"children":7039},{"style":3630},[7040],{"type":3100,"value":3633},{"type":3095,"tag":3465,"props":7042,"children":7044},{"class":3467,"line":7043},34,[7045,7050,7054,7058,7062,7066,7070,7074],{"type":3095,"tag":3465,"props":7046,"children":7047},{"style":3607},[7048],{"type":3100,"value":7049},"          await",{"type":3095,"tag":3465,"props":7051,"children":7052},{"style":3624},[7053],{"type":3100,"value":5573},{"type":3095,"tag":3465,"props":7055,"children":7056},{"style":3630},[7057],{"type":3100,"value":4594},{"type":3095,"tag":3465,"props":7059,"children":7060},{"style":3618},[7061],{"type":3100,"value":5866},{"type":3095,"tag":3465,"props":7063,"children":7064},{"style":3639},[7065],{"type":3100,"value":3627},{"type":3095,"tag":3465,"props":7067,"children":7068},{"style":3624},[7069],{"type":3100,"value":5802},{"type":3095,"tag":3465,"props":7071,"children":7072},{"style":3639},[7073],{"type":3100,"value":4002},{"type":3095,"tag":3465,"props":7075,"children":7076},{"style":3630},[7077],{"type":3100,"value":4007},{"type":3095,"tag":3465,"props":7079,"children":7081},{"class":3467,"line":7080},35,[7082,7087],{"type":3095,"tag":3465,"props":7083,"children":7084},{"style":3624},[7085],{"type":3100,"value":7086},"          cleanedCount",{"type":3095,"tag":3465,"props":7088,"children":7089},{"style":3630},[7090],{"type":3100,"value":5895},{"type":3095,"tag":3465,"props":7092,"children":7094},{"class":3467,"line":7093},36,[7095],{"type":3095,"tag":3465,"props":7096,"children":7097},{"style":3630},[7098],{"type":3100,"value":7099},"        }\n",{"type":3095,"tag":3465,"props":7101,"children":7103},{"class":3467,"line":7102},37,[7104,7109,7114],{"type":3095,"tag":3465,"props":7105,"children":7106},{"style":3630},[7107],{"type":3100,"value":7108},"      }",{"type":3095,"tag":3465,"props":7110,"children":7111},{"style":3607},[7112],{"type":3100,"value":7113}," else",{"type":3095,"tag":3465,"props":7115,"children":7116},{"style":3630},[7117],{"type":3100,"value":3692},{"type":3095,"tag":3465,"props":7119,"children":7121},{"class":3467,"line":7120},38,[7122],{"type":3095,"tag":3465,"props":7123,"children":7124},{"style":3471},[7125],{"type":3100,"value":7126},"        \u002F\u002F Clean up entries that are null, not an object, or missing a numeric 'time'\n",{"type":3095,"tag":3465,"props":7128,"children":7130},{"class":3467,"line":7129},39,[7131,7135,7139,7143,7147,7151,7155,7159],{"type":3095,"tag":3465,"props":7132,"children":7133},{"style":3607},[7134],{"type":3100,"value":5853},{"type":3095,"tag":3465,"props":7136,"children":7137},{"style":3624},[7138],{"type":3100,"value":5573},{"type":3095,"tag":3465,"props":7140,"children":7141},{"style":3630},[7142],{"type":3100,"value":4594},{"type":3095,"tag":3465,"props":7144,"children":7145},{"style":3618},[7146],{"type":3100,"value":5866},{"type":3095,"tag":3465,"props":7148,"children":7149},{"style":3639},[7150],{"type":3100,"value":3627},{"type":3095,"tag":3465,"props":7152,"children":7153},{"style":3624},[7154],{"type":3100,"value":5802},{"type":3095,"tag":3465,"props":7156,"children":7157},{"style":3639},[7158],{"type":3100,"value":4002},{"type":3095,"tag":3465,"props":7160,"children":7161},{"style":3630},[7162],{"type":3100,"value":4007},{"type":3095,"tag":3465,"props":7164,"children":7166},{"class":3467,"line":7165},40,[7167,7171],{"type":3095,"tag":3465,"props":7168,"children":7169},{"style":3624},[7170],{"type":3100,"value":5890},{"type":3095,"tag":3465,"props":7172,"children":7173},{"style":3630},[7174],{"type":3100,"value":5895},{"type":3095,"tag":3465,"props":7176,"children":7178},{"class":3467,"line":7177},41,[7179],{"type":3095,"tag":3465,"props":7180,"children":7181},{"style":3630},[7182],{"type":3100,"value":4767},{"type":3095,"tag":3465,"props":7184,"children":7186},{"class":3467,"line":7185},42,[7187],{"type":3095,"tag":3465,"props":7188,"children":7189},{"style":3630},[7190],{"type":3100,"value":4775},{"type":3095,"tag":3465,"props":7192,"children":7194},{"class":3467,"line":7193},43,[7195],{"type":3095,"tag":3465,"props":7196,"children":7197},{"emptyLinePlaceholder":1200},[7198],{"type":3100,"value":3503},{"type":3095,"tag":3465,"props":7200,"children":7202},{"class":3467,"line":7201},44,[7203,7207,7211,7215],{"type":3095,"tag":3465,"props":7204,"children":7205},{"style":3624},[7206],{"type":3100,"value":5917},{"type":3095,"tag":3465,"props":7208,"children":7209},{"style":3630},[7210],{"type":3100,"value":4594},{"type":3095,"tag":3465,"props":7212,"children":7213},{"style":3618},[7214],{"type":3100,"value":5926},{"type":3095,"tag":3465,"props":7216,"children":7217},{"style":3639},[7218],{"type":3100,"value":6533},{"type":3095,"tag":3465,"props":7220,"children":7222},{"class":3467,"line":7221},45,[7223,7228,7232,7236,7240,7244,7249],{"type":3095,"tag":3465,"props":7224,"children":7225},{"style":3630},[7226],{"type":3100,"value":7227},"      `",{"type":3095,"tag":3465,"props":7229,"children":7230},{"style":3486},[7231],{"type":3100,"value":5940},{"type":3095,"tag":3465,"props":7233,"children":7234},{"style":3630},[7235],{"type":3100,"value":5945},{"type":3095,"tag":3465,"props":7237,"children":7238},{"style":3624},[7239],{"type":3100,"value":5950},{"type":3095,"tag":3465,"props":7241,"children":7242},{"style":3630},[7243],{"type":3100,"value":3997},{"type":3095,"tag":3465,"props":7245,"children":7246},{"style":3486},[7247],{"type":3100,"value":7248}," old\u002Fmalformed IP data entries.",{"type":3095,"tag":3465,"props":7250,"children":7251},{"style":3630},[7252],{"type":3100,"value":7253},"`\n",{"type":3095,"tag":3465,"props":7255,"children":7257},{"class":3467,"line":7256},46,[7258,7263],{"type":3095,"tag":3465,"props":7259,"children":7260},{"style":3639},[7261],{"type":3100,"value":7262},"    )",{"type":3095,"tag":3465,"props":7264,"children":7265},{"style":3630},[7266],{"type":3100,"value":4007},{"type":3095,"tag":3465,"props":7268,"children":7270},{"class":3467,"line":7269},47,[7271,7275,7279,7283,7287,7291,7295,7299],{"type":3095,"tag":3465,"props":7272,"children":7273},{"style":3607},[7274],{"type":3100,"value":5979},{"type":3095,"tag":3465,"props":7276,"children":7277},{"style":3630},[7278],{"type":3100,"value":5384},{"type":3095,"tag":3465,"props":7280,"children":7281},{"style":3639},[7282],{"type":3100,"value":5988},{"type":3095,"tag":3465,"props":7284,"children":7285},{"style":3630},[7286],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":7288,"children":7289},{"style":3630},[7290],{"type":3100,"value":5384},{"type":3095,"tag":3465,"props":7292,"children":7293},{"style":3624},[7294],{"type":3100,"value":5706},{"type":3095,"tag":3465,"props":7296,"children":7297},{"style":3630},[7298],{"type":3100,"value":5394},{"type":3095,"tag":3465,"props":7300,"children":7301},{"style":3630},[7302],{"type":3100,"value":6009},{"type":3095,"tag":3465,"props":7304,"children":7306},{"class":3467,"line":7305},48,[7307],{"type":3095,"tag":3465,"props":7308,"children":7309},{"style":3630},[7310],{"type":3100,"value":3988},{"type":3095,"tag":3465,"props":7312,"children":7314},{"class":3467,"line":7313},49,[7315,7319,7323],{"type":3095,"tag":3465,"props":7316,"children":7317},{"style":3630},[7318],{"type":3100,"value":3997},{"type":3095,"tag":3465,"props":7320,"children":7321},{"style":3624},[7322],{"type":3100,"value":4002},{"type":3095,"tag":3465,"props":7324,"children":7325},{"style":3630},[7326],{"type":3100,"value":4007},{"type":3095,"tag":3102,"props":7328,"children":7329},{},[7330,7332,7337,7339,7344,7346,7351,7352,7358,7360,7365],{"type":3100,"value":7331},"Configure ",{"type":3095,"tag":3252,"props":7333,"children":7335},{"className":7334},[],[7336],{"type":3100,"value":5055},{"type":3100,"value":7338}," under ",{"type":3095,"tag":3252,"props":7340,"children":7342},{"className":7341},[],[7343],{"type":3100,"value":4023},{"type":3100,"value":7345}," if you want a TTL other than the default. Setting ",{"type":3095,"tag":3252,"props":7347,"children":7349},{"className":7348},[],[7350],{"type":3100,"value":5055},{"type":3100,"value":4608},{"type":3095,"tag":3252,"props":7353,"children":7355},{"className":7354},[],[7356],{"type":3100,"value":7357},"0",{"type":3100,"value":7359}," (or any non-positive value) makes the bundled ",{"type":3095,"tag":3252,"props":7361,"children":7363},{"className":7362},[],[7364],{"type":3100,"value":3357},{"type":3100,"value":7366}," task skip IP cleanup (it logs and exits).",{"type":3095,"tag":3102,"props":7368,"children":7369},{},[7370,7372,7378,7380,7385,7387,7392],{"type":3100,"value":7371},"If you add your own task file with the same ",{"type":3095,"tag":3252,"props":7373,"children":7375},{"className":7374},[],[7376],{"type":3100,"value":7377},"meta.name",{"type":3100,"value":7379}," as a bundled task (",{"type":3095,"tag":3252,"props":7381,"children":7383},{"className":7382},[],[7384],{"type":3100,"value":3349},{"type":3100,"value":7386}," or ",{"type":3095,"tag":3252,"props":7388,"children":7390},{"className":7389},[],[7391],{"type":3100,"value":3357},{"type":3100,"value":7393},"), Nitro may prefer your project file over the module—avoid duplicate names unless you intend to override.",{"type":3095,"tag":3178,"props":7395,"children":7397},{"id":7396},"production-deployment",[7398],{"type":3100,"value":7399},"Production Deployment",{"type":3095,"tag":3441,"props":7401,"children":7403},{"id":7402},"use-redis-as-the-storage-driver",[7404],{"type":3100,"value":7405},"Use Redis as the storage driver",{"type":3095,"tag":3102,"props":7407,"children":7408},{},[7409,7411,7416,7418,7423,7424,7430],{"type":3100,"value":7410},"For production deployments — especially with multiple server instances or significant traffic — ",{"type":3095,"tag":3190,"props":7412,"children":7413},{},[7414],{"type":3100,"value":7415},"Redis is the recommended storage driver",{"type":3100,"value":7417},". The ",{"type":3095,"tag":3252,"props":7419,"children":7421},{"className":7420},[],[7422],{"type":3100,"value":4754},{"type":3100,"value":3351},{"type":3095,"tag":3252,"props":7425,"children":7427},{"className":7426},[],[7428],{"type":3100,"value":7429},"fs",{"type":3100,"value":7431}," drivers have important limitations:",{"type":3095,"tag":7433,"props":7434,"children":7435},"table",{},[7436,7470],{"type":3095,"tag":7437,"props":7438,"children":7439},"thead",{},[7440],{"type":3095,"tag":7441,"props":7442,"children":7443},"tr",{},[7444,7450,7465],{"type":3095,"tag":7445,"props":7446,"children":7447},"th",{},[7448],{"type":3100,"value":7449},"Area",{"type":3095,"tag":7445,"props":7451,"children":7452},{},[7453,7458,7460],{"type":3095,"tag":3252,"props":7454,"children":7456},{"className":7455},[],[7457],{"type":3100,"value":4754},{"type":3100,"value":7459}," \u002F ",{"type":3095,"tag":3252,"props":7461,"children":7463},{"className":7462},[],[7464],{"type":3100,"value":7429},{"type":3095,"tag":7445,"props":7466,"children":7467},{},[7468],{"type":3100,"value":7469},"Redis",{"type":3095,"tag":7471,"props":7472,"children":7473},"tbody",{},[7474,7496,7517],{"type":3095,"tag":7441,"props":7475,"children":7476},{},[7477,7486,7491],{"type":3095,"tag":7478,"props":7479,"children":7480},"td",{},[7481],{"type":3095,"tag":3190,"props":7482,"children":7483},{},[7484],{"type":3100,"value":7485},"Multi-instance",{"type":3095,"tag":7478,"props":7487,"children":7488},{},[7489],{"type":3100,"value":7490},"Each process has its own isolated state. Rate limits reset per instance, allowing bypass.",{"type":3095,"tag":7478,"props":7492,"children":7493},{},[7494],{"type":3100,"value":7495},"Shared state across all instances.",{"type":3095,"tag":7441,"props":7497,"children":7498},{},[7499,7507,7512],{"type":3095,"tag":7478,"props":7500,"children":7501},{},[7502],{"type":3095,"tag":3190,"props":7503,"children":7504},{},[7505],{"type":3100,"value":7506},"Atomic operations",{"type":3095,"tag":7478,"props":7508,"children":7509},{},[7510],{"type":3100,"value":7511},"Read → increment → write is not atomic. Concurrent requests can both read the same count and exceed the limit simultaneously.",{"type":3095,"tag":7478,"props":7513,"children":7514},{},[7515],{"type":3100,"value":7516},"Single-threaded — reads and writes are naturally atomic. No race conditions.",{"type":3095,"tag":7441,"props":7518,"children":7519},{},[7520,7528,7554],{"type":3095,"tag":7478,"props":7521,"children":7522},{},[7523],{"type":3095,"tag":3190,"props":7524,"children":7525},{},[7526],{"type":3100,"value":7527},"Cleanup",{"type":3095,"tag":7478,"props":7529,"children":7530},{},[7531,7533,7538,7539,7544,7546,7552],{"type":3100,"value":7532},"Cleanup tasks (",{"type":3095,"tag":3252,"props":7534,"children":7536},{"className":7535},[],[7537],{"type":3100,"value":3349},{"type":3100,"value":3417},{"type":3095,"tag":3252,"props":7540,"children":7542},{"className":7541},[],[7543],{"type":3100,"value":3357},{"type":3100,"value":7545},") must scan all keys with ",{"type":3095,"tag":3252,"props":7547,"children":7549},{"className":7548},[],[7550],{"type":3100,"value":7551},"getKeys()",{"type":3100,"value":7553},". At scale this blocks the event loop.",{"type":3095,"tag":7478,"props":7555,"children":7556},{},[7557,7559,7565,7566,7572],{"type":3100,"value":7558},"Use ",{"type":3095,"tag":3252,"props":7560,"children":7562},{"className":7561},[],[7563],{"type":3100,"value":7564},"EXPIRE",{"type":3100,"value":7386},{"type":3095,"tag":3252,"props":7567,"children":7569},{"className":7568},[],[7570],{"type":3100,"value":7571},"TTL",{"type":3100,"value":7573}," natively — expired keys are reclaimed automatically without scanning.",{"type":3095,"tag":3102,"props":7575,"children":7576},{},[7577,7579,7584,7586,7591],{"type":3100,"value":7578},"To use Redis, configure the ",{"type":3095,"tag":3252,"props":7580,"children":7582},{"className":7581},[],[7583],{"type":3100,"value":4623},{"type":3100,"value":7585}," storage with the ",{"type":3095,"tag":3252,"props":7587,"children":7589},{"className":7588},[],[7590],{"type":3100,"value":4905},{"type":3100,"value":7592}," driver:",{"type":3095,"tag":3455,"props":7594,"children":7595},{"className":4628,"code":4797,"language":4630,"meta":3039,"style":3039},[7596],{"type":3095,"tag":3252,"props":7597,"children":7598},{"__ignoreMap":3039},[7599,7606,7629,7652,7675,7710,7745,7768,7775,7782,7789],{"type":3095,"tag":3465,"props":7600,"children":7601},{"class":3467,"line":3067},[7602],{"type":3095,"tag":3465,"props":7603,"children":7604},{"style":3630},[7605],{"type":3100,"value":3633},{"type":3095,"tag":3465,"props":7607,"children":7608},{"class":3467,"line":3063},[7609,7613,7617,7621,7625],{"type":3095,"tag":3465,"props":7610,"children":7611},{"style":3630},[7612],{"type":3100,"value":4649},{"type":3095,"tag":3465,"props":7614,"children":7615},{"style":4652},[7616],{"type":3100,"value":4655},{"type":3095,"tag":3465,"props":7618,"children":7619},{"style":3630},[7620],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":7622,"children":7623},{"style":3630},[7624],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":7626,"children":7627},{"style":3630},[7628],{"type":3100,"value":3692},{"type":3095,"tag":3465,"props":7630,"children":7631},{"class":3467,"line":3497},[7632,7636,7640,7644,7648],{"type":3095,"tag":3465,"props":7633,"children":7634},{"style":3630},[7635],{"type":3100,"value":4675},{"type":3095,"tag":3465,"props":7637,"children":7638},{"style":3480},[7639],{"type":3100,"value":4680},{"type":3095,"tag":3465,"props":7641,"children":7642},{"style":3630},[7643],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":7645,"children":7646},{"style":3630},[7647],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":7649,"children":7650},{"style":3630},[7651],{"type":3100,"value":3692},{"type":3095,"tag":3465,"props":7653,"children":7654},{"class":3467,"line":3506},[7655,7659,7663,7667,7671],{"type":3095,"tag":3465,"props":7656,"children":7657},{"style":3630},[7658],{"type":3100,"value":4700},{"type":3095,"tag":3465,"props":7660,"children":7661},{"style":3905},[7662],{"type":3100,"value":4623},{"type":3095,"tag":3465,"props":7664,"children":7665},{"style":3630},[7666],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":7668,"children":7669},{"style":3630},[7670],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":7672,"children":7673},{"style":3630},[7674],{"type":3100,"value":3692},{"type":3095,"tag":3465,"props":7676,"children":7677},{"class":3467,"line":3059},[7678,7682,7686,7690,7694,7698,7702,7706],{"type":3095,"tag":3465,"props":7679,"children":7680},{"style":3630},[7681],{"type":3100,"value":4732},{"type":3095,"tag":3465,"props":7683,"children":7684},{"style":3639},[7685],{"type":3100,"value":4737},{"type":3095,"tag":3465,"props":7687,"children":7688},{"style":3630},[7689],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":7691,"children":7692},{"style":3630},[7693],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":7695,"children":7696},{"style":3630},[7697],{"type":3100,"value":4173},{"type":3095,"tag":3465,"props":7699,"children":7700},{"style":3486},[7701],{"type":3100,"value":4905},{"type":3095,"tag":3465,"props":7703,"children":7704},{"style":3630},[7705],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":7707,"children":7708},{"style":3630},[7709],{"type":3100,"value":3675},{"type":3095,"tag":3465,"props":7711,"children":7712},{"class":3467,"line":3531},[7713,7717,7721,7725,7729,7733,7737,7741],{"type":3095,"tag":3465,"props":7714,"children":7715},{"style":3630},[7716],{"type":3100,"value":4732},{"type":3095,"tag":3465,"props":7718,"children":7719},{"style":3639},[7720],{"type":3100,"value":4925},{"type":3095,"tag":3465,"props":7722,"children":7723},{"style":3630},[7724],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":7726,"children":7727},{"style":3630},[7728],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":7730,"children":7731},{"style":3630},[7732],{"type":3100,"value":4173},{"type":3095,"tag":3465,"props":7734,"children":7735},{"style":3486},[7736],{"type":3100,"value":4942},{"type":3095,"tag":3465,"props":7738,"children":7739},{"style":3630},[7740],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":7742,"children":7743},{"style":3630},[7744],{"type":3100,"value":3675},{"type":3095,"tag":3465,"props":7746,"children":7747},{"class":3467,"line":3539},[7748,7752,7756,7760,7764],{"type":3095,"tag":3465,"props":7749,"children":7750},{"style":3630},[7751],{"type":3100,"value":4732},{"type":3095,"tag":3465,"props":7753,"children":7754},{"style":3639},[7755],{"type":3100,"value":4962},{"type":3095,"tag":3465,"props":7757,"children":7758},{"style":3630},[7759],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":7761,"children":7762},{"style":3630},[7763],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":7765,"children":7766},{"style":3905},[7767],{"type":3100,"value":4975},{"type":3095,"tag":3465,"props":7769,"children":7770},{"class":3467,"line":3084},[7771],{"type":3095,"tag":3465,"props":7772,"children":7773},{"style":3630},[7774],{"type":3100,"value":4767},{"type":3095,"tag":3465,"props":7776,"children":7777},{"class":3467,"line":3735},[7778],{"type":3095,"tag":3465,"props":7779,"children":7780},{"style":3630},[7781],{"type":3100,"value":4775},{"type":3095,"tag":3465,"props":7783,"children":7784},{"class":3467,"line":3744},[7785],{"type":3095,"tag":3465,"props":7786,"children":7787},{"style":3630},[7788],{"type":3100,"value":4438},{"type":3095,"tag":3465,"props":7790,"children":7791},{"class":3467,"line":3753},[7792],{"type":3095,"tag":3465,"props":7793,"children":7794},{"style":3630},[7795],{"type":3100,"value":4446},{"type":3095,"tag":3102,"props":7797,"children":7798},{},[7799,7801,7808],{"type":3100,"value":7800},"See the ",{"type":3095,"tag":3106,"props":7802,"children":7805},{"href":7803,"rel":7804},"https:\u002F\u002Funstorage.unjs.io\u002Fdrivers\u002Fredis",[3110],[7806],{"type":3100,"value":7807},"unstorage Redis driver docs",{"type":3100,"value":7809}," for all available options.",{"type":3095,"tag":3441,"props":7811,"children":7813},{"id":7812},"when-memory-fs-is-acceptable",[7814,7816,7821,7822,7827],{"type":3100,"value":7815},"When ",{"type":3095,"tag":3252,"props":7817,"children":7819},{"className":7818},[],[7820],{"type":3100,"value":4754},{"type":3100,"value":7459},{"type":3095,"tag":3252,"props":7823,"children":7825},{"className":7824},[],[7826],{"type":3100,"value":7429},{"type":3100,"value":7828}," is acceptable",{"type":3095,"tag":3102,"props":7830,"children":7831},{},[7832,7833,7838,7839,7844],{"type":3100,"value":4465},{"type":3095,"tag":3252,"props":7834,"children":7836},{"className":7835},[],[7837],{"type":3100,"value":4754},{"type":3100,"value":3351},{"type":3095,"tag":3252,"props":7840,"children":7842},{"className":7841},[],[7843],{"type":3100,"value":7429},{"type":3100,"value":7845}," drivers are fine for:",{"type":3095,"tag":3152,"props":7847,"children":7848},{},[7849,7854,7859],{"type":3095,"tag":3156,"props":7850,"children":7851},{},[7852],{"type":3100,"value":7853},"Single-instance deployments",{"type":3095,"tag":3156,"props":7855,"children":7856},{},[7857],{"type":3100,"value":7858},"Development environments",{"type":3095,"tag":3156,"props":7860,"children":7861},{},[7862],{"type":3100,"value":7863},"Low-traffic applications where occasional race conditions are acceptable",{"type":3095,"tag":3102,"props":7865,"children":7866},{},[7867],{"type":3100,"value":7868},"For everything else, use Redis.",{"type":3095,"tag":3178,"props":7870,"children":7872},{"id":7871},"fail2ban-integration",[7873],{"type":3100,"value":7874},"Fail2ban Integration",{"type":3095,"tag":3102,"props":7876,"children":7877},{},[7878,7880,7885,7887,7893],{"type":3100,"value":7879},"When a user exceeds the rate limit and gets banned, ",{"type":3095,"tag":3252,"props":7881,"children":7883},{"className":7882},[],[7884],{"type":3100,"value":3036},{"type":3100,"value":7886}," can write ban events to the log file in a ",{"type":3095,"tag":3252,"props":7888,"children":7890},{"className":7889},[],[7891],{"type":3100,"value":7892},"fail2ban",{"type":3100,"value":7894},"-compatible format. You can then configure fail2ban to watch these logs and automatically block the IP at the firewall level.",{"type":3095,"tag":3441,"props":7896,"children":7898},{"id":7897},"setup",[7899],{"type":3100,"value":7900},"Setup",{"type":3095,"tag":3102,"props":7902,"children":7903},{},[7904,7906,7912,7913,7918,7920,7926],{"type":3100,"value":7905},"Enable fail2ban logging by setting ",{"type":3095,"tag":3252,"props":7907,"children":7909},{"className":7908},[],[7910],{"type":3100,"value":7911},"log.fail2ban",{"type":3100,"value":4608},{"type":3095,"tag":3252,"props":7914,"children":7916},{"className":7915},[],[7917],{"type":3100,"value":4503},{"type":3100,"value":7919}," and configuring the ",{"type":3095,"tag":3252,"props":7921,"children":7923},{"className":7922},[],[7924],{"type":3100,"value":7925},"log.path",{"type":3100,"value":3647},{"type":3095,"tag":3455,"props":7928,"children":7930},{"className":3595,"code":7929,"language":3597,"meta":3039,"style":3039},"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",[7931],{"type":3095,"tag":3252,"props":7932,"children":7933},{"__ignoreMap":3039},[7934,7957,7992,8007,8023,8057,8083,8108,8115,8122],{"type":3095,"tag":3465,"props":7935,"children":7936},{"class":3467,"line":3067},[7937,7941,7945,7949,7953],{"type":3095,"tag":3465,"props":7938,"children":7939},{"style":3607},[7940],{"type":3100,"value":3610},{"type":3095,"tag":3465,"props":7942,"children":7943},{"style":3607},[7944],{"type":3100,"value":3615},{"type":3095,"tag":3465,"props":7946,"children":7947},{"style":3618},[7948],{"type":3100,"value":3621},{"type":3095,"tag":3465,"props":7950,"children":7951},{"style":3624},[7952],{"type":3100,"value":3627},{"type":3095,"tag":3465,"props":7954,"children":7955},{"style":3630},[7956],{"type":3100,"value":3633},{"type":3095,"tag":3465,"props":7958,"children":7959},{"class":3467,"line":3063},[7960,7964,7968,7972,7976,7980,7984,7988],{"type":3095,"tag":3465,"props":7961,"children":7962},{"style":3639},[7963],{"type":3100,"value":3642},{"type":3095,"tag":3465,"props":7965,"children":7966},{"style":3630},[7967],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":7969,"children":7970},{"style":3624},[7971],{"type":3100,"value":3652},{"type":3095,"tag":3465,"props":7973,"children":7974},{"style":3630},[7975],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":7977,"children":7978},{"style":3486},[7979],{"type":3100,"value":3036},{"type":3095,"tag":3465,"props":7981,"children":7982},{"style":3630},[7983],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":7985,"children":7986},{"style":3624},[7987],{"type":3100,"value":3670},{"type":3095,"tag":3465,"props":7989,"children":7990},{"style":3630},[7991],{"type":3100,"value":3675},{"type":3095,"tag":3465,"props":7993,"children":7994},{"class":3467,"line":3497},[7995,7999,8003],{"type":3095,"tag":3465,"props":7996,"children":7997},{"style":3639},[7998],{"type":3100,"value":3683},{"type":3095,"tag":3465,"props":8000,"children":8001},{"style":3630},[8002],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":8004,"children":8005},{"style":3630},[8006],{"type":3100,"value":3692},{"type":3095,"tag":3465,"props":8008,"children":8009},{"class":3467,"line":3506},[8010,8015,8019],{"type":3095,"tag":3465,"props":8011,"children":8012},{"style":3639},[8013],{"type":3100,"value":8014},"    log",{"type":3095,"tag":3465,"props":8016,"children":8017},{"style":3630},[8018],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":8020,"children":8021},{"style":3630},[8022],{"type":3100,"value":3692},{"type":3095,"tag":3465,"props":8024,"children":8025},{"class":3467,"line":3059},[8026,8031,8035,8039,8044,8048,8052],{"type":3095,"tag":3465,"props":8027,"children":8028},{"style":3639},[8029],{"type":3100,"value":8030},"      path",{"type":3095,"tag":3465,"props":8032,"children":8033},{"style":3630},[8034],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":8036,"children":8037},{"style":3630},[8038],{"type":3100,"value":4173},{"type":3095,"tag":3465,"props":8040,"children":8041},{"style":3486},[8042],{"type":3100,"value":8043},"\u002Fvar\u002Flog\u002Fnuxt-api-shield",{"type":3095,"tag":3465,"props":8045,"children":8046},{"style":3630},[8047],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":8049,"children":8050},{"style":3630},[8051],{"type":3100,"value":3867},{"type":3095,"tag":3465,"props":8053,"children":8054},{"style":3471},[8055],{"type":3100,"value":8056}," \u002F\u002F required — must be set\n",{"type":3095,"tag":3465,"props":8058,"children":8059},{"class":3467,"line":3531},[8060,8065,8069,8074,8078],{"type":3095,"tag":3465,"props":8061,"children":8062},{"style":3639},[8063],{"type":3100,"value":8064},"      attempts",{"type":3095,"tag":3465,"props":8066,"children":8067},{"style":3630},[8068],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":8070,"children":8071},{"style":3905},[8072],{"type":3100,"value":8073}," 1",{"type":3095,"tag":3465,"props":8075,"children":8076},{"style":3630},[8077],{"type":3100,"value":3867},{"type":3095,"tag":3465,"props":8079,"children":8080},{"style":3471},[8081],{"type":3100,"value":8082},"                       \u002F\u002F optional — threshold for regular request logging\n",{"type":3095,"tag":3465,"props":8084,"children":8085},{"class":3467,"line":3539},[8086,8091,8095,8099,8103],{"type":3095,"tag":3465,"props":8087,"children":8088},{"style":3639},[8089],{"type":3100,"value":8090},"      fail2ban",{"type":3095,"tag":3465,"props":8092,"children":8093},{"style":3630},[8094],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":8096,"children":8097},{"style":3959},[8098],{"type":3100,"value":4152},{"type":3095,"tag":3465,"props":8100,"children":8101},{"style":3630},[8102],{"type":3100,"value":3867},{"type":3095,"tag":3465,"props":8104,"children":8105},{"style":3471},[8106],{"type":3100,"value":8107},"                     \u002F\u002F enable fail2ban format\n",{"type":3095,"tag":3465,"props":8109,"children":8110},{"class":3467,"line":3084},[8111],{"type":3095,"tag":3465,"props":8112,"children":8113},{"style":3630},[8114],{"type":3100,"value":3741},{"type":3095,"tag":3465,"props":8116,"children":8117},{"class":3467,"line":3735},[8118],{"type":3095,"tag":3465,"props":8119,"children":8120},{"style":3630},[8121],{"type":3100,"value":3988},{"type":3095,"tag":3465,"props":8123,"children":8124},{"class":3467,"line":3744},[8125,8129],{"type":3095,"tag":3465,"props":8126,"children":8127},{"style":3630},[8128],{"type":3100,"value":3997},{"type":3095,"tag":3465,"props":8130,"children":8131},{"style":3624},[8132],{"type":3100,"value":8133},")\n",{"type":3095,"tag":3102,"props":8135,"children":8136},{},[8137],{"type":3100,"value":8138},"When enabled, every ban event writes a line like:",{"type":3095,"tag":3455,"props":8140,"children":8144},{"className":8141,"code":8143,"language":3100},[8142],"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",[8145],{"type":3095,"tag":3252,"props":8146,"children":8147},{"__ignoreMap":3039},[8148],{"type":3100,"value":8143},{"type":3095,"tag":3441,"props":8150,"children":8152},{"id":8151},"fail2ban-filter-configuration",[8153],{"type":3100,"value":8154},"Fail2ban filter configuration",{"type":3095,"tag":3102,"props":8156,"children":8157},{},[8158,8160,8166],{"type":3100,"value":8159},"Create ",{"type":3095,"tag":3252,"props":8161,"children":8163},{"className":8162},[],[8164],{"type":3100,"value":8165},"\u002Fetc\u002Ffail2ban\u002Ffilter.d\u002Fnuxt-api-shield.conf",{"type":3100,"value":3647},{"type":3095,"tag":3455,"props":8168,"children":8172},{"className":8169,"code":8170,"language":8171,"meta":3039,"style":3039},"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",[8173],{"type":3095,"tag":3252,"props":8174,"children":8175},{"__ignoreMap":3039},[8176,8184],{"type":3095,"tag":3465,"props":8177,"children":8178},{"class":3467,"line":3067},[8179],{"type":3095,"tag":3465,"props":8180,"children":8181},{"style":3630},[8182],{"type":3100,"value":8183},"[Definition]\n",{"type":3095,"tag":3465,"props":8185,"children":8186},{"class":3467,"line":3063},[8187,8192,8196],{"type":3095,"tag":3465,"props":8188,"children":8189},{"style":3639},[8190],{"type":3100,"value":8191},"failregex",{"type":3095,"tag":3465,"props":8193,"children":8194},{"style":3630},[8195],{"type":3100,"value":5578},{"type":3095,"tag":3465,"props":8197,"children":8198},{"style":3624},[8199],{"type":3100,"value":8200}," ^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2},\\d{3} nuxt-api-shield ban \u003CHOST>\n",{"type":3095,"tag":3441,"props":8202,"children":8204},{"id":8203},"jail-configuration",[8205],{"type":3100,"value":8206},"Jail configuration",{"type":3095,"tag":3102,"props":8208,"children":8209},{},[8210,8212,8218],{"type":3100,"value":8211},"Add a jail entry in ",{"type":3095,"tag":3252,"props":8213,"children":8215},{"className":8214},[],[8216],{"type":3100,"value":8217},"\u002Fetc\u002Ffail2ban\u002Fjail.local",{"type":3100,"value":3647},{"type":3095,"tag":3455,"props":8220,"children":8222},{"className":8169,"code":8221,"language":8171,"meta":3039,"style":3039},"[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",[8223],{"type":3095,"tag":3252,"props":8224,"children":8225},{"__ignoreMap":3039},[8226,8234,8251,8268,8285,8302,8319,8336,8352],{"type":3095,"tag":3465,"props":8227,"children":8228},{"class":3467,"line":3067},[8229],{"type":3095,"tag":3465,"props":8230,"children":8231},{"style":3630},[8232],{"type":3100,"value":8233},"[nuxt-api-shield]\n",{"type":3095,"tag":3465,"props":8235,"children":8236},{"class":3467,"line":3063},[8237,8242,8247],{"type":3095,"tag":3465,"props":8238,"children":8239},{"style":3639},[8240],{"type":3100,"value":8241},"enabled",{"type":3095,"tag":3465,"props":8243,"children":8244},{"style":3630},[8245],{"type":3100,"value":8246},"  =",{"type":3095,"tag":3465,"props":8248,"children":8249},{"style":3624},[8250],{"type":3100,"value":5166},{"type":3095,"tag":3465,"props":8252,"children":8253},{"class":3467,"line":3497},[8254,8259,8264],{"type":3095,"tag":3465,"props":8255,"children":8256},{"style":3639},[8257],{"type":3100,"value":8258},"filter",{"type":3095,"tag":3465,"props":8260,"children":8261},{"style":3630},[8262],{"type":3100,"value":8263},"   =",{"type":3095,"tag":3465,"props":8265,"children":8266},{"style":3624},[8267],{"type":3100,"value":3494},{"type":3095,"tag":3465,"props":8269,"children":8270},{"class":3467,"line":3506},[8271,8276,8280],{"type":3095,"tag":3465,"props":8272,"children":8273},{"style":3639},[8274],{"type":3100,"value":8275},"logpath",{"type":3095,"tag":3465,"props":8277,"children":8278},{"style":3630},[8279],{"type":3100,"value":8246},{"type":3095,"tag":3465,"props":8281,"children":8282},{"style":3624},[8283],{"type":3100,"value":8284}," \u002Fvar\u002Flog\u002Fnuxt-api-shield\u002Fshield-*.log\n",{"type":3095,"tag":3465,"props":8286,"children":8287},{"class":3467,"line":3059},[8288,8292,8297],{"type":3095,"tag":3465,"props":8289,"children":8290},{"style":3639},[8291],{"type":3100,"value":4962},{"type":3095,"tag":3465,"props":8293,"children":8294},{"style":3630},[8295],{"type":3100,"value":8296},"     =",{"type":3095,"tag":3465,"props":8298,"children":8299},{"style":3624},[8300],{"type":3100,"value":8301}," http,https\n",{"type":3095,"tag":3465,"props":8303,"children":8304},{"class":3467,"line":3531},[8305,8310,8314],{"type":3095,"tag":3465,"props":8306,"children":8307},{"style":3639},[8308],{"type":3100,"value":8309},"banaction",{"type":3095,"tag":3465,"props":8311,"children":8312},{"style":3630},[8313],{"type":3100,"value":5578},{"type":3095,"tag":3465,"props":8315,"children":8316},{"style":3624},[8317],{"type":3100,"value":8318}," iptables-multiport\n",{"type":3095,"tag":3465,"props":8320,"children":8321},{"class":3467,"line":3539},[8322,8327,8331],{"type":3095,"tag":3465,"props":8323,"children":8324},{"style":3639},[8325],{"type":3100,"value":8326},"maxretry",{"type":3095,"tag":3465,"props":8328,"children":8329},{"style":3630},[8330],{"type":3100,"value":5578},{"type":3095,"tag":3465,"props":8332,"children":8333},{"style":3624},[8334],{"type":3100,"value":8335}," 1\n",{"type":3095,"tag":3465,"props":8337,"children":8338},{"class":3467,"line":3084},[8339,8344,8348],{"type":3095,"tag":3465,"props":8340,"children":8341},{"style":3639},[8342],{"type":3100,"value":8343},"findtime",{"type":3095,"tag":3465,"props":8345,"children":8346},{"style":3630},[8347],{"type":3100,"value":5578},{"type":3095,"tag":3465,"props":8349,"children":8350},{"style":3624},[8351],{"type":3100,"value":8335},{"type":3095,"tag":3465,"props":8353,"children":8354},{"class":3467,"line":3735},[8355,8360,8364],{"type":3095,"tag":3465,"props":8356,"children":8357},{"style":3639},[8358],{"type":3100,"value":8359},"bantime",{"type":3095,"tag":3465,"props":8361,"children":8362},{"style":3630},[8363],{"type":3100,"value":8246},{"type":3095,"tag":3465,"props":8365,"children":8366},{"style":3624},[8367],{"type":3100,"value":8368}," 3600\n",{"type":3095,"tag":3102,"props":8370,"children":8371},{},[8372,8374,8379,8381,8387,8389,8395,8396,8402,8404,8409],{"type":3100,"value":8373},"Since ",{"type":3095,"tag":3252,"props":8375,"children":8377},{"className":8376},[],[8378],{"type":3100,"value":3036},{"type":3100,"value":8380}," already applies its own ban logic (configurable via ",{"type":3095,"tag":3252,"props":8382,"children":8384},{"className":8383},[],[8385],{"type":3100,"value":8386},"limit.ban",{"type":3100,"value":8388},"), set ",{"type":3095,"tag":3252,"props":8390,"children":8392},{"className":8391},[],[8393],{"type":3100,"value":8394},"maxretry = 1",{"type":3100,"value":3351},{"type":3095,"tag":3252,"props":8397,"children":8399},{"className":8398},[],[8400],{"type":3100,"value":8401},"findtime = 1",{"type":3100,"value":8403}," so fail2ban acts immediately on each ban log entry. Adjust ",{"type":3095,"tag":3252,"props":8405,"children":8407},{"className":8406},[],[8408],{"type":3100,"value":8359},{"type":3100,"value":8410}," to match or extend your module-level ban duration.",{"type":3095,"tag":3102,"props":8412,"children":8413},{},[8414],{"type":3100,"value":8415},"Restart fail2ban after adding the config:",{"type":3095,"tag":3455,"props":8417,"children":8419},{"className":3457,"code":8418,"language":3459,"meta":3039,"style":3039},"sudo systemctl restart fail2ban\n",[8420],{"type":3095,"tag":3252,"props":8421,"children":8422},{"__ignoreMap":3039},[8423],{"type":3095,"tag":3465,"props":8424,"children":8425},{"class":3467,"line":3067},[8426,8431,8436,8441],{"type":3095,"tag":3465,"props":8427,"children":8428},{"style":3480},[8429],{"type":3100,"value":8430},"sudo",{"type":3095,"tag":3465,"props":8432,"children":8433},{"style":3486},[8434],{"type":3100,"value":8435}," systemctl",{"type":3095,"tag":3465,"props":8437,"children":8438},{"style":3486},[8439],{"type":3100,"value":8440}," restart",{"type":3095,"tag":3465,"props":8442,"children":8443},{"style":3486},[8444],{"type":3100,"value":8445}," fail2ban\n",{"type":3095,"tag":8447,"props":8448,"children":8449},"blockquote",{},[8450],{"type":3095,"tag":3102,"props":8451,"children":8452},{},[8453,8458,8460,8465],{"type":3095,"tag":3190,"props":8454,"children":8455},{},[8456],{"type":3100,"value":8457},"Note:",{"type":3100,"value":8459}," The ",{"type":3095,"tag":3252,"props":8461,"children":8463},{"className":8462},[],[8464],{"type":3100,"value":7925},{"type":3100,"value":8466}," directory must be readable by the fail2ban service. Ensure permissions are set accordingly.",{"type":3095,"tag":3178,"props":8468,"children":8470},{"id":8469},"typescript-types",[8471],{"type":3100,"value":8472},"TypeScript Types",{"type":3095,"tag":3102,"props":8474,"children":8475},{},[8476],{"type":3100,"value":8477},"The module exports TypeScript types that you can use in your application:",{"type":3095,"tag":3441,"props":8479,"children":8481},{"id":8480},"ratelimit-type",[8482,8488],{"type":3095,"tag":3252,"props":8483,"children":8485},{"className":8484},[],[8486],{"type":3100,"value":8487},"RateLimit",{"type":3100,"value":8489}," Type",{"type":3095,"tag":3102,"props":8491,"children":8492},{},[8493,8494,8499],{"type":3100,"value":4465},{"type":3095,"tag":3252,"props":8495,"children":8497},{"className":8496},[],[8498],{"type":3100,"value":8487},{"type":3100,"value":8500}," type represents the structure of rate limit data stored for each IP address:",{"type":3095,"tag":3455,"props":8502,"children":8504},{"className":5365,"code":8503,"language":5367,"meta":3039,"style":3039},"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",[8505],{"type":3095,"tag":3252,"props":8506,"children":8507},{"__ignoreMap":3039},[8508,8551,8558,8566,8574,8587,8600],{"type":3095,"tag":3465,"props":8509,"children":8510},{"class":3467,"line":3067},[8511,8515,8519,8523,8527,8531,8535,8539,8543,8547],{"type":3095,"tag":3465,"props":8512,"children":8513},{"style":3607},[8514],{"type":3100,"value":5379},{"type":3095,"tag":3465,"props":8516,"children":8517},{"style":3607},[8518],{"type":3100,"value":6120},{"type":3095,"tag":3465,"props":8520,"children":8521},{"style":3630},[8522],{"type":3100,"value":5384},{"type":3095,"tag":3465,"props":8524,"children":8525},{"style":3624},[8526],{"type":3100,"value":6129},{"type":3095,"tag":3465,"props":8528,"children":8529},{"style":3630},[8530],{"type":3100,"value":5394},{"type":3095,"tag":3465,"props":8532,"children":8533},{"style":3607},[8534],{"type":3100,"value":5399},{"type":3095,"tag":3465,"props":8536,"children":8537},{"style":3630},[8538],{"type":3100,"value":4173},{"type":3095,"tag":3465,"props":8540,"children":8541},{"style":3486},[8542],{"type":3100,"value":3036},{"type":3095,"tag":3465,"props":8544,"children":8545},{"style":3630},[8546],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":8548,"children":8549},{"style":3630},[8550],{"type":3100,"value":4007},{"type":3095,"tag":3465,"props":8552,"children":8553},{"class":3467,"line":3063},[8554],{"type":3095,"tag":3465,"props":8555,"children":8556},{"emptyLinePlaceholder":1200},[8557],{"type":3100,"value":3503},{"type":3095,"tag":3465,"props":8559,"children":8560},{"class":3467,"line":3497},[8561],{"type":3095,"tag":3465,"props":8562,"children":8563},{"style":3471},[8564],{"type":3100,"value":8565},"\u002F\u002F RateLimit structure:\n",{"type":3095,"tag":3465,"props":8567,"children":8568},{"class":3467,"line":3506},[8569],{"type":3095,"tag":3465,"props":8570,"children":8571},{"style":3471},[8572],{"type":3100,"value":8573},"\u002F\u002F {\n",{"type":3095,"tag":3465,"props":8575,"children":8576},{"class":3467,"line":3059},[8577,8582],{"type":3095,"tag":3465,"props":8578,"children":8579},{"style":3471},[8580],{"type":3100,"value":8581},"\u002F\u002F   count: number",{"type":3095,"tag":3465,"props":8583,"children":8584},{"style":3471},[8585],{"type":3100,"value":8586},"  \u002F\u002F Number of requests made\n",{"type":3095,"tag":3465,"props":8588,"children":8589},{"class":3467,"line":3531},[8590,8595],{"type":3095,"tag":3465,"props":8591,"children":8592},{"style":3471},[8593],{"type":3100,"value":8594},"\u002F\u002F   time: number",{"type":3095,"tag":3465,"props":8596,"children":8597},{"style":3471},[8598],{"type":3100,"value":8599},"   \u002F\u002F Timestamp of the last request\n",{"type":3095,"tag":3465,"props":8601,"children":8602},{"class":3467,"line":3539},[8603],{"type":3095,"tag":3465,"props":8604,"children":8605},{"style":3471},[8606],{"type":3100,"value":8607},"\u002F\u002F }\n",{"type":3095,"tag":3102,"props":8609,"children":8610},{},[8611],{"type":3095,"tag":3190,"props":8612,"children":8613},{},[8614],{"type":3100,"value":8615},"Usage Example:",{"type":3095,"tag":3455,"props":8617,"children":8619},{"className":5365,"code":8618,"language":5367,"meta":3039,"style":3039},"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",[8620],{"type":3095,"tag":3252,"props":8621,"children":8622},{"__ignoreMap":3039},[8623,8666,8705,8712,8757,8790,8851,8858,8875,8942,9023],{"type":3095,"tag":3465,"props":8624,"children":8625},{"class":3467,"line":3067},[8626,8630,8634,8638,8642,8646,8650,8654,8658,8662],{"type":3095,"tag":3465,"props":8627,"children":8628},{"style":3607},[8629],{"type":3100,"value":5379},{"type":3095,"tag":3465,"props":8631,"children":8632},{"style":3607},[8633],{"type":3100,"value":6120},{"type":3095,"tag":3465,"props":8635,"children":8636},{"style":3630},[8637],{"type":3100,"value":5384},{"type":3095,"tag":3465,"props":8639,"children":8640},{"style":3624},[8641],{"type":3100,"value":6129},{"type":3095,"tag":3465,"props":8643,"children":8644},{"style":3630},[8645],{"type":3100,"value":5394},{"type":3095,"tag":3465,"props":8647,"children":8648},{"style":3607},[8649],{"type":3100,"value":5399},{"type":3095,"tag":3465,"props":8651,"children":8652},{"style":3630},[8653],{"type":3100,"value":4173},{"type":3095,"tag":3465,"props":8655,"children":8656},{"style":3486},[8657],{"type":3100,"value":3036},{"type":3095,"tag":3465,"props":8659,"children":8660},{"style":3630},[8661],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":8663,"children":8664},{"style":3630},[8665],{"type":3100,"value":4007},{"type":3095,"tag":3465,"props":8667,"children":8668},{"class":3467,"line":3063},[8669,8673,8677,8681,8685,8689,8693,8697,8701],{"type":3095,"tag":3465,"props":8670,"children":8671},{"style":3607},[8672],{"type":3100,"value":5379},{"type":3095,"tag":3465,"props":8674,"children":8675},{"style":3630},[8676],{"type":3100,"value":5384},{"type":3095,"tag":3465,"props":8678,"children":8679},{"style":3624},[8680],{"type":3100,"value":5583},{"type":3095,"tag":3465,"props":8682,"children":8683},{"style":3630},[8684],{"type":3100,"value":5394},{"type":3095,"tag":3465,"props":8686,"children":8687},{"style":3607},[8688],{"type":3100,"value":5399},{"type":3095,"tag":3465,"props":8690,"children":8691},{"style":3630},[8692],{"type":3100,"value":4173},{"type":3095,"tag":3465,"props":8694,"children":8695},{"style":3486},[8696],{"type":3100,"value":5408},{"type":3095,"tag":3465,"props":8698,"children":8699},{"style":3630},[8700],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":8702,"children":8703},{"style":3630},[8704],{"type":3100,"value":4007},{"type":3095,"tag":3465,"props":8706,"children":8707},{"class":3467,"line":3497},[8708],{"type":3095,"tag":3465,"props":8709,"children":8710},{"emptyLinePlaceholder":1200},[8711],{"type":3100,"value":3503},{"type":3095,"tag":3465,"props":8713,"children":8714},{"class":3467,"line":3506},[8715,8719,8724,8729,8733,8737,8741,8745,8749,8753],{"type":3095,"tag":3465,"props":8716,"children":8717},{"style":4652},[8718],{"type":3100,"value":5736},{"type":3095,"tag":3465,"props":8720,"children":8721},{"style":3624},[8722],{"type":3100,"value":8723}," shieldStorage ",{"type":3095,"tag":3465,"props":8725,"children":8726},{"style":3630},[8727],{"type":3100,"value":8728},"=",{"type":3095,"tag":3465,"props":8730,"children":8731},{"style":3618},[8732],{"type":3100,"value":5583},{"type":3095,"tag":3465,"props":8734,"children":8735},{"style":3624},[8736],{"type":3100,"value":3627},{"type":3095,"tag":3465,"props":8738,"children":8739},{"style":3630},[8740],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":8742,"children":8743},{"style":3486},[8744],{"type":3100,"value":4623},{"type":3095,"tag":3465,"props":8746,"children":8747},{"style":3630},[8748],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":8750,"children":8751},{"style":3624},[8752],{"type":3100,"value":4002},{"type":3095,"tag":3465,"props":8754,"children":8755},{"style":3630},[8756],{"type":3100,"value":4007},{"type":3095,"tag":3465,"props":8758,"children":8759},{"class":3467,"line":3059},[8760,8764,8769,8773,8777,8782,8786],{"type":3095,"tag":3465,"props":8761,"children":8762},{"style":4652},[8763],{"type":3100,"value":5736},{"type":3095,"tag":3465,"props":8765,"children":8766},{"style":3624},[8767],{"type":3100,"value":8768}," ipKey ",{"type":3095,"tag":3465,"props":8770,"children":8771},{"style":3630},[8772],{"type":3100,"value":8728},{"type":3095,"tag":3465,"props":8774,"children":8775},{"style":3630},[8776],{"type":3100,"value":4173},{"type":3095,"tag":3465,"props":8778,"children":8779},{"style":3486},[8780],{"type":3100,"value":8781},"ip:192.168.1.1",{"type":3095,"tag":3465,"props":8783,"children":8784},{"style":3630},[8785],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":8787,"children":8788},{"style":3630},[8789],{"type":3100,"value":4007},{"type":3095,"tag":3465,"props":8791,"children":8792},{"class":3467,"line":3531},[8793,8797,8802,8806,8810,8814,8818,8822,8826,8831,8835,8839,8843,8847],{"type":3095,"tag":3465,"props":8794,"children":8795},{"style":4652},[8796],{"type":3100,"value":5736},{"type":3095,"tag":3465,"props":8798,"children":8799},{"style":3624},[8800],{"type":3100,"value":8801}," entry ",{"type":3095,"tag":3465,"props":8803,"children":8804},{"style":3630},[8805],{"type":3100,"value":8728},{"type":3095,"tag":3465,"props":8807,"children":8808},{"style":3624},[8809],{"type":3100,"value":5731},{"type":3095,"tag":3465,"props":8811,"children":8812},{"style":3607},[8813],{"type":3100,"value":6860},{"type":3095,"tag":3465,"props":8815,"children":8816},{"style":3624},[8817],{"type":3100,"value":5573},{"type":3095,"tag":3465,"props":8819,"children":8820},{"style":3630},[8821],{"type":3100,"value":4594},{"type":3095,"tag":3465,"props":8823,"children":8824},{"style":3618},[8825],{"type":3100,"value":5793},{"type":3095,"tag":3465,"props":8827,"children":8828},{"style":3624},[8829],{"type":3100,"value":8830},"(ipKey)) ",{"type":3095,"tag":3465,"props":8832,"children":8833},{"style":3607},[8834],{"type":3100,"value":6889},{"type":3095,"tag":3465,"props":8836,"children":8837},{"style":3480},[8838],{"type":3100,"value":6129},{"type":3095,"tag":3465,"props":8840,"children":8841},{"style":3630},[8842],{"type":3100,"value":6898},{"type":3095,"tag":3465,"props":8844,"children":8845},{"style":3480},[8846],{"type":3100,"value":6903},{"type":3095,"tag":3465,"props":8848,"children":8849},{"style":3630},[8850],{"type":3100,"value":4007},{"type":3095,"tag":3465,"props":8852,"children":8853},{"class":3467,"line":3539},[8854],{"type":3095,"tag":3465,"props":8855,"children":8856},{"emptyLinePlaceholder":1200},[8857],{"type":3100,"value":3503},{"type":3095,"tag":3465,"props":8859,"children":8860},{"class":3467,"line":3084},[8861,8866,8871],{"type":3095,"tag":3465,"props":8862,"children":8863},{"style":3607},[8864],{"type":3100,"value":8865},"if",{"type":3095,"tag":3465,"props":8867,"children":8868},{"style":3624},[8869],{"type":3100,"value":8870}," (entry) ",{"type":3095,"tag":3465,"props":8872,"children":8873},{"style":3630},[8874],{"type":3100,"value":3633},{"type":3095,"tag":3465,"props":8876,"children":8877},{"class":3467,"line":3735},[8878,8883,8887,8891,8895,8899,8904,8908,8912,8916,8921,8925,8930,8934,8938],{"type":3095,"tag":3465,"props":8879,"children":8880},{"style":3624},[8881],{"type":3100,"value":8882},"  console",{"type":3095,"tag":3465,"props":8884,"children":8885},{"style":3630},[8886],{"type":3100,"value":4594},{"type":3095,"tag":3465,"props":8888,"children":8889},{"style":3618},[8890],{"type":3100,"value":5926},{"type":3095,"tag":3465,"props":8892,"children":8893},{"style":3639},[8894],{"type":3100,"value":3627},{"type":3095,"tag":3465,"props":8896,"children":8897},{"style":3630},[8898],{"type":3100,"value":5935},{"type":3095,"tag":3465,"props":8900,"children":8901},{"style":3486},[8902],{"type":3100,"value":8903},"IP has made ",{"type":3095,"tag":3465,"props":8905,"children":8906},{"style":3630},[8907],{"type":3100,"value":5945},{"type":3095,"tag":3465,"props":8909,"children":8910},{"style":3624},[8911],{"type":3100,"value":6940},{"type":3095,"tag":3465,"props":8913,"children":8914},{"style":3630},[8915],{"type":3100,"value":4594},{"type":3095,"tag":3465,"props":8917,"children":8918},{"style":3624},[8919],{"type":3100,"value":8920},"count",{"type":3095,"tag":3465,"props":8922,"children":8923},{"style":3630},[8924],{"type":3100,"value":3997},{"type":3095,"tag":3465,"props":8926,"children":8927},{"style":3486},[8928],{"type":3100,"value":8929}," requests",{"type":3095,"tag":3465,"props":8931,"children":8932},{"style":3630},[8933],{"type":3100,"value":5935},{"type":3095,"tag":3465,"props":8935,"children":8936},{"style":3639},[8937],{"type":3100,"value":4002},{"type":3095,"tag":3465,"props":8939,"children":8940},{"style":3630},[8941],{"type":3100,"value":4007},{"type":3095,"tag":3465,"props":8943,"children":8944},{"class":3467,"line":3744},[8945,8949,8953,8957,8961,8965,8970,8974,8979,8983,8988,8992,8997,9001,9006,9010,9015,9019],{"type":3095,"tag":3465,"props":8946,"children":8947},{"style":3624},[8948],{"type":3100,"value":8882},{"type":3095,"tag":3465,"props":8950,"children":8951},{"style":3630},[8952],{"type":3100,"value":4594},{"type":3095,"tag":3465,"props":8954,"children":8955},{"style":3618},[8956],{"type":3100,"value":5926},{"type":3095,"tag":3465,"props":8958,"children":8959},{"style":3639},[8960],{"type":3100,"value":3627},{"type":3095,"tag":3465,"props":8962,"children":8963},{"style":3630},[8964],{"type":3100,"value":5935},{"type":3095,"tag":3465,"props":8966,"children":8967},{"style":3486},[8968],{"type":3100,"value":8969},"Last request at: ",{"type":3095,"tag":3465,"props":8971,"children":8972},{"style":3630},[8973],{"type":3100,"value":5945},{"type":3095,"tag":3465,"props":8975,"children":8976},{"style":3630},[8977],{"type":3100,"value":8978},"new",{"type":3095,"tag":3465,"props":8980,"children":8981},{"style":3618},[8982],{"type":3100,"value":6753},{"type":3095,"tag":3465,"props":8984,"children":8985},{"style":3624},[8986],{"type":3100,"value":8987},"(entry",{"type":3095,"tag":3465,"props":8989,"children":8990},{"style":3630},[8991],{"type":3100,"value":4594},{"type":3095,"tag":3465,"props":8993,"children":8994},{"style":3624},[8995],{"type":3100,"value":8996},"time)",{"type":3095,"tag":3465,"props":8998,"children":8999},{"style":3630},[9000],{"type":3100,"value":4594},{"type":3095,"tag":3465,"props":9002,"children":9003},{"style":3618},[9004],{"type":3100,"value":9005},"toISOString",{"type":3095,"tag":3465,"props":9007,"children":9008},{"style":3624},[9009],{"type":3100,"value":5556},{"type":3095,"tag":3465,"props":9011,"children":9012},{"style":3630},[9013],{"type":3100,"value":9014},"}`",{"type":3095,"tag":3465,"props":9016,"children":9017},{"style":3639},[9018],{"type":3100,"value":4002},{"type":3095,"tag":3465,"props":9020,"children":9021},{"style":3630},[9022],{"type":3100,"value":4007},{"type":3095,"tag":3465,"props":9024,"children":9025},{"class":3467,"line":3753},[9026],{"type":3095,"tag":3465,"props":9027,"children":9028},{"style":3630},[9029],{"type":3100,"value":4446},{"type":3095,"tag":3441,"props":9031,"children":9033},{"id":9032},"moduleoptions-type",[9034,9040],{"type":3095,"tag":3252,"props":9035,"children":9037},{"className":9036},[],[9038],{"type":3100,"value":9039},"ModuleOptions",{"type":3100,"value":8489},{"type":3095,"tag":3102,"props":9042,"children":9043},{},[9044],{"type":3100,"value":9045},"You can also import the module configuration type:",{"type":3095,"tag":3455,"props":9047,"children":9049},{"className":5365,"code":9048,"language":5367,"meta":3039,"style":3039},"import type { ModuleOptions } from \"nuxt-api-shield\";\n",[9050],{"type":3095,"tag":3252,"props":9051,"children":9052},{"__ignoreMap":3039},[9053],{"type":3095,"tag":3465,"props":9054,"children":9055},{"class":3467,"line":3067},[9056,9060,9064,9068,9073,9077,9081,9085,9089,9093],{"type":3095,"tag":3465,"props":9057,"children":9058},{"style":3607},[9059],{"type":3100,"value":5379},{"type":3095,"tag":3465,"props":9061,"children":9062},{"style":3607},[9063],{"type":3100,"value":6120},{"type":3095,"tag":3465,"props":9065,"children":9066},{"style":3630},[9067],{"type":3100,"value":5384},{"type":3095,"tag":3465,"props":9069,"children":9070},{"style":3624},[9071],{"type":3100,"value":9072}," ModuleOptions",{"type":3095,"tag":3465,"props":9074,"children":9075},{"style":3630},[9076],{"type":3100,"value":5394},{"type":3095,"tag":3465,"props":9078,"children":9079},{"style":3607},[9080],{"type":3100,"value":5399},{"type":3095,"tag":3465,"props":9082,"children":9083},{"style":3630},[9084],{"type":3100,"value":4173},{"type":3095,"tag":3465,"props":9086,"children":9087},{"style":3486},[9088],{"type":3100,"value":3036},{"type":3095,"tag":3465,"props":9090,"children":9091},{"style":3630},[9092],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":9094,"children":9095},{"style":3630},[9096],{"type":3100,"value":4007},{"type":3095,"tag":3178,"props":9098,"children":9100},{"id":9099},"per-route-rate-limiting",[9101],{"type":3100,"value":9102},"Per-Route Rate Limiting",{"type":3095,"tag":3102,"props":9104,"children":9105},{},[9106,9111,9113,9118],{"type":3095,"tag":3252,"props":9107,"children":9109},{"className":9108},[],[9110],{"type":3100,"value":3036},{"type":3100,"value":9112}," supports ",{"type":3095,"tag":3190,"props":9114,"children":9115},{},[9116],{"type":3100,"value":9117},"per-route rate limiting",{"type":3100,"value":9119},", allowing you to define custom limits for specific API endpoints while keeping a global default configuration for all other routes.",{"type":3095,"tag":3102,"props":9121,"children":9122},{},[9123,9125,9131,9132,9138,9140,9146],{"type":3100,"value":9124},"This is useful when certain endpoints (such as ",{"type":3095,"tag":3252,"props":9126,"children":9128},{"className":9127},[],[9129],{"type":3100,"value":9130},"\u002Fapi\u002Flogin",{"type":3100,"value":3417},{"type":3095,"tag":3252,"props":9133,"children":9135},{"className":9134},[],[9136],{"type":3100,"value":9137},"\u002Fapi\u002Fauth",{"type":3100,"value":9139},", or ",{"type":3095,"tag":3252,"props":9141,"children":9143},{"className":9142},[],[9144],{"type":3100,"value":9145},"\u002Fapi\u002Fpayment",{"type":3100,"value":9147},") require stricter protection.",{"type":3095,"tag":9149,"props":9150,"children":9151},"hr",{},[],{"type":3095,"tag":3441,"props":9153,"children":9155},{"id":9154},"configuration-example",[9156],{"type":3100,"value":9157},"Configuration Example",{"type":3095,"tag":3102,"props":9159,"children":9160},{},[9161,9162,9168],{"type":3100,"value":4465},{"type":3095,"tag":3252,"props":9163,"children":9165},{"className":9164},[],[9166],{"type":3100,"value":9167},"routes",{"type":3100,"value":9169}," option accepts a mixed array of strings (exact matches) and objects (custom limits or patterns).",{"type":3095,"tag":3455,"props":9171,"children":9173},{"className":5365,"code":9172,"language":5367,"meta":3039,"style":3039},"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",[9174],{"type":3095,"tag":3252,"props":9175,"children":9176},{"__ignoreMap":3039},[9177,9200,9235,9242,9257,9273,9293,9313,9333,9340,9347,9364,9372,9392,9399,9407,9415,9444,9465,9486,9494,9502,9509,9517,9524,9552,9572,9591,9607,9614,9626,9633],{"type":3095,"tag":3465,"props":9178,"children":9179},{"class":3467,"line":3067},[9180,9184,9188,9192,9196],{"type":3095,"tag":3465,"props":9181,"children":9182},{"style":3607},[9183],{"type":3100,"value":3610},{"type":3095,"tag":3465,"props":9185,"children":9186},{"style":3607},[9187],{"type":3100,"value":3615},{"type":3095,"tag":3465,"props":9189,"children":9190},{"style":3618},[9191],{"type":3100,"value":3621},{"type":3095,"tag":3465,"props":9193,"children":9194},{"style":3624},[9195],{"type":3100,"value":3627},{"type":3095,"tag":3465,"props":9197,"children":9198},{"style":3630},[9199],{"type":3100,"value":3633},{"type":3095,"tag":3465,"props":9201,"children":9202},{"class":3467,"line":3063},[9203,9207,9211,9215,9219,9223,9227,9231],{"type":3095,"tag":3465,"props":9204,"children":9205},{"style":3639},[9206],{"type":3100,"value":3642},{"type":3095,"tag":3465,"props":9208,"children":9209},{"style":3630},[9210],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":9212,"children":9213},{"style":3624},[9214],{"type":3100,"value":3652},{"type":3095,"tag":3465,"props":9216,"children":9217},{"style":3630},[9218],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":9220,"children":9221},{"style":3486},[9222],{"type":3100,"value":3036},{"type":3095,"tag":3465,"props":9224,"children":9225},{"style":3630},[9226],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":9228,"children":9229},{"style":3624},[9230],{"type":3100,"value":3670},{"type":3095,"tag":3465,"props":9232,"children":9233},{"style":3630},[9234],{"type":3100,"value":3675},{"type":3095,"tag":3465,"props":9236,"children":9237},{"class":3467,"line":3497},[9238],{"type":3095,"tag":3465,"props":9239,"children":9240},{"emptyLinePlaceholder":1200},[9241],{"type":3100,"value":3503},{"type":3095,"tag":3465,"props":9243,"children":9244},{"class":3467,"line":3506},[9245,9249,9253],{"type":3095,"tag":3465,"props":9246,"children":9247},{"style":3639},[9248],{"type":3100,"value":3683},{"type":3095,"tag":3465,"props":9250,"children":9251},{"style":3630},[9252],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":9254,"children":9255},{"style":3630},[9256],{"type":3100,"value":3692},{"type":3095,"tag":3465,"props":9258,"children":9259},{"class":3467,"line":3059},[9260,9265,9269],{"type":3095,"tag":3465,"props":9261,"children":9262},{"style":3639},[9263],{"type":3100,"value":9264},"    limit",{"type":3095,"tag":3465,"props":9266,"children":9267},{"style":3630},[9268],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":9270,"children":9271},{"style":3630},[9272],{"type":3100,"value":3692},{"type":3095,"tag":3465,"props":9274,"children":9275},{"class":3467,"line":3531},[9276,9281,9285,9289],{"type":3095,"tag":3465,"props":9277,"children":9278},{"style":3639},[9279],{"type":3100,"value":9280},"      max",{"type":3095,"tag":3465,"props":9282,"children":9283},{"style":3630},[9284],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":9286,"children":9287},{"style":3905},[9288],{"type":3100,"value":4072},{"type":3095,"tag":3465,"props":9290,"children":9291},{"style":3630},[9292],{"type":3100,"value":3675},{"type":3095,"tag":3465,"props":9294,"children":9295},{"class":3467,"line":3539},[9296,9301,9305,9309],{"type":3095,"tag":3465,"props":9297,"children":9298},{"style":3639},[9299],{"type":3100,"value":9300},"      duration",{"type":3095,"tag":3465,"props":9302,"children":9303},{"style":3630},[9304],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":9306,"children":9307},{"style":3905},[9308],{"type":3100,"value":4093},{"type":3095,"tag":3465,"props":9310,"children":9311},{"style":3630},[9312],{"type":3100,"value":3675},{"type":3095,"tag":3465,"props":9314,"children":9315},{"class":3467,"line":3084},[9316,9321,9325,9329],{"type":3095,"tag":3465,"props":9317,"children":9318},{"style":3639},[9319],{"type":3100,"value":9320},"      ban",{"type":3095,"tag":3465,"props":9322,"children":9323},{"style":3630},[9324],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":9326,"children":9327},{"style":3905},[9328],{"type":3100,"value":4119},{"type":3095,"tag":3465,"props":9330,"children":9331},{"style":3630},[9332],{"type":3100,"value":3675},{"type":3095,"tag":3465,"props":9334,"children":9335},{"class":3467,"line":3735},[9336],{"type":3095,"tag":3465,"props":9337,"children":9338},{"style":3630},[9339],{"type":3100,"value":3741},{"type":3095,"tag":3465,"props":9341,"children":9342},{"class":3467,"line":3744},[9343],{"type":3095,"tag":3465,"props":9344,"children":9345},{"emptyLinePlaceholder":1200},[9346],{"type":3100,"value":3503},{"type":3095,"tag":3465,"props":9348,"children":9349},{"class":3467,"line":3753},[9350,9355,9359],{"type":3095,"tag":3465,"props":9351,"children":9352},{"style":3639},[9353],{"type":3100,"value":9354},"    routes",{"type":3095,"tag":3465,"props":9356,"children":9357},{"style":3630},[9358],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":9360,"children":9361},{"style":3624},[9362],{"type":3100,"value":9363}," [\n",{"type":3095,"tag":3465,"props":9365,"children":9366},{"class":3467,"line":3762},[9367],{"type":3095,"tag":3465,"props":9368,"children":9369},{"style":3471},[9370],{"type":3100,"value":9371},"      \u002F\u002F 1. String: uses the global default limit (exact match)\n",{"type":3095,"tag":3465,"props":9373,"children":9374},{"class":3467,"line":3771},[9375,9379,9384,9388],{"type":3095,"tag":3465,"props":9376,"children":9377},{"style":3630},[9378],{"type":3100,"value":4700},{"type":3095,"tag":3465,"props":9380,"children":9381},{"style":3486},[9382],{"type":3100,"value":9383},"\u002Fapi\u002Fexample",{"type":3095,"tag":3465,"props":9385,"children":9386},{"style":3630},[9387],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":9389,"children":9390},{"style":3630},[9391],{"type":3100,"value":3675},{"type":3095,"tag":3465,"props":9393,"children":9394},{"class":3467,"line":3780},[9395],{"type":3095,"tag":3465,"props":9396,"children":9397},{"emptyLinePlaceholder":1200},[9398],{"type":3100,"value":3503},{"type":3095,"tag":3465,"props":9400,"children":9401},{"class":3467,"line":3789},[9402],{"type":3095,"tag":3465,"props":9403,"children":9404},{"style":3471},[9405],{"type":3100,"value":9406},"      \u002F\u002F 2. Object: custom rate limit for a specific route (exact match)\n",{"type":3095,"tag":3465,"props":9408,"children":9409},{"class":3467,"line":3798},[9410],{"type":3095,"tag":3465,"props":9411,"children":9412},{"style":3630},[9413],{"type":3100,"value":9414},"      {\n",{"type":3095,"tag":3465,"props":9416,"children":9417},{"class":3467,"line":3807},[9418,9423,9427,9431,9436,9440],{"type":3095,"tag":3465,"props":9419,"children":9420},{"style":3639},[9421],{"type":3100,"value":9422},"        path",{"type":3095,"tag":3465,"props":9424,"children":9425},{"style":3630},[9426],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":9428,"children":9429},{"style":3630},[9430],{"type":3100,"value":4173},{"type":3095,"tag":3465,"props":9432,"children":9433},{"style":3486},[9434],{"type":3100,"value":9435},"\u002Fapi\u002Fexample-per-route",{"type":3095,"tag":3465,"props":9437,"children":9438},{"style":3630},[9439],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":9441,"children":9442},{"style":3630},[9443],{"type":3100,"value":3675},{"type":3095,"tag":3465,"props":9445,"children":9446},{"class":3467,"line":3815},[9447,9452,9456,9461],{"type":3095,"tag":3465,"props":9448,"children":9449},{"style":3639},[9450],{"type":3100,"value":9451},"        max",{"type":3095,"tag":3465,"props":9453,"children":9454},{"style":3630},[9455],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":9457,"children":9458},{"style":3905},[9459],{"type":3100,"value":9460}," 5",{"type":3095,"tag":3465,"props":9462,"children":9463},{"style":3630},[9464],{"type":3100,"value":3675},{"type":3095,"tag":3465,"props":9466,"children":9467},{"class":3467,"line":3824},[9468,9473,9477,9482],{"type":3095,"tag":3465,"props":9469,"children":9470},{"style":3639},[9471],{"type":3100,"value":9472},"        duration",{"type":3095,"tag":3465,"props":9474,"children":9475},{"style":3630},[9476],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":9478,"children":9479},{"style":3905},[9480],{"type":3100,"value":9481}," 10",{"type":3095,"tag":3465,"props":9483,"children":9484},{"style":3630},[9485],{"type":3100,"value":3675},{"type":3095,"tag":3465,"props":9487,"children":9488},{"class":3467,"line":3833},[9489],{"type":3095,"tag":3465,"props":9490,"children":9491},{"style":3471},[9492],{"type":3100,"value":9493},"        \u002F\u002F \"ban\" can also be overridden per route\n",{"type":3095,"tag":3465,"props":9495,"children":9496},{"class":3467,"line":3847},[9497],{"type":3095,"tag":3465,"props":9498,"children":9499},{"style":3630},[9500],{"type":3100,"value":9501},"      },\n",{"type":3095,"tag":3465,"props":9503,"children":9504},{"class":3467,"line":3875},[9505],{"type":3095,"tag":3465,"props":9506,"children":9507},{"emptyLinePlaceholder":1200},[9508],{"type":3100,"value":3503},{"type":3095,"tag":3465,"props":9510,"children":9511},{"class":3467,"line":3883},[9512],{"type":3095,"tag":3465,"props":9513,"children":9514},{"style":3471},[9515],{"type":3100,"value":9516},"      \u002F\u002F 3. Object: Wildcard pattern\n",{"type":3095,"tag":3465,"props":9518,"children":9519},{"class":3467,"line":3892},[9520],{"type":3095,"tag":3465,"props":9521,"children":9522},{"style":3630},[9523],{"type":3100,"value":9414},{"type":3095,"tag":3465,"props":9525,"children":9526},{"class":3467,"line":3920},[9527,9531,9535,9539,9544,9548],{"type":3095,"tag":3465,"props":9528,"children":9529},{"style":3639},[9530],{"type":3100,"value":9422},{"type":3095,"tag":3465,"props":9532,"children":9533},{"style":3630},[9534],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":9536,"children":9537},{"style":3630},[9538],{"type":3100,"value":4173},{"type":3095,"tag":3465,"props":9540,"children":9541},{"style":3486},[9542],{"type":3100,"value":9543},"\u002Fapi\u002Fusers\u002F*\u002Fprofile",{"type":3095,"tag":3465,"props":9545,"children":9546},{"style":3630},[9547],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":9549,"children":9550},{"style":3630},[9551],{"type":3100,"value":3675},{"type":3095,"tag":3465,"props":9553,"children":9554},{"class":3467,"line":3937},[9555,9560,9564,9568],{"type":3095,"tag":3465,"props":9556,"children":9557},{"style":3639},[9558],{"type":3100,"value":9559},"        pattern",{"type":3095,"tag":3465,"props":9561,"children":9562},{"style":3630},[9563],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":9565,"children":9566},{"style":3959},[9567],{"type":3100,"value":4152},{"type":3095,"tag":3465,"props":9569,"children":9570},{"style":3630},[9571],{"type":3100,"value":3675},{"type":3095,"tag":3465,"props":9573,"children":9574},{"class":3467,"line":3946},[9575,9579,9583,9587],{"type":3095,"tag":3465,"props":9576,"children":9577},{"style":3639},[9578],{"type":3100,"value":9451},{"type":3095,"tag":3465,"props":9580,"children":9581},{"style":3630},[9582],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":9584,"children":9585},{"style":3905},[9586],{"type":3100,"value":9481},{"type":3095,"tag":3465,"props":9588,"children":9589},{"style":3630},[9590],{"type":3100,"value":3675},{"type":3095,"tag":3465,"props":9592,"children":9593},{"class":3467,"line":3974},[9594,9598,9602],{"type":3095,"tag":3465,"props":9595,"children":9596},{"style":3639},[9597],{"type":3100,"value":9472},{"type":3095,"tag":3465,"props":9599,"children":9600},{"style":3630},[9601],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":9603,"children":9604},{"style":3905},[9605],{"type":3100,"value":9606}," 60\n",{"type":3095,"tag":3465,"props":9608,"children":9609},{"class":3467,"line":3982},[9610],{"type":3095,"tag":3465,"props":9611,"children":9612},{"style":3630},[9613],{"type":3100,"value":4767},{"type":3095,"tag":3465,"props":9615,"children":9616},{"class":3467,"line":3991},[9617,9622],{"type":3095,"tag":3465,"props":9618,"children":9619},{"style":3624},[9620],{"type":3100,"value":9621},"    ]",{"type":3095,"tag":3465,"props":9623,"children":9624},{"style":3630},[9625],{"type":3100,"value":3675},{"type":3095,"tag":3465,"props":9627,"children":9628},{"class":3467,"line":6917},[9629],{"type":3095,"tag":3465,"props":9630,"children":9631},{"style":3630},[9632],{"type":3100,"value":3988},{"type":3095,"tag":3465,"props":9634,"children":9635},{"class":3467,"line":6926},[9636,9640,9644],{"type":3095,"tag":3465,"props":9637,"children":9638},{"style":3630},[9639],{"type":3100,"value":3997},{"type":3095,"tag":3465,"props":9641,"children":9642},{"style":3624},[9643],{"type":3100,"value":4002},{"type":3095,"tag":3465,"props":9645,"children":9646},{"style":3630},[9647],{"type":3100,"value":4007},{"type":3095,"tag":3441,"props":9649,"children":9651},{"id":9650},"wildcard-route-support",[9652],{"type":3100,"value":9653},"Wildcard Route Support",{"type":3095,"tag":3102,"props":9655,"children":9656},{},[9657,9659,9665],{"type":3100,"value":9658},"Wildcard patterns allow you to apply the same limits to groups of related API endpoints. Enable them by setting ",{"type":3095,"tag":3252,"props":9660,"children":9662},{"className":9661},[],[9663],{"type":3100,"value":9664},"pattern: true",{"type":3100,"value":9666}," in your route configuration.",{"type":3095,"tag":5331,"props":9668,"children":9670},{"id":9669},"wildcard-pattern-syntax",[9671],{"type":3100,"value":9672},"Wildcard Pattern Syntax",{"type":3095,"tag":3152,"props":9674,"children":9675},{},[9676,9720],{"type":3095,"tag":3156,"props":9677,"children":9678},{},[9679,9691,9693],{"type":3095,"tag":3190,"props":9680,"children":9681},{},[9682,9684,9690],{"type":3100,"value":9683},"Single-Segment Wildcard (",{"type":3095,"tag":3252,"props":9685,"children":9687},{"className":9686},[],[9688],{"type":3100,"value":9689},"*",{"type":3100,"value":4002},{"type":3100,"value":9692},": Matches exactly one path segment.\n",{"type":3095,"tag":3152,"props":9694,"children":9695},{},[9696],{"type":3095,"tag":3156,"props":9697,"children":9698},{},[9699,9704,9706,9712,9713,9719],{"type":3095,"tag":3252,"props":9700,"children":9702},{"className":9701},[],[9703],{"type":3100,"value":9543},{"type":3100,"value":9705}," matches ",{"type":3095,"tag":3252,"props":9707,"children":9709},{"className":9708},[],[9710],{"type":3100,"value":9711},"\u002Fapi\u002Fusers\u002F123\u002Fprofile",{"type":3100,"value":7386},{"type":3095,"tag":3252,"props":9714,"children":9716},{"className":9715},[],[9717],{"type":3100,"value":9718},"\u002Fapi\u002Fusers\u002Fadmin\u002Fprofile",{"type":3100,"value":4594},{"type":3095,"tag":3156,"props":9721,"children":9722},{},[9723,9735,9737],{"type":3095,"tag":3190,"props":9724,"children":9725},{},[9726,9728,9734],{"type":3100,"value":9727},"Multi-Segment Wildcard (",{"type":3095,"tag":3252,"props":9729,"children":9731},{"className":9730},[],[9732],{"type":3100,"value":9733},"**",{"type":3100,"value":4002},{"type":3100,"value":9736},": Matches zero or more path segments.\n",{"type":3095,"tag":3152,"props":9738,"children":9739},{},[9740],{"type":3095,"tag":3156,"props":9741,"children":9742},{},[9743,9749,9750,9756,9757,9763],{"type":3095,"tag":3252,"props":9744,"children":9746},{"className":9745},[],[9747],{"type":3100,"value":9748},"\u002Fapi\u002Freports\u002F**\u002Fsummary",{"type":3100,"value":9705},{"type":3095,"tag":3252,"props":9751,"children":9753},{"className":9752},[],[9754],{"type":3100,"value":9755},"\u002Fapi\u002Freports\u002Fmonthly\u002F2023\u002Fsummary",{"type":3100,"value":7386},{"type":3095,"tag":3252,"props":9758,"children":9760},{"className":9759},[],[9761],{"type":3100,"value":9762},"\u002Fapi\u002Freports\u002Fsummary",{"type":3100,"value":4594},{"type":3095,"tag":5331,"props":9765,"children":9767},{"id":9766},"pattern-precedence",[9768],{"type":3100,"value":9769},"Pattern Precedence",{"type":3095,"tag":9771,"props":9772,"children":9773},"ol",{},[9774,9784,9794],{"type":3095,"tag":3156,"props":9775,"children":9776},{},[9777,9782],{"type":3095,"tag":3190,"props":9778,"children":9779},{},[9780],{"type":3100,"value":9781},"Exact matches",{"type":3100,"value":9783}," always take precedence over wildcard patterns.",{"type":3095,"tag":3156,"props":9785,"children":9786},{},[9787,9792],{"type":3095,"tag":3190,"props":9788,"children":9789},{},[9790],{"type":3100,"value":9791},"More specific wildcards",{"type":3100,"value":9793}," take precedence over less specific ones.",{"type":3095,"tag":3156,"props":9795,"children":9796},{},[9797],{"type":3100,"value":9798},"When multiple wildcard patterns match, the most specific one is used.",{"type":3095,"tag":5331,"props":9800,"children":9802},{"id":9801},"important-notes",[9803],{"type":3100,"value":9804},"Important Notes",{"type":3095,"tag":3152,"props":9806,"children":9807},{},[9808,9818],{"type":3095,"tag":3156,"props":9809,"children":9810},{},[9811,9816],{"type":3095,"tag":3190,"props":9812,"children":9813},{},[9814],{"type":3100,"value":9815},"Shared Rate Limits:",{"type":3100,"value":9817}," All requests that match the same wildcard pattern share the same rate limit counter.",{"type":3095,"tag":3156,"props":9819,"children":9820},{},[9821,9826,9828,9834,9835,9841],{"type":3095,"tag":3190,"props":9822,"children":9823},{},[9824],{"type":3100,"value":9825},"Security:",{"type":3100,"value":9827}," Broad or dangerous patterns like ",{"type":3095,"tag":3252,"props":9829,"children":9831},{"className":9830},[],[9832],{"type":3100,"value":9833},"\u002F**",{"type":3100,"value":7386},{"type":3095,"tag":3252,"props":9836,"children":9838},{"className":9837},[],[9839],{"type":3100,"value":9840},"\u002F*",{"type":3100,"value":9842}," are automatically rejected to prevent accidental global blocking.",{"type":3095,"tag":3178,"props":9844,"children":9846},{"id":9845},"skipping-routes",[9847],{"type":3100,"value":9848},"Skipping Routes",{"type":3095,"tag":3102,"props":9850,"children":9851},{},[9852,9853,9859,9861,9866],{"type":3100,"value":4465},{"type":3095,"tag":3252,"props":9854,"children":9856},{"className":9855},[],[9857],{"type":3100,"value":9858},"skipRoutes",{"type":3100,"value":9860}," 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":3095,"tag":3252,"props":9862,"children":9864},{"className":9863},[],[9865],{"type":3100,"value":9167},{"type":3100,"value":9867}," array.",{"type":3095,"tag":3102,"props":9869,"children":9870},{},[9871],{"type":3100,"value":9872},"This is useful for health checks, webhook endpoints, monitoring probes, or internal status routes that should always respond regardless of traffic.",{"type":3095,"tag":3441,"props":9874,"children":9876},{"id":9875},"configuration-example-1",[9877],{"type":3100,"value":9157},{"type":3095,"tag":3455,"props":9879,"children":9881},{"className":5365,"code":9880,"language":5367,"meta":3039,"style":3039},"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",[9882],{"type":3095,"tag":3252,"props":9883,"children":9884},{"__ignoreMap":3039},[9885,9908,9943,9950,9965,9980,9999,10018,10037,10044,10051,10066,10091,10116,10141,10152,10159],{"type":3095,"tag":3465,"props":9886,"children":9887},{"class":3467,"line":3067},[9888,9892,9896,9900,9904],{"type":3095,"tag":3465,"props":9889,"children":9890},{"style":3607},[9891],{"type":3100,"value":3610},{"type":3095,"tag":3465,"props":9893,"children":9894},{"style":3607},[9895],{"type":3100,"value":3615},{"type":3095,"tag":3465,"props":9897,"children":9898},{"style":3618},[9899],{"type":3100,"value":3621},{"type":3095,"tag":3465,"props":9901,"children":9902},{"style":3624},[9903],{"type":3100,"value":3627},{"type":3095,"tag":3465,"props":9905,"children":9906},{"style":3630},[9907],{"type":3100,"value":3633},{"type":3095,"tag":3465,"props":9909,"children":9910},{"class":3467,"line":3063},[9911,9915,9919,9923,9927,9931,9935,9939],{"type":3095,"tag":3465,"props":9912,"children":9913},{"style":3639},[9914],{"type":3100,"value":3642},{"type":3095,"tag":3465,"props":9916,"children":9917},{"style":3630},[9918],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":9920,"children":9921},{"style":3624},[9922],{"type":3100,"value":3652},{"type":3095,"tag":3465,"props":9924,"children":9925},{"style":3630},[9926],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":9928,"children":9929},{"style":3486},[9930],{"type":3100,"value":3036},{"type":3095,"tag":3465,"props":9932,"children":9933},{"style":3630},[9934],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":9936,"children":9937},{"style":3624},[9938],{"type":3100,"value":3670},{"type":3095,"tag":3465,"props":9940,"children":9941},{"style":3630},[9942],{"type":3100,"value":3675},{"type":3095,"tag":3465,"props":9944,"children":9945},{"class":3467,"line":3497},[9946],{"type":3095,"tag":3465,"props":9947,"children":9948},{"emptyLinePlaceholder":1200},[9949],{"type":3100,"value":3503},{"type":3095,"tag":3465,"props":9951,"children":9952},{"class":3467,"line":3506},[9953,9957,9961],{"type":3095,"tag":3465,"props":9954,"children":9955},{"style":3639},[9956],{"type":3100,"value":3683},{"type":3095,"tag":3465,"props":9958,"children":9959},{"style":3630},[9960],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":9962,"children":9963},{"style":3630},[9964],{"type":3100,"value":3692},{"type":3095,"tag":3465,"props":9966,"children":9967},{"class":3467,"line":3059},[9968,9972,9976],{"type":3095,"tag":3465,"props":9969,"children":9970},{"style":3639},[9971],{"type":3100,"value":9264},{"type":3095,"tag":3465,"props":9973,"children":9974},{"style":3630},[9975],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":9977,"children":9978},{"style":3630},[9979],{"type":3100,"value":3692},{"type":3095,"tag":3465,"props":9981,"children":9982},{"class":3467,"line":3531},[9983,9987,9991,9995],{"type":3095,"tag":3465,"props":9984,"children":9985},{"style":3639},[9986],{"type":3100,"value":9280},{"type":3095,"tag":3465,"props":9988,"children":9989},{"style":3630},[9990],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":9992,"children":9993},{"style":3905},[9994],{"type":3100,"value":4072},{"type":3095,"tag":3465,"props":9996,"children":9997},{"style":3630},[9998],{"type":3100,"value":3675},{"type":3095,"tag":3465,"props":10000,"children":10001},{"class":3467,"line":3539},[10002,10006,10010,10014],{"type":3095,"tag":3465,"props":10003,"children":10004},{"style":3639},[10005],{"type":3100,"value":9300},{"type":3095,"tag":3465,"props":10007,"children":10008},{"style":3630},[10009],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":10011,"children":10012},{"style":3905},[10013],{"type":3100,"value":4093},{"type":3095,"tag":3465,"props":10015,"children":10016},{"style":3630},[10017],{"type":3100,"value":3675},{"type":3095,"tag":3465,"props":10019,"children":10020},{"class":3467,"line":3084},[10021,10025,10029,10033],{"type":3095,"tag":3465,"props":10022,"children":10023},{"style":3639},[10024],{"type":3100,"value":9320},{"type":3095,"tag":3465,"props":10026,"children":10027},{"style":3630},[10028],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":10030,"children":10031},{"style":3905},[10032],{"type":3100,"value":4119},{"type":3095,"tag":3465,"props":10034,"children":10035},{"style":3630},[10036],{"type":3100,"value":3675},{"type":3095,"tag":3465,"props":10038,"children":10039},{"class":3467,"line":3735},[10040],{"type":3095,"tag":3465,"props":10041,"children":10042},{"style":3630},[10043],{"type":3100,"value":3741},{"type":3095,"tag":3465,"props":10045,"children":10046},{"class":3467,"line":3744},[10047],{"type":3095,"tag":3465,"props":10048,"children":10049},{"emptyLinePlaceholder":1200},[10050],{"type":3100,"value":3503},{"type":3095,"tag":3465,"props":10052,"children":10053},{"class":3467,"line":3753},[10054,10058,10062],{"type":3095,"tag":3465,"props":10055,"children":10056},{"style":3639},[10057],{"type":3100,"value":3853},{"type":3095,"tag":3465,"props":10059,"children":10060},{"style":3630},[10061],{"type":3100,"value":3647},{"type":3095,"tag":3465,"props":10063,"children":10064},{"style":3624},[10065],{"type":3100,"value":9363},{"type":3095,"tag":3465,"props":10067,"children":10068},{"class":3467,"line":3762},[10069,10073,10078,10082,10086],{"type":3095,"tag":3465,"props":10070,"children":10071},{"style":3630},[10072],{"type":3100,"value":4700},{"type":3095,"tag":3465,"props":10074,"children":10075},{"style":3486},[10076],{"type":3100,"value":10077},"\u002Fapi\u002Fhealth",{"type":3095,"tag":3465,"props":10079,"children":10080},{"style":3630},[10081],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":10083,"children":10084},{"style":3630},[10085],{"type":3100,"value":3867},{"type":3095,"tag":3465,"props":10087,"children":10088},{"style":3471},[10089],{"type":3100,"value":10090},"          \u002F\u002F exact match\n",{"type":3095,"tag":3465,"props":10092,"children":10093},{"class":3467,"line":3771},[10094,10098,10103,10107,10111],{"type":3095,"tag":3465,"props":10095,"children":10096},{"style":3630},[10097],{"type":3100,"value":4700},{"type":3095,"tag":3465,"props":10099,"children":10100},{"style":3486},[10101],{"type":3100,"value":10102},"\u002Fapi\u002F_nuxt\u002F**",{"type":3095,"tag":3465,"props":10104,"children":10105},{"style":3630},[10106],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":10108,"children":10109},{"style":3630},[10110],{"type":3100,"value":3867},{"type":3095,"tag":3465,"props":10112,"children":10113},{"style":3471},[10114],{"type":3100,"value":10115},"        \u002F\u002F multi-segment wildcard\n",{"type":3095,"tag":3465,"props":10117,"children":10118},{"class":3467,"line":3780},[10119,10123,10128,10132,10136],{"type":3095,"tag":3465,"props":10120,"children":10121},{"style":3630},[10122],{"type":3100,"value":4700},{"type":3095,"tag":3465,"props":10124,"children":10125},{"style":3486},[10126],{"type":3100,"value":10127},"\u002Fapi\u002Fwebhooks\u002Fstripe",{"type":3095,"tag":3465,"props":10129,"children":10130},{"style":3630},[10131],{"type":3100,"value":3657},{"type":3095,"tag":3465,"props":10133,"children":10134},{"style":3630},[10135],{"type":3100,"value":3867},{"type":3095,"tag":3465,"props":10137,"children":10138},{"style":3471},[10139],{"type":3100,"value":10140}," \u002F\u002F exact match\n",{"type":3095,"tag":3465,"props":10142,"children":10143},{"class":3467,"line":3789},[10144,10148],{"type":3095,"tag":3465,"props":10145,"children":10146},{"style":3624},[10147],{"type":3100,"value":9621},{"type":3095,"tag":3465,"props":10149,"children":10150},{"style":3630},[10151],{"type":3100,"value":3675},{"type":3095,"tag":3465,"props":10153,"children":10154},{"class":3467,"line":3798},[10155],{"type":3095,"tag":3465,"props":10156,"children":10157},{"style":3630},[10158],{"type":3100,"value":3988},{"type":3095,"tag":3465,"props":10160,"children":10161},{"class":3467,"line":3807},[10162,10166],{"type":3095,"tag":3465,"props":10163,"children":10164},{"style":3630},[10165],{"type":3100,"value":3997},{"type":3095,"tag":3465,"props":10167,"children":10168},{"style":3624},[10169],{"type":3100,"value":8133},{"type":3095,"tag":3441,"props":10171,"children":10173},{"id":10172},"how-it-works",[10174],{"type":3100,"value":10175},"How It Works",{"type":3095,"tag":3152,"props":10177,"children":10178},{},[10179,10191,10203],{"type":3095,"tag":3156,"props":10180,"children":10181},{},[10182,10184,10189],{"type":3100,"value":10183},"Routes in ",{"type":3095,"tag":3252,"props":10185,"children":10187},{"className":10186},[],[10188],{"type":3100,"value":9858},{"type":3100,"value":10190}," bypass the middleware entirely — no ban check, no rate limit counter, no log entry.",{"type":3095,"tag":3156,"props":10192,"children":10193},{},[10194,10196,10201],{"type":3100,"value":10195},"The rest of your API routes (those matching the global defaults or the ",{"type":3095,"tag":3252,"props":10197,"children":10199},{"className":10198},[],[10200],{"type":3100,"value":9167},{"type":3100,"value":10202}," option) continue to be rate limited normally.",{"type":3095,"tag":3156,"props":10204,"children":10205},{},[10206,10208,10213,10215,10220],{"type":3100,"value":10207},"Supports the same wildcard syntax as per-route patterns: ",{"type":3095,"tag":3252,"props":10209,"children":10211},{"className":10210},[],[10212],{"type":3100,"value":9689},{"type":3100,"value":10214}," for single segment, ",{"type":3095,"tag":3252,"props":10216,"children":10218},{"className":10217},[],[10219],{"type":3100,"value":9733},{"type":3100,"value":10221}," for multi-segment.",{"type":3095,"tag":3178,"props":10223,"children":10225},{"id":10224},"important-considerations",[10226],{"type":3100,"value":10227},"Important Considerations",{"type":3095,"tag":3441,"props":10229,"children":10231},{"id":10230},"data-privacy-ip-address-storage",[10232],{"type":3100,"value":10233},"Data Privacy (IP Address Storage)",{"type":3095,"tag":3102,"props":10235,"children":10236},{},[10237,10242],{"type":3095,"tag":3252,"props":10238,"children":10240},{"className":10239},[],[10241],{"type":3100,"value":3036},{"type":3100,"value":10243}," 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":3095,"tag":3152,"props":10245,"children":10246},{},[10247,10288,10298],{"type":3095,"tag":3156,"props":10248,"children":10249},{},[10250,10255],{"type":3095,"tag":3190,"props":10251,"children":10252},{},[10253],{"type":3100,"value":10254},"Data Stored:",{"type":3095,"tag":3152,"props":10256,"children":10257},{},[10258,10277],{"type":3095,"tag":3156,"props":10259,"children":10260},{},[10261,10267,10269,10275],{"type":3095,"tag":3252,"props":10262,"children":10264},{"className":10263},[],[10265],{"type":3100,"value":10266},"ip:\u003CIP_ADDRESS>",{"type":3100,"value":10268},": Stores ",{"type":3095,"tag":3252,"props":10270,"children":10272},{"className":10271},[],[10273],{"type":3100,"value":10274},"{ count: number, time: number }",{"type":3100,"value":10276}," for tracking request rates.",{"type":3095,"tag":3156,"props":10278,"children":10279},{},[10280,10286],{"type":3095,"tag":3252,"props":10281,"children":10283},{"className":10282},[],[10284],{"type":3100,"value":10285},"ban:\u003CIP_ADDRESS>",{"type":3100,"value":10287},": Stores a timestamp indicating when a ban on an IP address expires.",{"type":3095,"tag":3156,"props":10289,"children":10290},{},[10291,10296],{"type":3095,"tag":3190,"props":10292,"children":10293},{},[10294],{"type":3100,"value":10295},"Compliance:",{"type":3100,"value":10297}," 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":3095,"tag":3156,"props":10299,"children":10300},{},[10301,10306],{"type":3095,"tag":3190,"props":10302,"children":10303},{},[10304],{"type":3100,"value":10305},"Data Retention:",{"type":3095,"tag":3152,"props":10307,"children":10308},{},[10309,10321],{"type":3095,"tag":3156,"props":10310,"children":10311},{},[10312,10314,10319],{"type":3100,"value":10313},"Ban entries are cleaned up by the ",{"type":3095,"tag":3252,"props":10315,"children":10317},{"className":10316},[],[10318],{"type":3100,"value":3349},{"type":3100,"value":10320}," task after expiry.",{"type":3095,"tag":3156,"props":10322,"children":10323},{},[10324,10326,10331,10333,10338],{"type":3100,"value":10325},"IP tracking entries are cleaned up by the ",{"type":3095,"tag":3252,"props":10327,"children":10329},{"className":10328},[],[10330],{"type":3100,"value":3357},{"type":3100,"value":10332}," task based on the ",{"type":3095,"tag":3252,"props":10334,"children":10336},{"className":10335},[],[10337],{"type":3100,"value":5055},{"type":3100,"value":10339}," setting.",{"type":3095,"tag":3441,"props":10341,"children":10343},{"id":10342},"storage-security",[10344],{"type":3100,"value":10345},"Storage Security",{"type":3095,"tag":3152,"props":10347,"children":10348},{},[10349,10427],{"type":3095,"tag":3156,"props":10350,"children":10351},{},[10352,10365,10367,10373,10375,10380,10381,10387,10389,10395,10397,10402,10404],{"type":3095,"tag":3190,"props":10353,"children":10354},{},[10355,10357,10363],{"type":3100,"value":10356},"Filesystem Driver (",{"type":3095,"tag":3252,"props":10358,"children":10360},{"className":10359},[],[10361],{"type":3100,"value":10362},"driver: 'fs'",{"type":3100,"value":10364},"):",{"type":3100,"value":10366}," If you use the filesystem driver for ",{"type":3095,"tag":3252,"props":10368,"children":10370},{"className":10369},[],[10371],{"type":3100,"value":10372},"unstorage",{"type":3100,"value":10374}," (e.g., ",{"type":3095,"tag":3252,"props":10376,"children":10378},{"className":10377},[],[10379],{"type":3100,"value":10362},{"type":3100,"value":3417},{"type":3095,"tag":3252,"props":10382,"children":10384},{"className":10383},[],[10385],{"type":3100,"value":10386},"base: '.shield'",{"type":3100,"value":10388},"), ensure that the storage directory (and the ",{"type":3095,"tag":3252,"props":10390,"children":10392},{"className":10391},[],[10393],{"type":3100,"value":10394},"logs",{"type":3100,"value":10396}," directory if logging is enabled via ",{"type":3095,"tag":3252,"props":10398,"children":10400},{"className":10399},[],[10401],{"type":3100,"value":7925},{"type":3100,"value":10403},") is:\n",{"type":3095,"tag":3152,"props":10405,"children":10406},{},[10407,10417],{"type":3095,"tag":3156,"props":10408,"children":10409},{},[10410,10415],{"type":3095,"tag":3190,"props":10411,"children":10412},{},[10413],{"type":3100,"value":10414},"Not web-accessible:",{"type":3100,"value":10416}," Your web server should not be configured to serve files from these directories.",{"type":3095,"tag":3156,"props":10418,"children":10419},{},[10420,10425],{"type":3095,"tag":3190,"props":10421,"children":10422},{},[10423],{"type":3100,"value":10424},"Properly permissioned:",{"type":3100,"value":10426}," The directories should have appropriate server-side file permissions to prevent unauthorized reading or writing.",{"type":3095,"tag":3156,"props":10428,"children":10429},{},[10430,10435],{"type":3095,"tag":3190,"props":10431,"children":10432},{},[10433],{"type":3100,"value":10434},"Other Drivers (Redis, etc.):",{"type":3100,"value":10436}," If using database drivers like Redis, ensure your database server itself is secured (e.g., authentication, network access controls).",{"type":3095,"tag":3441,"props":10438,"children":10440},{"id":10439},"error-message-errormessage",[10441,10443,10449],{"type":3100,"value":10442},"Error Message (",{"type":3095,"tag":3252,"props":10444,"children":10446},{"className":10445},[],[10447],{"type":3100,"value":10448},"errorMessage",{"type":3100,"value":4002},{"type":3095,"tag":3102,"props":10451,"children":10452},{},[10453,10454,10459],{"type":3100,"value":4465},{"type":3095,"tag":3252,"props":10455,"children":10457},{"className":10456},[],[10458],{"type":3100,"value":10448},{"type":3100,"value":10460}," option in the module configuration is returned in the body of a 429 response.",{"type":3095,"tag":3152,"props":10462,"children":10463},{},[10464,10469],{"type":3095,"tag":3156,"props":10465,"children":10466},{},[10467],{"type":3100,"value":10468},"It's recommended to use a plain text message.",{"type":3095,"tag":3156,"props":10470,"children":10471},{},[10472,10474,10479],{"type":3100,"value":10473},"If you choose to use HTML in your ",{"type":3095,"tag":3252,"props":10475,"children":10477},{"className":10476},[],[10478],{"type":3100,"value":10448},{"type":3100,"value":10480},", 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":3095,"tag":3178,"props":10482,"children":10484},{"id":10483},"development",[10485],{"type":3100,"value":10486},"Development",{"type":3095,"tag":3455,"props":10488,"children":10490},{"className":3457,"code":10489,"language":3459,"meta":3039,"style":3039},"# 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",[10491],{"type":3095,"tag":3252,"props":10492,"children":10493},{"__ignoreMap":3039},[10494,10502,10510,10517,10525,10537,10544,10552,10564,10571,10579,10591,10598,10606,10618,10625,10633,10645,10657,10664,10672,10684],{"type":3095,"tag":3465,"props":10495,"children":10496},{"class":3467,"line":3067},[10497],{"type":3095,"tag":3465,"props":10498,"children":10499},{"style":3471},[10500],{"type":3100,"value":10501},"# Install dependencies\n",{"type":3095,"tag":3465,"props":10503,"children":10504},{"class":3467,"line":3063},[10505],{"type":3095,"tag":3465,"props":10506,"children":10507},{"style":3480},[10508],{"type":3100,"value":10509},"yarn\n",{"type":3095,"tag":3465,"props":10511,"children":10512},{"class":3467,"line":3497},[10513],{"type":3095,"tag":3465,"props":10514,"children":10515},{"emptyLinePlaceholder":1200},[10516],{"type":3100,"value":3503},{"type":3095,"tag":3465,"props":10518,"children":10519},{"class":3467,"line":3506},[10520],{"type":3095,"tag":3465,"props":10521,"children":10522},{"style":3471},[10523],{"type":3100,"value":10524},"# Generate type stubs\n",{"type":3095,"tag":3465,"props":10526,"children":10527},{"class":3467,"line":3059},[10528,10532],{"type":3095,"tag":3465,"props":10529,"children":10530},{"style":3480},[10531],{"type":3100,"value":3520},{"type":3095,"tag":3465,"props":10533,"children":10534},{"style":3486},[10535],{"type":3100,"value":10536}," dev:prepare\n",{"type":3095,"tag":3465,"props":10538,"children":10539},{"class":3467,"line":3531},[10540],{"type":3095,"tag":3465,"props":10541,"children":10542},{"emptyLinePlaceholder":1200},[10543],{"type":3100,"value":3503},{"type":3095,"tag":3465,"props":10545,"children":10546},{"class":3467,"line":3539},[10547],{"type":3095,"tag":3465,"props":10548,"children":10549},{"style":3471},[10550],{"type":3100,"value":10551},"# Develop with the playground\n",{"type":3095,"tag":3465,"props":10553,"children":10554},{"class":3467,"line":3084},[10555,10559],{"type":3095,"tag":3465,"props":10556,"children":10557},{"style":3480},[10558],{"type":3100,"value":3520},{"type":3095,"tag":3465,"props":10560,"children":10561},{"style":3486},[10562],{"type":3100,"value":10563}," dev\n",{"type":3095,"tag":3465,"props":10565,"children":10566},{"class":3467,"line":3735},[10567],{"type":3095,"tag":3465,"props":10568,"children":10569},{"emptyLinePlaceholder":1200},[10570],{"type":3100,"value":3503},{"type":3095,"tag":3465,"props":10572,"children":10573},{"class":3467,"line":3744},[10574],{"type":3095,"tag":3465,"props":10575,"children":10576},{"style":3471},[10577],{"type":3100,"value":10578},"# Build the playground\n",{"type":3095,"tag":3465,"props":10580,"children":10581},{"class":3467,"line":3753},[10582,10586],{"type":3095,"tag":3465,"props":10583,"children":10584},{"style":3480},[10585],{"type":3100,"value":3520},{"type":3095,"tag":3465,"props":10587,"children":10588},{"style":3486},[10589],{"type":3100,"value":10590}," dev:build\n",{"type":3095,"tag":3465,"props":10592,"children":10593},{"class":3467,"line":3762},[10594],{"type":3095,"tag":3465,"props":10595,"children":10596},{"emptyLinePlaceholder":1200},[10597],{"type":3100,"value":3503},{"type":3095,"tag":3465,"props":10599,"children":10600},{"class":3467,"line":3771},[10601],{"type":3095,"tag":3465,"props":10602,"children":10603},{"style":3471},[10604],{"type":3100,"value":10605},"# Run ESLint\n",{"type":3095,"tag":3465,"props":10607,"children":10608},{"class":3467,"line":3780},[10609,10613],{"type":3095,"tag":3465,"props":10610,"children":10611},{"style":3480},[10612],{"type":3100,"value":3520},{"type":3095,"tag":3465,"props":10614,"children":10615},{"style":3486},[10616],{"type":3100,"value":10617}," lint\n",{"type":3095,"tag":3465,"props":10619,"children":10620},{"class":3467,"line":3789},[10621],{"type":3095,"tag":3465,"props":10622,"children":10623},{"emptyLinePlaceholder":1200},[10624],{"type":3100,"value":3503},{"type":3095,"tag":3465,"props":10626,"children":10627},{"class":3467,"line":3798},[10628],{"type":3095,"tag":3465,"props":10629,"children":10630},{"style":3471},[10631],{"type":3100,"value":10632},"# Run Vitest\n",{"type":3095,"tag":3465,"props":10634,"children":10635},{"class":3467,"line":3807},[10636,10640],{"type":3095,"tag":3465,"props":10637,"children":10638},{"style":3480},[10639],{"type":3100,"value":3520},{"type":3095,"tag":3465,"props":10641,"children":10642},{"style":3486},[10643],{"type":3100,"value":10644}," test\n",{"type":3095,"tag":3465,"props":10646,"children":10647},{"class":3467,"line":3815},[10648,10652],{"type":3095,"tag":3465,"props":10649,"children":10650},{"style":3480},[10651],{"type":3100,"value":3520},{"type":3095,"tag":3465,"props":10653,"children":10654},{"style":3486},[10655],{"type":3100,"value":10656}," test:watch\n",{"type":3095,"tag":3465,"props":10658,"children":10659},{"class":3467,"line":3824},[10660],{"type":3095,"tag":3465,"props":10661,"children":10662},{"emptyLinePlaceholder":1200},[10663],{"type":3100,"value":3503},{"type":3095,"tag":3465,"props":10665,"children":10666},{"class":3467,"line":3833},[10667],{"type":3095,"tag":3465,"props":10668,"children":10669},{"style":3471},[10670],{"type":3100,"value":10671},"# Release new version\n",{"type":3095,"tag":3465,"props":10673,"children":10674},{"class":3467,"line":3847},[10675,10679],{"type":3095,"tag":3465,"props":10676,"children":10677},{"style":3480},[10678],{"type":3100,"value":3520},{"type":3095,"tag":3465,"props":10680,"children":10681},{"style":3486},[10682],{"type":3100,"value":10683}," release:patch\n",{"type":3095,"tag":3465,"props":10685,"children":10686},{"class":3467,"line":3875},[10687,10691],{"type":3095,"tag":3465,"props":10688,"children":10689},{"style":3480},[10690],{"type":3100,"value":3520},{"type":3095,"tag":3465,"props":10692,"children":10693},{"style":3486},[10694],{"type":3100,"value":10695}," release:minor\n",{"type":3095,"tag":10697,"props":10698,"children":10699},"style",{},[10700],{"type":3100,"value":10701},"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":3039,"searchDepth":3063,"depth":3063,"links":10703},[10704,10705,10716,10721,10726,10732,10736,10740,10746],{"id":3180,"depth":3063,"text":399},{"id":3436,"depth":3063,"text":3439,"children":10706},[10707,10709,10711,10713,10715],{"id":3443,"depth":3497,"text":10708},"1. Add nuxt-api-shield dependency to your project",{"id":3565,"depth":3497,"text":10710},"2. Add nuxt-api-shield to the modules section of nuxt.config.ts",{"id":4597,"depth":3497,"text":10712},"3. Add nitro\u002Fstorage to nuxt.config.ts",{"id":5006,"depth":3497,"text":10714},"4. Schedule bundled cleanup tasks in nuxt.config.ts",{"id":5307,"depth":3497,"text":5310},{"id":7396,"depth":3063,"text":7399,"children":10717},[10718,10719],{"id":7402,"depth":3497,"text":7405},{"id":7812,"depth":3497,"text":10720},"When memory \u002F fs is acceptable",{"id":7871,"depth":3063,"text":7874,"children":10722},[10723,10724,10725],{"id":7897,"depth":3497,"text":7900},{"id":8151,"depth":3497,"text":8154},{"id":8203,"depth":3497,"text":8206},{"id":8469,"depth":3063,"text":8472,"children":10727},[10728,10730],{"id":8480,"depth":3497,"text":10729},"RateLimit Type",{"id":9032,"depth":3497,"text":10731},"ModuleOptions Type",{"id":9099,"depth":3063,"text":9102,"children":10733},[10734,10735],{"id":9154,"depth":3497,"text":9157},{"id":9650,"depth":3497,"text":9653},{"id":9845,"depth":3063,"text":9848,"children":10737},[10738,10739],{"id":9875,"depth":3497,"text":9157},{"id":10172,"depth":3497,"text":10175},{"id":10224,"depth":3063,"text":10227,"children":10741},[10742,10743,10744],{"id":10230,"depth":3497,"text":10233},{"id":10342,"depth":3497,"text":10345},{"id":10439,"depth":3497,"text":10745},"Error Message (errorMessage)",{"id":10483,"depth":3063,"text":10486},{"v5":10748,"v4":10749,"v3":10750,"v2":10751},"5 (nightly)","4.5.2","3.21.11","2.18.1"]