[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f30r277ag21rfj":3,"versions":3007,"module-api-shield":3012},[4,1124,1971,2805],{"title":5,"titleTemplate":6,"icon":7,"path":8,"stem":9,"children":10,"page":108},"Docs",null,"i-lucide-book-marked","\u002Fdocs\u002F3.x","docs\u002F3.x",[11,109,246,430,911,1003,1040,1082],{"title":12,"titleTemplate":13,"icon":14,"path":15,"stem":16,"children":17,"page":108},"Get Started","%s · Get Started with Nuxt","i-lucide-rocket","\u002Fdocs\u002F3.x\u002Fgetting-started","docs\u002F3.x\u002F1.getting-started",[18,23,28,33,38,43,48,53,58,63,68,73,78,83,88,93,98,103],{"title":19,"path":20,"stem":21,"titleTemplate":6,"icon":22},"Introduction","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Fintroduction","docs\u002F3.x\u002F1.getting-started\u002F01.introduction","i-lucide-info",{"title":24,"path":25,"stem":26,"titleTemplate":6,"icon":27},"Installation","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Finstallation","docs\u002F3.x\u002F1.getting-started\u002F02.installation","i-lucide-play",{"title":29,"path":30,"stem":31,"titleTemplate":6,"icon":32},"Configuration","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Fconfiguration","docs\u002F3.x\u002F1.getting-started\u002F03.configuration","i-lucide-cog",{"title":34,"path":35,"stem":36,"titleTemplate":6,"icon":37},"Views","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Fviews","docs\u002F3.x\u002F1.getting-started\u002F04.views","i-lucide-panels-top-left",{"title":39,"path":40,"stem":41,"titleTemplate":6,"icon":42},"Assets","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Fassets","docs\u002F3.x\u002F1.getting-started\u002F05.assets","i-lucide-image",{"title":44,"path":45,"stem":46,"titleTemplate":6,"icon":47},"Styling","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Fstyling","docs\u002F3.x\u002F1.getting-started\u002F06.styling","i-lucide-palette",{"title":49,"path":50,"stem":51,"titleTemplate":6,"icon":52},"Routing","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Frouting","docs\u002F3.x\u002F1.getting-started\u002F07.routing","i-lucide-milestone",{"title":54,"path":55,"stem":56,"titleTemplate":6,"icon":57},"SEO and Meta","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Fseo-meta","docs\u002F3.x\u002F1.getting-started\u002F08.seo-meta","i-lucide-file-search",{"title":59,"path":60,"stem":61,"titleTemplate":6,"icon":62},"Transitions","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Ftransitions","docs\u002F3.x\u002F1.getting-started\u002F09.transitions","i-lucide-toggle-right",{"title":64,"path":65,"stem":66,"titleTemplate":6,"icon":67},"Data Fetching","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Fdata-fetching","docs\u002F3.x\u002F1.getting-started\u002F10.data-fetching","i-lucide-cable",{"title":69,"path":70,"stem":71,"titleTemplate":6,"icon":72},"State Management","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Fstate-management","docs\u002F3.x\u002F1.getting-started\u002F11.state-management","i-lucide-database",{"title":74,"path":75,"stem":76,"titleTemplate":6,"icon":77},"Error Handling","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Ferror-handling","docs\u002F3.x\u002F1.getting-started\u002F12.error-handling","i-lucide-bug-off",{"title":79,"path":80,"stem":81,"titleTemplate":6,"icon":82},"Server","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Fserver","docs\u002F3.x\u002F1.getting-started\u002F13.server","i-lucide-pc-case",{"title":84,"path":85,"stem":86,"titleTemplate":6,"icon":87},"Layers","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Flayers","docs\u002F3.x\u002F1.getting-started\u002F14.layers","i-lucide-layers",{"title":89,"path":90,"stem":91,"titleTemplate":6,"icon":92},"Prerendering","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Fprerendering","docs\u002F3.x\u002F1.getting-started\u002F15.prerendering","i-lucide-file-code-2",{"title":94,"path":95,"stem":96,"titleTemplate":6,"icon":97},"Deployment","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Fdeployment","docs\u002F3.x\u002F1.getting-started\u002F16.deployment","i-lucide-cloud",{"title":99,"path":100,"stem":101,"titleTemplate":6,"icon":102},"Testing","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Ftesting","docs\u002F3.x\u002F1.getting-started\u002F17.testing","i-lucide-circle-check",{"title":104,"path":105,"stem":106,"titleTemplate":6,"icon":107},"Upgrade Guide","\u002Fdocs\u002F3.x\u002Fgetting-started\u002Fupgrade","docs\u002F3.x\u002F1.getting-started\u002F18.upgrade","i-lucide-circle-arrow-up",false,{"title":110,"titleTemplate":111,"icon":112,"path":113,"stem":114,"children":115,"page":108},"Directory Structure","%s · Nuxt Directory Structure","i-vscode-icons-default-folder","\u002Fdocs\u002F3.x\u002Fdirectory-structure","docs\u002F3.x\u002F2.directory-structure",[116,121,126,131,136,141,146,151,156,161,165,170,174,179,184,189,194,199,204,209,214,218,223,228,232,236,241],{"title":117,"path":118,"stem":119,"titleTemplate":6,"icon":120},".nuxt","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fnuxt","docs\u002F3.x\u002F2.directory-structure\u002F0.nuxt","i-vscode-icons-folder-type-temp",{"title":122,"path":123,"stem":124,"titleTemplate":6,"icon":125},".output","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Foutput","docs\u002F3.x\u002F2.directory-structure\u002F0.output","i-vscode-icons-folder-type-package",{"title":127,"path":128,"stem":129,"titleTemplate":6,"icon":130},"assets","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fassets","docs\u002F3.x\u002F2.directory-structure\u002F1.assets","i-vscode-icons-folder-type-asset",{"title":132,"path":133,"stem":134,"titleTemplate":6,"icon":135},"components","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fcomponents","docs\u002F3.x\u002F2.directory-structure\u002F1.components","i-vscode-icons-folder-type-component",{"title":137,"path":138,"stem":139,"titleTemplate":6,"icon":140},"composables","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fcomposables","docs\u002F3.x\u002F2.directory-structure\u002F1.composables","i-vscode-icons-folder-type-src",{"title":142,"path":143,"stem":144,"titleTemplate":6,"icon":145},"content","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fcontent","docs\u002F3.x\u002F2.directory-structure\u002F1.content","i-vscode-icons-folder-type-log",{"title":147,"path":148,"stem":149,"titleTemplate":6,"icon":150},"layers","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Flayers","docs\u002F3.x\u002F2.directory-structure\u002F1.layers","i-vscode-icons-folder-type-nuxt",{"title":152,"path":153,"stem":154,"titleTemplate":6,"icon":155},"layouts","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Flayouts","docs\u002F3.x\u002F2.directory-structure\u002F1.layouts","i-vscode-icons-folder-type-view",{"title":157,"path":158,"stem":159,"titleTemplate":6,"icon":160},"middleware","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fmiddleware","docs\u002F3.x\u002F2.directory-structure\u002F1.middleware","i-vscode-icons-folder-type-middleware",{"title":162,"path":163,"stem":164,"titleTemplate":6,"icon":150},"modules","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fmodules","docs\u002F3.x\u002F2.directory-structure\u002F1.modules",{"title":166,"path":167,"stem":168,"titleTemplate":6,"icon":169},"node_modules","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fnode_modules","docs\u002F3.x\u002F2.directory-structure\u002F1.node_modules","i-vscode-icons-folder-type-node",{"title":171,"path":172,"stem":173,"titleTemplate":6,"icon":155},"pages","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fpages","docs\u002F3.x\u002F2.directory-structure\u002F1.pages",{"title":175,"path":176,"stem":177,"titleTemplate":6,"icon":178},"plugins","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fplugins","docs\u002F3.x\u002F2.directory-structure\u002F1.plugins","i-vscode-icons-folder-type-plugin",{"title":180,"path":181,"stem":182,"titleTemplate":6,"icon":183},"public","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fpublic","docs\u002F3.x\u002F2.directory-structure\u002F1.public","i-vscode-icons-folder-type-public",{"title":185,"path":186,"stem":187,"titleTemplate":6,"icon":188},"server","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fserver","docs\u002F3.x\u002F2.directory-structure\u002F1.server","i-vscode-icons-folder-type-server",{"title":190,"path":191,"stem":192,"titleTemplate":6,"icon":193},"shared","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fshared","docs\u002F3.x\u002F2.directory-structure\u002F1.shared","i-vscode-icons-folder-type-shared",{"title":195,"path":196,"stem":197,"titleTemplate":6,"icon":198},"utils","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Futils","docs\u002F3.x\u002F2.directory-structure\u002F1.utils","i-vscode-icons-folder-type-tools",{"title":200,"path":201,"stem":202,"titleTemplate":6,"icon":203},".env","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fenv","docs\u002F3.x\u002F2.directory-structure\u002F2.env","i-vscode-icons-file-type-dotenv",{"title":205,"path":206,"stem":207,"titleTemplate":6,"icon":208},".gitignore","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fgitignore","docs\u002F3.x\u002F2.directory-structure\u002F2.gitignore","i-vscode-icons-file-type-git",{"title":210,"path":211,"stem":212,"titleTemplate":6,"icon":213},".nuxtignore","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fnuxtignore","docs\u002F3.x\u002F2.directory-structure\u002F2.nuxtignore","i-vscode-icons-file-type-nuxt",{"title":215,"path":216,"stem":217,"titleTemplate":6,"icon":213},".nuxtrc","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fnuxtrc","docs\u002F3.x\u002F2.directory-structure\u002F2.nuxtrc",{"title":219,"path":220,"stem":221,"titleTemplate":6,"icon":222},"app.vue","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fapp","docs\u002F3.x\u002F2.directory-structure\u002F3.app","i-vscode-icons-file-type-vue",{"title":224,"path":225,"stem":226,"titleTemplate":6,"icon":227},"app.config.ts","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fapp-config","docs\u002F3.x\u002F2.directory-structure\u002F3.app-config","i-vscode-icons-file-type-light-config",{"title":229,"path":230,"stem":231,"titleTemplate":6,"icon":222},"error.vue","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Ferror","docs\u002F3.x\u002F2.directory-structure\u002F3.error",{"title":233,"path":234,"stem":235,"titleTemplate":6,"icon":213},"nuxt.config.ts","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fnuxt-config","docs\u002F3.x\u002F2.directory-structure\u002F3.nuxt-config",{"title":237,"path":238,"stem":239,"titleTemplate":6,"icon":240},"package.json","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Fpackage","docs\u002F3.x\u002F2.directory-structure\u002F3.package","i-vscode-icons-file-type-npm",{"title":242,"path":243,"stem":244,"titleTemplate":6,"icon":245},"tsconfig.json","\u002Fdocs\u002F3.x\u002Fdirectory-structure\u002Ftsconfig","docs\u002F3.x\u002F2.directory-structure\u002F3.tsconfig","i-vscode-icons-file-type-tsconfig",{"title":247,"titleTemplate":6,"icon":248,"path":249,"stem":250,"children":251,"page":108},"Guide","i-lucide-book-open","\u002Fdocs\u002F3.x\u002Fguide","docs\u002F3.x\u002F3.guide",[252,287,306,321,360,383],{"title":253,"titleTemplate":254,"icon":255,"path":256,"stem":257,"children":258,"page":108},"Key Concepts","%s · Nuxt Concepts","i-lucide-medal","\u002Fdocs\u002F3.x\u002Fguide\u002Fconcepts","docs\u002F3.x\u002F3.guide\u002F1.concepts",[259,263,267,271,275,279,283],{"title":260,"path":261,"stem":262,"titleTemplate":6},"Rendering Modes","\u002Fdocs\u002F3.x\u002Fguide\u002Fconcepts\u002Frendering","docs\u002F3.x\u002F3.guide\u002F1.concepts\u002F1.rendering",{"title":264,"path":265,"stem":266,"titleTemplate":6},"Nuxt Lifecycle","\u002Fdocs\u002F3.x\u002Fguide\u002Fconcepts\u002Fnuxt-lifecycle","docs\u002F3.x\u002F3.guide\u002F1.concepts\u002F2.nuxt-lifecycle",{"title":268,"path":269,"stem":270,"titleTemplate":6},"Auto-imports","\u002Fdocs\u002F3.x\u002Fguide\u002Fconcepts\u002Fauto-imports","docs\u002F3.x\u002F3.guide\u002F1.concepts\u002F3.auto-imports",{"title":272,"path":273,"stem":274,"titleTemplate":6},"Server Engine","\u002Fdocs\u002F3.x\u002Fguide\u002Fconcepts\u002Fserver-engine","docs\u002F3.x\u002F3.guide\u002F1.concepts\u002F4.server-engine",{"title":276,"path":277,"stem":278,"titleTemplate":6},"Modules","\u002Fdocs\u002F3.x\u002Fguide\u002Fconcepts\u002Fmodules","docs\u002F3.x\u002F3.guide\u002F1.concepts\u002F5.modules",{"title":280,"path":281,"stem":282,"titleTemplate":6},"TypeScript","\u002Fdocs\u002F3.x\u002Fguide\u002Fconcepts\u002Ftypescript","docs\u002F3.x\u002F3.guide\u002F1.concepts\u002F8.typescript",{"title":284,"path":285,"stem":286,"titleTemplate":6},"Code Style","\u002Fdocs\u002F3.x\u002Fguide\u002Fconcepts\u002Fcode-style","docs\u002F3.x\u002F3.guide\u002F1.concepts\u002F9.code-style",{"title":288,"titleTemplate":289,"icon":290,"path":291,"stem":292,"children":293,"page":108},"Best Practices","%s · Best Practices","i-lucide-square-check","\u002Fdocs\u002F3.x\u002Fguide\u002Fbest-practices","docs\u002F3.x\u002F3.guide\u002F2.best-practices",[294,298,302],{"title":295,"path":296,"stem":297,"titleTemplate":6},"Nuxt and hydration","\u002Fdocs\u002F3.x\u002Fguide\u002Fbest-practices\u002Fhydration","docs\u002F3.x\u002F3.guide\u002F2.best-practices\u002Fhydration",{"title":299,"path":300,"stem":301,"titleTemplate":6},"Nuxt Performance","\u002Fdocs\u002F3.x\u002Fguide\u002Fbest-practices\u002Fperformance","docs\u002F3.x\u002F3.guide\u002F2.best-practices\u002Fperformance",{"title":303,"path":304,"stem":305,"titleTemplate":6},"Nuxt Plugins","\u002Fdocs\u002F3.x\u002Fguide\u002Fbest-practices\u002Fplugins","docs\u002F3.x\u002F3.guide\u002F2.best-practices\u002Fplugins",{"title":307,"titleTemplate":308,"icon":309,"path":310,"stem":311,"children":312,"page":108},"Working with AI","Working with AI: %s","i-lucide-bot","\u002Fdocs\u002F3.x\u002Fguide\u002Fai","docs\u002F3.x\u002F3.guide\u002F3.ai",[313,317],{"title":314,"path":315,"stem":316,"titleTemplate":6},"MCP Server","\u002Fdocs\u002F3.x\u002Fguide\u002Fai\u002Fmcp","docs\u002F3.x\u002F3.guide\u002F3.ai\u002F1.mcp",{"title":318,"path":319,"stem":320,"titleTemplate":6},"LLMs.txt","\u002Fdocs\u002F3.x\u002Fguide\u002Fai\u002Fllms-txt","docs\u002F3.x\u002F3.guide\u002F3.ai\u002F2.llms-txt",{"title":322,"titleTemplate":323,"icon":324,"path":325,"stem":326,"children":327,"page":108},"Module Author Guide","%s · Nuxt Modules Author Guide","i-lucide-box","\u002Fdocs\u002F3.x\u002Fguide\u002Fmodules","docs\u002F3.x\u002F3.guide\u002F4.modules",[328,332,336,340,344,348,352,356],{"title":329,"path":330,"stem":331,"titleTemplate":6},"Create Your First Module","\u002Fdocs\u002F3.x\u002Fguide\u002Fmodules\u002Fgetting-started","docs\u002F3.x\u002F3.guide\u002F4.modules\u002F1.getting-started",{"title":333,"path":334,"stem":335,"titleTemplate":6},"Understand Module Structure","\u002Fdocs\u002F3.x\u002Fguide\u002Fmodules\u002Fmodule-anatomy","docs\u002F3.x\u002F3.guide\u002F4.modules\u002F2.module-anatomy",{"title":337,"path":338,"stem":339,"titleTemplate":6},"Add Plugins, Components & More","\u002Fdocs\u002F3.x\u002Fguide\u002Fmodules\u002Frecipes-basics","docs\u002F3.x\u002F3.guide\u002F4.modules\u002F3.recipes-basics",{"title":341,"path":342,"stem":343,"titleTemplate":6},"Module Dependencies","\u002Fdocs\u002F3.x\u002Fguide\u002Fmodules\u002Fmodule-dependencies","docs\u002F3.x\u002F3.guide\u002F4.modules\u002F4.module-dependencies",{"title":345,"path":346,"stem":347,"titleTemplate":6},"Use Hooks & Extend Types","\u002Fdocs\u002F3.x\u002Fguide\u002Fmodules\u002Frecipes-advanced","docs\u002F3.x\u002F3.guide\u002F4.modules\u002F5.recipes-advanced",{"title":349,"path":350,"stem":351,"titleTemplate":6},"Test Your Module","\u002Fdocs\u002F3.x\u002Fguide\u002Fmodules\u002Ftesting","docs\u002F3.x\u002F3.guide\u002F4.modules\u002F6.testing",{"title":353,"path":354,"stem":355,"titleTemplate":6},"Follow Best Practices","\u002Fdocs\u002F3.x\u002Fguide\u002Fmodules\u002Fbest-practices","docs\u002F3.x\u002F3.guide\u002F4.modules\u002F7.best-practices",{"title":357,"path":358,"stem":359,"titleTemplate":6},"Publish & Share Your Module","\u002Fdocs\u002F3.x\u002Fguide\u002Fmodules\u002Fecosystem","docs\u002F3.x\u002F3.guide\u002F4.modules\u002F8.ecosystem",{"title":361,"titleTemplate":362,"icon":363,"path":364,"stem":365,"children":366,"page":108},"Recipes","%s · Recipes","i-lucide-cooking-pot","\u002Fdocs\u002F3.x\u002Fguide\u002Frecipes","docs\u002F3.x\u002F3.guide\u002F5.recipes",[367,371,375,379],{"title":368,"path":369,"stem":370,"titleTemplate":6},"Custom Routing","\u002Fdocs\u002F3.x\u002Fguide\u002Frecipes\u002Fcustom-routing","docs\u002F3.x\u002F3.guide\u002F5.recipes\u002F1.custom-routing",{"title":372,"path":373,"stem":374,"titleTemplate":6},"Vite Plugins","\u002Fdocs\u002F3.x\u002Fguide\u002Frecipes\u002Fvite-plugin","docs\u002F3.x\u002F3.guide\u002F5.recipes\u002F2.vite-plugin",{"title":376,"path":377,"stem":378,"titleTemplate":6},"Custom useFetch","\u002Fdocs\u002F3.x\u002Fguide\u002Frecipes\u002Fcustom-usefetch","docs\u002F3.x\u002F3.guide\u002F5.recipes\u002F3.custom-usefetch",{"title":380,"path":381,"stem":382,"titleTemplate":6},"Sessions and Authentication","\u002Fdocs\u002F3.x\u002Fguide\u002Frecipes\u002Fsessions-and-authentication","docs\u002F3.x\u002F3.guide\u002F5.recipes\u002F4.sessions-and-authentication",{"title":384,"titleTemplate":385,"icon":386,"path":387,"stem":388,"children":389,"page":108},"Going Further","%s · Nuxt Advanced","i-lucide-star","\u002Fdocs\u002F3.x\u002Fguide\u002Fgoing-further","docs\u002F3.x\u002F3.guide\u002F6.going-further",[390,394,398,402,406,410,414,418,422,426],{"title":391,"path":392,"stem":393,"titleTemplate":6},"Custom Events","\u002Fdocs\u002F3.x\u002Fguide\u002Fgoing-further\u002Fevents","docs\u002F3.x\u002F3.guide\u002F6.going-further\u002F1.events",{"title":395,"path":396,"stem":397,"titleTemplate":6},"Experimental Features","\u002Fdocs\u002F3.x\u002Fguide\u002Fgoing-further\u002Fexperimental-features","docs\u002F3.x\u002F3.guide\u002F6.going-further\u002F1.experimental-features",{"title":399,"path":400,"stem":401,"titleTemplate":6},"Features","\u002Fdocs\u002F3.x\u002Fguide\u002Fgoing-further\u002Ffeatures","docs\u002F3.x\u002F3.guide\u002F6.going-further\u002F1.features",{"title":403,"path":404,"stem":405,"titleTemplate":6},"Runtime Config","\u002Fdocs\u002F3.x\u002Fguide\u002Fgoing-further\u002Fruntime-config","docs\u002F3.x\u002F3.guide\u002F6.going-further\u002F10.runtime-config",{"title":407,"path":408,"stem":409,"titleTemplate":6},"Nightly Release Channel","\u002Fdocs\u002F3.x\u002Fguide\u002Fgoing-further\u002Fnightly-release-channel","docs\u002F3.x\u002F3.guide\u002F6.going-further\u002F11.nightly-release-channel",{"title":411,"path":412,"stem":413,"titleTemplate":6},"Lifecycle Hooks","\u002Fdocs\u002F3.x\u002Fguide\u002Fgoing-further\u002Fhooks","docs\u002F3.x\u002F3.guide\u002F6.going-further\u002F2.hooks",{"title":415,"path":416,"stem":417,"titleTemplate":6},"Nuxt Kit","\u002Fdocs\u002F3.x\u002Fguide\u002Fgoing-further\u002Fkit","docs\u002F3.x\u002F3.guide\u002F6.going-further\u002F4.kit",{"title":419,"path":420,"stem":421,"titleTemplate":6},"NuxtApp","\u002Fdocs\u002F3.x\u002Fguide\u002Fgoing-further\u002Fnuxt-app","docs\u002F3.x\u002F3.guide\u002F6.going-further\u002F6.nuxt-app",{"title":423,"path":424,"stem":425,"titleTemplate":6},"Authoring Nuxt Layers","\u002Fdocs\u002F3.x\u002Fguide\u002Fgoing-further\u002Flayers","docs\u002F3.x\u002F3.guide\u002F6.going-further\u002F7.layers",{"title":427,"path":428,"stem":429,"titleTemplate":6},"Debugging","\u002Fdocs\u002F3.x\u002Fguide\u002Fgoing-further\u002Fdebugging","docs\u002F3.x\u002F3.guide\u002F6.going-further\u002F9.debugging",{"title":431,"titleTemplate":432,"icon":433,"path":434,"stem":435,"children":436,"page":108},"API","%s · Nuxt API","i-lucide-code-xml","\u002Fdocs\u002F3.x\u002Fapi","docs\u002F3.x\u002F4.api",[437,503,626,749,820,893,906],{"title":438,"titleTemplate":439,"icon":324,"path":440,"stem":441,"children":442,"page":108},"Components","%s · Nuxt Components","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents","docs\u002F3.x\u002F4.api\u002F1.components",[443,447,451,455,459,463,467,471,475,479,483,487,491,495,499],{"title":444,"path":445,"stem":446,"titleTemplate":6},"\u003CClientOnly>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fclient-only","docs\u002F3.x\u002F4.api\u002F1.components\u002F1.client-only",{"title":448,"path":449,"stem":450,"titleTemplate":6},"\u003CDevOnly>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fdev-only","docs\u002F3.x\u002F4.api\u002F1.components\u002F1.dev-only",{"title":452,"path":453,"stem":454,"titleTemplate":6},"\u003CNuxtClientFallback>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fnuxt-client-fallback","docs\u002F3.x\u002F4.api\u002F1.components\u002F1.nuxt-client-fallback",{"title":456,"path":457,"stem":458,"titleTemplate":6},"\u003CNuxtPicture>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fnuxt-picture","docs\u002F3.x\u002F4.api\u002F1.components\u002F10.nuxt-picture",{"title":460,"path":461,"stem":462,"titleTemplate":6},"\u003CTeleport>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fteleports","docs\u002F3.x\u002F4.api\u002F1.components\u002F11.teleports",{"title":464,"path":465,"stem":466,"titleTemplate":6},"\u003CNuxtRouteAnnouncer>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fnuxt-route-announcer","docs\u002F3.x\u002F4.api\u002F1.components\u002F12.nuxt-route-announcer",{"title":468,"path":469,"stem":470,"titleTemplate":6},"\u003CNuxtTime>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fnuxt-time","docs\u002F3.x\u002F4.api\u002F1.components\u002F13.nuxt-time",{"title":472,"path":473,"stem":474,"titleTemplate":6},"\u003CNuxtPage>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fnuxt-page","docs\u002F3.x\u002F4.api\u002F1.components\u002F2.nuxt-page",{"title":476,"path":477,"stem":478,"titleTemplate":6},"\u003CNuxtLayout>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fnuxt-layout","docs\u002F3.x\u002F4.api\u002F1.components\u002F3.nuxt-layout",{"title":480,"path":481,"stem":482,"titleTemplate":6},"\u003CNuxtLink>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fnuxt-link","docs\u002F3.x\u002F4.api\u002F1.components\u002F4.nuxt-link",{"title":484,"path":485,"stem":486,"titleTemplate":6},"\u003CNuxtLoadingIndicator>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fnuxt-loading-indicator","docs\u002F3.x\u002F4.api\u002F1.components\u002F5.nuxt-loading-indicator",{"title":488,"path":489,"stem":490,"titleTemplate":6},"\u003CNuxtErrorBoundary>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fnuxt-error-boundary","docs\u002F3.x\u002F4.api\u002F1.components\u002F6.nuxt-error-boundary",{"title":492,"path":493,"stem":494,"titleTemplate":6},"\u003CNuxtWelcome>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fnuxt-welcome","docs\u002F3.x\u002F4.api\u002F1.components\u002F7.nuxt-welcome",{"title":496,"path":497,"stem":498,"titleTemplate":6},"\u003CNuxtIsland>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fnuxt-island","docs\u002F3.x\u002F4.api\u002F1.components\u002F8.nuxt-island",{"title":500,"path":501,"stem":502,"titleTemplate":6},"\u003CNuxtImg>","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomponents\u002Fnuxt-img","docs\u002F3.x\u002F4.api\u002F1.components\u002F9.nuxt-img",{"title":504,"titleTemplate":505,"icon":506,"path":507,"stem":508,"children":509,"page":108},"Composables","%s · Nuxt Composables","i-lucide-arrow-left-right","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables","docs\u002F3.x\u002F4.api\u002F2.composables",[510,514,518,522,526,530,534,538,542,546,550,554,558,562,566,570,574,578,582,586,590,594,598,602,606,610,614,618,622],{"title":511,"path":512,"stem":513,"titleTemplate":6},"onPrehydrate","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fon-prehydrate","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fon-prehydrate",{"title":515,"path":516,"stem":517,"titleTemplate":6},"useAppConfig","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-app-config","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-app-config",{"title":519,"path":520,"stem":521,"titleTemplate":6},"useAsyncData","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-async-data","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-async-data",{"title":523,"path":524,"stem":525,"titleTemplate":6},"useCookie","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-cookie","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-cookie",{"title":527,"path":528,"stem":529,"titleTemplate":6},"useError","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-error","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-error",{"title":531,"path":532,"stem":533,"titleTemplate":6},"useFetch","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-fetch","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-fetch",{"title":535,"path":536,"stem":537,"titleTemplate":6},"useHead","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-head","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-head",{"title":539,"path":540,"stem":541,"titleTemplate":6},"useHeadSafe","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-head-safe","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-head-safe",{"title":543,"path":544,"stem":545,"titleTemplate":6},"useHydration","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-hydration","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-hydration",{"title":547,"path":548,"stem":549,"titleTemplate":6},"useLazyAsyncData","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-lazy-async-data","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-lazy-async-data",{"title":551,"path":552,"stem":553,"titleTemplate":6},"useLazyFetch","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-lazy-fetch","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-lazy-fetch",{"title":555,"path":556,"stem":557,"titleTemplate":6},"useLoadingIndicator","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-loading-indicator","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-loading-indicator",{"title":559,"path":560,"stem":561,"titleTemplate":6},"useNuxtApp","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-nuxt-app","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-nuxt-app",{"title":563,"path":564,"stem":565,"titleTemplate":6},"useNuxtData","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-nuxt-data","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-nuxt-data",{"title":567,"path":568,"stem":569,"titleTemplate":6},"usePreviewMode","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-preview-mode","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-preview-mode",{"title":571,"path":572,"stem":573,"titleTemplate":6},"useRequestEvent","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-request-event","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-request-event",{"title":575,"path":576,"stem":577,"titleTemplate":6},"useRequestFetch","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-request-fetch","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-request-fetch",{"title":579,"path":580,"stem":581,"titleTemplate":6},"useRequestHeader","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-request-header","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-request-header",{"title":583,"path":584,"stem":585,"titleTemplate":6},"useRequestHeaders","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-request-headers","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-request-headers",{"title":587,"path":588,"stem":589,"titleTemplate":6},"useRequestURL","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-request-url","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-request-url",{"title":591,"path":592,"stem":593,"titleTemplate":6},"useResponseHeader","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-response-header","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-response-header",{"title":595,"path":596,"stem":597,"titleTemplate":6},"useRoute","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-route","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-route",{"title":599,"path":600,"stem":601,"titleTemplate":6},"useRouteAnnouncer","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-route-announcer","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-route-announcer",{"title":603,"path":604,"stem":605,"titleTemplate":6},"useRouter","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-router","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-router",{"title":607,"path":608,"stem":609,"titleTemplate":6},"useRuntimeConfig","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-runtime-config","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-runtime-config",{"title":611,"path":612,"stem":613,"titleTemplate":6},"useRuntimeHook","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-runtime-hook","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-runtime-hook",{"title":615,"path":616,"stem":617,"titleTemplate":6},"useSeoMeta","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-seo-meta","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-seo-meta",{"title":619,"path":620,"stem":621,"titleTemplate":6},"useServerSeoMeta","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-server-seo-meta","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-server-seo-meta",{"title":623,"path":624,"stem":625,"titleTemplate":6},"useState","\u002Fdocs\u002F3.x\u002Fapi\u002Fcomposables\u002Fuse-state","docs\u002F3.x\u002F4.api\u002F2.composables\u002Fuse-state",{"title":627,"titleTemplate":628,"icon":629,"path":630,"stem":631,"children":632,"page":108},"Utils","%s · Nuxt Utils","i-lucide-square-function","\u002Fdocs\u002F3.x\u002Fapi\u002Futils","docs\u002F3.x\u002F4.api\u002F3.utils",[633,637,641,645,649,653,657,661,665,669,673,677,681,685,689,693,697,701,705,709,713,717,721,725,729,733,737,741,745],{"title":634,"path":635,"stem":636,"titleTemplate":6},"$fetch","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fdollarfetch","docs\u002F3.x\u002F4.api\u002F3.utils\u002F$fetch",{"title":638,"path":639,"stem":640,"titleTemplate":6},"abortNavigation","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fabort-navigation","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fabort-navigation",{"title":642,"path":643,"stem":644,"titleTemplate":6},"addRouteMiddleware","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fadd-route-middleware","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fadd-route-middleware",{"title":646,"path":647,"stem":648,"titleTemplate":6},"callOnce","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fcall-once","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fcall-once",{"title":650,"path":651,"stem":652,"titleTemplate":6},"clearError","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fclear-error","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fclear-error",{"title":654,"path":655,"stem":656,"titleTemplate":6},"clearNuxtData","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fclear-nuxt-data","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fclear-nuxt-data",{"title":658,"path":659,"stem":660,"titleTemplate":6},"clearNuxtState","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fclear-nuxt-state","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fclear-nuxt-state",{"title":662,"path":663,"stem":664,"titleTemplate":6},"createError","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fcreate-error","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fcreate-error",{"title":666,"path":667,"stem":668,"titleTemplate":6},"defineLazyHydrationComponent","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fdefine-lazy-hydration-component","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fdefine-lazy-hydration-component",{"title":670,"path":671,"stem":672,"titleTemplate":6},"defineNuxtComponent","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fdefine-nuxt-component","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fdefine-nuxt-component",{"title":674,"path":675,"stem":676,"titleTemplate":6},"defineNuxtPlugin","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fdefine-nuxt-plugin","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fdefine-nuxt-plugin",{"title":678,"path":679,"stem":680,"titleTemplate":6},"defineNuxtRouteMiddleware","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fdefine-nuxt-route-middleware","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fdefine-nuxt-route-middleware",{"title":682,"path":683,"stem":684,"titleTemplate":6},"definePageMeta","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fdefine-page-meta","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fdefine-page-meta",{"title":686,"path":687,"stem":688,"titleTemplate":6},"defineRouteRules","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fdefine-route-rules","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fdefine-route-rules",{"title":690,"path":691,"stem":692,"titleTemplate":6},"navigateTo","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fnavigate-to","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fnavigate-to",{"title":694,"path":695,"stem":696,"titleTemplate":6},"onBeforeRouteLeave","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fon-before-route-leave","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fon-before-route-leave",{"title":698,"path":699,"stem":700,"titleTemplate":6},"onBeforeRouteUpdate","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fon-before-route-update","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fon-before-route-update",{"title":702,"path":703,"stem":704,"titleTemplate":6},"onNuxtReady","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fon-nuxt-ready","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fon-nuxt-ready",{"title":706,"path":707,"stem":708,"titleTemplate":6},"prefetchComponents","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fprefetch-components","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fprefetch-components",{"title":710,"path":711,"stem":712,"titleTemplate":6},"preloadComponents","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fpreload-components","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fpreload-components",{"title":714,"path":715,"stem":716,"titleTemplate":6},"preloadRouteComponents","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fpreload-route-components","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fpreload-route-components",{"title":718,"path":719,"stem":720,"titleTemplate":6},"prerenderRoutes","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fprerender-routes","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fprerender-routes",{"title":722,"path":723,"stem":724,"titleTemplate":6},"refreshCookie","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Frefresh-cookie","docs\u002F3.x\u002F4.api\u002F3.utils\u002Frefresh-cookie",{"title":726,"path":727,"stem":728,"titleTemplate":6},"refreshNuxtData","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Frefresh-nuxt-data","docs\u002F3.x\u002F4.api\u002F3.utils\u002Frefresh-nuxt-data",{"title":730,"path":731,"stem":732,"titleTemplate":6},"reloadNuxtApp","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Freload-nuxt-app","docs\u002F3.x\u002F4.api\u002F3.utils\u002Freload-nuxt-app",{"title":734,"path":735,"stem":736,"titleTemplate":6},"setPageLayout","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fset-page-layout","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fset-page-layout",{"title":738,"path":739,"stem":740,"titleTemplate":6},"setResponseStatus","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fset-response-status","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fset-response-status",{"title":742,"path":743,"stem":744,"titleTemplate":6},"showError","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fshow-error","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fshow-error",{"title":746,"path":747,"stem":748,"titleTemplate":6},"updateAppConfig","\u002Fdocs\u002F3.x\u002Fapi\u002Futils\u002Fupdate-app-config","docs\u002F3.x\u002F4.api\u002F3.utils\u002Fupdate-app-config",{"title":750,"titleTemplate":751,"icon":752,"path":753,"stem":754,"children":755,"page":108},"Commands","%s · Nuxt Commands","i-lucide-square-terminal","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands","docs\u002F3.x\u002F4.api\u002F4.commands",[756,760,764,768,772,776,780,784,788,792,796,800,804,808,812,816],{"title":757,"path":758,"stem":759,"titleTemplate":6},"nuxt add","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fadd","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fadd",{"title":761,"path":762,"stem":763,"titleTemplate":6},"nuxt analyze","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fanalyze","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fanalyze",{"title":765,"path":766,"stem":767,"titleTemplate":6},"nuxt build","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fbuild","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fbuild",{"title":769,"path":770,"stem":771,"titleTemplate":6},"nuxt build-module","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fbuild-module","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fbuild-module",{"title":773,"path":774,"stem":775,"titleTemplate":6},"nuxt cleanup","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fcleanup","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fcleanup",{"title":777,"path":778,"stem":779,"titleTemplate":6},"nuxt dev","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fdev","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fdev",{"title":781,"path":782,"stem":783,"titleTemplate":6},"nuxt devtools","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fdevtools","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fdevtools",{"title":785,"path":786,"stem":787,"titleTemplate":6},"nuxt generate","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fgenerate","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fgenerate",{"title":789,"path":790,"stem":791,"titleTemplate":6},"nuxt info","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Finfo","docs\u002F3.x\u002F4.api\u002F4.commands\u002Finfo",{"title":793,"path":794,"stem":795,"titleTemplate":6},"create nuxt","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Finit","docs\u002F3.x\u002F4.api\u002F4.commands\u002Finit",{"title":797,"path":798,"stem":799,"titleTemplate":6},"nuxt module","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fmodule","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fmodule",{"title":801,"path":802,"stem":803,"titleTemplate":6},"nuxt prepare","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fprepare","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fprepare",{"title":805,"path":806,"stem":807,"titleTemplate":6},"nuxt preview","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fpreview","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fpreview",{"title":809,"path":810,"stem":811,"titleTemplate":6},"nuxt test","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Ftest","docs\u002F3.x\u002F4.api\u002F4.commands\u002Ftest",{"title":813,"path":814,"stem":815,"titleTemplate":6},"nuxt typecheck","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Ftypecheck","docs\u002F3.x\u002F4.api\u002F4.commands\u002Ftypecheck",{"title":817,"path":818,"stem":819,"titleTemplate":6},"nuxt upgrade","\u002Fdocs\u002F3.x\u002Fapi\u002Fcommands\u002Fupgrade","docs\u002F3.x\u002F4.api\u002F4.commands\u002Fupgrade",{"title":415,"titleTemplate":821,"icon":822,"path":823,"stem":824,"children":825,"page":108},"%s · Nuxt Kit","i-lucide-package","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit","docs\u002F3.x\u002F4.api\u002F5.kit",[826,829,832,836,840,844,848,852,856,859,863,867,870,873,877,881,885,889],{"title":276,"path":827,"stem":828,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fmodules","docs\u002F3.x\u002F4.api\u002F5.kit\u002F1.modules",{"title":403,"path":830,"stem":831,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fruntime-config","docs\u002F3.x\u002F4.api\u002F5.kit\u002F10.runtime-config",{"title":833,"path":834,"stem":835,"titleTemplate":6},"Templates","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Ftemplates","docs\u002F3.x\u002F4.api\u002F5.kit\u002F10.templates",{"title":837,"path":838,"stem":839,"titleTemplate":6},"Nitro","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fnitro","docs\u002F3.x\u002F4.api\u002F5.kit\u002F11.nitro",{"title":841,"path":842,"stem":843,"titleTemplate":6},"Resolving","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fresolving","docs\u002F3.x\u002F4.api\u002F5.kit\u002F12.resolving",{"title":845,"path":846,"stem":847,"titleTemplate":6},"Logging","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Flogging","docs\u002F3.x\u002F4.api\u002F5.kit\u002F13.logging",{"title":849,"path":850,"stem":851,"titleTemplate":6},"Builder","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fbuilder","docs\u002F3.x\u002F4.api\u002F5.kit\u002F14.builder",{"title":853,"path":854,"stem":855,"titleTemplate":6},"Examples","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fexamples","docs\u002F3.x\u002F4.api\u002F5.kit\u002F15.examples",{"title":84,"path":857,"stem":858,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Flayers","docs\u002F3.x\u002F4.api\u002F5.kit\u002F16.layers",{"title":860,"path":861,"stem":862,"titleTemplate":6},"Programmatic Usage","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fprogrammatic","docs\u002F3.x\u002F4.api\u002F5.kit\u002F2.programmatic",{"title":864,"path":865,"stem":866,"titleTemplate":6},"Compatibility","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fcompatibility","docs\u002F3.x\u002F4.api\u002F5.kit\u002F3.compatibility",{"title":268,"path":868,"stem":869,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fautoimports","docs\u002F3.x\u002F4.api\u002F5.kit\u002F4.autoimports",{"title":438,"path":871,"stem":872,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fcomponents","docs\u002F3.x\u002F4.api\u002F5.kit\u002F5.components",{"title":874,"path":875,"stem":876,"titleTemplate":6},"Context","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fcontext","docs\u002F3.x\u002F4.api\u002F5.kit\u002F6.context",{"title":878,"path":879,"stem":880,"titleTemplate":6},"Pages","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fpages","docs\u002F3.x\u002F4.api\u002F5.kit\u002F7.pages",{"title":882,"path":883,"stem":884,"titleTemplate":6},"Layout","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Flayout","docs\u002F3.x\u002F4.api\u002F5.kit\u002F8.layout",{"title":886,"path":887,"stem":888,"titleTemplate":6},"Head","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fhead","docs\u002F3.x\u002F4.api\u002F5.kit\u002F9.head",{"title":890,"path":891,"stem":892,"titleTemplate":6},"Plugins","\u002Fdocs\u002F3.x\u002Fapi\u002Fkit\u002Fplugins","docs\u002F3.x\u002F4.api\u002F5.kit\u002F9.plugins",{"title":894,"titleTemplate":6,"icon":895,"path":896,"stem":897,"children":898,"page":108},"Advanced","i-lucide-brain","\u002Fdocs\u002F3.x\u002Fapi\u002Fadvanced","docs\u002F3.x\u002F4.api\u002F6.advanced",[899,902],{"title":411,"path":900,"stem":901,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fapi\u002Fadvanced\u002Fhooks","docs\u002F3.x\u002F4.api\u002F6.advanced\u002F1.hooks",{"title":903,"path":904,"stem":905,"titleTemplate":6},"Import meta","\u002Fdocs\u002F3.x\u002Fapi\u002Fadvanced\u002Fimport-meta","docs\u002F3.x\u002F4.api\u002F6.advanced\u002F2.import-meta",{"title":907,"path":908,"stem":909,"titleTemplate":910,"icon":32},"Nuxt Configuration","\u002Fdocs\u002F3.x\u002Fapi\u002Fnuxt-config","docs\u002F3.x\u002F4.api\u002F6.nuxt-config","%s",{"title":853,"titleTemplate":912,"icon":913,"path":914,"stem":915,"children":916,"page":108},"%s · Nuxt Examples","i-lucide-app-window-mac","\u002Fdocs\u002F3.x\u002Fexamples","docs\u002F3.x\u002F4.examples",[917,921,943,958,994],{"title":918,"path":919,"stem":920,"titleTemplate":6},"Hello World","\u002Fdocs\u002F3.x\u002Fexamples\u002Fhello-world","docs\u002F3.x\u002F4.examples\u002F0.hello-world",{"title":399,"path":922,"stem":923,"children":924,"page":108},"\u002Fdocs\u002F3.x\u002Fexamples\u002Ffeatures","docs\u002F3.x\u002F4.examples\u002F1.features",[925,929,932,935,939],{"title":926,"path":927,"stem":928,"titleTemplate":6},"Auto Imports","\u002Fdocs\u002F3.x\u002Fexamples\u002Ffeatures\u002Fauto-imports","docs\u002F3.x\u002F4.examples\u002F1.features\u002F1.auto-imports",{"title":64,"path":930,"stem":931,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fexamples\u002Ffeatures\u002Fdata-fetching","docs\u002F3.x\u002F4.examples\u002F1.features\u002F2.data-fetching",{"title":69,"path":933,"stem":934,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fexamples\u002Ffeatures\u002Fstate-management","docs\u002F3.x\u002F4.examples\u002F1.features\u002F3.state-management",{"title":936,"path":937,"stem":938,"titleTemplate":6},"Meta Tags","\u002Fdocs\u002F3.x\u002Fexamples\u002Ffeatures\u002Fmeta-tags","docs\u002F3.x\u002F4.examples\u002F1.features\u002F4.meta-tags",{"title":940,"path":941,"stem":942,"titleTemplate":6},"Layouts","\u002Fdocs\u002F3.x\u002Fexamples\u002Ffeatures\u002Flayouts","docs\u002F3.x\u002F4.examples\u002F1.features\u002F5.layouts",{"title":49,"path":944,"stem":945,"children":946,"page":108},"\u002Fdocs\u002F3.x\u002Fexamples\u002Frouting","docs\u002F3.x\u002F4.examples\u002F2.routing",[947,951,954],{"title":948,"path":949,"stem":950,"titleTemplate":6},"Middleware","\u002Fdocs\u002F3.x\u002Fexamples\u002Frouting\u002Fmiddleware","docs\u002F3.x\u002F4.examples\u002F2.routing\u002Fmiddleware",{"title":878,"path":952,"stem":953,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fexamples\u002Frouting\u002Fpages","docs\u002F3.x\u002F4.examples\u002F2.routing\u002Fpages",{"title":955,"path":956,"stem":957,"titleTemplate":6},"Universal Router","\u002Fdocs\u002F3.x\u002Fexamples\u002Frouting\u002Funiversal-router","docs\u002F3.x\u002F4.examples\u002F2.routing\u002Funiversal-router",{"title":894,"path":959,"stem":960,"children":961,"page":108},"\u002Fdocs\u002F3.x\u002Fexamples\u002Fadvanced","docs\u002F3.x\u002F4.examples\u002F4.advanced",[962,965,968,972,976,980,984,987,990],{"title":84,"path":963,"stem":964,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fexamples\u002Fadvanced\u002Fconfig-extends","docs\u002F3.x\u002F4.examples\u002F4.advanced\u002Fconfig-extends",{"title":74,"path":966,"stem":967,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fexamples\u002Fadvanced\u002Ferror-handling","docs\u002F3.x\u002F4.examples\u002F4.advanced\u002Ferror-handling",{"title":969,"path":970,"stem":971,"titleTemplate":6},"JSX \u002F TSX","\u002Fdocs\u002F3.x\u002Fexamples\u002Fadvanced\u002Fjsx","docs\u002F3.x\u002F4.examples\u002F4.advanced\u002Fjsx",{"title":973,"path":974,"stem":975,"titleTemplate":6},"Locale","\u002Fdocs\u002F3.x\u002Fexamples\u002Fadvanced\u002Flocale","docs\u002F3.x\u002F4.examples\u002F4.advanced\u002Flocale",{"title":977,"path":978,"stem":979,"titleTemplate":6},"Module Extend Pages","\u002Fdocs\u002F3.x\u002Fexamples\u002Fadvanced\u002Fmodule-extend-pages","docs\u002F3.x\u002F4.examples\u002F4.advanced\u002Fmodule-extend-pages",{"title":981,"path":982,"stem":983,"titleTemplate":6},"Teleport","\u002Fdocs\u002F3.x\u002Fexamples\u002Fadvanced\u002Fteleport","docs\u002F3.x\u002F4.examples\u002F4.advanced\u002Fteleport",{"title":99,"path":985,"stem":986,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fexamples\u002Fadvanced\u002Ftesting","docs\u002F3.x\u002F4.examples\u002F4.advanced\u002Ftesting",{"title":523,"path":988,"stem":989,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fexamples\u002Fadvanced\u002Fuse-cookie","docs\u002F3.x\u002F4.examples\u002F4.advanced\u002Fuse-cookie",{"title":991,"path":992,"stem":993,"titleTemplate":6},"Use Custom Fetch Composable","\u002Fdocs\u002F3.x\u002Fexamples\u002Fadvanced\u002Fuse-custom-fetch-composable","docs\u002F3.x\u002F4.examples\u002F4.advanced\u002Fuse-custom-fetch-composable",{"title":995,"path":996,"stem":997,"children":998,"page":108},"Experimental","\u002Fdocs\u002F3.x\u002Fexamples\u002Fexperimental","docs\u002F3.x\u002F4.examples\u002F7.experimental",[999],{"title":1000,"path":1001,"stem":1002,"titleTemplate":6},"WASM","\u002Fdocs\u002F3.x\u002Fexamples\u002Fexperimental\u002Fwasm","docs\u002F3.x\u002F4.examples\u002F7.experimental\u002Fwasm",{"title":1004,"titleTemplate":1005,"icon":1006,"path":1007,"stem":1008,"children":1009,"page":108},"Community","%s · Nuxt Community","i-lucide-messages-square","\u002Fdocs\u002F3.x\u002Fcommunity","docs\u002F3.x\u002F5.community",[1010,1015,1020,1025,1030,1035],{"title":1011,"path":1012,"stem":1013,"titleTemplate":6,"icon":1014},"Getting Help","\u002Fdocs\u002F3.x\u002Fcommunity\u002Fgetting-help","docs\u002F3.x\u002F5.community\u002F2.getting-help","i-lucide-life-buoy",{"title":1016,"path":1017,"stem":1018,"titleTemplate":6,"icon":1019},"Reporting Bugs","\u002Fdocs\u002F3.x\u002Fcommunity\u002Freporting-bugs","docs\u002F3.x\u002F5.community\u002F3.reporting-bugs","i-lucide-bug",{"title":1021,"path":1022,"stem":1023,"titleTemplate":6,"icon":1024},"Contribution","\u002Fdocs\u002F3.x\u002Fcommunity\u002Fcontribution","docs\u002F3.x\u002F5.community\u002F4.contribution","i-lucide-git-pull-request",{"title":1026,"path":1027,"stem":1028,"titleTemplate":6,"icon":1029},"Framework","\u002Fdocs\u002F3.x\u002Fcommunity\u002Fframework-contribution","docs\u002F3.x\u002F5.community\u002F5.framework-contribution","i-lucide-github",{"title":1031,"path":1032,"stem":1033,"titleTemplate":6,"icon":1034},"Roadmap","\u002Fdocs\u002F3.x\u002Fcommunity\u002Froadmap","docs\u002F3.x\u002F5.community\u002F6.roadmap","i-lucide-map",{"title":1036,"path":1037,"stem":1038,"titleTemplate":6,"icon":1039},"Releases","\u002Fdocs\u002F3.x\u002Fcommunity\u002Fchangelog","docs\u002F3.x\u002F5.community\u002F7.changelog","i-lucide-bell-dot",{"title":1041,"titleTemplate":1042,"icon":1043,"path":1044,"stem":1045,"children":1046,"page":108},"Migrate to Nuxt Bridge","Migrate to Nuxt Bridge: %s","i-lucide-ship","\u002Fdocs\u002F3.x\u002Fbridge","docs\u002F3.x\u002F6.bridge",[1047,1051,1054,1057,1061,1065,1069,1072,1075,1078],{"title":1048,"path":1049,"stem":1050,"titleTemplate":6},"Overview","\u002Fdocs\u002F3.x\u002Fbridge\u002Foverview","docs\u002F3.x\u002F6.bridge\u002F1.overview",{"title":29,"path":1052,"stem":1053,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fbridge\u002Fconfiguration","docs\u002F3.x\u002F6.bridge\u002F10.configuration",{"title":280,"path":1055,"stem":1056,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fbridge\u002Ftypescript","docs\u002F3.x\u002F6.bridge\u002F2.typescript",{"title":1058,"path":1059,"stem":1060,"titleTemplate":6},"Legacy Composition API","\u002Fdocs\u002F3.x\u002Fbridge\u002Fbridge-composition-api","docs\u002F3.x\u002F6.bridge\u002F3.bridge-composition-api",{"title":1062,"path":1063,"stem":1064,"titleTemplate":6},"Plugins and Middleware","\u002Fdocs\u002F3.x\u002Fbridge\u002Fplugins-and-middleware","docs\u002F3.x\u002F6.bridge\u002F4.plugins-and-middleware",{"title":1066,"path":1067,"stem":1068,"titleTemplate":6},"New Composition API","\u002Fdocs\u002F3.x\u002Fbridge\u002Fnuxt3-compatible-api","docs\u002F3.x\u002F6.bridge\u002F5.nuxt3-compatible-api",{"title":936,"path":1070,"stem":1071,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fbridge\u002Fmeta","docs\u002F3.x\u002F6.bridge\u002F6.meta",{"title":403,"path":1073,"stem":1074,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fbridge\u002Fruntime-config","docs\u002F3.x\u002F6.bridge\u002F7.runtime-config",{"title":837,"path":1076,"stem":1077,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fbridge\u002Fnitro","docs\u002F3.x\u002F6.bridge\u002F8.nitro",{"title":1079,"path":1080,"stem":1081,"titleTemplate":6},"Vite","\u002Fdocs\u002F3.x\u002Fbridge\u002Fvite","docs\u002F3.x\u002F6.bridge\u002F9.vite",{"title":1083,"titleTemplate":1084,"icon":107,"path":1085,"stem":1086,"children":1087,"page":108},"Migrate to Nuxt 3","Migrate to Nuxt 3: %s","\u002Fdocs\u002F3.x\u002Fmigration","docs\u002F3.x\u002F7.migration",[1088,1091,1095,1098,1101,1104,1107,1110,1113,1117,1121],{"title":1048,"path":1089,"stem":1090,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fmigration\u002Foverview","docs\u002F3.x\u002F7.migration\u002F1.overview",{"title":1092,"path":1093,"stem":1094,"titleTemplate":6},"Build Tooling","\u002Fdocs\u002F3.x\u002Fmigration\u002Fbundling","docs\u002F3.x\u002F7.migration\u002F10.bundling",{"title":79,"path":1096,"stem":1097,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fmigration\u002Fserver","docs\u002F3.x\u002F7.migration\u002F11.server",{"title":29,"path":1099,"stem":1100,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fmigration\u002Fconfiguration","docs\u002F3.x\u002F7.migration\u002F2.configuration",{"title":276,"path":1102,"stem":1103,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fmigration\u002Fmodule-authors","docs\u002F3.x\u002F7.migration\u002F20.module-authors",{"title":926,"path":1105,"stem":1106,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fmigration\u002Fauto-imports","docs\u002F3.x\u002F7.migration\u002F3.auto-imports",{"title":936,"path":1108,"stem":1109,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fmigration\u002Fmeta","docs\u002F3.x\u002F7.migration\u002F4.meta",{"title":1062,"path":1111,"stem":1112,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fmigration\u002Fplugins-and-middleware","docs\u002F3.x\u002F7.migration\u002F5.plugins-and-middleware",{"title":1114,"path":1115,"stem":1116,"titleTemplate":6},"Pages and Layouts","\u002Fdocs\u002F3.x\u002Fmigration\u002Fpages-and-layouts","docs\u002F3.x\u002F7.migration\u002F6.pages-and-layouts",{"title":1118,"path":1119,"stem":1120,"titleTemplate":6},"Component Options","\u002Fdocs\u002F3.x\u002Fmigration\u002Fcomponent-options","docs\u002F3.x\u002F7.migration\u002F7.component-options",{"title":403,"path":1122,"stem":1123,"titleTemplate":6},"\u002Fdocs\u002F3.x\u002Fmigration\u002Fruntime-config","docs\u002F3.x\u002F7.migration\u002F8.runtime-config",{"title":5,"titleTemplate":6,"icon":7,"path":1125,"stem":1126,"children":1127,"page":108},"\u002Fdocs\u002F4.x","docs\u002F4.x",[1128,1186,1280,1419,1801,1878,1900,1934],{"title":12,"titleTemplate":13,"icon":14,"path":1129,"stem":1130,"children":1131,"page":108},"\u002Fdocs\u002F4.x\u002Fgetting-started","docs\u002F4.x\u002F1.getting-started",[1132,1135,1138,1141,1144,1147,1150,1153,1156,1159,1162,1165,1168,1171,1174,1177,1180,1183],{"title":19,"path":1133,"stem":1134,"titleTemplate":6,"icon":22},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fintroduction","docs\u002F4.x\u002F1.getting-started\u002F01.introduction",{"title":24,"path":1136,"stem":1137,"titleTemplate":6,"icon":27},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Finstallation","docs\u002F4.x\u002F1.getting-started\u002F02.installation",{"title":29,"path":1139,"stem":1140,"titleTemplate":6,"icon":32},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fconfiguration","docs\u002F4.x\u002F1.getting-started\u002F03.configuration",{"title":34,"path":1142,"stem":1143,"titleTemplate":6,"icon":37},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fviews","docs\u002F4.x\u002F1.getting-started\u002F04.views",{"title":39,"path":1145,"stem":1146,"titleTemplate":6,"icon":42},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fassets","docs\u002F4.x\u002F1.getting-started\u002F05.assets",{"title":44,"path":1148,"stem":1149,"titleTemplate":6,"icon":47},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fstyling","docs\u002F4.x\u002F1.getting-started\u002F06.styling",{"title":49,"path":1151,"stem":1152,"titleTemplate":6,"icon":52},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Frouting","docs\u002F4.x\u002F1.getting-started\u002F07.routing",{"title":54,"path":1154,"stem":1155,"titleTemplate":6,"icon":57},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fseo-meta","docs\u002F4.x\u002F1.getting-started\u002F08.seo-meta",{"title":59,"path":1157,"stem":1158,"titleTemplate":6,"icon":62},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Ftransitions","docs\u002F4.x\u002F1.getting-started\u002F09.transitions",{"title":64,"path":1160,"stem":1161,"titleTemplate":6,"icon":67},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fdata-fetching","docs\u002F4.x\u002F1.getting-started\u002F10.data-fetching",{"title":69,"path":1163,"stem":1164,"titleTemplate":6,"icon":72},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fstate-management","docs\u002F4.x\u002F1.getting-started\u002F11.state-management",{"title":74,"path":1166,"stem":1167,"titleTemplate":6,"icon":77},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Ferror-handling","docs\u002F4.x\u002F1.getting-started\u002F12.error-handling",{"title":79,"path":1169,"stem":1170,"titleTemplate":6,"icon":82},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fserver","docs\u002F4.x\u002F1.getting-started\u002F13.server",{"title":84,"path":1172,"stem":1173,"titleTemplate":6,"icon":87},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Flayers","docs\u002F4.x\u002F1.getting-started\u002F14.layers",{"title":89,"path":1175,"stem":1176,"titleTemplate":6,"icon":92},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fprerendering","docs\u002F4.x\u002F1.getting-started\u002F15.prerendering",{"title":94,"path":1178,"stem":1179,"titleTemplate":6,"icon":97},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fdeployment","docs\u002F4.x\u002F1.getting-started\u002F16.deployment",{"title":99,"path":1181,"stem":1182,"titleTemplate":6,"icon":102},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Ftesting","docs\u002F4.x\u002F1.getting-started\u002F17.testing",{"title":104,"path":1184,"stem":1185,"titleTemplate":6,"icon":107},"\u002Fdocs\u002F4.x\u002Fgetting-started\u002Fupgrade","docs\u002F4.x\u002F1.getting-started\u002F18.upgrade",{"title":110,"titleTemplate":111,"icon":112,"path":1187,"stem":1188,"children":1189,"page":108},"\u002Fdocs\u002F4.x\u002Fdirectory-structure","docs\u002F4.x\u002F2.directory-structure",[1190,1193,1196,1238,1241,1244,1247,1250,1253,1256,1259,1262,1265,1268,1271,1274,1277],{"title":117,"path":1191,"stem":1192,"titleTemplate":6,"icon":120},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fnuxt","docs\u002F4.x\u002F2.directory-structure\u002F0.nuxt",{"title":122,"path":1194,"stem":1195,"titleTemplate":6,"icon":125},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Foutput","docs\u002F4.x\u002F2.directory-structure\u002F0.output",{"title":1197,"titleTemplate":111,"head":1198,"defaultOpen":1200,"icon":1201,"path":1202,"stem":1203,"children":1204,"page":108},"app",{"title":1199},"app\u002F",true,"i-vscode-icons-folder-type-app","\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp","docs\u002F4.x\u002F2.directory-structure\u002F1.app",[1205,1208,1211,1214,1217,1220,1223,1226,1229,1232,1235],{"title":127,"path":1206,"stem":1207,"titleTemplate":6,"icon":130},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Fassets","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F1.assets",{"title":132,"path":1209,"stem":1210,"titleTemplate":6,"icon":135},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Fcomponents","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F1.components",{"title":137,"path":1212,"stem":1213,"titleTemplate":6,"icon":140},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Fcomposables","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F1.composables",{"title":152,"path":1215,"stem":1216,"titleTemplate":6,"icon":155},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Flayouts","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F1.layouts",{"title":157,"path":1218,"stem":1219,"titleTemplate":6,"icon":160},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Fmiddleware","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F1.middleware",{"title":171,"path":1221,"stem":1222,"titleTemplate":6,"icon":155},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Fpages","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F1.pages",{"title":175,"path":1224,"stem":1225,"titleTemplate":6,"icon":178},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Fplugins","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F1.plugins",{"title":195,"path":1227,"stem":1228,"titleTemplate":6,"icon":198},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Futils","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F1.utils",{"title":219,"path":1230,"stem":1231,"titleTemplate":6,"icon":222},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Fapp","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F3.app",{"title":224,"path":1233,"stem":1234,"titleTemplate":6,"icon":227},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Fapp-config","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F3.app-config",{"title":229,"path":1236,"stem":1237,"titleTemplate":6,"icon":222},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fapp\u002Ferror","docs\u002F4.x\u002F2.directory-structure\u002F1.app\u002F3.error",{"title":142,"path":1239,"stem":1240,"titleTemplate":6,"icon":145},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fcontent","docs\u002F4.x\u002F2.directory-structure\u002F1.content",{"title":147,"path":1242,"stem":1243,"titleTemplate":6,"icon":150},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Flayers","docs\u002F4.x\u002F2.directory-structure\u002F1.layers",{"title":162,"path":1245,"stem":1246,"titleTemplate":6,"icon":150},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fmodules","docs\u002F4.x\u002F2.directory-structure\u002F1.modules",{"title":166,"path":1248,"stem":1249,"titleTemplate":6,"icon":169},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fnode_modules","docs\u002F4.x\u002F2.directory-structure\u002F1.node_modules",{"title":180,"path":1251,"stem":1252,"titleTemplate":6,"icon":183},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fpublic","docs\u002F4.x\u002F2.directory-structure\u002F1.public",{"title":185,"path":1254,"stem":1255,"titleTemplate":6,"icon":188},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fserver","docs\u002F4.x\u002F2.directory-structure\u002F1.server",{"title":190,"path":1257,"stem":1258,"titleTemplate":6,"icon":193},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fshared","docs\u002F4.x\u002F2.directory-structure\u002F1.shared",{"title":200,"path":1260,"stem":1261,"titleTemplate":6,"icon":203},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fenv","docs\u002F4.x\u002F2.directory-structure\u002F2.env",{"title":205,"path":1263,"stem":1264,"titleTemplate":6,"icon":208},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fgitignore","docs\u002F4.x\u002F2.directory-structure\u002F2.gitignore",{"title":210,"path":1266,"stem":1267,"titleTemplate":6,"icon":213},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fnuxtignore","docs\u002F4.x\u002F2.directory-structure\u002F2.nuxtignore",{"title":215,"path":1269,"stem":1270,"titleTemplate":6,"icon":213},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fnuxtrc","docs\u002F4.x\u002F2.directory-structure\u002F2.nuxtrc",{"title":233,"path":1272,"stem":1273,"titleTemplate":6,"icon":213},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fnuxt-config","docs\u002F4.x\u002F2.directory-structure\u002F3.nuxt-config",{"title":237,"path":1275,"stem":1276,"titleTemplate":6,"icon":240},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Fpackage","docs\u002F4.x\u002F2.directory-structure\u002F3.package",{"title":242,"path":1278,"stem":1279,"titleTemplate":6,"icon":245},"\u002Fdocs\u002F4.x\u002Fdirectory-structure\u002Ftsconfig","docs\u002F4.x\u002F2.directory-structure\u002F3.tsconfig",{"title":247,"titleTemplate":6,"icon":248,"path":1281,"stem":1282,"children":1283,"page":108},"\u002Fdocs\u002F4.x\u002Fguide","docs\u002F4.x\u002F3.guide",[1284,1309,1327,1337,1365,1381],{"title":253,"titleTemplate":254,"icon":255,"path":1285,"stem":1286,"children":1287,"page":108},"\u002Fdocs\u002F4.x\u002Fguide\u002Fconcepts","docs\u002F4.x\u002F3.guide\u002F1.concepts",[1288,1291,1294,1297,1300,1303,1306],{"title":260,"path":1289,"stem":1290,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fconcepts\u002Frendering","docs\u002F4.x\u002F3.guide\u002F1.concepts\u002F1.rendering",{"title":264,"path":1292,"stem":1293,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fconcepts\u002Fnuxt-lifecycle","docs\u002F4.x\u002F3.guide\u002F1.concepts\u002F2.nuxt-lifecycle",{"title":268,"path":1295,"stem":1296,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fconcepts\u002Fauto-imports","docs\u002F4.x\u002F3.guide\u002F1.concepts\u002F3.auto-imports",{"title":272,"path":1298,"stem":1299,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fconcepts\u002Fserver-engine","docs\u002F4.x\u002F3.guide\u002F1.concepts\u002F4.server-engine",{"title":276,"path":1301,"stem":1302,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fconcepts\u002Fmodules","docs\u002F4.x\u002F3.guide\u002F1.concepts\u002F5.modules",{"title":280,"path":1304,"stem":1305,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fconcepts\u002Ftypescript","docs\u002F4.x\u002F3.guide\u002F1.concepts\u002F8.typescript",{"title":284,"path":1307,"stem":1308,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fconcepts\u002Fcode-style","docs\u002F4.x\u002F3.guide\u002F1.concepts\u002F9.code-style",{"title":288,"titleTemplate":289,"icon":290,"path":1310,"stem":1311,"children":1312,"page":108},"\u002Fdocs\u002F4.x\u002Fguide\u002Fbest-practices","docs\u002F4.x\u002F3.guide\u002F2.best-practices",[1313,1317,1321,1324],{"title":1314,"path":1315,"stem":1316,"titleTemplate":6},"Dev Containers","\u002Fdocs\u002F4.x\u002Fguide\u002Fbest-practices\u002Fdevcontainers","docs\u002F4.x\u002F3.guide\u002F2.best-practices\u002Fdevcontainers",{"title":1318,"path":1319,"stem":1320,"titleTemplate":6},"Nuxt and Hydration","\u002Fdocs\u002F4.x\u002Fguide\u002Fbest-practices\u002Fhydration","docs\u002F4.x\u002F3.guide\u002F2.best-practices\u002Fhydration",{"title":299,"path":1322,"stem":1323,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fbest-practices\u002Fperformance","docs\u002F4.x\u002F3.guide\u002F2.best-practices\u002Fperformance",{"title":303,"path":1325,"stem":1326,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fbest-practices\u002Fplugins","docs\u002F4.x\u002F3.guide\u002F2.best-practices\u002Fplugins",{"title":307,"titleTemplate":308,"icon":309,"path":1328,"stem":1329,"children":1330,"page":108},"\u002Fdocs\u002F4.x\u002Fguide\u002Fai","docs\u002F4.x\u002F3.guide\u002F3.ai",[1331,1334],{"title":314,"path":1332,"stem":1333,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fai\u002Fmcp","docs\u002F4.x\u002F3.guide\u002F3.ai\u002F1.mcp",{"title":318,"path":1335,"stem":1336,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fai\u002Fllms-txt","docs\u002F4.x\u002F3.guide\u002F3.ai\u002F2.llms-txt",{"title":322,"titleTemplate":323,"icon":324,"path":1338,"stem":1339,"children":1340,"page":108},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules","docs\u002F4.x\u002F3.guide\u002F4.modules",[1341,1344,1347,1350,1353,1356,1359,1362],{"title":329,"path":1342,"stem":1343,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Fgetting-started","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F1.getting-started",{"title":333,"path":1345,"stem":1346,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Fmodule-anatomy","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F2.module-anatomy",{"title":337,"path":1348,"stem":1349,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Frecipes-basics","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F3.recipes-basics",{"title":341,"path":1351,"stem":1352,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Fmodule-dependencies","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F4.module-dependencies",{"title":345,"path":1354,"stem":1355,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Frecipes-advanced","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F5.recipes-advanced",{"title":349,"path":1357,"stem":1358,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Ftesting","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F6.testing",{"title":353,"path":1360,"stem":1361,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Fbest-practices","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F7.best-practices",{"title":357,"path":1363,"stem":1364,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fmodules\u002Fecosystem","docs\u002F4.x\u002F3.guide\u002F4.modules\u002F8.ecosystem",{"title":361,"titleTemplate":362,"icon":363,"path":1366,"stem":1367,"children":1368,"page":108},"\u002Fdocs\u002F4.x\u002Fguide\u002Frecipes","docs\u002F4.x\u002F3.guide\u002F5.recipes",[1369,1372,1375,1378],{"title":368,"path":1370,"stem":1371,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Frecipes\u002Fcustom-routing","docs\u002F4.x\u002F3.guide\u002F5.recipes\u002F1.custom-routing",{"title":372,"path":1373,"stem":1374,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Frecipes\u002Fvite-plugin","docs\u002F4.x\u002F3.guide\u002F5.recipes\u002F2.vite-plugin",{"title":376,"path":1376,"stem":1377,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Frecipes\u002Fcustom-usefetch","docs\u002F4.x\u002F3.guide\u002F5.recipes\u002F3.custom-usefetch",{"title":380,"path":1379,"stem":1380,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Frecipes\u002Fsessions-and-authentication","docs\u002F4.x\u002F3.guide\u002F5.recipes\u002F4.sessions-and-authentication",{"title":384,"titleTemplate":385,"icon":386,"path":1382,"stem":1383,"children":1384,"page":108},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further","docs\u002F4.x\u002F3.guide\u002F6.going-further",[1385,1388,1391,1394,1397,1400,1403,1406,1409,1412,1416],{"title":391,"path":1386,"stem":1387,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fevents","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F1.events",{"title":395,"path":1389,"stem":1390,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fexperimental-features","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F1.experimental-features",{"title":399,"path":1392,"stem":1393,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Ffeatures","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F1.features",{"title":403,"path":1395,"stem":1396,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fruntime-config","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F10.runtime-config",{"title":407,"path":1398,"stem":1399,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fnightly-release-channel","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F11.nightly-release-channel",{"title":411,"path":1401,"stem":1402,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fhooks","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F2.hooks",{"title":415,"path":1404,"stem":1405,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fkit","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F4.kit",{"title":419,"path":1407,"stem":1408,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fnuxt-app","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F6.nuxt-app",{"title":423,"path":1410,"stem":1411,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Flayers","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F7.layers",{"title":1413,"path":1414,"stem":1415,"titleTemplate":6},"Creating a Builder","\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fbuilders","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F8.builders",{"title":427,"path":1417,"stem":1418,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fguide\u002Fgoing-further\u002Fdebugging","docs\u002F4.x\u002F3.guide\u002F6.going-further\u002F9.debugging",{"title":431,"titleTemplate":432,"icon":433,"path":1420,"stem":1421,"children":1422,"page":108},"\u002Fdocs\u002F4.x\u002Fapi","docs\u002F4.x\u002F4.api",[1423,1476,1583,1674,1726,1788,1798],{"title":438,"titleTemplate":439,"icon":324,"path":1424,"stem":1425,"children":1426,"page":108},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents","docs\u002F4.x\u002F4.api\u002F1.components",[1427,1430,1433,1436,1439,1442,1445,1448,1452,1455,1458,1461,1464,1467,1470,1473],{"title":444,"path":1428,"stem":1429,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fclient-only","docs\u002F4.x\u002F4.api\u002F1.components\u002F1.client-only",{"title":448,"path":1431,"stem":1432,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fdev-only","docs\u002F4.x\u002F4.api\u002F1.components\u002F1.dev-only",{"title":452,"path":1434,"stem":1435,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-client-fallback","docs\u002F4.x\u002F4.api\u002F1.components\u002F1.nuxt-client-fallback",{"title":456,"path":1437,"stem":1438,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-picture","docs\u002F4.x\u002F4.api\u002F1.components\u002F10.nuxt-picture",{"title":460,"path":1440,"stem":1441,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fteleports","docs\u002F4.x\u002F4.api\u002F1.components\u002F11.teleports",{"title":464,"path":1443,"stem":1444,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-route-announcer","docs\u002F4.x\u002F4.api\u002F1.components\u002F12.nuxt-route-announcer",{"title":468,"path":1446,"stem":1447,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-time","docs\u002F4.x\u002F4.api\u002F1.components\u002F13.nuxt-time",{"title":1449,"path":1450,"stem":1451,"titleTemplate":6},"\u003CNuxtAnnouncer>","\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-announcer","docs\u002F4.x\u002F4.api\u002F1.components\u002F14.nuxt-announcer",{"title":472,"path":1453,"stem":1454,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-page","docs\u002F4.x\u002F4.api\u002F1.components\u002F2.nuxt-page",{"title":476,"path":1456,"stem":1457,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-layout","docs\u002F4.x\u002F4.api\u002F1.components\u002F3.nuxt-layout",{"title":480,"path":1459,"stem":1460,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-link","docs\u002F4.x\u002F4.api\u002F1.components\u002F4.nuxt-link",{"title":484,"path":1462,"stem":1463,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-loading-indicator","docs\u002F4.x\u002F4.api\u002F1.components\u002F5.nuxt-loading-indicator",{"title":488,"path":1465,"stem":1466,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-error-boundary","docs\u002F4.x\u002F4.api\u002F1.components\u002F6.nuxt-error-boundary",{"title":492,"path":1468,"stem":1469,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-welcome","docs\u002F4.x\u002F4.api\u002F1.components\u002F7.nuxt-welcome",{"title":496,"path":1471,"stem":1472,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-island","docs\u002F4.x\u002F4.api\u002F1.components\u002F8.nuxt-island",{"title":500,"path":1474,"stem":1475,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomponents\u002Fnuxt-img","docs\u002F4.x\u002F4.api\u002F1.components\u002F9.nuxt-img",{"title":504,"titleTemplate":505,"icon":506,"path":1477,"stem":1478,"children":1479,"page":108},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables","docs\u002F4.x\u002F4.api\u002F2.composables",[1480,1484,1488,1491,1495,1498,1501,1504,1507,1510,1513,1516,1519,1523,1526,1529,1532,1535,1538,1541,1544,1547,1550,1553,1556,1559,1562,1565,1568,1571,1574,1577,1580],{"title":1481,"path":1482,"stem":1483,"titleTemplate":6},"createUseAsyncData","\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fcreate-use-async-data","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fcreate-use-async-data",{"title":1485,"path":1486,"stem":1487,"titleTemplate":6},"createUseFetch","\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fcreate-use-fetch","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fcreate-use-fetch",{"title":511,"path":1489,"stem":1490,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fon-prehydrate","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fon-prehydrate",{"title":1492,"path":1493,"stem":1494,"titleTemplate":6},"useAnnouncer","\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-announcer","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-announcer",{"title":515,"path":1496,"stem":1497,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-app-config","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-app-config",{"title":519,"path":1499,"stem":1500,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-async-data","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-async-data",{"title":523,"path":1502,"stem":1503,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-cookie","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-cookie",{"title":527,"path":1505,"stem":1506,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-error","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-error",{"title":531,"path":1508,"stem":1509,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-fetch","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-fetch",{"title":535,"path":1511,"stem":1512,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-head","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-head",{"title":539,"path":1514,"stem":1515,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-head-safe","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-head-safe",{"title":543,"path":1517,"stem":1518,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-hydration","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-hydration",{"title":1520,"path":1521,"stem":1522,"titleTemplate":6},"useLayout","\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-layout","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-layout",{"title":547,"path":1524,"stem":1525,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-lazy-async-data","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-lazy-async-data",{"title":551,"path":1527,"stem":1528,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-lazy-fetch","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-lazy-fetch",{"title":555,"path":1530,"stem":1531,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-loading-indicator","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-loading-indicator",{"title":559,"path":1533,"stem":1534,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-nuxt-app","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-nuxt-app",{"title":563,"path":1536,"stem":1537,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-nuxt-data","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-nuxt-data",{"title":567,"path":1539,"stem":1540,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-preview-mode","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-preview-mode",{"title":571,"path":1542,"stem":1543,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-request-event","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-request-event",{"title":575,"path":1545,"stem":1546,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-request-fetch","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-request-fetch",{"title":579,"path":1548,"stem":1549,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-request-header","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-request-header",{"title":583,"path":1551,"stem":1552,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-request-headers","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-request-headers",{"title":587,"path":1554,"stem":1555,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-request-url","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-request-url",{"title":591,"path":1557,"stem":1558,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-response-header","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-response-header",{"title":595,"path":1560,"stem":1561,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-route","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-route",{"title":599,"path":1563,"stem":1564,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-route-announcer","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-route-announcer",{"title":603,"path":1566,"stem":1567,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-router","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-router",{"title":607,"path":1569,"stem":1570,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-runtime-config","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-runtime-config",{"title":611,"path":1572,"stem":1573,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-runtime-hook","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-runtime-hook",{"title":615,"path":1575,"stem":1576,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-seo-meta","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-seo-meta",{"title":619,"path":1578,"stem":1579,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-server-seo-meta","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-server-seo-meta",{"title":623,"path":1581,"stem":1582,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcomposables\u002Fuse-state","docs\u002F4.x\u002F4.api\u002F2.composables\u002Fuse-state",{"title":627,"titleTemplate":628,"icon":629,"path":1584,"stem":1585,"children":1586,"page":108},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils","docs\u002F4.x\u002F4.api\u002F3.utils",[1587,1590,1593,1596,1599,1602,1605,1608,1611,1614,1617,1620,1623,1626,1629,1632,1635,1638,1641,1644,1647,1650,1653,1656,1659,1662,1665,1668,1671],{"title":634,"path":1588,"stem":1589,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fdollarfetch","docs\u002F4.x\u002F4.api\u002F3.utils\u002F$fetch",{"title":638,"path":1591,"stem":1592,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fabort-navigation","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fabort-navigation",{"title":642,"path":1594,"stem":1595,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fadd-route-middleware","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fadd-route-middleware",{"title":646,"path":1597,"stem":1598,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fcall-once","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fcall-once",{"title":650,"path":1600,"stem":1601,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fclear-error","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fclear-error",{"title":654,"path":1603,"stem":1604,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fclear-nuxt-data","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fclear-nuxt-data",{"title":658,"path":1606,"stem":1607,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fclear-nuxt-state","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fclear-nuxt-state",{"title":662,"path":1609,"stem":1610,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fcreate-error","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fcreate-error",{"title":666,"path":1612,"stem":1613,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fdefine-lazy-hydration-component","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fdefine-lazy-hydration-component",{"title":670,"path":1615,"stem":1616,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fdefine-nuxt-component","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fdefine-nuxt-component",{"title":674,"path":1618,"stem":1619,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fdefine-nuxt-plugin","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fdefine-nuxt-plugin",{"title":678,"path":1621,"stem":1622,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fdefine-nuxt-route-middleware","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fdefine-nuxt-route-middleware",{"title":682,"path":1624,"stem":1625,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fdefine-page-meta","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fdefine-page-meta",{"title":686,"path":1627,"stem":1628,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fdefine-route-rules","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fdefine-route-rules",{"title":690,"path":1630,"stem":1631,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fnavigate-to","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fnavigate-to",{"title":694,"path":1633,"stem":1634,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fon-before-route-leave","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fon-before-route-leave",{"title":698,"path":1636,"stem":1637,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fon-before-route-update","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fon-before-route-update",{"title":702,"path":1639,"stem":1640,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fon-nuxt-ready","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fon-nuxt-ready",{"title":706,"path":1642,"stem":1643,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fprefetch-components","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fprefetch-components",{"title":710,"path":1645,"stem":1646,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fpreload-components","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fpreload-components",{"title":714,"path":1648,"stem":1649,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fpreload-route-components","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fpreload-route-components",{"title":718,"path":1651,"stem":1652,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fprerender-routes","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fprerender-routes",{"title":722,"path":1654,"stem":1655,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Frefresh-cookie","docs\u002F4.x\u002F4.api\u002F3.utils\u002Frefresh-cookie",{"title":726,"path":1657,"stem":1658,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Frefresh-nuxt-data","docs\u002F4.x\u002F4.api\u002F3.utils\u002Frefresh-nuxt-data",{"title":730,"path":1660,"stem":1661,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Freload-nuxt-app","docs\u002F4.x\u002F4.api\u002F3.utils\u002Freload-nuxt-app",{"title":734,"path":1663,"stem":1664,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fset-page-layout","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fset-page-layout",{"title":738,"path":1666,"stem":1667,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fset-response-status","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fset-response-status",{"title":742,"path":1669,"stem":1670,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fshow-error","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fshow-error",{"title":746,"path":1672,"stem":1673,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Futils\u002Fupdate-app-config","docs\u002F4.x\u002F4.api\u002F3.utils\u002Fupdate-app-config",{"title":750,"titleTemplate":751,"icon":752,"path":1675,"stem":1676,"children":1677,"page":108},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands","docs\u002F4.x\u002F4.api\u002F4.commands",[1678,1681,1684,1687,1690,1693,1696,1699,1702,1705,1708,1711,1714,1717,1720,1723],{"title":757,"path":1679,"stem":1680,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fadd","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fadd",{"title":761,"path":1682,"stem":1683,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fanalyze","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fanalyze",{"title":765,"path":1685,"stem":1686,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fbuild","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fbuild",{"title":769,"path":1688,"stem":1689,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fbuild-module","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fbuild-module",{"title":773,"path":1691,"stem":1692,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fcleanup","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fcleanup",{"title":777,"path":1694,"stem":1695,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fdev","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fdev",{"title":781,"path":1697,"stem":1698,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fdevtools","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fdevtools",{"title":785,"path":1700,"stem":1701,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fgenerate","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fgenerate",{"title":789,"path":1703,"stem":1704,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Finfo","docs\u002F4.x\u002F4.api\u002F4.commands\u002Finfo",{"title":793,"path":1706,"stem":1707,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Finit","docs\u002F4.x\u002F4.api\u002F4.commands\u002Finit",{"title":797,"path":1709,"stem":1710,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fmodule","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fmodule",{"title":801,"path":1712,"stem":1713,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fprepare","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fprepare",{"title":805,"path":1715,"stem":1716,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fpreview","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fpreview",{"title":809,"path":1718,"stem":1719,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Ftest","docs\u002F4.x\u002F4.api\u002F4.commands\u002Ftest",{"title":813,"path":1721,"stem":1722,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Ftypecheck","docs\u002F4.x\u002F4.api\u002F4.commands\u002Ftypecheck",{"title":817,"path":1724,"stem":1725,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fcommands\u002Fupgrade","docs\u002F4.x\u002F4.api\u002F4.commands\u002Fupgrade",{"title":415,"titleTemplate":821,"icon":822,"path":1727,"stem":1728,"children":1729,"page":108},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit","docs\u002F4.x\u002F4.api\u002F5.kit",[1730,1733,1736,1739,1743,1746,1749,1752,1755,1758,1761,1764,1767,1770,1773,1776,1779,1782,1785],{"title":276,"path":1731,"stem":1732,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fmodules","docs\u002F4.x\u002F4.api\u002F5.kit\u002F1.modules",{"title":403,"path":1734,"stem":1735,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fruntime-config","docs\u002F4.x\u002F4.api\u002F5.kit\u002F10.runtime-config",{"title":833,"path":1737,"stem":1738,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Ftemplates","docs\u002F4.x\u002F4.api\u002F5.kit\u002F10.templates",{"title":1740,"path":1741,"stem":1742,"titleTemplate":6},"App Config","\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fapp-config","docs\u002F4.x\u002F4.api\u002F5.kit\u002F11.app-config",{"title":837,"path":1744,"stem":1745,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fnitro","docs\u002F4.x\u002F4.api\u002F5.kit\u002F12.nitro",{"title":841,"path":1747,"stem":1748,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fresolving","docs\u002F4.x\u002F4.api\u002F5.kit\u002F13.resolving",{"title":845,"path":1750,"stem":1751,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Flogging","docs\u002F4.x\u002F4.api\u002F5.kit\u002F14.logging",{"title":849,"path":1753,"stem":1754,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fbuilder","docs\u002F4.x\u002F4.api\u002F5.kit\u002F15.builder",{"title":853,"path":1756,"stem":1757,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fexamples","docs\u002F4.x\u002F4.api\u002F5.kit\u002F16.examples",{"title":84,"path":1759,"stem":1760,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Flayers","docs\u002F4.x\u002F4.api\u002F5.kit\u002F17.layers",{"title":860,"path":1762,"stem":1763,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fprogrammatic","docs\u002F4.x\u002F4.api\u002F5.kit\u002F2.programmatic",{"title":864,"path":1765,"stem":1766,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fcompatibility","docs\u002F4.x\u002F4.api\u002F5.kit\u002F3.compatibility",{"title":268,"path":1768,"stem":1769,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fautoimports","docs\u002F4.x\u002F4.api\u002F5.kit\u002F4.autoimports",{"title":438,"path":1771,"stem":1772,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fcomponents","docs\u002F4.x\u002F4.api\u002F5.kit\u002F5.components",{"title":874,"path":1774,"stem":1775,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fcontext","docs\u002F4.x\u002F4.api\u002F5.kit\u002F6.context",{"title":878,"path":1777,"stem":1778,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fpages","docs\u002F4.x\u002F4.api\u002F5.kit\u002F7.pages",{"title":882,"path":1780,"stem":1781,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Flayout","docs\u002F4.x\u002F4.api\u002F5.kit\u002F8.layout",{"title":886,"path":1783,"stem":1784,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fhead","docs\u002F4.x\u002F4.api\u002F5.kit\u002F9.head",{"title":890,"path":1786,"stem":1787,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fkit\u002Fplugins","docs\u002F4.x\u002F4.api\u002F5.kit\u002F9.plugins",{"title":894,"titleTemplate":6,"icon":895,"path":1789,"stem":1790,"children":1791,"page":108},"\u002Fdocs\u002F4.x\u002Fapi\u002Fadvanced","docs\u002F4.x\u002F4.api\u002F6.advanced",[1792,1795],{"title":411,"path":1793,"stem":1794,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fadvanced\u002Fhooks","docs\u002F4.x\u002F4.api\u002F6.advanced\u002F1.hooks",{"title":903,"path":1796,"stem":1797,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fapi\u002Fadvanced\u002Fimport-meta","docs\u002F4.x\u002F4.api\u002F6.advanced\u002F2.import-meta",{"title":907,"path":1799,"stem":1800,"titleTemplate":910,"icon":32},"\u002Fdocs\u002F4.x\u002Fapi\u002Fnuxt-config","docs\u002F4.x\u002F4.api\u002F6.nuxt-config",{"title":853,"titleTemplate":912,"icon":913,"path":1802,"stem":1803,"children":1804,"page":108},"\u002Fdocs\u002F4.x\u002Fexamples","docs\u002F4.x\u002F4.examples",[1805,1808,1827,1840,1871],{"title":918,"path":1806,"stem":1807,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fhello-world","docs\u002F4.x\u002F4.examples\u002F0.hello-world",{"title":399,"path":1809,"stem":1810,"children":1811,"page":108},"\u002Fdocs\u002F4.x\u002Fexamples\u002Ffeatures","docs\u002F4.x\u002F4.examples\u002F1.features",[1812,1815,1818,1821,1824],{"title":926,"path":1813,"stem":1814,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Ffeatures\u002Fauto-imports","docs\u002F4.x\u002F4.examples\u002F1.features\u002F1.auto-imports",{"title":64,"path":1816,"stem":1817,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Ffeatures\u002Fdata-fetching","docs\u002F4.x\u002F4.examples\u002F1.features\u002F2.data-fetching",{"title":69,"path":1819,"stem":1820,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Ffeatures\u002Fstate-management","docs\u002F4.x\u002F4.examples\u002F1.features\u002F3.state-management",{"title":936,"path":1822,"stem":1823,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Ffeatures\u002Fmeta-tags","docs\u002F4.x\u002F4.examples\u002F1.features\u002F4.meta-tags",{"title":940,"path":1825,"stem":1826,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Ffeatures\u002Flayouts","docs\u002F4.x\u002F4.examples\u002F1.features\u002F5.layouts",{"title":49,"path":1828,"stem":1829,"children":1830,"page":108},"\u002Fdocs\u002F4.x\u002Fexamples\u002Frouting","docs\u002F4.x\u002F4.examples\u002F2.routing",[1831,1834,1837],{"title":948,"path":1832,"stem":1833,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Frouting\u002Fmiddleware","docs\u002F4.x\u002F4.examples\u002F2.routing\u002Fmiddleware",{"title":878,"path":1835,"stem":1836,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Frouting\u002Fpages","docs\u002F4.x\u002F4.examples\u002F2.routing\u002Fpages",{"title":955,"path":1838,"stem":1839,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Frouting\u002Funiversal-router","docs\u002F4.x\u002F4.examples\u002F2.routing\u002Funiversal-router",{"title":894,"path":1841,"stem":1842,"children":1843,"page":108},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced","docs\u002F4.x\u002F4.examples\u002F4.advanced",[1844,1847,1850,1853,1856,1859,1862,1865,1868],{"title":84,"path":1845,"stem":1846,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Fconfig-extends","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Fconfig-extends",{"title":74,"path":1848,"stem":1849,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Ferror-handling","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Ferror-handling",{"title":969,"path":1851,"stem":1852,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Fjsx","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Fjsx",{"title":973,"path":1854,"stem":1855,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Flocale","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Flocale",{"title":977,"path":1857,"stem":1858,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Fmodule-extend-pages","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Fmodule-extend-pages",{"title":981,"path":1860,"stem":1861,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Fteleport","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Fteleport",{"title":99,"path":1863,"stem":1864,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Ftesting","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Ftesting",{"title":523,"path":1866,"stem":1867,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Fuse-cookie","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Fuse-cookie",{"title":991,"path":1869,"stem":1870,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fadvanced\u002Fuse-custom-fetch-composable","docs\u002F4.x\u002F4.examples\u002F4.advanced\u002Fuse-custom-fetch-composable",{"title":995,"path":1872,"stem":1873,"children":1874,"page":108},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fexperimental","docs\u002F4.x\u002F4.examples\u002F7.experimental",[1875],{"title":1000,"path":1876,"stem":1877,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fexamples\u002Fexperimental\u002Fwasm","docs\u002F4.x\u002F4.examples\u002F7.experimental\u002Fwasm",{"title":1004,"titleTemplate":1005,"icon":1006,"path":1879,"stem":1880,"children":1881,"page":108},"\u002Fdocs\u002F4.x\u002Fcommunity","docs\u002F4.x\u002F5.community",[1882,1885,1888,1891,1894,1897],{"title":1011,"path":1883,"stem":1884,"titleTemplate":6,"icon":1014},"\u002Fdocs\u002F4.x\u002Fcommunity\u002Fgetting-help","docs\u002F4.x\u002F5.community\u002F2.getting-help",{"title":1016,"path":1886,"stem":1887,"titleTemplate":6,"icon":1019},"\u002Fdocs\u002F4.x\u002Fcommunity\u002Freporting-bugs","docs\u002F4.x\u002F5.community\u002F3.reporting-bugs",{"title":1021,"path":1889,"stem":1890,"titleTemplate":6,"icon":1024},"\u002Fdocs\u002F4.x\u002Fcommunity\u002Fcontribution","docs\u002F4.x\u002F5.community\u002F4.contribution",{"title":1026,"path":1892,"stem":1893,"titleTemplate":6,"icon":1029},"\u002Fdocs\u002F4.x\u002Fcommunity\u002Fframework-contribution","docs\u002F4.x\u002F5.community\u002F5.framework-contribution",{"title":1031,"path":1895,"stem":1896,"titleTemplate":6,"icon":1034},"\u002Fdocs\u002F4.x\u002Fcommunity\u002Froadmap","docs\u002F4.x\u002F5.community\u002F6.roadmap",{"title":1036,"path":1898,"stem":1899,"titleTemplate":6,"icon":1039},"\u002Fdocs\u002F4.x\u002Fcommunity\u002Fchangelog","docs\u002F4.x\u002F5.community\u002F7.changelog",{"title":1041,"titleTemplate":1042,"icon":1043,"path":1901,"stem":1902,"children":1903,"page":108},"\u002Fdocs\u002F4.x\u002Fbridge","docs\u002F4.x\u002F6.bridge",[1904,1907,1910,1913,1916,1919,1922,1925,1928,1931],{"title":1048,"path":1905,"stem":1906,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Foverview","docs\u002F4.x\u002F6.bridge\u002F1.overview",{"title":29,"path":1908,"stem":1909,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fconfiguration","docs\u002F4.x\u002F6.bridge\u002F10.configuration",{"title":280,"path":1911,"stem":1912,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Ftypescript","docs\u002F4.x\u002F6.bridge\u002F2.typescript",{"title":1058,"path":1914,"stem":1915,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fbridge-composition-api","docs\u002F4.x\u002F6.bridge\u002F3.bridge-composition-api",{"title":1062,"path":1917,"stem":1918,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fplugins-and-middleware","docs\u002F4.x\u002F6.bridge\u002F4.plugins-and-middleware",{"title":1066,"path":1920,"stem":1921,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fnuxt3-compatible-api","docs\u002F4.x\u002F6.bridge\u002F5.nuxt3-compatible-api",{"title":936,"path":1923,"stem":1924,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fmeta","docs\u002F4.x\u002F6.bridge\u002F6.meta",{"title":403,"path":1926,"stem":1927,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fruntime-config","docs\u002F4.x\u002F6.bridge\u002F7.runtime-config",{"title":837,"path":1929,"stem":1930,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fnitro","docs\u002F4.x\u002F6.bridge\u002F8.nitro",{"title":1079,"path":1932,"stem":1933,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fbridge\u002Fvite","docs\u002F4.x\u002F6.bridge\u002F9.vite",{"title":1083,"titleTemplate":1084,"icon":107,"path":1935,"stem":1936,"children":1937,"page":108},"\u002Fdocs\u002F4.x\u002Fmigration","docs\u002F4.x\u002F7.migration",[1938,1941,1944,1947,1950,1953,1956,1959,1962,1965,1968],{"title":1048,"path":1939,"stem":1940,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Foverview","docs\u002F4.x\u002F7.migration\u002F1.overview",{"title":1092,"path":1942,"stem":1943,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fbundling","docs\u002F4.x\u002F7.migration\u002F10.bundling",{"title":79,"path":1945,"stem":1946,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fserver","docs\u002F4.x\u002F7.migration\u002F11.server",{"title":29,"path":1948,"stem":1949,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fconfiguration","docs\u002F4.x\u002F7.migration\u002F2.configuration",{"title":276,"path":1951,"stem":1952,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fmodule-authors","docs\u002F4.x\u002F7.migration\u002F20.module-authors",{"title":926,"path":1954,"stem":1955,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fauto-imports","docs\u002F4.x\u002F7.migration\u002F3.auto-imports",{"title":936,"path":1957,"stem":1958,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fmeta","docs\u002F4.x\u002F7.migration\u002F4.meta",{"title":1062,"path":1960,"stem":1961,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fplugins-and-middleware","docs\u002F4.x\u002F7.migration\u002F5.plugins-and-middleware",{"title":1114,"path":1963,"stem":1964,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fpages-and-layouts","docs\u002F4.x\u002F7.migration\u002F6.pages-and-layouts",{"title":1118,"path":1966,"stem":1967,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fcomponent-options","docs\u002F4.x\u002F7.migration\u002F7.component-options",{"title":403,"path":1969,"stem":1970,"titleTemplate":6},"\u002Fdocs\u002F4.x\u002Fmigration\u002Fruntime-config","docs\u002F4.x\u002F7.migration\u002F8.runtime-config",{"title":5,"titleTemplate":6,"icon":7,"path":1972,"stem":1973,"children":1974,"page":108},"\u002Fdocs\u002F5.x","docs\u002F5.x",[1975,2033,2123,2259,2635,2712,2734,2768],{"title":12,"titleTemplate":13,"icon":14,"path":1976,"stem":1977,"children":1978,"page":108},"\u002Fdocs\u002F5.x\u002Fgetting-started","docs\u002F5.x\u002F1.getting-started",[1979,1982,1985,1988,1991,1994,1997,2000,2003,2006,2009,2012,2015,2018,2021,2024,2027,2030],{"title":19,"path":1980,"stem":1981,"titleTemplate":6,"icon":22},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fintroduction","docs\u002F5.x\u002F1.getting-started\u002F01.introduction",{"title":24,"path":1983,"stem":1984,"titleTemplate":6,"icon":27},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Finstallation","docs\u002F5.x\u002F1.getting-started\u002F02.installation",{"title":29,"path":1986,"stem":1987,"titleTemplate":6,"icon":32},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fconfiguration","docs\u002F5.x\u002F1.getting-started\u002F03.configuration",{"title":34,"path":1989,"stem":1990,"titleTemplate":6,"icon":37},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fviews","docs\u002F5.x\u002F1.getting-started\u002F04.views",{"title":39,"path":1992,"stem":1993,"titleTemplate":6,"icon":42},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fassets","docs\u002F5.x\u002F1.getting-started\u002F05.assets",{"title":44,"path":1995,"stem":1996,"titleTemplate":6,"icon":47},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fstyling","docs\u002F5.x\u002F1.getting-started\u002F06.styling",{"title":49,"path":1998,"stem":1999,"titleTemplate":6,"icon":52},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Frouting","docs\u002F5.x\u002F1.getting-started\u002F07.routing",{"title":54,"path":2001,"stem":2002,"titleTemplate":6,"icon":57},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fseo-meta","docs\u002F5.x\u002F1.getting-started\u002F08.seo-meta",{"title":59,"path":2004,"stem":2005,"titleTemplate":6,"icon":62},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Ftransitions","docs\u002F5.x\u002F1.getting-started\u002F09.transitions",{"title":64,"path":2007,"stem":2008,"titleTemplate":6,"icon":67},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fdata-fetching","docs\u002F5.x\u002F1.getting-started\u002F10.data-fetching",{"title":69,"path":2010,"stem":2011,"titleTemplate":6,"icon":72},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fstate-management","docs\u002F5.x\u002F1.getting-started\u002F11.state-management",{"title":74,"path":2013,"stem":2014,"titleTemplate":6,"icon":77},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Ferror-handling","docs\u002F5.x\u002F1.getting-started\u002F12.error-handling",{"title":79,"path":2016,"stem":2017,"titleTemplate":6,"icon":82},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fserver","docs\u002F5.x\u002F1.getting-started\u002F13.server",{"title":84,"path":2019,"stem":2020,"titleTemplate":6,"icon":87},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Flayers","docs\u002F5.x\u002F1.getting-started\u002F14.layers",{"title":89,"path":2022,"stem":2023,"titleTemplate":6,"icon":92},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fprerendering","docs\u002F5.x\u002F1.getting-started\u002F15.prerendering",{"title":94,"path":2025,"stem":2026,"titleTemplate":6,"icon":97},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fdeployment","docs\u002F5.x\u002F1.getting-started\u002F16.deployment",{"title":99,"path":2028,"stem":2029,"titleTemplate":6,"icon":102},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Ftesting","docs\u002F5.x\u002F1.getting-started\u002F17.testing",{"title":104,"path":2031,"stem":2032,"titleTemplate":6,"icon":107},"\u002Fdocs\u002F5.x\u002Fgetting-started\u002Fupgrade","docs\u002F5.x\u002F1.getting-started\u002F18.upgrade",{"title":110,"titleTemplate":111,"icon":112,"path":2034,"stem":2035,"children":2036,"page":108},"\u002Fdocs\u002F5.x\u002Fdirectory-structure","docs\u002F5.x\u002F2.directory-structure",[2037,2040,2043,2081,2084,2087,2090,2093,2096,2099,2102,2105,2108,2111,2114,2117,2120],{"title":117,"path":2038,"stem":2039,"titleTemplate":6,"icon":120},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fnuxt","docs\u002F5.x\u002F2.directory-structure\u002F0.nuxt",{"title":122,"path":2041,"stem":2042,"titleTemplate":6,"icon":125},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Foutput","docs\u002F5.x\u002F2.directory-structure\u002F0.output",{"title":1197,"titleTemplate":111,"head":2044,"defaultOpen":1200,"icon":1201,"path":2045,"stem":2046,"children":2047,"page":108},{"title":1199},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp","docs\u002F5.x\u002F2.directory-structure\u002F1.app",[2048,2051,2054,2057,2060,2063,2066,2069,2072,2075,2078],{"title":127,"path":2049,"stem":2050,"titleTemplate":6,"icon":130},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fassets","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.assets",{"title":132,"path":2052,"stem":2053,"titleTemplate":6,"icon":135},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fcomponents","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.components",{"title":137,"path":2055,"stem":2056,"titleTemplate":6,"icon":140},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fcomposables","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.composables",{"title":152,"path":2058,"stem":2059,"titleTemplate":6,"icon":155},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Flayouts","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.layouts",{"title":157,"path":2061,"stem":2062,"titleTemplate":6,"icon":160},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fmiddleware","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.middleware",{"title":171,"path":2064,"stem":2065,"titleTemplate":6,"icon":155},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fpages","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.pages",{"title":175,"path":2067,"stem":2068,"titleTemplate":6,"icon":178},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fplugins","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.plugins",{"title":195,"path":2070,"stem":2071,"titleTemplate":6,"icon":198},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Futils","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F1.utils",{"title":219,"path":2073,"stem":2074,"titleTemplate":6,"icon":222},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fapp","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F3.app",{"title":224,"path":2076,"stem":2077,"titleTemplate":6,"icon":227},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Fapp-config","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F3.app-config",{"title":229,"path":2079,"stem":2080,"titleTemplate":6,"icon":222},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fapp\u002Ferror","docs\u002F5.x\u002F2.directory-structure\u002F1.app\u002F3.error",{"title":142,"path":2082,"stem":2083,"titleTemplate":6,"icon":145},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fcontent","docs\u002F5.x\u002F2.directory-structure\u002F1.content",{"title":147,"path":2085,"stem":2086,"titleTemplate":6,"icon":150},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Flayers","docs\u002F5.x\u002F2.directory-structure\u002F1.layers",{"title":162,"path":2088,"stem":2089,"titleTemplate":6,"icon":150},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fmodules","docs\u002F5.x\u002F2.directory-structure\u002F1.modules",{"title":166,"path":2091,"stem":2092,"titleTemplate":6,"icon":169},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fnode_modules","docs\u002F5.x\u002F2.directory-structure\u002F1.node_modules",{"title":180,"path":2094,"stem":2095,"titleTemplate":6,"icon":183},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fpublic","docs\u002F5.x\u002F2.directory-structure\u002F1.public",{"title":185,"path":2097,"stem":2098,"titleTemplate":6,"icon":188},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fserver","docs\u002F5.x\u002F2.directory-structure\u002F1.server",{"title":190,"path":2100,"stem":2101,"titleTemplate":6,"icon":193},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fshared","docs\u002F5.x\u002F2.directory-structure\u002F1.shared",{"title":200,"path":2103,"stem":2104,"titleTemplate":6,"icon":203},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fenv","docs\u002F5.x\u002F2.directory-structure\u002F2.env",{"title":205,"path":2106,"stem":2107,"titleTemplate":6,"icon":208},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fgitignore","docs\u002F5.x\u002F2.directory-structure\u002F2.gitignore",{"title":210,"path":2109,"stem":2110,"titleTemplate":6,"icon":213},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fnuxtignore","docs\u002F5.x\u002F2.directory-structure\u002F2.nuxtignore",{"title":215,"path":2112,"stem":2113,"titleTemplate":6,"icon":213},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fnuxtrc","docs\u002F5.x\u002F2.directory-structure\u002F2.nuxtrc",{"title":233,"path":2115,"stem":2116,"titleTemplate":6,"icon":213},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fnuxt-config","docs\u002F5.x\u002F2.directory-structure\u002F3.nuxt-config",{"title":237,"path":2118,"stem":2119,"titleTemplate":6,"icon":240},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Fpackage","docs\u002F5.x\u002F2.directory-structure\u002F3.package",{"title":242,"path":2121,"stem":2122,"titleTemplate":6,"icon":245},"\u002Fdocs\u002F5.x\u002Fdirectory-structure\u002Ftsconfig","docs\u002F5.x\u002F2.directory-structure\u002F3.tsconfig",{"title":247,"titleTemplate":6,"icon":248,"path":2124,"stem":2125,"children":2126,"page":108},"\u002Fdocs\u002F5.x\u002Fguide","docs\u002F5.x\u002F3.guide",[2127,2152,2168,2178,2206,2222],{"title":253,"titleTemplate":254,"icon":255,"path":2128,"stem":2129,"children":2130,"page":108},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts","docs\u002F5.x\u002F3.guide\u002F1.concepts",[2131,2134,2137,2140,2143,2146,2149],{"title":260,"path":2132,"stem":2133,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts\u002Frendering","docs\u002F5.x\u002F3.guide\u002F1.concepts\u002F1.rendering",{"title":264,"path":2135,"stem":2136,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts\u002Fnuxt-lifecycle","docs\u002F5.x\u002F3.guide\u002F1.concepts\u002F2.nuxt-lifecycle",{"title":268,"path":2138,"stem":2139,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts\u002Fauto-imports","docs\u002F5.x\u002F3.guide\u002F1.concepts\u002F3.auto-imports",{"title":272,"path":2141,"stem":2142,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts\u002Fserver-engine","docs\u002F5.x\u002F3.guide\u002F1.concepts\u002F4.server-engine",{"title":276,"path":2144,"stem":2145,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts\u002Fmodules","docs\u002F5.x\u002F3.guide\u002F1.concepts\u002F5.modules",{"title":280,"path":2147,"stem":2148,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts\u002Ftypescript","docs\u002F5.x\u002F3.guide\u002F1.concepts\u002F8.typescript",{"title":284,"path":2150,"stem":2151,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts\u002Fcode-style","docs\u002F5.x\u002F3.guide\u002F1.concepts\u002F9.code-style",{"title":288,"titleTemplate":289,"icon":290,"path":2153,"stem":2154,"children":2155,"page":108},"\u002Fdocs\u002F5.x\u002Fguide\u002Fbest-practices","docs\u002F5.x\u002F3.guide\u002F2.best-practices",[2156,2159,2162,2165],{"title":1314,"path":2157,"stem":2158,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fbest-practices\u002Fdevcontainers","docs\u002F5.x\u002F3.guide\u002F2.best-practices\u002Fdevcontainers",{"title":1318,"path":2160,"stem":2161,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fbest-practices\u002Fhydration","docs\u002F5.x\u002F3.guide\u002F2.best-practices\u002Fhydration",{"title":299,"path":2163,"stem":2164,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fbest-practices\u002Fperformance","docs\u002F5.x\u002F3.guide\u002F2.best-practices\u002Fperformance",{"title":303,"path":2166,"stem":2167,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fbest-practices\u002Fplugins","docs\u002F5.x\u002F3.guide\u002F2.best-practices\u002Fplugins",{"title":307,"titleTemplate":308,"icon":309,"path":2169,"stem":2170,"children":2171,"page":108},"\u002Fdocs\u002F5.x\u002Fguide\u002Fai","docs\u002F5.x\u002F3.guide\u002F3.ai",[2172,2175],{"title":314,"path":2173,"stem":2174,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fai\u002Fmcp","docs\u002F5.x\u002F3.guide\u002F3.ai\u002F1.mcp",{"title":318,"path":2176,"stem":2177,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fai\u002Fllms-txt","docs\u002F5.x\u002F3.guide\u002F3.ai\u002F2.llms-txt",{"title":322,"titleTemplate":323,"icon":324,"path":2179,"stem":2180,"children":2181,"page":108},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules","docs\u002F5.x\u002F3.guide\u002F4.modules",[2182,2185,2188,2191,2194,2197,2200,2203],{"title":329,"path":2183,"stem":2184,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Fgetting-started","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F1.getting-started",{"title":333,"path":2186,"stem":2187,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Fmodule-anatomy","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F2.module-anatomy",{"title":337,"path":2189,"stem":2190,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Frecipes-basics","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F3.recipes-basics",{"title":341,"path":2192,"stem":2193,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Fmodule-dependencies","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F4.module-dependencies",{"title":345,"path":2195,"stem":2196,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Frecipes-advanced","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F5.recipes-advanced",{"title":349,"path":2198,"stem":2199,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Ftesting","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F6.testing",{"title":353,"path":2201,"stem":2202,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Fbest-practices","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F7.best-practices",{"title":357,"path":2204,"stem":2205,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Fecosystem","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F8.ecosystem",{"title":361,"titleTemplate":362,"icon":363,"path":2207,"stem":2208,"children":2209,"page":108},"\u002Fdocs\u002F5.x\u002Fguide\u002Frecipes","docs\u002F5.x\u002F3.guide\u002F5.recipes",[2210,2213,2216,2219],{"title":368,"path":2211,"stem":2212,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Frecipes\u002Fcustom-routing","docs\u002F5.x\u002F3.guide\u002F5.recipes\u002F1.custom-routing",{"title":372,"path":2214,"stem":2215,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Frecipes\u002Fvite-plugin","docs\u002F5.x\u002F3.guide\u002F5.recipes\u002F2.vite-plugin",{"title":376,"path":2217,"stem":2218,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Frecipes\u002Fcustom-usefetch","docs\u002F5.x\u002F3.guide\u002F5.recipes\u002F3.custom-usefetch",{"title":380,"path":2220,"stem":2221,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Frecipes\u002Fsessions-and-authentication","docs\u002F5.x\u002F3.guide\u002F5.recipes\u002F4.sessions-and-authentication",{"title":384,"titleTemplate":385,"icon":386,"path":2223,"stem":2224,"children":2225,"page":108},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further","docs\u002F5.x\u002F3.guide\u002F6.going-further",[2226,2229,2232,2235,2238,2241,2244,2247,2250,2253,2256],{"title":391,"path":2227,"stem":2228,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fevents","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F1.events",{"title":395,"path":2230,"stem":2231,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fexperimental-features","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F1.experimental-features",{"title":399,"path":2233,"stem":2234,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Ffeatures","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F1.features",{"title":403,"path":2236,"stem":2237,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fruntime-config","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F10.runtime-config",{"title":407,"path":2239,"stem":2240,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fnightly-release-channel","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F11.nightly-release-channel",{"title":411,"path":2242,"stem":2243,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fhooks","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F2.hooks",{"title":415,"path":2245,"stem":2246,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fkit","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F4.kit",{"title":419,"path":2248,"stem":2249,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fnuxt-app","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F6.nuxt-app",{"title":423,"path":2251,"stem":2252,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Flayers","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F7.layers",{"title":1413,"path":2254,"stem":2255,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fbuilders","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F8.builders",{"title":427,"path":2257,"stem":2258,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fdebugging","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F9.debugging",{"title":431,"titleTemplate":432,"icon":433,"path":2260,"stem":2261,"children":2262,"page":108},"\u002Fdocs\u002F5.x\u002Fapi","docs\u002F5.x\u002F4.api",[2263,2315,2418,2509,2561,2622,2632],{"title":438,"titleTemplate":439,"icon":324,"path":2264,"stem":2265,"children":2266,"page":108},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents","docs\u002F5.x\u002F4.api\u002F1.components",[2267,2270,2273,2276,2279,2282,2285,2288,2291,2294,2297,2300,2303,2306,2309,2312],{"title":444,"path":2268,"stem":2269,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fclient-only","docs\u002F5.x\u002F4.api\u002F1.components\u002F1.client-only",{"title":448,"path":2271,"stem":2272,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fdev-only","docs\u002F5.x\u002F4.api\u002F1.components\u002F1.dev-only",{"title":452,"path":2274,"stem":2275,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-client-fallback","docs\u002F5.x\u002F4.api\u002F1.components\u002F1.nuxt-client-fallback",{"title":456,"path":2277,"stem":2278,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-picture","docs\u002F5.x\u002F4.api\u002F1.components\u002F10.nuxt-picture",{"title":460,"path":2280,"stem":2281,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fteleports","docs\u002F5.x\u002F4.api\u002F1.components\u002F11.teleports",{"title":464,"path":2283,"stem":2284,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-route-announcer","docs\u002F5.x\u002F4.api\u002F1.components\u002F12.nuxt-route-announcer",{"title":468,"path":2286,"stem":2287,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-time","docs\u002F5.x\u002F4.api\u002F1.components\u002F13.nuxt-time",{"title":1449,"path":2289,"stem":2290,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-announcer","docs\u002F5.x\u002F4.api\u002F1.components\u002F14.nuxt-announcer",{"title":472,"path":2292,"stem":2293,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-page","docs\u002F5.x\u002F4.api\u002F1.components\u002F2.nuxt-page",{"title":476,"path":2295,"stem":2296,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-layout","docs\u002F5.x\u002F4.api\u002F1.components\u002F3.nuxt-layout",{"title":480,"path":2298,"stem":2299,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-link","docs\u002F5.x\u002F4.api\u002F1.components\u002F4.nuxt-link",{"title":484,"path":2301,"stem":2302,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-loading-indicator","docs\u002F5.x\u002F4.api\u002F1.components\u002F5.nuxt-loading-indicator",{"title":488,"path":2304,"stem":2305,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-error-boundary","docs\u002F5.x\u002F4.api\u002F1.components\u002F6.nuxt-error-boundary",{"title":492,"path":2307,"stem":2308,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-welcome","docs\u002F5.x\u002F4.api\u002F1.components\u002F7.nuxt-welcome",{"title":496,"path":2310,"stem":2311,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-island","docs\u002F5.x\u002F4.api\u002F1.components\u002F8.nuxt-island",{"title":500,"path":2313,"stem":2314,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-img","docs\u002F5.x\u002F4.api\u002F1.components\u002F9.nuxt-img",{"title":504,"titleTemplate":505,"icon":506,"path":2316,"stem":2317,"children":2318,"page":108},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables","docs\u002F5.x\u002F4.api\u002F2.composables",[2319,2322,2325,2328,2331,2334,2337,2340,2343,2346,2349,2352,2355,2358,2361,2364,2367,2370,2373,2376,2379,2382,2385,2388,2391,2394,2397,2400,2403,2406,2409,2412,2415],{"title":1481,"path":2320,"stem":2321,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fcreate-use-async-data","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fcreate-use-async-data",{"title":1485,"path":2323,"stem":2324,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fcreate-use-fetch","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fcreate-use-fetch",{"title":511,"path":2326,"stem":2327,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fon-prehydrate","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fon-prehydrate",{"title":1492,"path":2329,"stem":2330,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-announcer","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-announcer",{"title":515,"path":2332,"stem":2333,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-app-config","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-app-config",{"title":519,"path":2335,"stem":2336,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-async-data","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-async-data",{"title":523,"path":2338,"stem":2339,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-cookie","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-cookie",{"title":527,"path":2341,"stem":2342,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-error","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-error",{"title":531,"path":2344,"stem":2345,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-fetch","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-fetch",{"title":535,"path":2347,"stem":2348,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-head","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-head",{"title":539,"path":2350,"stem":2351,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-head-safe","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-head-safe",{"title":543,"path":2353,"stem":2354,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-hydration","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-hydration",{"title":1520,"path":2356,"stem":2357,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-layout","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-layout",{"title":547,"path":2359,"stem":2360,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-lazy-async-data","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-lazy-async-data",{"title":551,"path":2362,"stem":2363,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-lazy-fetch","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-lazy-fetch",{"title":555,"path":2365,"stem":2366,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-loading-indicator","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-loading-indicator",{"title":559,"path":2368,"stem":2369,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-nuxt-app","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-nuxt-app",{"title":563,"path":2371,"stem":2372,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-nuxt-data","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-nuxt-data",{"title":567,"path":2374,"stem":2375,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-preview-mode","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-preview-mode",{"title":571,"path":2377,"stem":2378,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-request-event","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-request-event",{"title":575,"path":2380,"stem":2381,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-request-fetch","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-request-fetch",{"title":579,"path":2383,"stem":2384,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-request-header","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-request-header",{"title":583,"path":2386,"stem":2387,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-request-headers","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-request-headers",{"title":587,"path":2389,"stem":2390,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-request-url","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-request-url",{"title":591,"path":2392,"stem":2393,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-response-header","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-response-header",{"title":595,"path":2395,"stem":2396,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-route","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-route",{"title":599,"path":2398,"stem":2399,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-route-announcer","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-route-announcer",{"title":603,"path":2401,"stem":2402,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-router","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-router",{"title":607,"path":2404,"stem":2405,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-runtime-config","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-runtime-config",{"title":611,"path":2407,"stem":2408,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-runtime-hook","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-runtime-hook",{"title":615,"path":2410,"stem":2411,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-seo-meta","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-seo-meta",{"title":619,"path":2413,"stem":2414,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-server-seo-meta","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-server-seo-meta",{"title":623,"path":2416,"stem":2417,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-state","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-state",{"title":627,"titleTemplate":628,"icon":629,"path":2419,"stem":2420,"children":2421,"page":108},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils","docs\u002F5.x\u002F4.api\u002F3.utils",[2422,2425,2428,2431,2434,2437,2440,2443,2446,2449,2452,2455,2458,2461,2464,2467,2470,2473,2476,2479,2482,2485,2488,2491,2494,2497,2500,2503,2506],{"title":634,"path":2423,"stem":2424,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fdollarfetch","docs\u002F5.x\u002F4.api\u002F3.utils\u002F$fetch",{"title":638,"path":2426,"stem":2427,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fabort-navigation","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fabort-navigation",{"title":642,"path":2429,"stem":2430,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fadd-route-middleware","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fadd-route-middleware",{"title":646,"path":2432,"stem":2433,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fcall-once","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fcall-once",{"title":650,"path":2435,"stem":2436,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fclear-error","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fclear-error",{"title":654,"path":2438,"stem":2439,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fclear-nuxt-data","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fclear-nuxt-data",{"title":658,"path":2441,"stem":2442,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fclear-nuxt-state","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fclear-nuxt-state",{"title":662,"path":2444,"stem":2445,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fcreate-error","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fcreate-error",{"title":666,"path":2447,"stem":2448,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fdefine-lazy-hydration-component","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fdefine-lazy-hydration-component",{"title":670,"path":2450,"stem":2451,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fdefine-nuxt-component","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fdefine-nuxt-component",{"title":674,"path":2453,"stem":2454,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fdefine-nuxt-plugin","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fdefine-nuxt-plugin",{"title":678,"path":2456,"stem":2457,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fdefine-nuxt-route-middleware","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fdefine-nuxt-route-middleware",{"title":682,"path":2459,"stem":2460,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fdefine-page-meta","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fdefine-page-meta",{"title":686,"path":2462,"stem":2463,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fdefine-route-rules","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fdefine-route-rules",{"title":690,"path":2465,"stem":2466,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fnavigate-to","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fnavigate-to",{"title":694,"path":2468,"stem":2469,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fon-before-route-leave","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fon-before-route-leave",{"title":698,"path":2471,"stem":2472,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fon-before-route-update","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fon-before-route-update",{"title":702,"path":2474,"stem":2475,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fon-nuxt-ready","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fon-nuxt-ready",{"title":706,"path":2477,"stem":2478,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fprefetch-components","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fprefetch-components",{"title":710,"path":2480,"stem":2481,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fpreload-components","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fpreload-components",{"title":714,"path":2483,"stem":2484,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fpreload-route-components","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fpreload-route-components",{"title":718,"path":2486,"stem":2487,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fprerender-routes","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fprerender-routes",{"title":722,"path":2489,"stem":2490,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Frefresh-cookie","docs\u002F5.x\u002F4.api\u002F3.utils\u002Frefresh-cookie",{"title":726,"path":2492,"stem":2493,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Frefresh-nuxt-data","docs\u002F5.x\u002F4.api\u002F3.utils\u002Frefresh-nuxt-data",{"title":730,"path":2495,"stem":2496,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Freload-nuxt-app","docs\u002F5.x\u002F4.api\u002F3.utils\u002Freload-nuxt-app",{"title":734,"path":2498,"stem":2499,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fset-page-layout","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fset-page-layout",{"title":738,"path":2501,"stem":2502,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fset-response-status","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fset-response-status",{"title":742,"path":2504,"stem":2505,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fshow-error","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fshow-error",{"title":746,"path":2507,"stem":2508,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fupdate-app-config","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fupdate-app-config",{"title":750,"titleTemplate":751,"icon":752,"path":2510,"stem":2511,"children":2512,"page":108},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands","docs\u002F5.x\u002F4.api\u002F4.commands",[2513,2516,2519,2522,2525,2528,2531,2534,2537,2540,2543,2546,2549,2552,2555,2558],{"title":757,"path":2514,"stem":2515,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fadd","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fadd",{"title":761,"path":2517,"stem":2518,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fanalyze","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fanalyze",{"title":765,"path":2520,"stem":2521,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fbuild","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fbuild",{"title":769,"path":2523,"stem":2524,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fbuild-module","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fbuild-module",{"title":773,"path":2526,"stem":2527,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fcleanup","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fcleanup",{"title":777,"path":2529,"stem":2530,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fdev","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fdev",{"title":781,"path":2532,"stem":2533,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fdevtools","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fdevtools",{"title":785,"path":2535,"stem":2536,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fgenerate","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fgenerate",{"title":789,"path":2538,"stem":2539,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Finfo","docs\u002F5.x\u002F4.api\u002F4.commands\u002Finfo",{"title":793,"path":2541,"stem":2542,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Finit","docs\u002F5.x\u002F4.api\u002F4.commands\u002Finit",{"title":797,"path":2544,"stem":2545,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fmodule","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fmodule",{"title":801,"path":2547,"stem":2548,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fprepare","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fprepare",{"title":805,"path":2550,"stem":2551,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fpreview","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fpreview",{"title":809,"path":2553,"stem":2554,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Ftest","docs\u002F5.x\u002F4.api\u002F4.commands\u002Ftest",{"title":813,"path":2556,"stem":2557,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Ftypecheck","docs\u002F5.x\u002F4.api\u002F4.commands\u002Ftypecheck",{"title":817,"path":2559,"stem":2560,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fupgrade","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fupgrade",{"title":415,"titleTemplate":821,"icon":822,"path":2562,"stem":2563,"children":2564,"page":108},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit","docs\u002F5.x\u002F4.api\u002F5.kit",[2565,2568,2571,2574,2577,2580,2583,2586,2589,2592,2595,2598,2601,2604,2607,2610,2613,2616,2619],{"title":276,"path":2566,"stem":2567,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fmodules","docs\u002F5.x\u002F4.api\u002F5.kit\u002F1.modules",{"title":403,"path":2569,"stem":2570,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fruntime-config","docs\u002F5.x\u002F4.api\u002F5.kit\u002F10.runtime-config",{"title":833,"path":2572,"stem":2573,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Ftemplates","docs\u002F5.x\u002F4.api\u002F5.kit\u002F10.templates",{"title":1740,"path":2575,"stem":2576,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fapp-config","docs\u002F5.x\u002F4.api\u002F5.kit\u002F11.app-config",{"title":837,"path":2578,"stem":2579,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fnitro","docs\u002F5.x\u002F4.api\u002F5.kit\u002F12.nitro",{"title":841,"path":2581,"stem":2582,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fresolving","docs\u002F5.x\u002F4.api\u002F5.kit\u002F13.resolving",{"title":845,"path":2584,"stem":2585,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Flogging","docs\u002F5.x\u002F4.api\u002F5.kit\u002F14.logging",{"title":849,"path":2587,"stem":2588,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fbuilder","docs\u002F5.x\u002F4.api\u002F5.kit\u002F15.builder",{"title":853,"path":2590,"stem":2591,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fexamples","docs\u002F5.x\u002F4.api\u002F5.kit\u002F16.examples",{"title":84,"path":2593,"stem":2594,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Flayers","docs\u002F5.x\u002F4.api\u002F5.kit\u002F17.layers",{"title":860,"path":2596,"stem":2597,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fprogrammatic","docs\u002F5.x\u002F4.api\u002F5.kit\u002F2.programmatic",{"title":864,"path":2599,"stem":2600,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fcompatibility","docs\u002F5.x\u002F4.api\u002F5.kit\u002F3.compatibility",{"title":268,"path":2602,"stem":2603,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fautoimports","docs\u002F5.x\u002F4.api\u002F5.kit\u002F4.autoimports",{"title":438,"path":2605,"stem":2606,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fcomponents","docs\u002F5.x\u002F4.api\u002F5.kit\u002F5.components",{"title":874,"path":2608,"stem":2609,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fcontext","docs\u002F5.x\u002F4.api\u002F5.kit\u002F6.context",{"title":878,"path":2611,"stem":2612,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fpages","docs\u002F5.x\u002F4.api\u002F5.kit\u002F7.pages",{"title":882,"path":2614,"stem":2615,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Flayout","docs\u002F5.x\u002F4.api\u002F5.kit\u002F8.layout",{"title":886,"path":2617,"stem":2618,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fhead","docs\u002F5.x\u002F4.api\u002F5.kit\u002F9.head",{"title":890,"path":2620,"stem":2621,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fplugins","docs\u002F5.x\u002F4.api\u002F5.kit\u002F9.plugins",{"title":894,"titleTemplate":6,"icon":895,"path":2623,"stem":2624,"children":2625,"page":108},"\u002Fdocs\u002F5.x\u002Fapi\u002Fadvanced","docs\u002F5.x\u002F4.api\u002F6.advanced",[2626,2629],{"title":411,"path":2627,"stem":2628,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fadvanced\u002Fhooks","docs\u002F5.x\u002F4.api\u002F6.advanced\u002F1.hooks",{"title":903,"path":2630,"stem":2631,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fadvanced\u002Fimport-meta","docs\u002F5.x\u002F4.api\u002F6.advanced\u002F2.import-meta",{"title":907,"path":2633,"stem":2634,"titleTemplate":910,"icon":32},"\u002Fdocs\u002F5.x\u002Fapi\u002Fnuxt-config","docs\u002F5.x\u002F4.api\u002F6.nuxt-config",{"title":853,"titleTemplate":912,"icon":913,"path":2636,"stem":2637,"children":2638,"page":108},"\u002Fdocs\u002F5.x\u002Fexamples","docs\u002F5.x\u002F4.examples",[2639,2642,2661,2674,2705],{"title":918,"path":2640,"stem":2641,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fhello-world","docs\u002F5.x\u002F4.examples\u002F0.hello-world",{"title":399,"path":2643,"stem":2644,"children":2645,"page":108},"\u002Fdocs\u002F5.x\u002Fexamples\u002Ffeatures","docs\u002F5.x\u002F4.examples\u002F1.features",[2646,2649,2652,2655,2658],{"title":926,"path":2647,"stem":2648,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Ffeatures\u002Fauto-imports","docs\u002F5.x\u002F4.examples\u002F1.features\u002F1.auto-imports",{"title":64,"path":2650,"stem":2651,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Ffeatures\u002Fdata-fetching","docs\u002F5.x\u002F4.examples\u002F1.features\u002F2.data-fetching",{"title":69,"path":2653,"stem":2654,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Ffeatures\u002Fstate-management","docs\u002F5.x\u002F4.examples\u002F1.features\u002F3.state-management",{"title":936,"path":2656,"stem":2657,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Ffeatures\u002Fmeta-tags","docs\u002F5.x\u002F4.examples\u002F1.features\u002F4.meta-tags",{"title":940,"path":2659,"stem":2660,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Ffeatures\u002Flayouts","docs\u002F5.x\u002F4.examples\u002F1.features\u002F5.layouts",{"title":49,"path":2662,"stem":2663,"children":2664,"page":108},"\u002Fdocs\u002F5.x\u002Fexamples\u002Frouting","docs\u002F5.x\u002F4.examples\u002F2.routing",[2665,2668,2671],{"title":948,"path":2666,"stem":2667,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Frouting\u002Fmiddleware","docs\u002F5.x\u002F4.examples\u002F2.routing\u002Fmiddleware",{"title":878,"path":2669,"stem":2670,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Frouting\u002Fpages","docs\u002F5.x\u002F4.examples\u002F2.routing\u002Fpages",{"title":955,"path":2672,"stem":2673,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Frouting\u002Funiversal-router","docs\u002F5.x\u002F4.examples\u002F2.routing\u002Funiversal-router",{"title":894,"path":2675,"stem":2676,"children":2677,"page":108},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced","docs\u002F5.x\u002F4.examples\u002F4.advanced",[2678,2681,2684,2687,2690,2693,2696,2699,2702],{"title":84,"path":2679,"stem":2680,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Fconfig-extends","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Fconfig-extends",{"title":74,"path":2682,"stem":2683,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Ferror-handling","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Ferror-handling",{"title":969,"path":2685,"stem":2686,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Fjsx","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Fjsx",{"title":973,"path":2688,"stem":2689,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Flocale","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Flocale",{"title":977,"path":2691,"stem":2692,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Fmodule-extend-pages","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Fmodule-extend-pages",{"title":981,"path":2694,"stem":2695,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Fteleport","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Fteleport",{"title":99,"path":2697,"stem":2698,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Ftesting","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Ftesting",{"title":523,"path":2700,"stem":2701,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Fuse-cookie","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Fuse-cookie",{"title":991,"path":2703,"stem":2704,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Fuse-custom-fetch-composable","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Fuse-custom-fetch-composable",{"title":995,"path":2706,"stem":2707,"children":2708,"page":108},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fexperimental","docs\u002F5.x\u002F4.examples\u002F7.experimental",[2709],{"title":1000,"path":2710,"stem":2711,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fexperimental\u002Fwasm","docs\u002F5.x\u002F4.examples\u002F7.experimental\u002Fwasm",{"title":1004,"titleTemplate":1005,"icon":1006,"path":2713,"stem":2714,"children":2715,"page":108},"\u002Fdocs\u002F5.x\u002Fcommunity","docs\u002F5.x\u002F5.community",[2716,2719,2722,2725,2728,2731],{"title":1011,"path":2717,"stem":2718,"titleTemplate":6,"icon":1014},"\u002Fdocs\u002F5.x\u002Fcommunity\u002Fgetting-help","docs\u002F5.x\u002F5.community\u002F2.getting-help",{"title":1016,"path":2720,"stem":2721,"titleTemplate":6,"icon":1019},"\u002Fdocs\u002F5.x\u002Fcommunity\u002Freporting-bugs","docs\u002F5.x\u002F5.community\u002F3.reporting-bugs",{"title":1021,"path":2723,"stem":2724,"titleTemplate":6,"icon":1024},"\u002Fdocs\u002F5.x\u002Fcommunity\u002Fcontribution","docs\u002F5.x\u002F5.community\u002F4.contribution",{"title":1026,"path":2726,"stem":2727,"titleTemplate":6,"icon":1029},"\u002Fdocs\u002F5.x\u002Fcommunity\u002Fframework-contribution","docs\u002F5.x\u002F5.community\u002F5.framework-contribution",{"title":1031,"path":2729,"stem":2730,"titleTemplate":6,"icon":1034},"\u002Fdocs\u002F5.x\u002Fcommunity\u002Froadmap","docs\u002F5.x\u002F5.community\u002F6.roadmap",{"title":1036,"path":2732,"stem":2733,"titleTemplate":6,"icon":1039},"\u002Fdocs\u002F5.x\u002Fcommunity\u002Fchangelog","docs\u002F5.x\u002F5.community\u002F7.changelog",{"title":1041,"titleTemplate":1042,"icon":1043,"path":2735,"stem":2736,"children":2737,"page":108},"\u002Fdocs\u002F5.x\u002Fbridge","docs\u002F5.x\u002F6.bridge",[2738,2741,2744,2747,2750,2753,2756,2759,2762,2765],{"title":1048,"path":2739,"stem":2740,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Foverview","docs\u002F5.x\u002F6.bridge\u002F1.overview",{"title":29,"path":2742,"stem":2743,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fconfiguration","docs\u002F5.x\u002F6.bridge\u002F10.configuration",{"title":280,"path":2745,"stem":2746,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Ftypescript","docs\u002F5.x\u002F6.bridge\u002F2.typescript",{"title":1058,"path":2748,"stem":2749,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fbridge-composition-api","docs\u002F5.x\u002F6.bridge\u002F3.bridge-composition-api",{"title":1062,"path":2751,"stem":2752,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fplugins-and-middleware","docs\u002F5.x\u002F6.bridge\u002F4.plugins-and-middleware",{"title":1066,"path":2754,"stem":2755,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fnuxt3-compatible-api","docs\u002F5.x\u002F6.bridge\u002F5.nuxt3-compatible-api",{"title":936,"path":2757,"stem":2758,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fmeta","docs\u002F5.x\u002F6.bridge\u002F6.meta",{"title":403,"path":2760,"stem":2761,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fruntime-config","docs\u002F5.x\u002F6.bridge\u002F7.runtime-config",{"title":837,"path":2763,"stem":2764,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fnitro","docs\u002F5.x\u002F6.bridge\u002F8.nitro",{"title":1079,"path":2766,"stem":2767,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fvite","docs\u002F5.x\u002F6.bridge\u002F9.vite",{"title":1083,"titleTemplate":1084,"icon":107,"path":2769,"stem":2770,"children":2771,"page":108},"\u002Fdocs\u002F5.x\u002Fmigration","docs\u002F5.x\u002F7.migration",[2772,2775,2778,2781,2784,2787,2790,2793,2796,2799,2802],{"title":1048,"path":2773,"stem":2774,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Foverview","docs\u002F5.x\u002F7.migration\u002F1.overview",{"title":1092,"path":2776,"stem":2777,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fbundling","docs\u002F5.x\u002F7.migration\u002F10.bundling",{"title":79,"path":2779,"stem":2780,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fserver","docs\u002F5.x\u002F7.migration\u002F11.server",{"title":29,"path":2782,"stem":2783,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fconfiguration","docs\u002F5.x\u002F7.migration\u002F2.configuration",{"title":276,"path":2785,"stem":2786,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fmodule-authors","docs\u002F5.x\u002F7.migration\u002F20.module-authors",{"title":926,"path":2788,"stem":2789,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fauto-imports","docs\u002F5.x\u002F7.migration\u002F3.auto-imports",{"title":936,"path":2791,"stem":2792,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fmeta","docs\u002F5.x\u002F7.migration\u002F4.meta",{"title":1062,"path":2794,"stem":2795,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fplugins-and-middleware","docs\u002F5.x\u002F7.migration\u002F5.plugins-and-middleware",{"title":1114,"path":2797,"stem":2798,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fpages-and-layouts","docs\u002F5.x\u002F7.migration\u002F6.pages-and-layouts",{"title":1118,"path":2800,"stem":2801,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fcomponent-options","docs\u002F5.x\u002F7.migration\u002F7.component-options",{"title":403,"path":2803,"stem":2804,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fruntime-config","docs\u002F5.x\u002F7.migration\u002F8.runtime-config",{"title":2806,"icon":2807,"path":2808,"stem":2809,"children":2810,"page":108},"Blog","i-lucide-newspaper","\u002Fblog","blog",[2811,2815,2819,2823,2827,2831,2835,2839,2843,2847,2851,2855,2859,2863,2867,2871,2875,2879,2883,2887,2891,2895,2899,2903,2907,2911,2915,2919,2923,2927,2931,2935,2939,2943,2947,2951,2955,2959,2963,2967,2971,2975,2979,2983,2987,2991,2995,2999,3003],{"title":2812,"path":2813,"stem":2814},"Announcing 3.0","\u002Fblog\u002Fv3","blog\u002F1.v3",{"title":2816,"path":2817,"stem":2818},"Nuxt 3.3","\u002Fblog\u002Fv3-3","blog\u002F10.v3-3",{"title":2820,"path":2821,"stem":2822},"Nuxt 3.4","\u002Fblog\u002Fv3-4","blog\u002F11.v3-4",{"title":2824,"path":2825,"stem":2826},"Nuxt 3.5","\u002Fblog\u002Fv3-5","blog\u002F12.v3-5",{"title":2828,"path":2829,"stem":2830},"Nuxt 3.6","\u002Fblog\u002Fv3-6","blog\u002F13.v3-6",{"title":2832,"path":2833,"stem":2834},"Nuxt on the Edge","\u002Fblog\u002Fnuxt-on-the-edge","blog\u002F14.nuxt-on-the-edge",{"title":2836,"path":2837,"stem":2838},"Nuxt 3.7","\u002Fblog\u002Fv3-7","blog\u002F15.v3-7",{"title":2840,"path":2841,"stem":2842},"A New Website","\u002Fblog\u002Fnew-website","blog\u002F16.new-website",{"title":2844,"path":2845,"stem":2846},"Nuxt 3.8","\u002Fblog\u002Fv3-8","blog\u002F17.v3-8",{"title":2848,"path":2849,"stem":2850},"Nuxt DevTools v1.0","\u002Fblog\u002Fnuxt-devtools-v1-0","blog\u002F18.nuxt-devtools-v1-0",{"title":2852,"path":2853,"stem":2854},"Nuxt 3.9","\u002Fblog\u002Fv3-9","blog\u002F19.v3-9",{"title":2856,"path":2857,"stem":2858},"Nuxt: A vision for 2023","\u002Fblog\u002Fvision-2023","blog\u002F2.vision-2023",{"title":2860,"path":2861,"stem":2862},"Nuxt 3.10","\u002Fblog\u002Fv3-10","blog\u002F20.v3-10",{"title":2864,"path":2865,"stem":2866},"The Evolution of Shiki v1.0","\u002Fblog\u002Fshiki-v1","blog\u002F21.shiki-v1",{"title":2868,"path":2869,"stem":2870},"Nuxt 3.11","\u002Fblog\u002Fv3-11","blog\u002F22.v3-11",{"title":2872,"path":2873,"stem":2874},"Nuxt: Looking forward","\u002Fblog\u002Flooking-forward-2024","blog\u002F23.looking-forward-2024",{"title":2876,"path":2877,"stem":2878},"Refreshed Nuxt ESLint Integrations","\u002Fblog\u002Feslint-module","blog\u002F24.eslint-module",{"title":2880,"path":2881,"stem":2882},"Nuxt 3.12","\u002Fblog\u002Fv3-12","blog\u002F25.v3-12",{"title":2884,"path":2885,"stem":2886},"Introducing Nuxt Scripts","\u002Fblog\u002Fnuxt-scripts","blog\u002F26.nuxt-scripts",{"title":2888,"path":2889,"stem":2890},"Nuxt 3.13","\u002Fblog\u002Fv3-13","blog\u002F27.v3-13",{"title":2892,"path":2893,"stem":2894},"Nuxt 3.14","\u002Fblog\u002Fv3-14","blog\u002F27.v3-14",{"title":2896,"path":2897,"stem":2898},"Introducing Nuxt Icon v1","\u002Fblog\u002Fnuxt-icon-v1-0","blog\u002F29.nuxt-icon-v1-0",{"title":2900,"path":2901,"stem":2902},"Introducing Nuxt DevTools","\u002Fblog\u002Fintroducing-nuxt-devtools","blog\u002F3.introducing-nuxt-devtools",{"title":2904,"path":2905,"stem":2906},"Announcing Nuxt 3 Release Candidate","\u002Fblog\u002Fnuxt3-rc","blog\u002F3.nuxt3-rc",{"title":2908,"path":2909,"stem":2910},"Nuxt 3.15","\u002Fblog\u002Fv3-15","blog\u002F30.v3-15",{"title":2912,"path":2913,"stem":2914},"Nuxt 3.16","\u002Fblog\u002Fv3-16","blog\u002F31.v3-16",{"title":2916,"path":2917,"stem":2918},"Nuxt UI v3","\u002Fblog\u002Fnuxt-ui-v3","blog\u002F32.nuxt-ui-v3",{"title":2920,"path":2921,"stem":2922},"Nuxt 3.17","\u002Fblog\u002Fv3-17","blog\u002F33.v3-17",{"title":2924,"path":2925,"stem":2926},"Roadmap to v4","\u002Fblog\u002Froadmap-v4","blog\u002F34.roadmap-v4",{"title":2928,"path":2929,"stem":2930},"Building a Privacy-First Feedback Widget","\u002Fblog\u002Fbuilding-a-feedback-widget","blog\u002F35.building-a-feedback-widget",{"title":2932,"path":2933,"stem":2934},"Announcing Nuxt 4.0","\u002Fblog\u002Fv4","blog\u002F36.v4",{"title":2936,"path":2937,"stem":2938},"Nuxt 3.18","\u002Fblog\u002Fv3-18","blog\u002F37.v3-18",{"title":2940,"path":2941,"stem":2942},"Nuxt 4.1","\u002Fblog\u002Fv4-1","blog\u002F38.v4-1",{"title":2944,"path":2945,"stem":2946},"Nuxt UI v4","\u002Fblog\u002Fnuxt-ui-v4","blog\u002F39.nuxt-ui-v4",{"title":2948,"path":2949,"stem":2950},"Nuxt 2 End-of-Life (EOL)","\u002Fblog\u002Fnuxt2-eol","blog\u002F4.nuxt2-eol",{"title":2952,"path":2953,"stem":2954},"Introducing Nuxt 3 Beta","\u002Fblog\u002Fnuxt3-beta","blog\u002F4.nuxt3-beta",{"title":2956,"path":2957,"stem":2958},"Building an MCP Server for Nuxt","\u002Fblog\u002Fbuilding-nuxt-mcp","blog\u002F40.building-nuxt-mcp",{"title":2960,"path":2961,"stem":2962},"Nuxt 4.2","\u002Fblog\u002Fv4-2","blog\u002F40.v4-2",{"title":2964,"path":2965,"stem":2966},"Nuxt Image v2","\u002Fblog\u002Fnuxt-image-v2","blog\u002F41.nuxt-image-v2",{"title":2968,"path":2969,"stem":2970},"Nuxt 4.3","\u002Fblog\u002Fv4-3","blog\u002F42.v4-3",{"title":2972,"path":2973,"stem":2974},"Nuxt 4.4","\u002Fblog\u002Fv4-4","blog\u002F43.v4-4",{"title":2976,"path":2977,"stem":2978},"Introducing the Nuxt Agent","\u002Fblog\u002Fintroducing-nuxt-agent","blog\u002F44.introducing-nuxt-agent",{"title":2980,"path":2981,"stem":2982},"Meet Nuxi","\u002Fblog\u002Fmeet-nuxi","blog\u002F45.meet-nuxi",{"title":2984,"path":2985,"stem":2986},"Nuxt 4.5","\u002Fblog\u002Fv4-5","blog\u002F46.v4-5",{"title":2988,"path":2989,"stem":2990},"Going Full Static","\u002Fblog\u002Fgoing-full-static","blog\u002F5.going-full-static",{"title":2992,"path":2993,"stem":2994},"Introducing Smart Prefetching","\u002Fblog\u002Fintroducing-smart-prefetching","blog\u002F6.introducing-smart-prefetching",{"title":2996,"path":2997,"stem":2998},"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":3000,"path":3001,"stem":3002},"Nuxt 2 Static Improvements","\u002Fblog\u002Fnuxt-static-improvements","blog\u002F8.nuxt-static-improvements",{"title":3004,"path":3005,"stem":3006},"Nuxt 2: From Terminal to Browser","\u002Fblog\u002Fnuxtjs-from-terminal-to-browser","blog\u002F9.nuxtjs-from-terminal-to-browser",{"v5":3008,"v4":3009,"v3":3010,"v2":3011},"5 (nightly)","4.5.0","3.21.9","2.18.1",{"name":3013,"description":3014,"repo":3015,"npm":3016,"icon":3017,"github":3018,"website":3018,"learn_more":3019,"category":3020,"type":3021,"maintainers":3022,"compatibility":3028,"generatedAt":3031,"contributors":3032,"stats":3060,"readme":3068},"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",[3023],{"name":3024,"github":3025,"twitter":3026,"bluesky":3027},"rrd","rrd108","radharadhya","rrd108.bsky.social",{"nuxt":3029,"requires":3030},">=3.0.0",{},"2026-07-26T04:15:48.720Z",[3033,3036,3040,3044,3048,3051,3054,3057],{"id":3034,"username":3025,"contributions":3035},3147489,282,{"id":3037,"username":3038,"contributions":3039},31929574,"ravesandstorm",5,{"id":3041,"username":3042,"contributions":3043},28706372,"danielroe",2,{"id":3045,"username":3046,"contributions":3047},20068593,"kschnekenburger",1,{"id":3049,"username":3050,"contributions":3047},32599710,"simonmaass",{"id":3052,"username":3053,"contributions":3047},125942725,"nd2024",{"id":3055,"username":3056,"contributions":3047},10197526,"chachew",{"id":3058,"username":3059,"contributions":3047},55457896,"LeeKrane",{"version":3061,"downloads":3062,"stars":3063,"watchers":3047,"forks":3064,"defaultBranch":3065,"publishedAt":3066,"createdAt":3067},"1.0.0",7656,56,8,"main",1782038138831,1711731542236,{"data":3069,"body":3071,"toc":10682},{"title":3070,"description":3019},"Nuxt API Shield",{"type":3072,"children":3073},"root",[3074,3081,3126,3131,3157,3163,3414,3420,3434,3543,3568,3573,3988,4006,4427,4441,4470,4575,4594,4606,4770,4775,4984,4995,5061,5280,5285,5291,5310,5317,5330,5343,6012,6036,6042,6071,6082,7307,7347,7374,7380,7386,7412,7554,7573,7776,7790,7809,7826,7844,7849,7855,7875,7881,7907,8114,8119,8129,8135,8147,8181,8187,8199,8349,8391,8396,8426,8447,8453,8458,8470,8481,8588,8596,9010,9021,9026,9077,9083,9100,9128,9132,9138,9150,9628,9634,9647,9653,9744,9750,9779,9785,9823,9829,9848,9853,9858,10150,10156,10202,10208,10214,10224,10320,10326,10417,10430,10441,10461,10467,10676],{"type":3075,"tag":3076,"props":3077,"children":3078},"element","h1",{"id":3016},[3079],{"type":3080,"value":3070},"text",{"type":3075,"tag":3082,"props":3083,"children":3084},"p",{},[3085,3098,3107,3116],{"type":3075,"tag":3086,"props":3087,"children":3091},"a",{"href":3088,"rel":3089},"https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fnuxt-api-shield",[3090],"nofollow",[3092],{"type":3075,"tag":3093,"props":3094,"children":3097},"img",{"alt":3095,"src":3096},"npm version","https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002Fnuxt-api-shield\u002Flatest.svg?style=flat&colorA=020420&colorB=00DC82",[],{"type":3075,"tag":3086,"props":3099,"children":3101},{"href":3088,"rel":3100},[3090],[3102],{"type":3075,"tag":3093,"props":3103,"children":3106},{"alt":3104,"src":3105},"npm downloads","https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fdm\u002Fnuxt-api-shield.svg?style=flat&colorA=020420&colorB=00DC82",[],{"type":3075,"tag":3086,"props":3108,"children":3110},{"href":3088,"rel":3109},[3090],[3111],{"type":3075,"tag":3093,"props":3112,"children":3115},{"alt":3113,"src":3114},"License","https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fl\u002Fnuxt-api-shield.svg?style=flat&colorA=020420&colorB=00DC82",[],{"type":3075,"tag":3086,"props":3117,"children":3120},{"href":3118,"rel":3119},"https:\u002F\u002Fnuxt.com",[3090],[3121],{"type":3075,"tag":3093,"props":3122,"children":3125},{"alt":3123,"src":3124},"Nuxt","https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FNuxt-020420?logo=nuxt.js",[],{"type":3075,"tag":3082,"props":3127,"children":3128},{},[3129],{"type":3080,"value":3130},"This Nuxt module implements a rate limiting middleware to protect your API endpoints from excessive requests.",{"type":3075,"tag":3132,"props":3133,"children":3134},"ul",{},[3135],{"type":3075,"tag":3136,"props":3137,"children":3138},"li",{},[3139,3145],{"type":3075,"tag":3086,"props":3140,"children":3142},{"href":3141},"\u002FCHANGELOG.md",[3143],{"type":3080,"value":3144},"✨  Release Notes",{"type":3075,"tag":3132,"props":3146,"children":3147},{},[3148],{"type":3075,"tag":3136,"props":3149,"children":3150},{},[3151],{"type":3075,"tag":3086,"props":3152,"children":3154},{"href":3018,"rel":3153},[3090],[3155],{"type":3080,"value":3156},"📖  Documentation",{"type":3075,"tag":3158,"props":3159,"children":3161},"h2",{"id":3160},"features",[3162],{"type":3080,"value":399},{"type":3075,"tag":3132,"props":3164,"children":3165},{},[3166,3188,3245,3266,3287,3308,3340,3374],{"type":3075,"tag":3136,"props":3167,"children":3168},{},[3169,3175],{"type":3075,"tag":3170,"props":3171,"children":3172},"strong",{},[3173],{"type":3080,"value":3174},"IP-Based Rate limiting and Brute Force Protection",{"type":3075,"tag":3132,"props":3176,"children":3177},{},[3178,3183],{"type":3075,"tag":3136,"props":3179,"children":3180},{},[3181],{"type":3080,"value":3182},"Tracks and enforces rate limits for individual IP addresses.",{"type":3075,"tag":3136,"props":3184,"children":3185},{},[3186],{"type":3080,"value":3187},"Prevents malicious actors or excessive requests from a single source from overwhelming your API.",{"type":3075,"tag":3136,"props":3189,"children":3190},{},[3191,3196],{"type":3075,"tag":3170,"props":3192,"children":3193},{},[3194],{"type":3080,"value":3195},"Customizable Rate Limits",{"type":3075,"tag":3132,"props":3197,"children":3198},{},[3199,3204,3216,3221,3226,3240],{"type":3075,"tag":3136,"props":3200,"children":3201},{},[3202],{"type":3080,"value":3203},"Configure maximum request count, duration within which the limit applies, and a ban period for exceeding the limit.",{"type":3075,"tag":3136,"props":3205,"children":3206},{},[3207,3209,3214],{"type":3080,"value":3208},"If the request limit is exceeded, the user is banned for the configured ban period. During the ban period, ",{"type":3075,"tag":3170,"props":3210,"children":3211},{},[3212],{"type":3080,"value":3213},"all requests are blocked with a 429 error",{"type":3080,"value":3215},", regardless of the rate limit window.",{"type":3075,"tag":3136,"props":3217,"children":3218},{},[3219],{"type":3080,"value":3220},"Add a delay to responses when a user is banned to discourage further abuse (optional).",{"type":3075,"tag":3136,"props":3222,"children":3223},{},[3224],{"type":3080,"value":3225},"Customize the error message for banned users.",{"type":3075,"tag":3136,"props":3227,"children":3228},{},[3229,3231,3238],{"type":3080,"value":3230},"Optionally include the ",{"type":3075,"tag":3232,"props":3233,"children":3235},"code",{"className":3234},[],[3236],{"type":3080,"value":3237},"Retry-After",{"type":3080,"value":3239}," header in responses when a user is banned.",{"type":3075,"tag":3136,"props":3241,"children":3242},{},[3243],{"type":3080,"value":3244},"Tailor the rate-limiting behavior to align with your API's specific needs and usage patterns.",{"type":3075,"tag":3136,"props":3246,"children":3247},{},[3248,3253],{"type":3075,"tag":3170,"props":3249,"children":3250},{},[3251],{"type":3080,"value":3252},"Event-Driven Handling",{"type":3075,"tag":3132,"props":3254,"children":3255},{},[3256,3261],{"type":3075,"tag":3136,"props":3257,"children":3258},{},[3259],{"type":3080,"value":3260},"Intercepts incoming API requests efficiently using Nuxt's event system.",{"type":3075,"tag":3136,"props":3262,"children":3263},{},[3264],{"type":3080,"value":3265},"Ensures seamless integration with your Nuxt application's request lifecycle.",{"type":3075,"tag":3136,"props":3267,"children":3268},{},[3269,3274],{"type":3075,"tag":3170,"props":3270,"children":3271},{},[3272],{"type":3080,"value":3273},"Flexible Storage",{"type":3075,"tag":3132,"props":3275,"children":3276},{},[3277,3282],{"type":3075,"tag":3136,"props":3278,"children":3279},{},[3280],{"type":3080,"value":3281},"Utilizes Nuxt's unstorage abstraction for versatile storage options.",{"type":3075,"tag":3136,"props":3283,"children":3284},{},[3285],{"type":3080,"value":3286},"Store rate-limiting data in various storage providers (filesystem, memory, databases, etc.) based on your project's requirements.",{"type":3075,"tag":3136,"props":3288,"children":3289},{},[3290,3295],{"type":3075,"tag":3170,"props":3291,"children":3292},{},[3293],{"type":3080,"value":3294},"Configurable with Runtime Config",{"type":3075,"tag":3132,"props":3296,"children":3297},{},[3298,3303],{"type":3075,"tag":3136,"props":3299,"children":3300},{},[3301],{"type":3080,"value":3302},"Easily adjust rate-limiting parameters without code changes.",{"type":3075,"tag":3136,"props":3304,"children":3305},{},[3306],{"type":3080,"value":3307},"Adapt to dynamic needs and maintain control over rate-limiting behavior through Nuxt's runtime configuration.",{"type":3075,"tag":3136,"props":3309,"children":3310},{},[3311,3316],{"type":3075,"tag":3170,"props":3312,"children":3313},{},[3314],{"type":3080,"value":3315},"Bundled cleanup tasks",{"type":3075,"tag":3132,"props":3317,"children":3318},{},[3319],{"type":3075,"tag":3136,"props":3320,"children":3321},{},[3322,3324,3330,3332,3338],{"type":3080,"value":3323},"Registers Nitro tasks ",{"type":3075,"tag":3232,"props":3325,"children":3327},{"className":3326},[],[3328],{"type":3080,"value":3329},"shield:cleanBans",{"type":3080,"value":3331}," and ",{"type":3075,"tag":3232,"props":3333,"children":3335},{"className":3334},[],[3336],{"type":3080,"value":3337},"shield:cleanIpData",{"type":3080,"value":3339}," so you can schedule maintenance without adding task files (see setup step 4).",{"type":3075,"tag":3136,"props":3341,"children":3342},{},[3343,3348],{"type":3075,"tag":3170,"props":3344,"children":3345},{},[3346],{"type":3080,"value":3347},"Clear Error Handling",{"type":3075,"tag":3132,"props":3349,"children":3350},{},[3351,3356,3369],{"type":3075,"tag":3136,"props":3352,"children":3353},{},[3354],{"type":3080,"value":3355},"Returns a standardized 429 \"Too Many Requests\" error response when rate limits are exceeded or when a user is banned.",{"type":3075,"tag":3136,"props":3357,"children":3358},{},[3359,3361,3367],{"type":3080,"value":3360},"The 429 body is JSON (",{"type":3075,"tag":3232,"props":3362,"children":3364},{"className":3363},[],[3365],{"type":3080,"value":3366},"{ error, retryAfter }",{"type":3080,"value":3368},") for predictable client-side handling.",{"type":3075,"tag":3136,"props":3370,"children":3371},{},[3372],{"type":3080,"value":3373},"Facilitates proper error handling in client-side applications for a smooth user experience.",{"type":3075,"tag":3136,"props":3375,"children":3376},{},[3377,3382],{"type":3075,"tag":3170,"props":3378,"children":3379},{},[3380],{"type":3080,"value":3381},"Standard Rate-Limit Headers",{"type":3075,"tag":3132,"props":3383,"children":3384},{},[3385],{"type":3075,"tag":3136,"props":3386,"children":3387},{},[3388,3390,3396,3398,3404,3406,3412],{"type":3080,"value":3389},"Every response includes ",{"type":3075,"tag":3232,"props":3391,"children":3393},{"className":3392},[],[3394],{"type":3080,"value":3395},"X-RateLimit-Limit",{"type":3080,"value":3397},", ",{"type":3075,"tag":3232,"props":3399,"children":3401},{"className":3400},[],[3402],{"type":3080,"value":3403},"X-RateLimit-Remaining",{"type":3080,"value":3405},", and ",{"type":3075,"tag":3232,"props":3407,"children":3409},{"className":3408},[],[3410],{"type":3080,"value":3411},"X-RateLimit-Reset",{"type":3080,"value":3413}," headers so clients and CDNs can track usage without parsing response bodies.",{"type":3075,"tag":3158,"props":3415,"children":3417},{"id":3416},"quick-setup",[3418],{"type":3080,"value":3419},"Quick Setup",{"type":3075,"tag":3421,"props":3422,"children":3424},"h3",{"id":3423},"_1-add-nuxt-api-shield-dependency-to-your-project",[3425,3427,3432],{"type":3080,"value":3426},"1. Add ",{"type":3075,"tag":3232,"props":3428,"children":3430},{"className":3429},[],[3431],{"type":3080,"value":3016},{"type":3080,"value":3433}," dependency to your project",{"type":3075,"tag":3435,"props":3436,"children":3440},"pre",{"className":3437,"code":3438,"language":3439,"meta":3019,"style":3019},"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",[3441],{"type":3075,"tag":3232,"props":3442,"children":3443},{"__ignoreMap":3019},[3444,3455,3475,3484,3493,3509,3517,3526],{"type":3075,"tag":3445,"props":3446,"children":3448},"span",{"class":3447,"line":3047},"line",[3449],{"type":3075,"tag":3445,"props":3450,"children":3452},{"style":3451},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#90A4AE;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[3453],{"type":3080,"value":3454},"# Using pnpm\n",{"type":3075,"tag":3445,"props":3456,"children":3457},{"class":3447,"line":3043},[3458,3464,3470],{"type":3075,"tag":3445,"props":3459,"children":3461},{"style":3460},"--shiki-light:#E2931D;--shiki-default:#E2931D;--shiki-dark:#FFCB6B",[3462],{"type":3080,"value":3463},"pnpm",{"type":3075,"tag":3445,"props":3465,"children":3467},{"style":3466},"--shiki-light:#91B859;--shiki-default:#91B859;--shiki-dark:#C3E88D",[3468],{"type":3080,"value":3469}," add",{"type":3075,"tag":3445,"props":3471,"children":3472},{"style":3466},[3473],{"type":3080,"value":3474}," nuxt-api-shield\n",{"type":3075,"tag":3445,"props":3476,"children":3478},{"class":3447,"line":3477},3,[3479],{"type":3075,"tag":3445,"props":3480,"children":3481},{"emptyLinePlaceholder":1200},[3482],{"type":3080,"value":3483},"\n",{"type":3075,"tag":3445,"props":3485,"children":3487},{"class":3447,"line":3486},4,[3488],{"type":3075,"tag":3445,"props":3489,"children":3490},{"style":3451},[3491],{"type":3080,"value":3492},"# Using yarn\n",{"type":3075,"tag":3445,"props":3494,"children":3495},{"class":3447,"line":3039},[3496,3501,3505],{"type":3075,"tag":3445,"props":3497,"children":3498},{"style":3460},[3499],{"type":3080,"value":3500},"yarn",{"type":3075,"tag":3445,"props":3502,"children":3503},{"style":3466},[3504],{"type":3080,"value":3469},{"type":3075,"tag":3445,"props":3506,"children":3507},{"style":3466},[3508],{"type":3080,"value":3474},{"type":3075,"tag":3445,"props":3510,"children":3512},{"class":3447,"line":3511},6,[3513],{"type":3075,"tag":3445,"props":3514,"children":3515},{"emptyLinePlaceholder":1200},[3516],{"type":3080,"value":3483},{"type":3075,"tag":3445,"props":3518,"children":3520},{"class":3447,"line":3519},7,[3521],{"type":3075,"tag":3445,"props":3522,"children":3523},{"style":3451},[3524],{"type":3080,"value":3525},"# Using npm\n",{"type":3075,"tag":3445,"props":3527,"children":3528},{"class":3447,"line":3064},[3529,3534,3539],{"type":3075,"tag":3445,"props":3530,"children":3531},{"style":3460},[3532],{"type":3080,"value":3533},"npm",{"type":3075,"tag":3445,"props":3535,"children":3536},{"style":3466},[3537],{"type":3080,"value":3538}," install",{"type":3075,"tag":3445,"props":3540,"children":3541},{"style":3466},[3542],{"type":3080,"value":3474},{"type":3075,"tag":3421,"props":3544,"children":3546},{"id":3545},"_2-add-nuxt-api-shield-to-the-modules-section-of-nuxtconfigts",[3547,3549,3554,3556,3561,3563],{"type":3080,"value":3548},"2. Add ",{"type":3075,"tag":3232,"props":3550,"children":3552},{"className":3551},[],[3553],{"type":3080,"value":3016},{"type":3080,"value":3555}," to the ",{"type":3075,"tag":3232,"props":3557,"children":3559},{"className":3558},[],[3560],{"type":3080,"value":162},{"type":3080,"value":3562}," section of ",{"type":3075,"tag":3232,"props":3564,"children":3566},{"className":3565},[],[3567],{"type":3080,"value":233},{"type":3075,"tag":3082,"props":3569,"children":3570},{},[3571],{"type":3080,"value":3572},"You should add only the values you want to use differently from the default values.",{"type":3075,"tag":3435,"props":3574,"children":3578},{"className":3575,"code":3576,"language":3577,"meta":3019,"style":3019},"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",[3579],{"type":3075,"tag":3232,"props":3580,"children":3581},{"__ignoreMap":3019},[3582,3614,3656,3673,3681,3689,3697,3705,3713,3722,3731,3740,3749,3758,3767,3776,3785,3793,3802,3811,3825,3853,3861,3870,3898,3915,3924,3952,3960,3969],{"type":3075,"tag":3445,"props":3583,"children":3584},{"class":3447,"line":3047},[3585,3591,3596,3602,3608],{"type":3075,"tag":3445,"props":3586,"children":3588},{"style":3587},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#39ADB5;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[3589],{"type":3080,"value":3590},"export",{"type":3075,"tag":3445,"props":3592,"children":3593},{"style":3587},[3594],{"type":3080,"value":3595}," default",{"type":3075,"tag":3445,"props":3597,"children":3599},{"style":3598},"--shiki-light:#6182B8;--shiki-default:#6182B8;--shiki-dark:#82AAFF",[3600],{"type":3080,"value":3601}," defineNuxtConfig",{"type":3075,"tag":3445,"props":3603,"children":3605},{"style":3604},"--shiki-light:#90A4AE;--shiki-default:#90A4AE;--shiki-dark:#BABED8",[3606],{"type":3080,"value":3607},"(",{"type":3075,"tag":3445,"props":3609,"children":3611},{"style":3610},"--shiki-light:#39ADB5;--shiki-default:#39ADB5;--shiki-dark:#89DDFF",[3612],{"type":3080,"value":3613},"{\n",{"type":3075,"tag":3445,"props":3615,"children":3616},{"class":3447,"line":3043},[3617,3623,3628,3633,3638,3642,3646,3651],{"type":3075,"tag":3445,"props":3618,"children":3620},{"style":3619},"--shiki-light:#E53935;--shiki-default:#E53935;--shiki-dark:#F07178",[3621],{"type":3080,"value":3622},"  modules",{"type":3075,"tag":3445,"props":3624,"children":3625},{"style":3610},[3626],{"type":3080,"value":3627},":",{"type":3075,"tag":3445,"props":3629,"children":3630},{"style":3604},[3631],{"type":3080,"value":3632}," [",{"type":3075,"tag":3445,"props":3634,"children":3635},{"style":3610},[3636],{"type":3080,"value":3637},"\"",{"type":3075,"tag":3445,"props":3639,"children":3640},{"style":3466},[3641],{"type":3080,"value":3016},{"type":3075,"tag":3445,"props":3643,"children":3644},{"style":3610},[3645],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":3647,"children":3648},{"style":3604},[3649],{"type":3080,"value":3650},"]",{"type":3075,"tag":3445,"props":3652,"children":3653},{"style":3610},[3654],{"type":3080,"value":3655},",\n",{"type":3075,"tag":3445,"props":3657,"children":3658},{"class":3447,"line":3477},[3659,3664,3668],{"type":3075,"tag":3445,"props":3660,"children":3661},{"style":3619},[3662],{"type":3080,"value":3663},"  nuxtApiShield",{"type":3075,"tag":3445,"props":3665,"children":3666},{"style":3610},[3667],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":3669,"children":3670},{"style":3610},[3671],{"type":3080,"value":3672}," {\n",{"type":3075,"tag":3445,"props":3674,"children":3675},{"class":3447,"line":3486},[3676],{"type":3075,"tag":3445,"props":3677,"children":3678},{"style":3451},[3679],{"type":3080,"value":3680},"    \u002F*limit: {\n",{"type":3075,"tag":3445,"props":3682,"children":3683},{"class":3447,"line":3039},[3684],{"type":3075,"tag":3445,"props":3685,"children":3686},{"style":3451},[3687],{"type":3080,"value":3688},"      max: 12,        \u002F\u002F maximum requests per duration time, default is 12\u002Fduration\n",{"type":3075,"tag":3445,"props":3690,"children":3691},{"class":3447,"line":3511},[3692],{"type":3075,"tag":3445,"props":3693,"children":3694},{"style":3451},[3695],{"type":3080,"value":3696},"      duration: 108,   \u002F\u002F duration time in seconds, default is 108 seconds\n",{"type":3075,"tag":3445,"props":3698,"children":3699},{"class":3447,"line":3519},[3700],{"type":3075,"tag":3445,"props":3701,"children":3702},{"style":3451},[3703],{"type":3080,"value":3704},"      ban: 3600,      \u002F\u002F ban time in seconds, default is 3600 seconds = 1 hour\n",{"type":3075,"tag":3445,"props":3706,"children":3707},{"class":3447,"line":3064},[3708],{"type":3075,"tag":3445,"props":3709,"children":3710},{"style":3451},[3711],{"type":3080,"value":3712},"      \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":3075,"tag":3445,"props":3714,"children":3716},{"class":3447,"line":3715},9,[3717],{"type":3075,"tag":3445,"props":3718,"children":3719},{"style":3451},[3720],{"type":3080,"value":3721},"    },\n",{"type":3075,"tag":3445,"props":3723,"children":3725},{"class":3447,"line":3724},10,[3726],{"type":3075,"tag":3445,"props":3727,"children":3728},{"style":3451},[3729],{"type":3080,"value":3730},"    delayOnBan: true  \u002F\u002F delay every response with +1sec when the user is banned, default is true\n",{"type":3075,"tag":3445,"props":3732,"children":3734},{"class":3447,"line":3733},11,[3735],{"type":3075,"tag":3445,"props":3736,"children":3737},{"style":3451},[3738],{"type":3080,"value":3739},"    errorMessage: \"Too Many Requests\",  \u002F\u002F error message when the user is banned, default is \"Too Many Requests\"\n",{"type":3075,"tag":3445,"props":3741,"children":3743},{"class":3447,"line":3742},12,[3744],{"type":3075,"tag":3445,"props":3745,"children":3746},{"style":3451},[3747],{"type":3080,"value":3748},"    retryAfterHeader: false, \u002F\u002F when the user is banned add the Retry-After header to the response, default is false\n",{"type":3075,"tag":3445,"props":3750,"children":3752},{"class":3447,"line":3751},13,[3753],{"type":3075,"tag":3445,"props":3754,"children":3755},{"style":3451},[3756],{"type":3080,"value":3757},"    log: {\n",{"type":3075,"tag":3445,"props":3759,"children":3761},{"class":3447,"line":3760},14,[3762],{"type":3075,"tag":3445,"props":3763,"children":3764},{"style":3451},[3765],{"type":3080,"value":3766},"      path: \"\", \u002F\u002F path to the log file, every day a new log file will be created, use \"\" to disable logging\n",{"type":3075,"tag":3445,"props":3768,"children":3770},{"class":3447,"line":3769},15,[3771],{"type":3075,"tag":3445,"props":3772,"children":3773},{"style":3451},[3774],{"type":3080,"value":3775},"      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":3075,"tag":3445,"props":3777,"children":3779},{"class":3447,"line":3778},16,[3780],{"type":3075,"tag":3445,"props":3781,"children":3782},{"style":3451},[3783],{"type":3080,"value":3784},"      fail2ban: false, \u002F\u002F enable fail2ban-compatible log format for ban events (see fail2ban section)\n",{"type":3075,"tag":3445,"props":3786,"children":3788},{"class":3447,"line":3787},17,[3789],{"type":3075,"tag":3445,"props":3790,"children":3791},{"style":3451},[3792],{"type":3080,"value":3721},{"type":3075,"tag":3445,"props":3794,"children":3796},{"class":3447,"line":3795},18,[3797],{"type":3075,"tag":3445,"props":3798,"children":3799},{"style":3451},[3800],{"type":3080,"value":3801},"    routes: [], \u002F\u002F specify routes to apply rate limiting to, default is an empty array meaning all routes are protected.\n",{"type":3075,"tag":3445,"props":3803,"children":3805},{"class":3447,"line":3804},19,[3806],{"type":3075,"tag":3445,"props":3807,"children":3808},{"style":3451},[3809],{"type":3080,"value":3810},"    \u002F\u002F Example:\n",{"type":3075,"tag":3445,"props":3812,"children":3814},{"class":3447,"line":3813},20,[3815,3820],{"type":3075,"tag":3445,"props":3816,"children":3817},{"style":3451},[3818],{"type":3080,"value":3819},"    \u002F\u002F routes: [\"\u002Fapi\u002Fv2\u002F\", \"\u002Fapi\u002Fv3\u002F\"],",{"type":3075,"tag":3445,"props":3821,"children":3822},{"style":3451},[3823],{"type":3080,"value":3824}," \u002F\u002F \u002Fapi\u002Fv1 will not be protected, \u002Fapi\u002Fv2\u002F and \u002Fapi\u002Fv3\u002F will be protected *\u002F\n",{"type":3075,"tag":3445,"props":3826,"children":3828},{"class":3447,"line":3827},21,[3829,3834,3838,3843,3848],{"type":3075,"tag":3445,"props":3830,"children":3831},{"style":3619},[3832],{"type":3080,"value":3833},"    skipRoutes",{"type":3075,"tag":3445,"props":3835,"children":3836},{"style":3610},[3837],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":3839,"children":3840},{"style":3604},[3841],{"type":3080,"value":3842}," []",{"type":3075,"tag":3445,"props":3844,"children":3845},{"style":3610},[3846],{"type":3080,"value":3847},",",{"type":3075,"tag":3445,"props":3849,"children":3850},{"style":3451},[3851],{"type":3080,"value":3852}," \u002F\u002F specify routes to skip\u002Fexempt from rate limiting, supports wildcard patterns (*\u002F**)\n",{"type":3075,"tag":3445,"props":3854,"children":3856},{"class":3447,"line":3855},22,[3857],{"type":3075,"tag":3445,"props":3858,"children":3859},{"style":3451},[3860],{"type":3080,"value":3810},{"type":3075,"tag":3445,"props":3862,"children":3864},{"class":3447,"line":3863},23,[3865],{"type":3075,"tag":3445,"props":3866,"children":3867},{"style":3451},[3868],{"type":3080,"value":3869},"    \u002F\u002F skipRoutes: [\"\u002Fapi\u002Fhealth\", \"\u002Fapi\u002F_nuxt\u002F**\", \"\u002Fapi\u002Fwebhooks\u002Fstripe\"],\n",{"type":3075,"tag":3445,"props":3871,"children":3873},{"class":3447,"line":3872},24,[3874,3879,3883,3889,3893],{"type":3075,"tag":3445,"props":3875,"children":3876},{"style":3619},[3877],{"type":3080,"value":3878},"    ipTTL",{"type":3075,"tag":3445,"props":3880,"children":3881},{"style":3610},[3882],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":3884,"children":3886},{"style":3885},"--shiki-light:#F76D47;--shiki-default:#F76D47;--shiki-dark:#F78C6C",[3887],{"type":3080,"value":3888}," 604800",{"type":3075,"tag":3445,"props":3890,"children":3891},{"style":3610},[3892],{"type":3080,"value":3847},{"type":3075,"tag":3445,"props":3894,"children":3895},{"style":3451},[3896],{"type":3080,"value":3897}," \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":3075,"tag":3445,"props":3899,"children":3901},{"class":3447,"line":3900},25,[3902,3907,3911],{"type":3075,"tag":3445,"props":3903,"children":3904},{"style":3619},[3905],{"type":3080,"value":3906},"    security",{"type":3075,"tag":3445,"props":3908,"children":3909},{"style":3610},[3910],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":3912,"children":3913},{"style":3610},[3914],{"type":3080,"value":3672},{"type":3075,"tag":3445,"props":3916,"children":3918},{"class":3447,"line":3917},26,[3919],{"type":3075,"tag":3445,"props":3920,"children":3921},{"style":3451},[3922],{"type":3080,"value":3923},"      \u002F\u002F Optional: Security-related configurations\n",{"type":3075,"tag":3445,"props":3925,"children":3927},{"class":3447,"line":3926},27,[3928,3933,3937,3943,3947],{"type":3075,"tag":3445,"props":3929,"children":3930},{"style":3619},[3931],{"type":3080,"value":3932},"      trustXForwardedFor",{"type":3075,"tag":3445,"props":3934,"children":3935},{"style":3610},[3936],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":3938,"children":3940},{"style":3939},"--shiki-light:#FF5370;--shiki-default:#FF5370;--shiki-dark:#FF9CAC",[3941],{"type":3080,"value":3942}," false",{"type":3075,"tag":3445,"props":3944,"children":3945},{"style":3610},[3946],{"type":3080,"value":3847},{"type":3075,"tag":3445,"props":3948,"children":3949},{"style":3451},[3950],{"type":3080,"value":3951}," \u002F\u002F Default: false. Whether to trust X-Forwarded-For headers. See warning below.\n",{"type":3075,"tag":3445,"props":3953,"children":3955},{"class":3447,"line":3954},28,[3956],{"type":3075,"tag":3445,"props":3957,"children":3958},{"style":3610},[3959],{"type":3080,"value":3721},{"type":3075,"tag":3445,"props":3961,"children":3963},{"class":3447,"line":3962},29,[3964],{"type":3075,"tag":3445,"props":3965,"children":3966},{"style":3610},[3967],{"type":3080,"value":3968},"  },\n",{"type":3075,"tag":3445,"props":3970,"children":3972},{"class":3447,"line":3971},30,[3973,3978,3983],{"type":3075,"tag":3445,"props":3974,"children":3975},{"style":3610},[3976],{"type":3080,"value":3977},"}",{"type":3075,"tag":3445,"props":3979,"children":3980},{"style":3604},[3981],{"type":3080,"value":3982},")",{"type":3075,"tag":3445,"props":3984,"children":3985},{"style":3610},[3986],{"type":3080,"value":3987},";\n",{"type":3075,"tag":3082,"props":3989,"children":3990},{},[3991,3996,3998,4004],{"type":3075,"tag":3170,"props":3992,"children":3993},{},[3994],{"type":3080,"value":3995},"Default Configuration Values:",{"type":3080,"value":3997},"\n(These are applied by the module if not specified in your ",{"type":3075,"tag":3232,"props":3999,"children":4001},{"className":4000},[],[4002],{"type":3080,"value":4003},"nuxtApiShield",{"type":3080,"value":4005}," config)",{"type":3075,"tag":3435,"props":4007,"children":4009},{"className":3575,"code":4008,"language":3577,"meta":3019,"style":3019},"{\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",[4010],{"type":3075,"tag":3232,"props":4011,"children":4012},{"__ignoreMap":3019},[4013,4020,4036,4057,4083,4109,4116,4137,4167,4187,4203,4229,4255,4275,4282,4302,4322,4375,4391,4411,4419],{"type":3075,"tag":3445,"props":4014,"children":4015},{"class":3447,"line":3047},[4016],{"type":3075,"tag":3445,"props":4017,"children":4018},{"style":3610},[4019],{"type":3080,"value":3613},{"type":3075,"tag":3445,"props":4021,"children":4022},{"class":3447,"line":3043},[4023,4028,4032],{"type":3075,"tag":3445,"props":4024,"children":4025},{"style":3460},[4026],{"type":3080,"value":4027},"  limit",{"type":3075,"tag":3445,"props":4029,"children":4030},{"style":3610},[4031],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":4033,"children":4034},{"style":3610},[4035],{"type":3080,"value":3672},{"type":3075,"tag":3445,"props":4037,"children":4038},{"class":3447,"line":3477},[4039,4044,4048,4053],{"type":3075,"tag":3445,"props":4040,"children":4041},{"style":3460},[4042],{"type":3080,"value":4043},"    max",{"type":3075,"tag":3445,"props":4045,"children":4046},{"style":3610},[4047],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":4049,"children":4050},{"style":3885},[4051],{"type":3080,"value":4052}," 12",{"type":3075,"tag":3445,"props":4054,"children":4055},{"style":3610},[4056],{"type":3080,"value":3655},{"type":3075,"tag":3445,"props":4058,"children":4059},{"class":3447,"line":3486},[4060,4065,4069,4074,4078],{"type":3075,"tag":3445,"props":4061,"children":4062},{"style":3460},[4063],{"type":3080,"value":4064},"    duration",{"type":3075,"tag":3445,"props":4066,"children":4067},{"style":3610},[4068],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":4070,"children":4071},{"style":3885},[4072],{"type":3080,"value":4073}," 108",{"type":3075,"tag":3445,"props":4075,"children":4076},{"style":3610},[4077],{"type":3080,"value":3847},{"type":3075,"tag":3445,"props":4079,"children":4080},{"style":3451},[4081],{"type":3080,"value":4082}," \u002F\u002F seconds\n",{"type":3075,"tag":3445,"props":4084,"children":4085},{"class":3447,"line":3039},[4086,4091,4095,4100,4104],{"type":3075,"tag":3445,"props":4087,"children":4088},{"style":3460},[4089],{"type":3080,"value":4090},"    ban",{"type":3075,"tag":3445,"props":4092,"children":4093},{"style":3610},[4094],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":4096,"children":4097},{"style":3885},[4098],{"type":3080,"value":4099}," 3600",{"type":3075,"tag":3445,"props":4101,"children":4102},{"style":3610},[4103],{"type":3080,"value":3847},{"type":3075,"tag":3445,"props":4105,"children":4106},{"style":3451},[4107],{"type":3080,"value":4108},"     \u002F\u002F seconds\n",{"type":3075,"tag":3445,"props":4110,"children":4111},{"class":3447,"line":3511},[4112],{"type":3075,"tag":3445,"props":4113,"children":4114},{"style":3610},[4115],{"type":3080,"value":3968},{"type":3075,"tag":3445,"props":4117,"children":4118},{"class":3447,"line":3519},[4119,4124,4128,4133],{"type":3075,"tag":3445,"props":4120,"children":4121},{"style":3460},[4122],{"type":3080,"value":4123},"  delayOnBan",{"type":3075,"tag":3445,"props":4125,"children":4126},{"style":3610},[4127],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":4129,"children":4130},{"style":3939},[4131],{"type":3080,"value":4132}," true",{"type":3075,"tag":3445,"props":4134,"children":4135},{"style":3610},[4136],{"type":3080,"value":3655},{"type":3075,"tag":3445,"props":4138,"children":4139},{"class":3447,"line":3064},[4140,4145,4149,4154,4159,4163],{"type":3075,"tag":3445,"props":4141,"children":4142},{"style":3460},[4143],{"type":3080,"value":4144},"  errorMessage",{"type":3075,"tag":3445,"props":4146,"children":4147},{"style":3610},[4148],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":4150,"children":4151},{"style":3610},[4152],{"type":3080,"value":4153}," \"",{"type":3075,"tag":3445,"props":4155,"children":4156},{"style":3466},[4157],{"type":3080,"value":4158},"Too Many Requests",{"type":3075,"tag":3445,"props":4160,"children":4161},{"style":3610},[4162],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":4164,"children":4165},{"style":3610},[4166],{"type":3080,"value":3655},{"type":3075,"tag":3445,"props":4168,"children":4169},{"class":3447,"line":3715},[4170,4175,4179,4183],{"type":3075,"tag":3445,"props":4171,"children":4172},{"style":3460},[4173],{"type":3080,"value":4174},"  retryAfterHeader",{"type":3075,"tag":3445,"props":4176,"children":4177},{"style":3610},[4178],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":4180,"children":4181},{"style":3939},[4182],{"type":3080,"value":3942},{"type":3075,"tag":3445,"props":4184,"children":4185},{"style":3610},[4186],{"type":3080,"value":3655},{"type":3075,"tag":3445,"props":4188,"children":4189},{"class":3447,"line":3724},[4190,4195,4199],{"type":3075,"tag":3445,"props":4191,"children":4192},{"style":3460},[4193],{"type":3080,"value":4194},"  log",{"type":3075,"tag":3445,"props":4196,"children":4197},{"style":3610},[4198],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":4200,"children":4201},{"style":3610},[4202],{"type":3080,"value":3672},{"type":3075,"tag":3445,"props":4204,"children":4205},{"class":3447,"line":3733},[4206,4211,4215,4220,4224],{"type":3075,"tag":3445,"props":4207,"children":4208},{"style":3460},[4209],{"type":3080,"value":4210},"    path",{"type":3075,"tag":3445,"props":4212,"children":4213},{"style":3610},[4214],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":4216,"children":4217},{"style":3610},[4218],{"type":3080,"value":4219}," \"\"",{"type":3075,"tag":3445,"props":4221,"children":4222},{"style":3610},[4223],{"type":3080,"value":3847},{"type":3075,"tag":3445,"props":4225,"children":4226},{"style":3451},[4227],{"type":3080,"value":4228}," \u002F\u002F Logging is disabled if path is empty\n",{"type":3075,"tag":3445,"props":4230,"children":4231},{"class":3447,"line":3742},[4232,4237,4241,4246,4250],{"type":3075,"tag":3445,"props":4233,"children":4234},{"style":3460},[4235],{"type":3080,"value":4236},"    attempts",{"type":3075,"tag":3445,"props":4238,"children":4239},{"style":3610},[4240],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":4242,"children":4243},{"style":3885},[4244],{"type":3080,"value":4245}," 0",{"type":3075,"tag":3445,"props":4247,"children":4248},{"style":3610},[4249],{"type":3080,"value":3847},{"type":3075,"tag":3445,"props":4251,"children":4252},{"style":3451},[4253],{"type":3080,"value":4254}," \u002F\u002F Logging per IP is disabled if attempts is 0\n",{"type":3075,"tag":3445,"props":4256,"children":4257},{"class":3447,"line":3751},[4258,4263,4267,4271],{"type":3075,"tag":3445,"props":4259,"children":4260},{"style":3460},[4261],{"type":3080,"value":4262},"    fail2ban",{"type":3075,"tag":3445,"props":4264,"children":4265},{"style":3610},[4266],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":4268,"children":4269},{"style":3939},[4270],{"type":3080,"value":3942},{"type":3075,"tag":3445,"props":4272,"children":4273},{"style":3610},[4274],{"type":3080,"value":3655},{"type":3075,"tag":3445,"props":4276,"children":4277},{"class":3447,"line":3760},[4278],{"type":3075,"tag":3445,"props":4279,"children":4280},{"style":3610},[4281],{"type":3080,"value":3968},{"type":3075,"tag":3445,"props":4283,"children":4284},{"class":3447,"line":3769},[4285,4290,4294,4298],{"type":3075,"tag":3445,"props":4286,"children":4287},{"style":3460},[4288],{"type":3080,"value":4289},"  routes",{"type":3075,"tag":3445,"props":4291,"children":4292},{"style":3610},[4293],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":4295,"children":4296},{"style":3619},[4297],{"type":3080,"value":3842},{"type":3075,"tag":3445,"props":4299,"children":4300},{"style":3610},[4301],{"type":3080,"value":3655},{"type":3075,"tag":3445,"props":4303,"children":4304},{"class":3447,"line":3778},[4305,4310,4314,4318],{"type":3075,"tag":3445,"props":4306,"children":4307},{"style":3460},[4308],{"type":3080,"value":4309},"  skipRoutes",{"type":3075,"tag":3445,"props":4311,"children":4312},{"style":3610},[4313],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":4315,"children":4316},{"style":3619},[4317],{"type":3080,"value":3842},{"type":3075,"tag":3445,"props":4319,"children":4320},{"style":3610},[4321],{"type":3080,"value":3655},{"type":3075,"tag":3445,"props":4323,"children":4324},{"class":3447,"line":3787},[4325,4330,4334,4339,4344,4349,4353,4358,4362,4366,4370],{"type":3075,"tag":3445,"props":4326,"children":4327},{"style":3460},[4328],{"type":3080,"value":4329},"  ipTTL",{"type":3075,"tag":3445,"props":4331,"children":4332},{"style":3610},[4333],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":4335,"children":4336},{"style":3885},[4337],{"type":3080,"value":4338}," 7",{"type":3075,"tag":3445,"props":4340,"children":4341},{"style":3610},[4342],{"type":3080,"value":4343}," *",{"type":3075,"tag":3445,"props":4345,"children":4346},{"style":3885},[4347],{"type":3080,"value":4348}," 24",{"type":3075,"tag":3445,"props":4350,"children":4351},{"style":3610},[4352],{"type":3080,"value":4343},{"type":3075,"tag":3445,"props":4354,"children":4355},{"style":3885},[4356],{"type":3080,"value":4357}," 60",{"type":3075,"tag":3445,"props":4359,"children":4360},{"style":3610},[4361],{"type":3080,"value":4343},{"type":3075,"tag":3445,"props":4363,"children":4364},{"style":3885},[4365],{"type":3080,"value":4357},{"type":3075,"tag":3445,"props":4367,"children":4368},{"style":3610},[4369],{"type":3080,"value":3847},{"type":3075,"tag":3445,"props":4371,"children":4372},{"style":3451},[4373],{"type":3080,"value":4374}," \u002F\u002F 7 days in seconds\n",{"type":3075,"tag":3445,"props":4376,"children":4377},{"class":3447,"line":3795},[4378,4383,4387],{"type":3075,"tag":3445,"props":4379,"children":4380},{"style":3460},[4381],{"type":3080,"value":4382},"  security",{"type":3075,"tag":3445,"props":4384,"children":4385},{"style":3610},[4386],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":4388,"children":4389},{"style":3610},[4390],{"type":3080,"value":3672},{"type":3075,"tag":3445,"props":4392,"children":4393},{"class":3447,"line":3804},[4394,4399,4403,4407],{"type":3075,"tag":3445,"props":4395,"children":4396},{"style":3460},[4397],{"type":3080,"value":4398},"    trustXForwardedFor",{"type":3075,"tag":3445,"props":4400,"children":4401},{"style":3610},[4402],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":4404,"children":4405},{"style":3939},[4406],{"type":3080,"value":3942},{"type":3075,"tag":3445,"props":4408,"children":4409},{"style":3610},[4410],{"type":3080,"value":3655},{"type":3075,"tag":3445,"props":4412,"children":4413},{"class":3447,"line":3813},[4414],{"type":3075,"tag":3445,"props":4415,"children":4416},{"style":3610},[4417],{"type":3080,"value":4418},"  }\n",{"type":3075,"tag":3445,"props":4420,"children":4421},{"class":3447,"line":3827},[4422],{"type":3075,"tag":3445,"props":4423,"children":4424},{"style":3610},[4425],{"type":3080,"value":4426},"}\n",{"type":3075,"tag":3082,"props":4428,"children":4429},{},[4430],{"type":3075,"tag":3170,"props":4431,"children":4432},{},[4433,4435],{"type":3080,"value":4434},"Security Warning: ",{"type":3075,"tag":3232,"props":4436,"children":4438},{"className":4437},[],[4439],{"type":3080,"value":4440},"trustXForwardedFor",{"type":3075,"tag":3082,"props":4442,"children":4443},{},[4444,4446,4452,4454,4460,4462,4468],{"type":3080,"value":4445},"The ",{"type":3075,"tag":3232,"props":4447,"children":4449},{"className":4448},[],[4450],{"type":3080,"value":4451},"security.trustXForwardedFor",{"type":3080,"value":4453}," option (default is ",{"type":3075,"tag":3232,"props":4455,"children":4457},{"className":4456},[],[4458],{"type":3080,"value":4459},"false",{"type":3080,"value":4461},", set by the module) determines if the module uses the ",{"type":3075,"tag":3232,"props":4463,"children":4465},{"className":4464},[],[4466],{"type":3080,"value":4467},"X-Forwarded-For",{"type":3080,"value":4469}," HTTP header to identify the client's IP address.",{"type":3075,"tag":3132,"props":4471,"children":4472},{},[4473,4493,4531,4550],{"type":3075,"tag":3136,"props":4474,"children":4475},{},[4476,4478,4484,4486,4491],{"type":3080,"value":4477},"If set to ",{"type":3075,"tag":3232,"props":4479,"children":4481},{"className":4480},[],[4482],{"type":3080,"value":4483},"true",{"type":3080,"value":4485},": The module will use the IP address provided in the ",{"type":3075,"tag":3232,"props":4487,"children":4489},{"className":4488},[],[4490],{"type":3080,"value":4467},{"type":3080,"value":4492}," 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":3075,"tag":3136,"props":4494,"children":4495},{},[4496,4501,4503,4508,4510,4515,4517,4522,4524,4529],{"type":3075,"tag":3170,"props":4497,"children":4498},{},[4499],{"type":3080,"value":4500},"WARNING:",{"type":3080,"value":4502}," If ",{"type":3075,"tag":3232,"props":4504,"children":4506},{"className":4505},[],[4507],{"type":3080,"value":4440},{"type":3080,"value":4509}," is ",{"type":3075,"tag":3232,"props":4511,"children":4513},{"className":4512},[],[4514],{"type":3080,"value":4483},{"type":3080,"value":4516}," and your application is directly internet-facing OR your proxy is not configured to strip incoming ",{"type":3075,"tag":3232,"props":4518,"children":4520},{"className":4519},[],[4521],{"type":3080,"value":4467},{"type":3080,"value":4523}," headers from clients, malicious users can spoof their IP address by sending a fake ",{"type":3075,"tag":3232,"props":4525,"children":4527},{"className":4526},[],[4528],{"type":3080,"value":4467},{"type":3080,"value":4530}," header. This would allow them to bypass rate limits or cause other users to be incorrectly rate-limited.",{"type":3075,"tag":3136,"props":4532,"children":4533},{},[4534,4535,4540,4542,4548],{"type":3080,"value":4477},{"type":3075,"tag":3232,"props":4536,"children":4538},{"className":4537},[],[4539],{"type":3080,"value":4459},{"type":3080,"value":4541},": The module will use the direct IP address of the incoming connection (i.e., ",{"type":3075,"tag":3232,"props":4543,"children":4545},{"className":4544},[],[4546],{"type":3080,"value":4547},"event.node.req.socket.remoteAddress",{"type":3080,"value":4549},"). Use this setting if your application is directly internet-facing or if you are unsure about your proxy's configuration.",{"type":3075,"tag":3136,"props":4551,"children":4552},{},[4553,4558,4560,4566,4568,4573],{"type":3075,"tag":3170,"props":4554,"children":4555},{},[4556],{"type":3080,"value":4557},"Recommendation:",{"type":3080,"value":4559}," Only enable ",{"type":3075,"tag":3232,"props":4561,"children":4563},{"className":4562},[],[4564],{"type":3080,"value":4565},"trustXForwardedFor: true",{"type":3080,"value":4567}," 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":3075,"tag":3232,"props":4569,"children":4571},{"className":4570},[],[4572],{"type":3080,"value":4459},{"type":3080,"value":4574},".",{"type":3075,"tag":3421,"props":4576,"children":4578},{"id":4577},"_3-add-nitrostorage-to-nuxtconfigts",[4579,4581,4587,4589],{"type":3080,"value":4580},"3. Add ",{"type":3075,"tag":3232,"props":4582,"children":4584},{"className":4583},[],[4585],{"type":3080,"value":4586},"nitro\u002Fstorage",{"type":3080,"value":4588}," to ",{"type":3075,"tag":3232,"props":4590,"children":4592},{"className":4591},[],[4593],{"type":3080,"value":233},{"type":3075,"tag":3082,"props":4595,"children":4596},{},[4597,4599,4604],{"type":3080,"value":4598},"You can use any storage you want, but you have to use ",{"type":3075,"tag":3170,"props":4600,"children":4601},{},[4602],{"type":3080,"value":4603},"shield",{"type":3080,"value":4605}," as the name of the storage.",{"type":3075,"tag":3435,"props":4607,"children":4611},{"className":4608,"code":4609,"language":4610,"meta":3019,"style":3019},"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",[4612],{"type":3075,"tag":3232,"props":4613,"children":4614},{"__ignoreMap":3019},[4615,4622,4648,4673,4697,4705,4740,4748,4756,4763],{"type":3075,"tag":3445,"props":4616,"children":4617},{"class":3447,"line":3047},[4618],{"type":3075,"tag":3445,"props":4619,"children":4620},{"style":3610},[4621],{"type":3080,"value":3613},{"type":3075,"tag":3445,"props":4623,"children":4624},{"class":3447,"line":3043},[4625,4630,4636,4640,4644],{"type":3075,"tag":3445,"props":4626,"children":4627},{"style":3610},[4628],{"type":3080,"value":4629},"  \"",{"type":3075,"tag":3445,"props":4631,"children":4633},{"style":4632},"--shiki-light:#9C3EDA;--shiki-default:#9C3EDA;--shiki-dark:#C792EA",[4634],{"type":3080,"value":4635},"nitro",{"type":3075,"tag":3445,"props":4637,"children":4638},{"style":3610},[4639],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":4641,"children":4642},{"style":3610},[4643],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":4645,"children":4646},{"style":3610},[4647],{"type":3080,"value":3672},{"type":3075,"tag":3445,"props":4649,"children":4650},{"class":3447,"line":3477},[4651,4656,4661,4665,4669],{"type":3075,"tag":3445,"props":4652,"children":4653},{"style":3610},[4654],{"type":3080,"value":4655},"    \"",{"type":3075,"tag":3445,"props":4657,"children":4658},{"style":3460},[4659],{"type":3080,"value":4660},"storage",{"type":3075,"tag":3445,"props":4662,"children":4663},{"style":3610},[4664],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":4666,"children":4667},{"style":3610},[4668],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":4670,"children":4671},{"style":3610},[4672],{"type":3080,"value":3672},{"type":3075,"tag":3445,"props":4674,"children":4675},{"class":3447,"line":3486},[4676,4681,4685,4689,4693],{"type":3075,"tag":3445,"props":4677,"children":4678},{"style":3610},[4679],{"type":3080,"value":4680},"      \"",{"type":3075,"tag":3445,"props":4682,"children":4683},{"style":3885},[4684],{"type":3080,"value":4603},{"type":3075,"tag":3445,"props":4686,"children":4687},{"style":3610},[4688],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":4690,"children":4691},{"style":3610},[4692],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":4694,"children":4695},{"style":3610},[4696],{"type":3080,"value":3672},{"type":3075,"tag":3445,"props":4698,"children":4699},{"class":3447,"line":3039},[4700],{"type":3075,"tag":3445,"props":4701,"children":4702},{"style":3451},[4703],{"type":3080,"value":4704},"        \u002F\u002F storage name, you **must** use \"shield\" as the name\n",{"type":3075,"tag":3445,"props":4706,"children":4707},{"class":3447,"line":3511},[4708,4713,4718,4722,4726,4730,4735],{"type":3075,"tag":3445,"props":4709,"children":4710},{"style":3610},[4711],{"type":3080,"value":4712},"        \"",{"type":3075,"tag":3445,"props":4714,"children":4715},{"style":3619},[4716],{"type":3080,"value":4717},"driver",{"type":3075,"tag":3445,"props":4719,"children":4720},{"style":3610},[4721],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":4723,"children":4724},{"style":3610},[4725],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":4727,"children":4728},{"style":3610},[4729],{"type":3080,"value":4153},{"type":3075,"tag":3445,"props":4731,"children":4732},{"style":3466},[4733],{"type":3080,"value":4734},"memory",{"type":3075,"tag":3445,"props":4736,"children":4737},{"style":3610},[4738],{"type":3080,"value":4739},"\"\n",{"type":3075,"tag":3445,"props":4741,"children":4742},{"class":3447,"line":3519},[4743],{"type":3075,"tag":3445,"props":4744,"children":4745},{"style":3610},[4746],{"type":3080,"value":4747},"      }\n",{"type":3075,"tag":3445,"props":4749,"children":4750},{"class":3447,"line":3064},[4751],{"type":3075,"tag":3445,"props":4752,"children":4753},{"style":3610},[4754],{"type":3080,"value":4755},"    }\n",{"type":3075,"tag":3445,"props":4757,"children":4758},{"class":3447,"line":3715},[4759],{"type":3075,"tag":3445,"props":4760,"children":4761},{"style":3610},[4762],{"type":3080,"value":4418},{"type":3075,"tag":3445,"props":4764,"children":4765},{"class":3447,"line":3724},[4766],{"type":3075,"tag":3445,"props":4767,"children":4768},{"style":3610},[4769],{"type":3080,"value":4426},{"type":3075,"tag":3082,"props":4771,"children":4772},{},[4773],{"type":3080,"value":4774},"If you use for example redis, you can use the following configuration, define the host and port.",{"type":3075,"tag":3435,"props":4776,"children":4778},{"className":4608,"code":4777,"language":4610,"meta":3019,"style":3019},"{\n  \"nitro\": {\n    \"storage\": {\n      \"shield\": {\n        \"driver\": \"redis\",\n        \"host\": \"localhost\",\n        \"port\": 6379\n      }\n    }\n  }\n}\n",[4779],{"type":3075,"tag":3232,"props":4780,"children":4781},{"__ignoreMap":3019},[4782,4789,4812,4835,4858,4894,4931,4956,4963,4970,4977],{"type":3075,"tag":3445,"props":4783,"children":4784},{"class":3447,"line":3047},[4785],{"type":3075,"tag":3445,"props":4786,"children":4787},{"style":3610},[4788],{"type":3080,"value":3613},{"type":3075,"tag":3445,"props":4790,"children":4791},{"class":3447,"line":3043},[4792,4796,4800,4804,4808],{"type":3075,"tag":3445,"props":4793,"children":4794},{"style":3610},[4795],{"type":3080,"value":4629},{"type":3075,"tag":3445,"props":4797,"children":4798},{"style":4632},[4799],{"type":3080,"value":4635},{"type":3075,"tag":3445,"props":4801,"children":4802},{"style":3610},[4803],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":4805,"children":4806},{"style":3610},[4807],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":4809,"children":4810},{"style":3610},[4811],{"type":3080,"value":3672},{"type":3075,"tag":3445,"props":4813,"children":4814},{"class":3447,"line":3477},[4815,4819,4823,4827,4831],{"type":3075,"tag":3445,"props":4816,"children":4817},{"style":3610},[4818],{"type":3080,"value":4655},{"type":3075,"tag":3445,"props":4820,"children":4821},{"style":3460},[4822],{"type":3080,"value":4660},{"type":3075,"tag":3445,"props":4824,"children":4825},{"style":3610},[4826],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":4828,"children":4829},{"style":3610},[4830],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":4832,"children":4833},{"style":3610},[4834],{"type":3080,"value":3672},{"type":3075,"tag":3445,"props":4836,"children":4837},{"class":3447,"line":3486},[4838,4842,4846,4850,4854],{"type":3075,"tag":3445,"props":4839,"children":4840},{"style":3610},[4841],{"type":3080,"value":4680},{"type":3075,"tag":3445,"props":4843,"children":4844},{"style":3885},[4845],{"type":3080,"value":4603},{"type":3075,"tag":3445,"props":4847,"children":4848},{"style":3610},[4849],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":4851,"children":4852},{"style":3610},[4853],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":4855,"children":4856},{"style":3610},[4857],{"type":3080,"value":3672},{"type":3075,"tag":3445,"props":4859,"children":4860},{"class":3447,"line":3039},[4861,4865,4869,4873,4877,4881,4886,4890],{"type":3075,"tag":3445,"props":4862,"children":4863},{"style":3610},[4864],{"type":3080,"value":4712},{"type":3075,"tag":3445,"props":4866,"children":4867},{"style":3619},[4868],{"type":3080,"value":4717},{"type":3075,"tag":3445,"props":4870,"children":4871},{"style":3610},[4872],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":4874,"children":4875},{"style":3610},[4876],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":4878,"children":4879},{"style":3610},[4880],{"type":3080,"value":4153},{"type":3075,"tag":3445,"props":4882,"children":4883},{"style":3466},[4884],{"type":3080,"value":4885},"redis",{"type":3075,"tag":3445,"props":4887,"children":4888},{"style":3610},[4889],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":4891,"children":4892},{"style":3610},[4893],{"type":3080,"value":3655},{"type":3075,"tag":3445,"props":4895,"children":4896},{"class":3447,"line":3511},[4897,4901,4906,4910,4914,4918,4923,4927],{"type":3075,"tag":3445,"props":4898,"children":4899},{"style":3610},[4900],{"type":3080,"value":4712},{"type":3075,"tag":3445,"props":4902,"children":4903},{"style":3619},[4904],{"type":3080,"value":4905},"host",{"type":3075,"tag":3445,"props":4907,"children":4908},{"style":3610},[4909],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":4911,"children":4912},{"style":3610},[4913],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":4915,"children":4916},{"style":3610},[4917],{"type":3080,"value":4153},{"type":3075,"tag":3445,"props":4919,"children":4920},{"style":3466},[4921],{"type":3080,"value":4922},"localhost",{"type":3075,"tag":3445,"props":4924,"children":4925},{"style":3610},[4926],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":4928,"children":4929},{"style":3610},[4930],{"type":3080,"value":3655},{"type":3075,"tag":3445,"props":4932,"children":4933},{"class":3447,"line":3519},[4934,4938,4943,4947,4951],{"type":3075,"tag":3445,"props":4935,"children":4936},{"style":3610},[4937],{"type":3080,"value":4712},{"type":3075,"tag":3445,"props":4939,"children":4940},{"style":3619},[4941],{"type":3080,"value":4942},"port",{"type":3075,"tag":3445,"props":4944,"children":4945},{"style":3610},[4946],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":4948,"children":4949},{"style":3610},[4950],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":4952,"children":4953},{"style":3885},[4954],{"type":3080,"value":4955}," 6379\n",{"type":3075,"tag":3445,"props":4957,"children":4958},{"class":3447,"line":3064},[4959],{"type":3075,"tag":3445,"props":4960,"children":4961},{"style":3610},[4962],{"type":3080,"value":4747},{"type":3075,"tag":3445,"props":4964,"children":4965},{"class":3447,"line":3715},[4966],{"type":3075,"tag":3445,"props":4967,"children":4968},{"style":3610},[4969],{"type":3080,"value":4755},{"type":3075,"tag":3445,"props":4971,"children":4972},{"class":3447,"line":3724},[4973],{"type":3075,"tag":3445,"props":4974,"children":4975},{"style":3610},[4976],{"type":3080,"value":4418},{"type":3075,"tag":3445,"props":4978,"children":4979},{"class":3447,"line":3733},[4980],{"type":3075,"tag":3445,"props":4981,"children":4982},{"style":3610},[4983],{"type":3080,"value":4426},{"type":3075,"tag":3421,"props":4985,"children":4987},{"id":4986},"_4-schedule-bundled-cleanup-tasks-in-nuxtconfigts",[4988,4990],{"type":3080,"value":4989},"4. Schedule bundled cleanup tasks in ",{"type":3075,"tag":3232,"props":4991,"children":4993},{"className":4992},[],[4994],{"type":3080,"value":233},{"type":3075,"tag":3082,"props":4996,"children":4997},{},[4998,5000,5005,5007,5013,5015,5020,5022,5028,5030,5036,5038,5044,5046,5051,5053,5059],{"type":3080,"value":4999},"The module registers two Nitro tasks for you: ",{"type":3075,"tag":3232,"props":5001,"children":5003},{"className":5002},[],[5004],{"type":3080,"value":3329},{"type":3080,"value":5006}," (removes expired ",{"type":3075,"tag":3232,"props":5008,"children":5010},{"className":5009},[],[5011],{"type":3080,"value":5012},"ban:*",{"type":3080,"value":5014}," keys) and ",{"type":3075,"tag":3232,"props":5016,"children":5018},{"className":5017},[],[5019],{"type":3080,"value":3337},{"type":3080,"value":5021}," (removes stale ",{"type":3075,"tag":3232,"props":5023,"children":5025},{"className":5024},[],[5026],{"type":3080,"value":5027},"ip:*",{"type":3080,"value":5029}," keys using ",{"type":3075,"tag":3232,"props":5031,"children":5033},{"className":5032},[],[5034],{"type":3080,"value":5035},"ipTTL",{"type":3080,"value":5037},"). Turn on Nitro tasks and add ",{"type":3075,"tag":3232,"props":5039,"children":5041},{"className":5040},[],[5042],{"type":3080,"value":5043},"scheduledTasks",{"type":3080,"value":5045}," so they run on a cadence you choose. You do ",{"type":3075,"tag":3170,"props":5047,"children":5048},{},[5049],{"type":3080,"value":5050},"not",{"type":3080,"value":5052}," need files under ",{"type":3075,"tag":3232,"props":5054,"children":5056},{"className":5055},[],[5057],{"type":3080,"value":5058},"server\u002Ftasks\u002F",{"type":3080,"value":5060}," for this default setup.",{"type":3075,"tag":3435,"props":5062,"children":5064},{"className":4608,"code":5063,"language":4610,"meta":3019,"style":3019},"{\n  \"nitro\": {\n    \"experimental\": {\n      \"tasks\": true\n    },\n    \"scheduledTasks\": {\n      \"*\u002F15 * * * *\": [\"shield:cleanBans\"],\n      \"0 0 * * *\": [\"shield:cleanIpData\"]\n    }\n  }\n}\n",[5065],{"type":3075,"tag":3232,"props":5066,"children":5067},{"__ignoreMap":3019},[5068,5075,5098,5122,5147,5154,5177,5218,5259,5266,5273],{"type":3075,"tag":3445,"props":5069,"children":5070},{"class":3447,"line":3047},[5071],{"type":3075,"tag":3445,"props":5072,"children":5073},{"style":3610},[5074],{"type":3080,"value":3613},{"type":3075,"tag":3445,"props":5076,"children":5077},{"class":3447,"line":3043},[5078,5082,5086,5090,5094],{"type":3075,"tag":3445,"props":5079,"children":5080},{"style":3610},[5081],{"type":3080,"value":4629},{"type":3075,"tag":3445,"props":5083,"children":5084},{"style":4632},[5085],{"type":3080,"value":4635},{"type":3075,"tag":3445,"props":5087,"children":5088},{"style":3610},[5089],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":5091,"children":5092},{"style":3610},[5093],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":5095,"children":5096},{"style":3610},[5097],{"type":3080,"value":3672},{"type":3075,"tag":3445,"props":5099,"children":5100},{"class":3447,"line":3477},[5101,5105,5110,5114,5118],{"type":3075,"tag":3445,"props":5102,"children":5103},{"style":3610},[5104],{"type":3080,"value":4655},{"type":3075,"tag":3445,"props":5106,"children":5107},{"style":3460},[5108],{"type":3080,"value":5109},"experimental",{"type":3075,"tag":3445,"props":5111,"children":5112},{"style":3610},[5113],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":5115,"children":5116},{"style":3610},[5117],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":5119,"children":5120},{"style":3610},[5121],{"type":3080,"value":3672},{"type":3075,"tag":3445,"props":5123,"children":5124},{"class":3447,"line":3486},[5125,5129,5134,5138,5142],{"type":3075,"tag":3445,"props":5126,"children":5127},{"style":3610},[5128],{"type":3080,"value":4680},{"type":3075,"tag":3445,"props":5130,"children":5131},{"style":3885},[5132],{"type":3080,"value":5133},"tasks",{"type":3075,"tag":3445,"props":5135,"children":5136},{"style":3610},[5137],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":5139,"children":5140},{"style":3610},[5141],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":5143,"children":5144},{"style":3610},[5145],{"type":3080,"value":5146}," true\n",{"type":3075,"tag":3445,"props":5148,"children":5149},{"class":3447,"line":3039},[5150],{"type":3075,"tag":3445,"props":5151,"children":5152},{"style":3610},[5153],{"type":3080,"value":3721},{"type":3075,"tag":3445,"props":5155,"children":5156},{"class":3447,"line":3511},[5157,5161,5165,5169,5173],{"type":3075,"tag":3445,"props":5158,"children":5159},{"style":3610},[5160],{"type":3080,"value":4655},{"type":3075,"tag":3445,"props":5162,"children":5163},{"style":3460},[5164],{"type":3080,"value":5043},{"type":3075,"tag":3445,"props":5166,"children":5167},{"style":3610},[5168],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":5170,"children":5171},{"style":3610},[5172],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":5174,"children":5175},{"style":3610},[5176],{"type":3080,"value":3672},{"type":3075,"tag":3445,"props":5178,"children":5179},{"class":3447,"line":3519},[5180,5184,5189,5193,5197,5201,5205,5209,5213],{"type":3075,"tag":3445,"props":5181,"children":5182},{"style":3610},[5183],{"type":3080,"value":4680},{"type":3075,"tag":3445,"props":5185,"children":5186},{"style":3885},[5187],{"type":3080,"value":5188},"*\u002F15 * * * *",{"type":3075,"tag":3445,"props":5190,"children":5191},{"style":3610},[5192],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":5194,"children":5195},{"style":3610},[5196],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":5198,"children":5199},{"style":3610},[5200],{"type":3080,"value":3632},{"type":3075,"tag":3445,"props":5202,"children":5203},{"style":3610},[5204],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":5206,"children":5207},{"style":3466},[5208],{"type":3080,"value":3329},{"type":3075,"tag":3445,"props":5210,"children":5211},{"style":3610},[5212],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":5214,"children":5215},{"style":3610},[5216],{"type":3080,"value":5217},"],\n",{"type":3075,"tag":3445,"props":5219,"children":5220},{"class":3447,"line":3064},[5221,5225,5230,5234,5238,5242,5246,5250,5254],{"type":3075,"tag":3445,"props":5222,"children":5223},{"style":3610},[5224],{"type":3080,"value":4680},{"type":3075,"tag":3445,"props":5226,"children":5227},{"style":3885},[5228],{"type":3080,"value":5229},"0 0 * * *",{"type":3075,"tag":3445,"props":5231,"children":5232},{"style":3610},[5233],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":5235,"children":5236},{"style":3610},[5237],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":5239,"children":5240},{"style":3610},[5241],{"type":3080,"value":3632},{"type":3075,"tag":3445,"props":5243,"children":5244},{"style":3610},[5245],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":5247,"children":5248},{"style":3466},[5249],{"type":3080,"value":3337},{"type":3075,"tag":3445,"props":5251,"children":5252},{"style":3610},[5253],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":5255,"children":5256},{"style":3610},[5257],{"type":3080,"value":5258},"]\n",{"type":3075,"tag":3445,"props":5260,"children":5261},{"class":3447,"line":3715},[5262],{"type":3075,"tag":3445,"props":5263,"children":5264},{"style":3610},[5265],{"type":3080,"value":4755},{"type":3075,"tag":3445,"props":5267,"children":5268},{"class":3447,"line":3724},[5269],{"type":3075,"tag":3445,"props":5270,"children":5271},{"style":3610},[5272],{"type":3080,"value":4418},{"type":3075,"tag":3445,"props":5274,"children":5275},{"class":3447,"line":3733},[5276],{"type":3075,"tag":3445,"props":5277,"children":5278},{"style":3610},[5279],{"type":3080,"value":4426},{"type":3075,"tag":3082,"props":5281,"children":5282},{},[5283],{"type":3080,"value":5284},"Cron expressions are examples only: for instance, clean expired bans every 15 minutes and IP tracking data daily at midnight.",{"type":3075,"tag":3421,"props":5286,"children":5288},{"id":5287},"_5-optional-custom-cleanup-task-implementations",[5289],{"type":3080,"value":5290},"5. Optional: custom cleanup task implementations",{"type":3075,"tag":3082,"props":5292,"children":5293},{},[5294,5296,5301,5303,5308],{"type":3080,"value":5295},"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":3075,"tag":3170,"props":5297,"children":5298},{},[5299],{"type":3080,"value":5300},"another",{"type":3080,"value":5302}," task name and point ",{"type":3075,"tag":3232,"props":5304,"children":5306},{"className":5305},[],[5307],{"type":3080,"value":5043},{"type":3080,"value":5309}," at that name instead.",{"type":3075,"tag":5311,"props":5312,"children":5314},"h4",{"id":5313},"a-task-for-cleaning-expired-bans",[5315],{"type":3080,"value":5316},"a) Task for cleaning expired bans",{"type":3075,"tag":3082,"props":5318,"children":5319},{},[5320,5322,5328],{"type":3080,"value":5321},"Removes ban entries (",{"type":3075,"tag":3232,"props":5323,"children":5325},{"className":5324},[],[5326],{"type":3080,"value":5327},"ban:xxx.xxx.xxx.xxx",{"type":3080,"value":5329},") after the ban timestamp has passed.",{"type":3075,"tag":3082,"props":5331,"children":5332},{},[5333,5335,5341],{"type":3080,"value":5334},"Example ",{"type":3075,"tag":3232,"props":5336,"children":5338},{"className":5337},[],[5339],{"type":3080,"value":5340},"server\u002Ftasks\u002Fshield\u002FcleanBans.ts",{"type":3080,"value":5342}," (task name must match what you schedule):",{"type":3075,"tag":3435,"props":5344,"children":5348},{"className":5345,"code":5346,"language":5347,"meta":3019,"style":3019},"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",[5349],{"type":3075,"tag":3232,"props":5350,"children":5351},{"__ignoreMap":3019},[5352,5403,5410,5434,5450,5483,5512,5519,5541,5593,5600,5608,5667,5674,5699,5740,5791,5826,5863,5876,5883,5890,5952,5990,5997],{"type":3075,"tag":3445,"props":5353,"children":5354},{"class":3447,"line":3047},[5355,5360,5365,5370,5375,5380,5384,5389,5393,5398],{"type":3075,"tag":3445,"props":5356,"children":5357},{"style":3587},[5358],{"type":3080,"value":5359},"import",{"type":3075,"tag":3445,"props":5361,"children":5362},{"style":3610},[5363],{"type":3080,"value":5364}," {",{"type":3075,"tag":3445,"props":5366,"children":5367},{"style":3604},[5368],{"type":3080,"value":5369}," isActualBanTimestampExpired",{"type":3075,"tag":3445,"props":5371,"children":5372},{"style":3610},[5373],{"type":3080,"value":5374}," }",{"type":3075,"tag":3445,"props":5376,"children":5377},{"style":3587},[5378],{"type":3080,"value":5379}," from",{"type":3075,"tag":3445,"props":5381,"children":5382},{"style":3610},[5383],{"type":3080,"value":4153},{"type":3075,"tag":3445,"props":5385,"children":5386},{"style":3466},[5387],{"type":3080,"value":5388},"#imports",{"type":3075,"tag":3445,"props":5390,"children":5391},{"style":3610},[5392],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":5394,"children":5395},{"style":3610},[5396],{"type":3080,"value":5397},";",{"type":3075,"tag":3445,"props":5399,"children":5400},{"style":3451},[5401],{"type":3080,"value":5402}," \u002F\u002F Auto-imported utility from nuxt-api-shield\n",{"type":3075,"tag":3445,"props":5404,"children":5405},{"class":3447,"line":3043},[5406],{"type":3075,"tag":3445,"props":5407,"children":5408},{"emptyLinePlaceholder":1200},[5409],{"type":3080,"value":3483},{"type":3075,"tag":3445,"props":5411,"children":5412},{"class":3447,"line":3477},[5413,5417,5421,5426,5430],{"type":3075,"tag":3445,"props":5414,"children":5415},{"style":3587},[5416],{"type":3080,"value":3590},{"type":3075,"tag":3445,"props":5418,"children":5419},{"style":3587},[5420],{"type":3080,"value":3595},{"type":3075,"tag":3445,"props":5422,"children":5423},{"style":3598},[5424],{"type":3080,"value":5425}," defineTask",{"type":3075,"tag":3445,"props":5427,"children":5428},{"style":3604},[5429],{"type":3080,"value":3607},{"type":3075,"tag":3445,"props":5431,"children":5432},{"style":3610},[5433],{"type":3080,"value":3613},{"type":3075,"tag":3445,"props":5435,"children":5436},{"class":3447,"line":3486},[5437,5442,5446],{"type":3075,"tag":3445,"props":5438,"children":5439},{"style":3619},[5440],{"type":3080,"value":5441},"  meta",{"type":3075,"tag":3445,"props":5443,"children":5444},{"style":3610},[5445],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":5447,"children":5448},{"style":3610},[5449],{"type":3080,"value":3672},{"type":3075,"tag":3445,"props":5451,"children":5452},{"class":3447,"line":3039},[5453,5458,5462,5466,5470,5474,5478],{"type":3075,"tag":3445,"props":5454,"children":5455},{"style":3619},[5456],{"type":3080,"value":5457},"    name",{"type":3075,"tag":3445,"props":5459,"children":5460},{"style":3610},[5461],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":5463,"children":5464},{"style":3610},[5465],{"type":3080,"value":4153},{"type":3075,"tag":3445,"props":5467,"children":5468},{"style":3466},[5469],{"type":3080,"value":3329},{"type":3075,"tag":3445,"props":5471,"children":5472},{"style":3610},[5473],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":5475,"children":5476},{"style":3610},[5477],{"type":3080,"value":3847},{"type":3075,"tag":3445,"props":5479,"children":5480},{"style":3451},[5481],{"type":3080,"value":5482}," \u002F\u002F Match the name in scheduledTasks\n",{"type":3075,"tag":3445,"props":5484,"children":5485},{"class":3447,"line":3511},[5486,5491,5495,5499,5504,5508],{"type":3075,"tag":3445,"props":5487,"children":5488},{"style":3619},[5489],{"type":3080,"value":5490},"    description",{"type":3075,"tag":3445,"props":5492,"children":5493},{"style":3610},[5494],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":5496,"children":5497},{"style":3610},[5498],{"type":3080,"value":4153},{"type":3075,"tag":3445,"props":5500,"children":5501},{"style":3466},[5502],{"type":3080,"value":5503},"Clean expired bans from nuxt-api-shield storage.",{"type":3075,"tag":3445,"props":5505,"children":5506},{"style":3610},[5507],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":5509,"children":5510},{"style":3610},[5511],{"type":3080,"value":3655},{"type":3075,"tag":3445,"props":5513,"children":5514},{"class":3447,"line":3519},[5515],{"type":3075,"tag":3445,"props":5516,"children":5517},{"style":3610},[5518],{"type":3080,"value":3968},{"type":3075,"tag":3445,"props":5520,"children":5521},{"class":3447,"line":3064},[5522,5527,5532,5537],{"type":3075,"tag":3445,"props":5523,"children":5524},{"style":4632},[5525],{"type":3080,"value":5526},"  async",{"type":3075,"tag":3445,"props":5528,"children":5529},{"style":3619},[5530],{"type":3080,"value":5531}," run",{"type":3075,"tag":3445,"props":5533,"children":5534},{"style":3610},[5535],{"type":3080,"value":5536},"()",{"type":3075,"tag":3445,"props":5538,"children":5539},{"style":3610},[5540],{"type":3080,"value":3672},{"type":3075,"tag":3445,"props":5542,"children":5543},{"class":3447,"line":3715},[5544,5549,5554,5559,5564,5568,5572,5576,5580,5584,5588],{"type":3075,"tag":3445,"props":5545,"children":5546},{"style":4632},[5547],{"type":3080,"value":5548},"    const",{"type":3075,"tag":3445,"props":5550,"children":5551},{"style":3604},[5552],{"type":3080,"value":5553}," shieldStorage",{"type":3075,"tag":3445,"props":5555,"children":5556},{"style":3610},[5557],{"type":3080,"value":5558}," =",{"type":3075,"tag":3445,"props":5560,"children":5561},{"style":3598},[5562],{"type":3080,"value":5563}," useStorage",{"type":3075,"tag":3445,"props":5565,"children":5566},{"style":3619},[5567],{"type":3080,"value":3607},{"type":3075,"tag":3445,"props":5569,"children":5570},{"style":3610},[5571],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":5573,"children":5574},{"style":3466},[5575],{"type":3080,"value":4603},{"type":3075,"tag":3445,"props":5577,"children":5578},{"style":3610},[5579],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":5581,"children":5582},{"style":3619},[5583],{"type":3080,"value":3982},{"type":3075,"tag":3445,"props":5585,"children":5586},{"style":3610},[5587],{"type":3080,"value":5397},{"type":3075,"tag":3445,"props":5589,"children":5590},{"style":3451},[5591],{"type":3080,"value":5592}," \u002F\u002F Use your configured storage name\n",{"type":3075,"tag":3445,"props":5594,"children":5595},{"class":3447,"line":3724},[5596],{"type":3075,"tag":3445,"props":5597,"children":5598},{"emptyLinePlaceholder":1200},[5599],{"type":3080,"value":3483},{"type":3075,"tag":3445,"props":5601,"children":5602},{"class":3447,"line":3733},[5603],{"type":3075,"tag":3445,"props":5604,"children":5605},{"style":3451},[5606],{"type":3080,"value":5607},"    \u002F\u002F Only fetch keys that start with the 'ban:' prefix\n",{"type":3075,"tag":3445,"props":5609,"children":5610},{"class":3447,"line":3742},[5611,5615,5620,5624,5629,5633,5637,5642,5646,5650,5655,5659,5663],{"type":3075,"tag":3445,"props":5612,"children":5613},{"style":4632},[5614],{"type":3080,"value":5548},{"type":3075,"tag":3445,"props":5616,"children":5617},{"style":3604},[5618],{"type":3080,"value":5619}," banKeys",{"type":3075,"tag":3445,"props":5621,"children":5622},{"style":3610},[5623],{"type":3080,"value":5558},{"type":3075,"tag":3445,"props":5625,"children":5626},{"style":3587},[5627],{"type":3080,"value":5628}," await",{"type":3075,"tag":3445,"props":5630,"children":5631},{"style":3604},[5632],{"type":3080,"value":5553},{"type":3075,"tag":3445,"props":5634,"children":5635},{"style":3610},[5636],{"type":3080,"value":4574},{"type":3075,"tag":3445,"props":5638,"children":5639},{"style":3598},[5640],{"type":3080,"value":5641},"getKeys",{"type":3075,"tag":3445,"props":5643,"children":5644},{"style":3619},[5645],{"type":3080,"value":3607},{"type":3075,"tag":3445,"props":5647,"children":5648},{"style":3610},[5649],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":5651,"children":5652},{"style":3466},[5653],{"type":3080,"value":5654},"ban:",{"type":3075,"tag":3445,"props":5656,"children":5657},{"style":3610},[5658],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":5660,"children":5661},{"style":3619},[5662],{"type":3080,"value":3982},{"type":3075,"tag":3445,"props":5664,"children":5665},{"style":3610},[5666],{"type":3080,"value":3987},{"type":3075,"tag":3445,"props":5668,"children":5669},{"class":3447,"line":3751},[5670],{"type":3075,"tag":3445,"props":5671,"children":5672},{"emptyLinePlaceholder":1200},[5673],{"type":3080,"value":3483},{"type":3075,"tag":3445,"props":5675,"children":5676},{"class":3447,"line":3760},[5677,5682,5687,5691,5695],{"type":3075,"tag":3445,"props":5678,"children":5679},{"style":4632},[5680],{"type":3080,"value":5681},"    let",{"type":3075,"tag":3445,"props":5683,"children":5684},{"style":3604},[5685],{"type":3080,"value":5686}," cleanedCount",{"type":3075,"tag":3445,"props":5688,"children":5689},{"style":3610},[5690],{"type":3080,"value":5558},{"type":3075,"tag":3445,"props":5692,"children":5693},{"style":3885},[5694],{"type":3080,"value":4245},{"type":3075,"tag":3445,"props":5696,"children":5697},{"style":3610},[5698],{"type":3080,"value":3987},{"type":3075,"tag":3445,"props":5700,"children":5701},{"class":3447,"line":3769},[5702,5707,5712,5717,5722,5727,5731,5736],{"type":3075,"tag":3445,"props":5703,"children":5704},{"style":3587},[5705],{"type":3080,"value":5706},"    for",{"type":3075,"tag":3445,"props":5708,"children":5709},{"style":3619},[5710],{"type":3080,"value":5711}," (",{"type":3075,"tag":3445,"props":5713,"children":5714},{"style":4632},[5715],{"type":3080,"value":5716},"const",{"type":3075,"tag":3445,"props":5718,"children":5719},{"style":3604},[5720],{"type":3080,"value":5721}," key",{"type":3075,"tag":3445,"props":5723,"children":5724},{"style":3610},[5725],{"type":3080,"value":5726}," of",{"type":3075,"tag":3445,"props":5728,"children":5729},{"style":3604},[5730],{"type":3080,"value":5619},{"type":3075,"tag":3445,"props":5732,"children":5733},{"style":3619},[5734],{"type":3080,"value":5735},") ",{"type":3075,"tag":3445,"props":5737,"children":5738},{"style":3610},[5739],{"type":3080,"value":3613},{"type":3075,"tag":3445,"props":5741,"children":5742},{"class":3447,"line":3778},[5743,5748,5753,5757,5761,5765,5769,5774,5778,5783,5787],{"type":3075,"tag":3445,"props":5744,"children":5745},{"style":4632},[5746],{"type":3080,"value":5747},"      const",{"type":3075,"tag":3445,"props":5749,"children":5750},{"style":3604},[5751],{"type":3080,"value":5752}," bannedUntilRaw",{"type":3075,"tag":3445,"props":5754,"children":5755},{"style":3610},[5756],{"type":3080,"value":5558},{"type":3075,"tag":3445,"props":5758,"children":5759},{"style":3587},[5760],{"type":3080,"value":5628},{"type":3075,"tag":3445,"props":5762,"children":5763},{"style":3604},[5764],{"type":3080,"value":5553},{"type":3075,"tag":3445,"props":5766,"children":5767},{"style":3610},[5768],{"type":3080,"value":4574},{"type":3075,"tag":3445,"props":5770,"children":5771},{"style":3598},[5772],{"type":3080,"value":5773},"getItem",{"type":3075,"tag":3445,"props":5775,"children":5776},{"style":3619},[5777],{"type":3080,"value":3607},{"type":3075,"tag":3445,"props":5779,"children":5780},{"style":3604},[5781],{"type":3080,"value":5782},"key",{"type":3075,"tag":3445,"props":5784,"children":5785},{"style":3619},[5786],{"type":3080,"value":3982},{"type":3075,"tag":3445,"props":5788,"children":5789},{"style":3610},[5790],{"type":3080,"value":3987},{"type":3075,"tag":3445,"props":5792,"children":5793},{"class":3447,"line":3787},[5794,5799,5803,5808,5812,5817,5822],{"type":3075,"tag":3445,"props":5795,"children":5796},{"style":3587},[5797],{"type":3080,"value":5798},"      if",{"type":3075,"tag":3445,"props":5800,"children":5801},{"style":3619},[5802],{"type":3080,"value":5711},{"type":3075,"tag":3445,"props":5804,"children":5805},{"style":3598},[5806],{"type":3080,"value":5807},"isActualBanTimestampExpired",{"type":3075,"tag":3445,"props":5809,"children":5810},{"style":3619},[5811],{"type":3080,"value":3607},{"type":3075,"tag":3445,"props":5813,"children":5814},{"style":3604},[5815],{"type":3080,"value":5816},"bannedUntilRaw",{"type":3075,"tag":3445,"props":5818,"children":5819},{"style":3619},[5820],{"type":3080,"value":5821},")) ",{"type":3075,"tag":3445,"props":5823,"children":5824},{"style":3610},[5825],{"type":3080,"value":3613},{"type":3075,"tag":3445,"props":5827,"children":5828},{"class":3447,"line":3795},[5829,5834,5838,5842,5847,5851,5855,5859],{"type":3075,"tag":3445,"props":5830,"children":5831},{"style":3587},[5832],{"type":3080,"value":5833},"        await",{"type":3075,"tag":3445,"props":5835,"children":5836},{"style":3604},[5837],{"type":3080,"value":5553},{"type":3075,"tag":3445,"props":5839,"children":5840},{"style":3610},[5841],{"type":3080,"value":4574},{"type":3075,"tag":3445,"props":5843,"children":5844},{"style":3598},[5845],{"type":3080,"value":5846},"removeItem",{"type":3075,"tag":3445,"props":5848,"children":5849},{"style":3619},[5850],{"type":3080,"value":3607},{"type":3075,"tag":3445,"props":5852,"children":5853},{"style":3604},[5854],{"type":3080,"value":5782},{"type":3075,"tag":3445,"props":5856,"children":5857},{"style":3619},[5858],{"type":3080,"value":3982},{"type":3075,"tag":3445,"props":5860,"children":5861},{"style":3610},[5862],{"type":3080,"value":3987},{"type":3075,"tag":3445,"props":5864,"children":5865},{"class":3447,"line":3804},[5866,5871],{"type":3075,"tag":3445,"props":5867,"children":5868},{"style":3604},[5869],{"type":3080,"value":5870},"        cleanedCount",{"type":3075,"tag":3445,"props":5872,"children":5873},{"style":3610},[5874],{"type":3080,"value":5875},"++;\n",{"type":3075,"tag":3445,"props":5877,"children":5878},{"class":3447,"line":3813},[5879],{"type":3075,"tag":3445,"props":5880,"children":5881},{"style":3610},[5882],{"type":3080,"value":4747},{"type":3075,"tag":3445,"props":5884,"children":5885},{"class":3447,"line":3827},[5886],{"type":3075,"tag":3445,"props":5887,"children":5888},{"style":3610},[5889],{"type":3080,"value":4755},{"type":3075,"tag":3445,"props":5891,"children":5892},{"class":3447,"line":3855},[5893,5898,5902,5907,5911,5916,5921,5926,5931,5935,5940,5944,5948],{"type":3075,"tag":3445,"props":5894,"children":5895},{"style":3604},[5896],{"type":3080,"value":5897},"    console",{"type":3075,"tag":3445,"props":5899,"children":5900},{"style":3610},[5901],{"type":3080,"value":4574},{"type":3075,"tag":3445,"props":5903,"children":5904},{"style":3598},[5905],{"type":3080,"value":5906},"log",{"type":3075,"tag":3445,"props":5908,"children":5909},{"style":3619},[5910],{"type":3080,"value":3607},{"type":3075,"tag":3445,"props":5912,"children":5913},{"style":3610},[5914],{"type":3080,"value":5915},"`",{"type":3075,"tag":3445,"props":5917,"children":5918},{"style":3466},[5919],{"type":3080,"value":5920},"[nuxt-api-shield] Cleaned ",{"type":3075,"tag":3445,"props":5922,"children":5923},{"style":3610},[5924],{"type":3080,"value":5925},"${",{"type":3075,"tag":3445,"props":5927,"children":5928},{"style":3604},[5929],{"type":3080,"value":5930},"cleanedCount",{"type":3075,"tag":3445,"props":5932,"children":5933},{"style":3610},[5934],{"type":3080,"value":3977},{"type":3075,"tag":3445,"props":5936,"children":5937},{"style":3466},[5938],{"type":3080,"value":5939}," expired ban(s).",{"type":3075,"tag":3445,"props":5941,"children":5942},{"style":3610},[5943],{"type":3080,"value":5915},{"type":3075,"tag":3445,"props":5945,"children":5946},{"style":3619},[5947],{"type":3080,"value":3982},{"type":3075,"tag":3445,"props":5949,"children":5950},{"style":3610},[5951],{"type":3080,"value":3987},{"type":3075,"tag":3445,"props":5953,"children":5954},{"class":3447,"line":3863},[5955,5960,5964,5969,5973,5977,5981,5985],{"type":3075,"tag":3445,"props":5956,"children":5957},{"style":3587},[5958],{"type":3080,"value":5959},"    return",{"type":3075,"tag":3445,"props":5961,"children":5962},{"style":3610},[5963],{"type":3080,"value":5364},{"type":3075,"tag":3445,"props":5965,"children":5966},{"style":3619},[5967],{"type":3080,"value":5968}," result",{"type":3075,"tag":3445,"props":5970,"children":5971},{"style":3610},[5972],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":5974,"children":5975},{"style":3610},[5976],{"type":3080,"value":5364},{"type":3075,"tag":3445,"props":5978,"children":5979},{"style":3604},[5980],{"type":3080,"value":5686},{"type":3075,"tag":3445,"props":5982,"children":5983},{"style":3610},[5984],{"type":3080,"value":5374},{"type":3075,"tag":3445,"props":5986,"children":5987},{"style":3610},[5988],{"type":3080,"value":5989}," };\n",{"type":3075,"tag":3445,"props":5991,"children":5992},{"class":3447,"line":3872},[5993],{"type":3075,"tag":3445,"props":5994,"children":5995},{"style":3610},[5996],{"type":3080,"value":3968},{"type":3075,"tag":3445,"props":5998,"children":5999},{"class":3447,"line":3900},[6000,6004,6008],{"type":3075,"tag":3445,"props":6001,"children":6002},{"style":3610},[6003],{"type":3080,"value":3977},{"type":3075,"tag":3445,"props":6005,"children":6006},{"style":3604},[6007],{"type":3080,"value":3982},{"type":3075,"tag":3445,"props":6009,"children":6010},{"style":3610},[6011],{"type":3080,"value":3987},{"type":3075,"tag":3082,"props":6013,"children":6014},{},[6015,6016,6021,6023,6028,6030,6035],{"type":3080,"value":4445},{"type":3075,"tag":3232,"props":6017,"children":6019},{"className":6018},[],[6020],{"type":3080,"value":5807},{"type":3080,"value":6022}," utility is provided by ",{"type":3075,"tag":3232,"props":6024,"children":6026},{"className":6025},[],[6027],{"type":3080,"value":3016},{"type":3080,"value":6029}," and should be available via ",{"type":3075,"tag":3232,"props":6031,"children":6033},{"className":6032},[],[6034],{"type":3080,"value":5388},{"type":3080,"value":4574},{"type":3075,"tag":5311,"props":6037,"children":6039},{"id":6038},"b-task-for-cleaning-old-ip-tracking-data",[6040],{"type":3080,"value":6041},"b) Task for cleaning old IP tracking data",{"type":3075,"tag":3082,"props":6043,"children":6044},{},[6045,6047,6053,6055,6061,6063,6069],{"type":3080,"value":6046},"Cleans IP tracking entries (",{"type":3075,"tag":3232,"props":6048,"children":6050},{"className":6049},[],[6051],{"type":3080,"value":6052},"ip:xxx.xxx.xxx.xxx",{"type":3080,"value":6054},") whose ",{"type":3075,"tag":3232,"props":6056,"children":6058},{"className":6057},[],[6059],{"type":3080,"value":6060},"time",{"type":3080,"value":6062}," is older than ",{"type":3075,"tag":3232,"props":6064,"children":6066},{"className":6065},[],[6067],{"type":3080,"value":6068},"nuxtApiShield.ipTTL",{"type":3080,"value":6070}," (default 7 days), and drops malformed entries. That keeps storage from growing with one-off IPs that were never banned.",{"type":3075,"tag":3082,"props":6072,"children":6073},{},[6074,6075,6081],{"type":3080,"value":5334},{"type":3075,"tag":3232,"props":6076,"children":6078},{"className":6077},[],[6079],{"type":3080,"value":6080},"server\u002Ftasks\u002Fshield\u002FcleanIpData.ts",{"type":3080,"value":3627},{"type":3075,"tag":3435,"props":6083,"children":6085},{"className":5345,"code":6084,"language":5347,"meta":3019,"style":3019},"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",[6086],{"type":3075,"tag":3232,"props":6087,"children":6088},{"__ignoreMap":3019},[6089,6134,6174,6181,6204,6219,6250,6278,6285,6304,6347,6391,6398,6406,6438,6445,6493,6514,6530,6542,6609,6616,6649,6656,6713,6751,6774,6781,6816,6888,6895,6904,6969,7021,7058,7071,7080,7098,7107,7143,7155,7163,7171,7179,7199,7234,7247,7283,7291],{"type":3075,"tag":3445,"props":6090,"children":6091},{"class":3447,"line":3047},[6092,6096,6101,6105,6110,6114,6118,6122,6126,6130],{"type":3075,"tag":3445,"props":6093,"children":6094},{"style":3587},[6095],{"type":3080,"value":5359},{"type":3075,"tag":3445,"props":6097,"children":6098},{"style":3587},[6099],{"type":3080,"value":6100}," type",{"type":3075,"tag":3445,"props":6102,"children":6103},{"style":3610},[6104],{"type":3080,"value":5364},{"type":3075,"tag":3445,"props":6106,"children":6107},{"style":3604},[6108],{"type":3080,"value":6109}," RateLimit",{"type":3075,"tag":3445,"props":6111,"children":6112},{"style":3610},[6113],{"type":3080,"value":5374},{"type":3075,"tag":3445,"props":6115,"children":6116},{"style":3587},[6117],{"type":3080,"value":5379},{"type":3075,"tag":3445,"props":6119,"children":6120},{"style":3610},[6121],{"type":3080,"value":4153},{"type":3075,"tag":3445,"props":6123,"children":6124},{"style":3466},[6125],{"type":3080,"value":3016},{"type":3075,"tag":3445,"props":6127,"children":6128},{"style":3610},[6129],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":6131,"children":6132},{"style":3610},[6133],{"type":3080,"value":3987},{"type":3075,"tag":3445,"props":6135,"children":6136},{"class":3447,"line":3043},[6137,6141,6145,6150,6154,6158,6162,6166,6170],{"type":3075,"tag":3445,"props":6138,"children":6139},{"style":3587},[6140],{"type":3080,"value":5359},{"type":3075,"tag":3445,"props":6142,"children":6143},{"style":3610},[6144],{"type":3080,"value":5364},{"type":3075,"tag":3445,"props":6146,"children":6147},{"style":3604},[6148],{"type":3080,"value":6149}," useRuntimeConfig",{"type":3075,"tag":3445,"props":6151,"children":6152},{"style":3610},[6153],{"type":3080,"value":5374},{"type":3075,"tag":3445,"props":6155,"children":6156},{"style":3587},[6157],{"type":3080,"value":5379},{"type":3075,"tag":3445,"props":6159,"children":6160},{"style":3610},[6161],{"type":3080,"value":4153},{"type":3075,"tag":3445,"props":6163,"children":6164},{"style":3466},[6165],{"type":3080,"value":5388},{"type":3075,"tag":3445,"props":6167,"children":6168},{"style":3610},[6169],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":6171,"children":6172},{"style":3610},[6173],{"type":3080,"value":3987},{"type":3075,"tag":3445,"props":6175,"children":6176},{"class":3447,"line":3477},[6177],{"type":3075,"tag":3445,"props":6178,"children":6179},{"emptyLinePlaceholder":1200},[6180],{"type":3080,"value":3483},{"type":3075,"tag":3445,"props":6182,"children":6183},{"class":3447,"line":3486},[6184,6188,6192,6196,6200],{"type":3075,"tag":3445,"props":6185,"children":6186},{"style":3587},[6187],{"type":3080,"value":3590},{"type":3075,"tag":3445,"props":6189,"children":6190},{"style":3587},[6191],{"type":3080,"value":3595},{"type":3075,"tag":3445,"props":6193,"children":6194},{"style":3598},[6195],{"type":3080,"value":5425},{"type":3075,"tag":3445,"props":6197,"children":6198},{"style":3604},[6199],{"type":3080,"value":3607},{"type":3075,"tag":3445,"props":6201,"children":6202},{"style":3610},[6203],{"type":3080,"value":3613},{"type":3075,"tag":3445,"props":6205,"children":6206},{"class":3447,"line":3039},[6207,6211,6215],{"type":3075,"tag":3445,"props":6208,"children":6209},{"style":3619},[6210],{"type":3080,"value":5441},{"type":3075,"tag":3445,"props":6212,"children":6213},{"style":3610},[6214],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":6216,"children":6217},{"style":3610},[6218],{"type":3080,"value":3672},{"type":3075,"tag":3445,"props":6220,"children":6221},{"class":3447,"line":3511},[6222,6226,6230,6234,6238,6242,6246],{"type":3075,"tag":3445,"props":6223,"children":6224},{"style":3619},[6225],{"type":3080,"value":5457},{"type":3075,"tag":3445,"props":6227,"children":6228},{"style":3610},[6229],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":6231,"children":6232},{"style":3610},[6233],{"type":3080,"value":4153},{"type":3075,"tag":3445,"props":6235,"children":6236},{"style":3466},[6237],{"type":3080,"value":3337},{"type":3075,"tag":3445,"props":6239,"children":6240},{"style":3610},[6241],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":6243,"children":6244},{"style":3610},[6245],{"type":3080,"value":3847},{"type":3075,"tag":3445,"props":6247,"children":6248},{"style":3451},[6249],{"type":3080,"value":5482},{"type":3075,"tag":3445,"props":6251,"children":6252},{"class":3447,"line":3519},[6253,6257,6261,6265,6270,6274],{"type":3075,"tag":3445,"props":6254,"children":6255},{"style":3619},[6256],{"type":3080,"value":5490},{"type":3075,"tag":3445,"props":6258,"children":6259},{"style":3610},[6260],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":6262,"children":6263},{"style":3610},[6264],{"type":3080,"value":4153},{"type":3075,"tag":3445,"props":6266,"children":6267},{"style":3466},[6268],{"type":3080,"value":6269},"Clean old IP tracking data from nuxt-api-shield storage.",{"type":3075,"tag":3445,"props":6271,"children":6272},{"style":3610},[6273],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":6275,"children":6276},{"style":3610},[6277],{"type":3080,"value":3655},{"type":3075,"tag":3445,"props":6279,"children":6280},{"class":3447,"line":3064},[6281],{"type":3075,"tag":3445,"props":6282,"children":6283},{"style":3610},[6284],{"type":3080,"value":3968},{"type":3075,"tag":3445,"props":6286,"children":6287},{"class":3447,"line":3715},[6288,6292,6296,6300],{"type":3075,"tag":3445,"props":6289,"children":6290},{"style":4632},[6291],{"type":3080,"value":5526},{"type":3075,"tag":3445,"props":6293,"children":6294},{"style":3619},[6295],{"type":3080,"value":5531},{"type":3075,"tag":3445,"props":6297,"children":6298},{"style":3610},[6299],{"type":3080,"value":5536},{"type":3075,"tag":3445,"props":6301,"children":6302},{"style":3610},[6303],{"type":3080,"value":3672},{"type":3075,"tag":3445,"props":6305,"children":6306},{"class":3447,"line":3724},[6307,6311,6315,6319,6323,6327,6331,6335,6339,6343],{"type":3075,"tag":3445,"props":6308,"children":6309},{"style":4632},[6310],{"type":3080,"value":5548},{"type":3075,"tag":3445,"props":6312,"children":6313},{"style":3604},[6314],{"type":3080,"value":5553},{"type":3075,"tag":3445,"props":6316,"children":6317},{"style":3610},[6318],{"type":3080,"value":5558},{"type":3075,"tag":3445,"props":6320,"children":6321},{"style":3598},[6322],{"type":3080,"value":5563},{"type":3075,"tag":3445,"props":6324,"children":6325},{"style":3619},[6326],{"type":3080,"value":3607},{"type":3075,"tag":3445,"props":6328,"children":6329},{"style":3610},[6330],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":6332,"children":6333},{"style":3466},[6334],{"type":3080,"value":4603},{"type":3075,"tag":3445,"props":6336,"children":6337},{"style":3610},[6338],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":6340,"children":6341},{"style":3619},[6342],{"type":3080,"value":3982},{"type":3075,"tag":3445,"props":6344,"children":6345},{"style":3610},[6346],{"type":3080,"value":3987},{"type":3075,"tag":3445,"props":6348,"children":6349},{"class":3447,"line":3733},[6350,6354,6359,6363,6367,6371,6375,6379,6383,6387],{"type":3075,"tag":3445,"props":6351,"children":6352},{"style":4632},[6353],{"type":3080,"value":5548},{"type":3075,"tag":3445,"props":6355,"children":6356},{"style":3604},[6357],{"type":3080,"value":6358}," config",{"type":3075,"tag":3445,"props":6360,"children":6361},{"style":3610},[6362],{"type":3080,"value":5558},{"type":3075,"tag":3445,"props":6364,"children":6365},{"style":3598},[6366],{"type":3080,"value":6149},{"type":3075,"tag":3445,"props":6368,"children":6369},{"style":3619},[6370],{"type":3080,"value":5536},{"type":3075,"tag":3445,"props":6372,"children":6373},{"style":3610},[6374],{"type":3080,"value":4574},{"type":3075,"tag":3445,"props":6376,"children":6377},{"style":3604},[6378],{"type":3080,"value":180},{"type":3075,"tag":3445,"props":6380,"children":6381},{"style":3610},[6382],{"type":3080,"value":4574},{"type":3075,"tag":3445,"props":6384,"children":6385},{"style":3604},[6386],{"type":3080,"value":4003},{"type":3075,"tag":3445,"props":6388,"children":6389},{"style":3610},[6390],{"type":3080,"value":3987},{"type":3075,"tag":3445,"props":6392,"children":6393},{"class":3447,"line":3742},[6394],{"type":3075,"tag":3445,"props":6395,"children":6396},{"emptyLinePlaceholder":1200},[6397],{"type":3080,"value":3483},{"type":3075,"tag":3445,"props":6399,"children":6400},{"class":3447,"line":3751},[6401],{"type":3075,"tag":3445,"props":6402,"children":6403},{"style":3451},[6404],{"type":3080,"value":6405},"    \u002F\u002F ipTTL is expected to be in seconds from config (module applies default if not set by user)\n",{"type":3075,"tag":3445,"props":6407,"children":6408},{"class":3447,"line":3760},[6409,6413,6418,6422,6426,6430,6434],{"type":3075,"tag":3445,"props":6410,"children":6411},{"style":4632},[6412],{"type":3080,"value":5548},{"type":3075,"tag":3445,"props":6414,"children":6415},{"style":3604},[6416],{"type":3080,"value":6417}," ipTTLseconds",{"type":3075,"tag":3445,"props":6419,"children":6420},{"style":3610},[6421],{"type":3080,"value":5558},{"type":3075,"tag":3445,"props":6423,"children":6424},{"style":3604},[6425],{"type":3080,"value":6358},{"type":3075,"tag":3445,"props":6427,"children":6428},{"style":3610},[6429],{"type":3080,"value":4574},{"type":3075,"tag":3445,"props":6431,"children":6432},{"style":3604},[6433],{"type":3080,"value":5035},{"type":3075,"tag":3445,"props":6435,"children":6436},{"style":3610},[6437],{"type":3080,"value":3987},{"type":3075,"tag":3445,"props":6439,"children":6440},{"class":3447,"line":3769},[6441],{"type":3075,"tag":3445,"props":6442,"children":6443},{"emptyLinePlaceholder":1200},[6444],{"type":3080,"value":3483},{"type":3075,"tag":3445,"props":6446,"children":6447},{"class":3447,"line":3778},[6448,6453,6457,6462,6467,6472,6476,6481,6485,6489],{"type":3075,"tag":3445,"props":6449,"children":6450},{"style":3587},[6451],{"type":3080,"value":6452},"    if",{"type":3075,"tag":3445,"props":6454,"children":6455},{"style":3619},[6456],{"type":3080,"value":5711},{"type":3075,"tag":3445,"props":6458,"children":6459},{"style":3610},[6460],{"type":3080,"value":6461},"!",{"type":3075,"tag":3445,"props":6463,"children":6464},{"style":3604},[6465],{"type":3080,"value":6466},"ipTTLseconds",{"type":3075,"tag":3445,"props":6468,"children":6469},{"style":3610},[6470],{"type":3080,"value":6471}," ||",{"type":3075,"tag":3445,"props":6473,"children":6474},{"style":3604},[6475],{"type":3080,"value":6417},{"type":3075,"tag":3445,"props":6477,"children":6478},{"style":3610},[6479],{"type":3080,"value":6480}," \u003C=",{"type":3075,"tag":3445,"props":6482,"children":6483},{"style":3885},[6484],{"type":3080,"value":4245},{"type":3075,"tag":3445,"props":6486,"children":6487},{"style":3619},[6488],{"type":3080,"value":5735},{"type":3075,"tag":3445,"props":6490,"children":6491},{"style":3610},[6492],{"type":3080,"value":3613},{"type":3075,"tag":3445,"props":6494,"children":6495},{"class":3447,"line":3787},[6496,6501,6505,6509],{"type":3075,"tag":3445,"props":6497,"children":6498},{"style":3604},[6499],{"type":3080,"value":6500},"      console",{"type":3075,"tag":3445,"props":6502,"children":6503},{"style":3610},[6504],{"type":3080,"value":4574},{"type":3075,"tag":3445,"props":6506,"children":6507},{"style":3598},[6508],{"type":3080,"value":5906},{"type":3075,"tag":3445,"props":6510,"children":6511},{"style":3619},[6512],{"type":3080,"value":6513},"(\n",{"type":3075,"tag":3445,"props":6515,"children":6516},{"class":3447,"line":3795},[6517,6521,6526],{"type":3075,"tag":3445,"props":6518,"children":6519},{"style":3610},[6520],{"type":3080,"value":4712},{"type":3075,"tag":3445,"props":6522,"children":6523},{"style":3466},[6524],{"type":3080,"value":6525},"[nuxt-api-shield] IP data cleanup (ipTTL) is disabled or invalid.",{"type":3075,"tag":3445,"props":6527,"children":6528},{"style":3610},[6529],{"type":3080,"value":4739},{"type":3075,"tag":3445,"props":6531,"children":6532},{"class":3447,"line":3804},[6533,6538],{"type":3075,"tag":3445,"props":6534,"children":6535},{"style":3619},[6536],{"type":3080,"value":6537},"      )",{"type":3075,"tag":3445,"props":6539,"children":6540},{"style":3610},[6541],{"type":3080,"value":3987},{"type":3075,"tag":3445,"props":6543,"children":6544},{"class":3447,"line":3813},[6545,6550,6554,6558,6562,6566,6570,6574,6578,6583,6588,6592,6596,6601,6605],{"type":3075,"tag":3445,"props":6546,"children":6547},{"style":3587},[6548],{"type":3080,"value":6549},"      return",{"type":3075,"tag":3445,"props":6551,"children":6552},{"style":3610},[6553],{"type":3080,"value":5364},{"type":3075,"tag":3445,"props":6555,"children":6556},{"style":3619},[6557],{"type":3080,"value":5968},{"type":3075,"tag":3445,"props":6559,"children":6560},{"style":3610},[6561],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":6563,"children":6564},{"style":3610},[6565],{"type":3080,"value":5364},{"type":3075,"tag":3445,"props":6567,"children":6568},{"style":3619},[6569],{"type":3080,"value":5686},{"type":3075,"tag":3445,"props":6571,"children":6572},{"style":3610},[6573],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":6575,"children":6576},{"style":3885},[6577],{"type":3080,"value":4245},{"type":3075,"tag":3445,"props":6579,"children":6580},{"style":3610},[6581],{"type":3080,"value":6582}," },",{"type":3075,"tag":3445,"props":6584,"children":6585},{"style":3619},[6586],{"type":3080,"value":6587}," status",{"type":3075,"tag":3445,"props":6589,"children":6590},{"style":3610},[6591],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":6593,"children":6594},{"style":3610},[6595],{"type":3080,"value":4153},{"type":3075,"tag":3445,"props":6597,"children":6598},{"style":3466},[6599],{"type":3080,"value":6600},"disabled_or_invalid_ttl",{"type":3075,"tag":3445,"props":6602,"children":6603},{"style":3610},[6604],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":6606,"children":6607},{"style":3610},[6608],{"type":3080,"value":5989},{"type":3075,"tag":3445,"props":6610,"children":6611},{"class":3447,"line":3827},[6612],{"type":3075,"tag":3445,"props":6613,"children":6614},{"style":3610},[6615],{"type":3080,"value":4755},{"type":3075,"tag":3445,"props":6617,"children":6618},{"class":3447,"line":3855},[6619,6623,6628,6632,6636,6640,6645],{"type":3075,"tag":3445,"props":6620,"children":6621},{"style":4632},[6622],{"type":3080,"value":5548},{"type":3075,"tag":3445,"props":6624,"children":6625},{"style":3604},[6626],{"type":3080,"value":6627}," ipTTLms",{"type":3075,"tag":3445,"props":6629,"children":6630},{"style":3610},[6631],{"type":3080,"value":5558},{"type":3075,"tag":3445,"props":6633,"children":6634},{"style":3604},[6635],{"type":3080,"value":6417},{"type":3075,"tag":3445,"props":6637,"children":6638},{"style":3610},[6639],{"type":3080,"value":4343},{"type":3075,"tag":3445,"props":6641,"children":6642},{"style":3885},[6643],{"type":3080,"value":6644}," 1000",{"type":3075,"tag":3445,"props":6646,"children":6647},{"style":3610},[6648],{"type":3080,"value":3987},{"type":3075,"tag":3445,"props":6650,"children":6651},{"class":3447,"line":3863},[6652],{"type":3075,"tag":3445,"props":6653,"children":6654},{"emptyLinePlaceholder":1200},[6655],{"type":3080,"value":3483},{"type":3075,"tag":3445,"props":6657,"children":6658},{"class":3447,"line":3872},[6659,6663,6668,6672,6676,6680,6684,6688,6692,6696,6701,6705,6709],{"type":3075,"tag":3445,"props":6660,"children":6661},{"style":4632},[6662],{"type":3080,"value":5548},{"type":3075,"tag":3445,"props":6664,"children":6665},{"style":3604},[6666],{"type":3080,"value":6667}," ipKeys",{"type":3075,"tag":3445,"props":6669,"children":6670},{"style":3610},[6671],{"type":3080,"value":5558},{"type":3075,"tag":3445,"props":6673,"children":6674},{"style":3587},[6675],{"type":3080,"value":5628},{"type":3075,"tag":3445,"props":6677,"children":6678},{"style":3604},[6679],{"type":3080,"value":5553},{"type":3075,"tag":3445,"props":6681,"children":6682},{"style":3610},[6683],{"type":3080,"value":4574},{"type":3075,"tag":3445,"props":6685,"children":6686},{"style":3598},[6687],{"type":3080,"value":5641},{"type":3075,"tag":3445,"props":6689,"children":6690},{"style":3619},[6691],{"type":3080,"value":3607},{"type":3075,"tag":3445,"props":6693,"children":6694},{"style":3610},[6695],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":6697,"children":6698},{"style":3466},[6699],{"type":3080,"value":6700},"ip:",{"type":3075,"tag":3445,"props":6702,"children":6703},{"style":3610},[6704],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":6706,"children":6707},{"style":3619},[6708],{"type":3080,"value":3982},{"type":3075,"tag":3445,"props":6710,"children":6711},{"style":3610},[6712],{"type":3080,"value":3987},{"type":3075,"tag":3445,"props":6714,"children":6715},{"class":3447,"line":3900},[6716,6720,6725,6729,6734,6738,6743,6747],{"type":3075,"tag":3445,"props":6717,"children":6718},{"style":4632},[6719],{"type":3080,"value":5548},{"type":3075,"tag":3445,"props":6721,"children":6722},{"style":3604},[6723],{"type":3080,"value":6724}," currentTime",{"type":3075,"tag":3445,"props":6726,"children":6727},{"style":3610},[6728],{"type":3080,"value":5558},{"type":3075,"tag":3445,"props":6730,"children":6731},{"style":3604},[6732],{"type":3080,"value":6733}," Date",{"type":3075,"tag":3445,"props":6735,"children":6736},{"style":3610},[6737],{"type":3080,"value":4574},{"type":3075,"tag":3445,"props":6739,"children":6740},{"style":3598},[6741],{"type":3080,"value":6742},"now",{"type":3075,"tag":3445,"props":6744,"children":6745},{"style":3619},[6746],{"type":3080,"value":5536},{"type":3075,"tag":3445,"props":6748,"children":6749},{"style":3610},[6750],{"type":3080,"value":3987},{"type":3075,"tag":3445,"props":6752,"children":6753},{"class":3447,"line":3917},[6754,6758,6762,6766,6770],{"type":3075,"tag":3445,"props":6755,"children":6756},{"style":4632},[6757],{"type":3080,"value":5681},{"type":3075,"tag":3445,"props":6759,"children":6760},{"style":3604},[6761],{"type":3080,"value":5686},{"type":3075,"tag":3445,"props":6763,"children":6764},{"style":3610},[6765],{"type":3080,"value":5558},{"type":3075,"tag":3445,"props":6767,"children":6768},{"style":3885},[6769],{"type":3080,"value":4245},{"type":3075,"tag":3445,"props":6771,"children":6772},{"style":3610},[6773],{"type":3080,"value":3987},{"type":3075,"tag":3445,"props":6775,"children":6776},{"class":3447,"line":3926},[6777],{"type":3075,"tag":3445,"props":6778,"children":6779},{"emptyLinePlaceholder":1200},[6780],{"type":3080,"value":3483},{"type":3075,"tag":3445,"props":6782,"children":6783},{"class":3447,"line":3954},[6784,6788,6792,6796,6800,6804,6808,6812],{"type":3075,"tag":3445,"props":6785,"children":6786},{"style":3587},[6787],{"type":3080,"value":5706},{"type":3075,"tag":3445,"props":6789,"children":6790},{"style":3619},[6791],{"type":3080,"value":5711},{"type":3075,"tag":3445,"props":6793,"children":6794},{"style":4632},[6795],{"type":3080,"value":5716},{"type":3075,"tag":3445,"props":6797,"children":6798},{"style":3604},[6799],{"type":3080,"value":5721},{"type":3075,"tag":3445,"props":6801,"children":6802},{"style":3610},[6803],{"type":3080,"value":5726},{"type":3075,"tag":3445,"props":6805,"children":6806},{"style":3604},[6807],{"type":3080,"value":6667},{"type":3075,"tag":3445,"props":6809,"children":6810},{"style":3619},[6811],{"type":3080,"value":5735},{"type":3075,"tag":3445,"props":6813,"children":6814},{"style":3610},[6815],{"type":3080,"value":3613},{"type":3075,"tag":3445,"props":6817,"children":6818},{"class":3447,"line":3962},[6819,6823,6828,6832,6836,6841,6845,6849,6853,6857,6861,6865,6870,6874,6879,6884],{"type":3075,"tag":3445,"props":6820,"children":6821},{"style":4632},[6822],{"type":3080,"value":5747},{"type":3075,"tag":3445,"props":6824,"children":6825},{"style":3604},[6826],{"type":3080,"value":6827}," entry",{"type":3075,"tag":3445,"props":6829,"children":6830},{"style":3610},[6831],{"type":3080,"value":5558},{"type":3075,"tag":3445,"props":6833,"children":6834},{"style":3619},[6835],{"type":3080,"value":5711},{"type":3075,"tag":3445,"props":6837,"children":6838},{"style":3587},[6839],{"type":3080,"value":6840},"await",{"type":3075,"tag":3445,"props":6842,"children":6843},{"style":3604},[6844],{"type":3080,"value":5553},{"type":3075,"tag":3445,"props":6846,"children":6847},{"style":3610},[6848],{"type":3080,"value":4574},{"type":3075,"tag":3445,"props":6850,"children":6851},{"style":3598},[6852],{"type":3080,"value":5773},{"type":3075,"tag":3445,"props":6854,"children":6855},{"style":3619},[6856],{"type":3080,"value":3607},{"type":3075,"tag":3445,"props":6858,"children":6859},{"style":3604},[6860],{"type":3080,"value":5782},{"type":3075,"tag":3445,"props":6862,"children":6863},{"style":3619},[6864],{"type":3080,"value":5821},{"type":3075,"tag":3445,"props":6866,"children":6867},{"style":3587},[6868],{"type":3080,"value":6869},"as",{"type":3075,"tag":3445,"props":6871,"children":6872},{"style":3460},[6873],{"type":3080,"value":6109},{"type":3075,"tag":3445,"props":6875,"children":6876},{"style":3610},[6877],{"type":3080,"value":6878}," |",{"type":3075,"tag":3445,"props":6880,"children":6881},{"style":3460},[6882],{"type":3080,"value":6883}," null",{"type":3075,"tag":3445,"props":6885,"children":6886},{"style":3610},[6887],{"type":3080,"value":3987},{"type":3075,"tag":3445,"props":6889,"children":6890},{"class":3447,"line":3971},[6891],{"type":3075,"tag":3445,"props":6892,"children":6893},{"emptyLinePlaceholder":1200},[6894],{"type":3080,"value":3483},{"type":3075,"tag":3445,"props":6896,"children":6898},{"class":3447,"line":6897},31,[6899],{"type":3075,"tag":3445,"props":6900,"children":6901},{"style":3451},[6902],{"type":3080,"value":6903},"      \u002F\u002F Check if entry exists and has a numeric 'time' property\n",{"type":3075,"tag":3445,"props":6905,"children":6907},{"class":3447,"line":6906},32,[6908,6912,6916,6921,6926,6931,6935,6939,6943,6948,6952,6957,6961,6965],{"type":3075,"tag":3445,"props":6909,"children":6910},{"style":3587},[6911],{"type":3080,"value":5798},{"type":3075,"tag":3445,"props":6913,"children":6914},{"style":3619},[6915],{"type":3080,"value":5711},{"type":3075,"tag":3445,"props":6917,"children":6918},{"style":3604},[6919],{"type":3080,"value":6920},"entry",{"type":3075,"tag":3445,"props":6922,"children":6923},{"style":3610},[6924],{"type":3080,"value":6925}," &&",{"type":3075,"tag":3445,"props":6927,"children":6928},{"style":3610},[6929],{"type":3080,"value":6930}," typeof",{"type":3075,"tag":3445,"props":6932,"children":6933},{"style":3604},[6934],{"type":3080,"value":6827},{"type":3075,"tag":3445,"props":6936,"children":6937},{"style":3610},[6938],{"type":3080,"value":4574},{"type":3075,"tag":3445,"props":6940,"children":6941},{"style":3604},[6942],{"type":3080,"value":6060},{"type":3075,"tag":3445,"props":6944,"children":6945},{"style":3610},[6946],{"type":3080,"value":6947}," ===",{"type":3075,"tag":3445,"props":6949,"children":6950},{"style":3610},[6951],{"type":3080,"value":4153},{"type":3075,"tag":3445,"props":6953,"children":6954},{"style":3466},[6955],{"type":3080,"value":6956},"number",{"type":3075,"tag":3445,"props":6958,"children":6959},{"style":3610},[6960],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":6962,"children":6963},{"style":3619},[6964],{"type":3080,"value":5735},{"type":3075,"tag":3445,"props":6966,"children":6967},{"style":3610},[6968],{"type":3080,"value":3613},{"type":3075,"tag":3445,"props":6970,"children":6972},{"class":3447,"line":6971},33,[6973,6978,6982,6987,6992,6996,7000,7004,7009,7013,7017],{"type":3075,"tag":3445,"props":6974,"children":6975},{"style":3587},[6976],{"type":3080,"value":6977},"        if",{"type":3075,"tag":3445,"props":6979,"children":6980},{"style":3619},[6981],{"type":3080,"value":5711},{"type":3075,"tag":3445,"props":6983,"children":6984},{"style":3604},[6985],{"type":3080,"value":6986},"currentTime",{"type":3075,"tag":3445,"props":6988,"children":6989},{"style":3610},[6990],{"type":3080,"value":6991}," -",{"type":3075,"tag":3445,"props":6993,"children":6994},{"style":3604},[6995],{"type":3080,"value":6827},{"type":3075,"tag":3445,"props":6997,"children":6998},{"style":3610},[6999],{"type":3080,"value":4574},{"type":3075,"tag":3445,"props":7001,"children":7002},{"style":3604},[7003],{"type":3080,"value":6060},{"type":3075,"tag":3445,"props":7005,"children":7006},{"style":3610},[7007],{"type":3080,"value":7008}," >",{"type":3075,"tag":3445,"props":7010,"children":7011},{"style":3604},[7012],{"type":3080,"value":6627},{"type":3075,"tag":3445,"props":7014,"children":7015},{"style":3619},[7016],{"type":3080,"value":5735},{"type":3075,"tag":3445,"props":7018,"children":7019},{"style":3610},[7020],{"type":3080,"value":3613},{"type":3075,"tag":3445,"props":7022,"children":7024},{"class":3447,"line":7023},34,[7025,7030,7034,7038,7042,7046,7050,7054],{"type":3075,"tag":3445,"props":7026,"children":7027},{"style":3587},[7028],{"type":3080,"value":7029},"          await",{"type":3075,"tag":3445,"props":7031,"children":7032},{"style":3604},[7033],{"type":3080,"value":5553},{"type":3075,"tag":3445,"props":7035,"children":7036},{"style":3610},[7037],{"type":3080,"value":4574},{"type":3075,"tag":3445,"props":7039,"children":7040},{"style":3598},[7041],{"type":3080,"value":5846},{"type":3075,"tag":3445,"props":7043,"children":7044},{"style":3619},[7045],{"type":3080,"value":3607},{"type":3075,"tag":3445,"props":7047,"children":7048},{"style":3604},[7049],{"type":3080,"value":5782},{"type":3075,"tag":3445,"props":7051,"children":7052},{"style":3619},[7053],{"type":3080,"value":3982},{"type":3075,"tag":3445,"props":7055,"children":7056},{"style":3610},[7057],{"type":3080,"value":3987},{"type":3075,"tag":3445,"props":7059,"children":7061},{"class":3447,"line":7060},35,[7062,7067],{"type":3075,"tag":3445,"props":7063,"children":7064},{"style":3604},[7065],{"type":3080,"value":7066},"          cleanedCount",{"type":3075,"tag":3445,"props":7068,"children":7069},{"style":3610},[7070],{"type":3080,"value":5875},{"type":3075,"tag":3445,"props":7072,"children":7074},{"class":3447,"line":7073},36,[7075],{"type":3075,"tag":3445,"props":7076,"children":7077},{"style":3610},[7078],{"type":3080,"value":7079},"        }\n",{"type":3075,"tag":3445,"props":7081,"children":7083},{"class":3447,"line":7082},37,[7084,7089,7094],{"type":3075,"tag":3445,"props":7085,"children":7086},{"style":3610},[7087],{"type":3080,"value":7088},"      }",{"type":3075,"tag":3445,"props":7090,"children":7091},{"style":3587},[7092],{"type":3080,"value":7093}," else",{"type":3075,"tag":3445,"props":7095,"children":7096},{"style":3610},[7097],{"type":3080,"value":3672},{"type":3075,"tag":3445,"props":7099,"children":7101},{"class":3447,"line":7100},38,[7102],{"type":3075,"tag":3445,"props":7103,"children":7104},{"style":3451},[7105],{"type":3080,"value":7106},"        \u002F\u002F Clean up entries that are null, not an object, or missing a numeric 'time'\n",{"type":3075,"tag":3445,"props":7108,"children":7110},{"class":3447,"line":7109},39,[7111,7115,7119,7123,7127,7131,7135,7139],{"type":3075,"tag":3445,"props":7112,"children":7113},{"style":3587},[7114],{"type":3080,"value":5833},{"type":3075,"tag":3445,"props":7116,"children":7117},{"style":3604},[7118],{"type":3080,"value":5553},{"type":3075,"tag":3445,"props":7120,"children":7121},{"style":3610},[7122],{"type":3080,"value":4574},{"type":3075,"tag":3445,"props":7124,"children":7125},{"style":3598},[7126],{"type":3080,"value":5846},{"type":3075,"tag":3445,"props":7128,"children":7129},{"style":3619},[7130],{"type":3080,"value":3607},{"type":3075,"tag":3445,"props":7132,"children":7133},{"style":3604},[7134],{"type":3080,"value":5782},{"type":3075,"tag":3445,"props":7136,"children":7137},{"style":3619},[7138],{"type":3080,"value":3982},{"type":3075,"tag":3445,"props":7140,"children":7141},{"style":3610},[7142],{"type":3080,"value":3987},{"type":3075,"tag":3445,"props":7144,"children":7146},{"class":3447,"line":7145},40,[7147,7151],{"type":3075,"tag":3445,"props":7148,"children":7149},{"style":3604},[7150],{"type":3080,"value":5870},{"type":3075,"tag":3445,"props":7152,"children":7153},{"style":3610},[7154],{"type":3080,"value":5875},{"type":3075,"tag":3445,"props":7156,"children":7158},{"class":3447,"line":7157},41,[7159],{"type":3075,"tag":3445,"props":7160,"children":7161},{"style":3610},[7162],{"type":3080,"value":4747},{"type":3075,"tag":3445,"props":7164,"children":7166},{"class":3447,"line":7165},42,[7167],{"type":3075,"tag":3445,"props":7168,"children":7169},{"style":3610},[7170],{"type":3080,"value":4755},{"type":3075,"tag":3445,"props":7172,"children":7174},{"class":3447,"line":7173},43,[7175],{"type":3075,"tag":3445,"props":7176,"children":7177},{"emptyLinePlaceholder":1200},[7178],{"type":3080,"value":3483},{"type":3075,"tag":3445,"props":7180,"children":7182},{"class":3447,"line":7181},44,[7183,7187,7191,7195],{"type":3075,"tag":3445,"props":7184,"children":7185},{"style":3604},[7186],{"type":3080,"value":5897},{"type":3075,"tag":3445,"props":7188,"children":7189},{"style":3610},[7190],{"type":3080,"value":4574},{"type":3075,"tag":3445,"props":7192,"children":7193},{"style":3598},[7194],{"type":3080,"value":5906},{"type":3075,"tag":3445,"props":7196,"children":7197},{"style":3619},[7198],{"type":3080,"value":6513},{"type":3075,"tag":3445,"props":7200,"children":7202},{"class":3447,"line":7201},45,[7203,7208,7212,7216,7220,7224,7229],{"type":3075,"tag":3445,"props":7204,"children":7205},{"style":3610},[7206],{"type":3080,"value":7207},"      `",{"type":3075,"tag":3445,"props":7209,"children":7210},{"style":3466},[7211],{"type":3080,"value":5920},{"type":3075,"tag":3445,"props":7213,"children":7214},{"style":3610},[7215],{"type":3080,"value":5925},{"type":3075,"tag":3445,"props":7217,"children":7218},{"style":3604},[7219],{"type":3080,"value":5930},{"type":3075,"tag":3445,"props":7221,"children":7222},{"style":3610},[7223],{"type":3080,"value":3977},{"type":3075,"tag":3445,"props":7225,"children":7226},{"style":3466},[7227],{"type":3080,"value":7228}," old\u002Fmalformed IP data entries.",{"type":3075,"tag":3445,"props":7230,"children":7231},{"style":3610},[7232],{"type":3080,"value":7233},"`\n",{"type":3075,"tag":3445,"props":7235,"children":7237},{"class":3447,"line":7236},46,[7238,7243],{"type":3075,"tag":3445,"props":7239,"children":7240},{"style":3619},[7241],{"type":3080,"value":7242},"    )",{"type":3075,"tag":3445,"props":7244,"children":7245},{"style":3610},[7246],{"type":3080,"value":3987},{"type":3075,"tag":3445,"props":7248,"children":7250},{"class":3447,"line":7249},47,[7251,7255,7259,7263,7267,7271,7275,7279],{"type":3075,"tag":3445,"props":7252,"children":7253},{"style":3587},[7254],{"type":3080,"value":5959},{"type":3075,"tag":3445,"props":7256,"children":7257},{"style":3610},[7258],{"type":3080,"value":5364},{"type":3075,"tag":3445,"props":7260,"children":7261},{"style":3619},[7262],{"type":3080,"value":5968},{"type":3075,"tag":3445,"props":7264,"children":7265},{"style":3610},[7266],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":7268,"children":7269},{"style":3610},[7270],{"type":3080,"value":5364},{"type":3075,"tag":3445,"props":7272,"children":7273},{"style":3604},[7274],{"type":3080,"value":5686},{"type":3075,"tag":3445,"props":7276,"children":7277},{"style":3610},[7278],{"type":3080,"value":5374},{"type":3075,"tag":3445,"props":7280,"children":7281},{"style":3610},[7282],{"type":3080,"value":5989},{"type":3075,"tag":3445,"props":7284,"children":7286},{"class":3447,"line":7285},48,[7287],{"type":3075,"tag":3445,"props":7288,"children":7289},{"style":3610},[7290],{"type":3080,"value":3968},{"type":3075,"tag":3445,"props":7292,"children":7294},{"class":3447,"line":7293},49,[7295,7299,7303],{"type":3075,"tag":3445,"props":7296,"children":7297},{"style":3610},[7298],{"type":3080,"value":3977},{"type":3075,"tag":3445,"props":7300,"children":7301},{"style":3604},[7302],{"type":3080,"value":3982},{"type":3075,"tag":3445,"props":7304,"children":7305},{"style":3610},[7306],{"type":3080,"value":3987},{"type":3075,"tag":3082,"props":7308,"children":7309},{},[7310,7312,7317,7319,7324,7326,7331,7332,7338,7340,7345],{"type":3080,"value":7311},"Configure ",{"type":3075,"tag":3232,"props":7313,"children":7315},{"className":7314},[],[7316],{"type":3080,"value":5035},{"type":3080,"value":7318}," under ",{"type":3075,"tag":3232,"props":7320,"children":7322},{"className":7321},[],[7323],{"type":3080,"value":4003},{"type":3080,"value":7325}," if you want a TTL other than the default. Setting ",{"type":3075,"tag":3232,"props":7327,"children":7329},{"className":7328},[],[7330],{"type":3080,"value":5035},{"type":3080,"value":4588},{"type":3075,"tag":3232,"props":7333,"children":7335},{"className":7334},[],[7336],{"type":3080,"value":7337},"0",{"type":3080,"value":7339}," (or any non-positive value) makes the bundled ",{"type":3075,"tag":3232,"props":7341,"children":7343},{"className":7342},[],[7344],{"type":3080,"value":3337},{"type":3080,"value":7346}," task skip IP cleanup (it logs and exits).",{"type":3075,"tag":3082,"props":7348,"children":7349},{},[7350,7352,7358,7360,7365,7367,7372],{"type":3080,"value":7351},"If you add your own task file with the same ",{"type":3075,"tag":3232,"props":7353,"children":7355},{"className":7354},[],[7356],{"type":3080,"value":7357},"meta.name",{"type":3080,"value":7359}," as a bundled task (",{"type":3075,"tag":3232,"props":7361,"children":7363},{"className":7362},[],[7364],{"type":3080,"value":3329},{"type":3080,"value":7366}," or ",{"type":3075,"tag":3232,"props":7368,"children":7370},{"className":7369},[],[7371],{"type":3080,"value":3337},{"type":3080,"value":7373},"), Nitro may prefer your project file over the module—avoid duplicate names unless you intend to override.",{"type":3075,"tag":3158,"props":7375,"children":7377},{"id":7376},"production-deployment",[7378],{"type":3080,"value":7379},"Production Deployment",{"type":3075,"tag":3421,"props":7381,"children":7383},{"id":7382},"use-redis-as-the-storage-driver",[7384],{"type":3080,"value":7385},"Use Redis as the storage driver",{"type":3075,"tag":3082,"props":7387,"children":7388},{},[7389,7391,7396,7398,7403,7404,7410],{"type":3080,"value":7390},"For production deployments — especially with multiple server instances or significant traffic — ",{"type":3075,"tag":3170,"props":7392,"children":7393},{},[7394],{"type":3080,"value":7395},"Redis is the recommended storage driver",{"type":3080,"value":7397},". The ",{"type":3075,"tag":3232,"props":7399,"children":7401},{"className":7400},[],[7402],{"type":3080,"value":4734},{"type":3080,"value":3331},{"type":3075,"tag":3232,"props":7405,"children":7407},{"className":7406},[],[7408],{"type":3080,"value":7409},"fs",{"type":3080,"value":7411}," drivers have important limitations:",{"type":3075,"tag":7413,"props":7414,"children":7415},"table",{},[7416,7450],{"type":3075,"tag":7417,"props":7418,"children":7419},"thead",{},[7420],{"type":3075,"tag":7421,"props":7422,"children":7423},"tr",{},[7424,7430,7445],{"type":3075,"tag":7425,"props":7426,"children":7427},"th",{},[7428],{"type":3080,"value":7429},"Area",{"type":3075,"tag":7425,"props":7431,"children":7432},{},[7433,7438,7440],{"type":3075,"tag":3232,"props":7434,"children":7436},{"className":7435},[],[7437],{"type":3080,"value":4734},{"type":3080,"value":7439}," \u002F ",{"type":3075,"tag":3232,"props":7441,"children":7443},{"className":7442},[],[7444],{"type":3080,"value":7409},{"type":3075,"tag":7425,"props":7446,"children":7447},{},[7448],{"type":3080,"value":7449},"Redis",{"type":3075,"tag":7451,"props":7452,"children":7453},"tbody",{},[7454,7476,7497],{"type":3075,"tag":7421,"props":7455,"children":7456},{},[7457,7466,7471],{"type":3075,"tag":7458,"props":7459,"children":7460},"td",{},[7461],{"type":3075,"tag":3170,"props":7462,"children":7463},{},[7464],{"type":3080,"value":7465},"Multi-instance",{"type":3075,"tag":7458,"props":7467,"children":7468},{},[7469],{"type":3080,"value":7470},"Each process has its own isolated state. Rate limits reset per instance, allowing bypass.",{"type":3075,"tag":7458,"props":7472,"children":7473},{},[7474],{"type":3080,"value":7475},"Shared state across all instances.",{"type":3075,"tag":7421,"props":7477,"children":7478},{},[7479,7487,7492],{"type":3075,"tag":7458,"props":7480,"children":7481},{},[7482],{"type":3075,"tag":3170,"props":7483,"children":7484},{},[7485],{"type":3080,"value":7486},"Atomic operations",{"type":3075,"tag":7458,"props":7488,"children":7489},{},[7490],{"type":3080,"value":7491},"Read → increment → write is not atomic. Concurrent requests can both read the same count and exceed the limit simultaneously.",{"type":3075,"tag":7458,"props":7493,"children":7494},{},[7495],{"type":3080,"value":7496},"Single-threaded — reads and writes are naturally atomic. No race conditions.",{"type":3075,"tag":7421,"props":7498,"children":7499},{},[7500,7508,7534],{"type":3075,"tag":7458,"props":7501,"children":7502},{},[7503],{"type":3075,"tag":3170,"props":7504,"children":7505},{},[7506],{"type":3080,"value":7507},"Cleanup",{"type":3075,"tag":7458,"props":7509,"children":7510},{},[7511,7513,7518,7519,7524,7526,7532],{"type":3080,"value":7512},"Cleanup tasks (",{"type":3075,"tag":3232,"props":7514,"children":7516},{"className":7515},[],[7517],{"type":3080,"value":3329},{"type":3080,"value":3397},{"type":3075,"tag":3232,"props":7520,"children":7522},{"className":7521},[],[7523],{"type":3080,"value":3337},{"type":3080,"value":7525},") must scan all keys with ",{"type":3075,"tag":3232,"props":7527,"children":7529},{"className":7528},[],[7530],{"type":3080,"value":7531},"getKeys()",{"type":3080,"value":7533},". At scale this blocks the event loop.",{"type":3075,"tag":7458,"props":7535,"children":7536},{},[7537,7539,7545,7546,7552],{"type":3080,"value":7538},"Use ",{"type":3075,"tag":3232,"props":7540,"children":7542},{"className":7541},[],[7543],{"type":3080,"value":7544},"EXPIRE",{"type":3080,"value":7366},{"type":3075,"tag":3232,"props":7547,"children":7549},{"className":7548},[],[7550],{"type":3080,"value":7551},"TTL",{"type":3080,"value":7553}," natively — expired keys are reclaimed automatically without scanning.",{"type":3075,"tag":3082,"props":7555,"children":7556},{},[7557,7559,7564,7566,7571],{"type":3080,"value":7558},"To use Redis, configure the ",{"type":3075,"tag":3232,"props":7560,"children":7562},{"className":7561},[],[7563],{"type":3080,"value":4603},{"type":3080,"value":7565}," storage with the ",{"type":3075,"tag":3232,"props":7567,"children":7569},{"className":7568},[],[7570],{"type":3080,"value":4885},{"type":3080,"value":7572}," driver:",{"type":3075,"tag":3435,"props":7574,"children":7575},{"className":4608,"code":4777,"language":4610,"meta":3019,"style":3019},[7576],{"type":3075,"tag":3232,"props":7577,"children":7578},{"__ignoreMap":3019},[7579,7586,7609,7632,7655,7690,7725,7748,7755,7762,7769],{"type":3075,"tag":3445,"props":7580,"children":7581},{"class":3447,"line":3047},[7582],{"type":3075,"tag":3445,"props":7583,"children":7584},{"style":3610},[7585],{"type":3080,"value":3613},{"type":3075,"tag":3445,"props":7587,"children":7588},{"class":3447,"line":3043},[7589,7593,7597,7601,7605],{"type":3075,"tag":3445,"props":7590,"children":7591},{"style":3610},[7592],{"type":3080,"value":4629},{"type":3075,"tag":3445,"props":7594,"children":7595},{"style":4632},[7596],{"type":3080,"value":4635},{"type":3075,"tag":3445,"props":7598,"children":7599},{"style":3610},[7600],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":7602,"children":7603},{"style":3610},[7604],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":7606,"children":7607},{"style":3610},[7608],{"type":3080,"value":3672},{"type":3075,"tag":3445,"props":7610,"children":7611},{"class":3447,"line":3477},[7612,7616,7620,7624,7628],{"type":3075,"tag":3445,"props":7613,"children":7614},{"style":3610},[7615],{"type":3080,"value":4655},{"type":3075,"tag":3445,"props":7617,"children":7618},{"style":3460},[7619],{"type":3080,"value":4660},{"type":3075,"tag":3445,"props":7621,"children":7622},{"style":3610},[7623],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":7625,"children":7626},{"style":3610},[7627],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":7629,"children":7630},{"style":3610},[7631],{"type":3080,"value":3672},{"type":3075,"tag":3445,"props":7633,"children":7634},{"class":3447,"line":3486},[7635,7639,7643,7647,7651],{"type":3075,"tag":3445,"props":7636,"children":7637},{"style":3610},[7638],{"type":3080,"value":4680},{"type":3075,"tag":3445,"props":7640,"children":7641},{"style":3885},[7642],{"type":3080,"value":4603},{"type":3075,"tag":3445,"props":7644,"children":7645},{"style":3610},[7646],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":7648,"children":7649},{"style":3610},[7650],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":7652,"children":7653},{"style":3610},[7654],{"type":3080,"value":3672},{"type":3075,"tag":3445,"props":7656,"children":7657},{"class":3447,"line":3039},[7658,7662,7666,7670,7674,7678,7682,7686],{"type":3075,"tag":3445,"props":7659,"children":7660},{"style":3610},[7661],{"type":3080,"value":4712},{"type":3075,"tag":3445,"props":7663,"children":7664},{"style":3619},[7665],{"type":3080,"value":4717},{"type":3075,"tag":3445,"props":7667,"children":7668},{"style":3610},[7669],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":7671,"children":7672},{"style":3610},[7673],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":7675,"children":7676},{"style":3610},[7677],{"type":3080,"value":4153},{"type":3075,"tag":3445,"props":7679,"children":7680},{"style":3466},[7681],{"type":3080,"value":4885},{"type":3075,"tag":3445,"props":7683,"children":7684},{"style":3610},[7685],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":7687,"children":7688},{"style":3610},[7689],{"type":3080,"value":3655},{"type":3075,"tag":3445,"props":7691,"children":7692},{"class":3447,"line":3511},[7693,7697,7701,7705,7709,7713,7717,7721],{"type":3075,"tag":3445,"props":7694,"children":7695},{"style":3610},[7696],{"type":3080,"value":4712},{"type":3075,"tag":3445,"props":7698,"children":7699},{"style":3619},[7700],{"type":3080,"value":4905},{"type":3075,"tag":3445,"props":7702,"children":7703},{"style":3610},[7704],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":7706,"children":7707},{"style":3610},[7708],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":7710,"children":7711},{"style":3610},[7712],{"type":3080,"value":4153},{"type":3075,"tag":3445,"props":7714,"children":7715},{"style":3466},[7716],{"type":3080,"value":4922},{"type":3075,"tag":3445,"props":7718,"children":7719},{"style":3610},[7720],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":7722,"children":7723},{"style":3610},[7724],{"type":3080,"value":3655},{"type":3075,"tag":3445,"props":7726,"children":7727},{"class":3447,"line":3519},[7728,7732,7736,7740,7744],{"type":3075,"tag":3445,"props":7729,"children":7730},{"style":3610},[7731],{"type":3080,"value":4712},{"type":3075,"tag":3445,"props":7733,"children":7734},{"style":3619},[7735],{"type":3080,"value":4942},{"type":3075,"tag":3445,"props":7737,"children":7738},{"style":3610},[7739],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":7741,"children":7742},{"style":3610},[7743],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":7745,"children":7746},{"style":3885},[7747],{"type":3080,"value":4955},{"type":3075,"tag":3445,"props":7749,"children":7750},{"class":3447,"line":3064},[7751],{"type":3075,"tag":3445,"props":7752,"children":7753},{"style":3610},[7754],{"type":3080,"value":4747},{"type":3075,"tag":3445,"props":7756,"children":7757},{"class":3447,"line":3715},[7758],{"type":3075,"tag":3445,"props":7759,"children":7760},{"style":3610},[7761],{"type":3080,"value":4755},{"type":3075,"tag":3445,"props":7763,"children":7764},{"class":3447,"line":3724},[7765],{"type":3075,"tag":3445,"props":7766,"children":7767},{"style":3610},[7768],{"type":3080,"value":4418},{"type":3075,"tag":3445,"props":7770,"children":7771},{"class":3447,"line":3733},[7772],{"type":3075,"tag":3445,"props":7773,"children":7774},{"style":3610},[7775],{"type":3080,"value":4426},{"type":3075,"tag":3082,"props":7777,"children":7778},{},[7779,7781,7788],{"type":3080,"value":7780},"See the ",{"type":3075,"tag":3086,"props":7782,"children":7785},{"href":7783,"rel":7784},"https:\u002F\u002Funstorage.unjs.io\u002Fdrivers\u002Fredis",[3090],[7786],{"type":3080,"value":7787},"unstorage Redis driver docs",{"type":3080,"value":7789}," for all available options.",{"type":3075,"tag":3421,"props":7791,"children":7793},{"id":7792},"when-memory-fs-is-acceptable",[7794,7796,7801,7802,7807],{"type":3080,"value":7795},"When ",{"type":3075,"tag":3232,"props":7797,"children":7799},{"className":7798},[],[7800],{"type":3080,"value":4734},{"type":3080,"value":7439},{"type":3075,"tag":3232,"props":7803,"children":7805},{"className":7804},[],[7806],{"type":3080,"value":7409},{"type":3080,"value":7808}," is acceptable",{"type":3075,"tag":3082,"props":7810,"children":7811},{},[7812,7813,7818,7819,7824],{"type":3080,"value":4445},{"type":3075,"tag":3232,"props":7814,"children":7816},{"className":7815},[],[7817],{"type":3080,"value":4734},{"type":3080,"value":3331},{"type":3075,"tag":3232,"props":7820,"children":7822},{"className":7821},[],[7823],{"type":3080,"value":7409},{"type":3080,"value":7825}," drivers are fine for:",{"type":3075,"tag":3132,"props":7827,"children":7828},{},[7829,7834,7839],{"type":3075,"tag":3136,"props":7830,"children":7831},{},[7832],{"type":3080,"value":7833},"Single-instance deployments",{"type":3075,"tag":3136,"props":7835,"children":7836},{},[7837],{"type":3080,"value":7838},"Development environments",{"type":3075,"tag":3136,"props":7840,"children":7841},{},[7842],{"type":3080,"value":7843},"Low-traffic applications where occasional race conditions are acceptable",{"type":3075,"tag":3082,"props":7845,"children":7846},{},[7847],{"type":3080,"value":7848},"For everything else, use Redis.",{"type":3075,"tag":3158,"props":7850,"children":7852},{"id":7851},"fail2ban-integration",[7853],{"type":3080,"value":7854},"Fail2ban Integration",{"type":3075,"tag":3082,"props":7856,"children":7857},{},[7858,7860,7865,7867,7873],{"type":3080,"value":7859},"When a user exceeds the rate limit and gets banned, ",{"type":3075,"tag":3232,"props":7861,"children":7863},{"className":7862},[],[7864],{"type":3080,"value":3016},{"type":3080,"value":7866}," can write ban events to the log file in a ",{"type":3075,"tag":3232,"props":7868,"children":7870},{"className":7869},[],[7871],{"type":3080,"value":7872},"fail2ban",{"type":3080,"value":7874},"-compatible format. You can then configure fail2ban to watch these logs and automatically block the IP at the firewall level.",{"type":3075,"tag":3421,"props":7876,"children":7878},{"id":7877},"setup",[7879],{"type":3080,"value":7880},"Setup",{"type":3075,"tag":3082,"props":7882,"children":7883},{},[7884,7886,7892,7893,7898,7900,7906],{"type":3080,"value":7885},"Enable fail2ban logging by setting ",{"type":3075,"tag":3232,"props":7887,"children":7889},{"className":7888},[],[7890],{"type":3080,"value":7891},"log.fail2ban",{"type":3080,"value":4588},{"type":3075,"tag":3232,"props":7894,"children":7896},{"className":7895},[],[7897],{"type":3080,"value":4483},{"type":3080,"value":7899}," and configuring the ",{"type":3075,"tag":3232,"props":7901,"children":7903},{"className":7902},[],[7904],{"type":3080,"value":7905},"log.path",{"type":3080,"value":3627},{"type":3075,"tag":3435,"props":7908,"children":7910},{"className":3575,"code":7909,"language":3577,"meta":3019,"style":3019},"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",[7911],{"type":3075,"tag":3232,"props":7912,"children":7913},{"__ignoreMap":3019},[7914,7937,7972,7987,8003,8037,8063,8088,8095,8102],{"type":3075,"tag":3445,"props":7915,"children":7916},{"class":3447,"line":3047},[7917,7921,7925,7929,7933],{"type":3075,"tag":3445,"props":7918,"children":7919},{"style":3587},[7920],{"type":3080,"value":3590},{"type":3075,"tag":3445,"props":7922,"children":7923},{"style":3587},[7924],{"type":3080,"value":3595},{"type":3075,"tag":3445,"props":7926,"children":7927},{"style":3598},[7928],{"type":3080,"value":3601},{"type":3075,"tag":3445,"props":7930,"children":7931},{"style":3604},[7932],{"type":3080,"value":3607},{"type":3075,"tag":3445,"props":7934,"children":7935},{"style":3610},[7936],{"type":3080,"value":3613},{"type":3075,"tag":3445,"props":7938,"children":7939},{"class":3447,"line":3043},[7940,7944,7948,7952,7956,7960,7964,7968],{"type":3075,"tag":3445,"props":7941,"children":7942},{"style":3619},[7943],{"type":3080,"value":3622},{"type":3075,"tag":3445,"props":7945,"children":7946},{"style":3610},[7947],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":7949,"children":7950},{"style":3604},[7951],{"type":3080,"value":3632},{"type":3075,"tag":3445,"props":7953,"children":7954},{"style":3610},[7955],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":7957,"children":7958},{"style":3466},[7959],{"type":3080,"value":3016},{"type":3075,"tag":3445,"props":7961,"children":7962},{"style":3610},[7963],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":7965,"children":7966},{"style":3604},[7967],{"type":3080,"value":3650},{"type":3075,"tag":3445,"props":7969,"children":7970},{"style":3610},[7971],{"type":3080,"value":3655},{"type":3075,"tag":3445,"props":7973,"children":7974},{"class":3447,"line":3477},[7975,7979,7983],{"type":3075,"tag":3445,"props":7976,"children":7977},{"style":3619},[7978],{"type":3080,"value":3663},{"type":3075,"tag":3445,"props":7980,"children":7981},{"style":3610},[7982],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":7984,"children":7985},{"style":3610},[7986],{"type":3080,"value":3672},{"type":3075,"tag":3445,"props":7988,"children":7989},{"class":3447,"line":3486},[7990,7995,7999],{"type":3075,"tag":3445,"props":7991,"children":7992},{"style":3619},[7993],{"type":3080,"value":7994},"    log",{"type":3075,"tag":3445,"props":7996,"children":7997},{"style":3610},[7998],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":8000,"children":8001},{"style":3610},[8002],{"type":3080,"value":3672},{"type":3075,"tag":3445,"props":8004,"children":8005},{"class":3447,"line":3039},[8006,8011,8015,8019,8024,8028,8032],{"type":3075,"tag":3445,"props":8007,"children":8008},{"style":3619},[8009],{"type":3080,"value":8010},"      path",{"type":3075,"tag":3445,"props":8012,"children":8013},{"style":3610},[8014],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":8016,"children":8017},{"style":3610},[8018],{"type":3080,"value":4153},{"type":3075,"tag":3445,"props":8020,"children":8021},{"style":3466},[8022],{"type":3080,"value":8023},"\u002Fvar\u002Flog\u002Fnuxt-api-shield",{"type":3075,"tag":3445,"props":8025,"children":8026},{"style":3610},[8027],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":8029,"children":8030},{"style":3610},[8031],{"type":3080,"value":3847},{"type":3075,"tag":3445,"props":8033,"children":8034},{"style":3451},[8035],{"type":3080,"value":8036}," \u002F\u002F required — must be set\n",{"type":3075,"tag":3445,"props":8038,"children":8039},{"class":3447,"line":3511},[8040,8045,8049,8054,8058],{"type":3075,"tag":3445,"props":8041,"children":8042},{"style":3619},[8043],{"type":3080,"value":8044},"      attempts",{"type":3075,"tag":3445,"props":8046,"children":8047},{"style":3610},[8048],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":8050,"children":8051},{"style":3885},[8052],{"type":3080,"value":8053}," 1",{"type":3075,"tag":3445,"props":8055,"children":8056},{"style":3610},[8057],{"type":3080,"value":3847},{"type":3075,"tag":3445,"props":8059,"children":8060},{"style":3451},[8061],{"type":3080,"value":8062},"                       \u002F\u002F optional — threshold for regular request logging\n",{"type":3075,"tag":3445,"props":8064,"children":8065},{"class":3447,"line":3519},[8066,8071,8075,8079,8083],{"type":3075,"tag":3445,"props":8067,"children":8068},{"style":3619},[8069],{"type":3080,"value":8070},"      fail2ban",{"type":3075,"tag":3445,"props":8072,"children":8073},{"style":3610},[8074],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":8076,"children":8077},{"style":3939},[8078],{"type":3080,"value":4132},{"type":3075,"tag":3445,"props":8080,"children":8081},{"style":3610},[8082],{"type":3080,"value":3847},{"type":3075,"tag":3445,"props":8084,"children":8085},{"style":3451},[8086],{"type":3080,"value":8087},"                     \u002F\u002F enable fail2ban format\n",{"type":3075,"tag":3445,"props":8089,"children":8090},{"class":3447,"line":3064},[8091],{"type":3075,"tag":3445,"props":8092,"children":8093},{"style":3610},[8094],{"type":3080,"value":3721},{"type":3075,"tag":3445,"props":8096,"children":8097},{"class":3447,"line":3715},[8098],{"type":3075,"tag":3445,"props":8099,"children":8100},{"style":3610},[8101],{"type":3080,"value":3968},{"type":3075,"tag":3445,"props":8103,"children":8104},{"class":3447,"line":3724},[8105,8109],{"type":3075,"tag":3445,"props":8106,"children":8107},{"style":3610},[8108],{"type":3080,"value":3977},{"type":3075,"tag":3445,"props":8110,"children":8111},{"style":3604},[8112],{"type":3080,"value":8113},")\n",{"type":3075,"tag":3082,"props":8115,"children":8116},{},[8117],{"type":3080,"value":8118},"When enabled, every ban event writes a line like:",{"type":3075,"tag":3435,"props":8120,"children":8124},{"className":8121,"code":8123,"language":3080},[8122],"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",[8125],{"type":3075,"tag":3232,"props":8126,"children":8127},{"__ignoreMap":3019},[8128],{"type":3080,"value":8123},{"type":3075,"tag":3421,"props":8130,"children":8132},{"id":8131},"fail2ban-filter-configuration",[8133],{"type":3080,"value":8134},"Fail2ban filter configuration",{"type":3075,"tag":3082,"props":8136,"children":8137},{},[8138,8140,8146],{"type":3080,"value":8139},"Create ",{"type":3075,"tag":3232,"props":8141,"children":8143},{"className":8142},[],[8144],{"type":3080,"value":8145},"\u002Fetc\u002Ffail2ban\u002Ffilter.d\u002Fnuxt-api-shield.conf",{"type":3080,"value":3627},{"type":3075,"tag":3435,"props":8148,"children":8152},{"className":8149,"code":8150,"language":8151,"meta":3019,"style":3019},"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",[8153],{"type":3075,"tag":3232,"props":8154,"children":8155},{"__ignoreMap":3019},[8156,8164],{"type":3075,"tag":3445,"props":8157,"children":8158},{"class":3447,"line":3047},[8159],{"type":3075,"tag":3445,"props":8160,"children":8161},{"style":3610},[8162],{"type":3080,"value":8163},"[Definition]\n",{"type":3075,"tag":3445,"props":8165,"children":8166},{"class":3447,"line":3043},[8167,8172,8176],{"type":3075,"tag":3445,"props":8168,"children":8169},{"style":3619},[8170],{"type":3080,"value":8171},"failregex",{"type":3075,"tag":3445,"props":8173,"children":8174},{"style":3610},[8175],{"type":3080,"value":5558},{"type":3075,"tag":3445,"props":8177,"children":8178},{"style":3604},[8179],{"type":3080,"value":8180}," ^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2},\\d{3} nuxt-api-shield ban \u003CHOST>\n",{"type":3075,"tag":3421,"props":8182,"children":8184},{"id":8183},"jail-configuration",[8185],{"type":3080,"value":8186},"Jail configuration",{"type":3075,"tag":3082,"props":8188,"children":8189},{},[8190,8192,8198],{"type":3080,"value":8191},"Add a jail entry in ",{"type":3075,"tag":3232,"props":8193,"children":8195},{"className":8194},[],[8196],{"type":3080,"value":8197},"\u002Fetc\u002Ffail2ban\u002Fjail.local",{"type":3080,"value":3627},{"type":3075,"tag":3435,"props":8200,"children":8202},{"className":8149,"code":8201,"language":8151,"meta":3019,"style":3019},"[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",[8203],{"type":3075,"tag":3232,"props":8204,"children":8205},{"__ignoreMap":3019},[8206,8214,8231,8248,8265,8282,8299,8316,8332],{"type":3075,"tag":3445,"props":8207,"children":8208},{"class":3447,"line":3047},[8209],{"type":3075,"tag":3445,"props":8210,"children":8211},{"style":3610},[8212],{"type":3080,"value":8213},"[nuxt-api-shield]\n",{"type":3075,"tag":3445,"props":8215,"children":8216},{"class":3447,"line":3043},[8217,8222,8227],{"type":3075,"tag":3445,"props":8218,"children":8219},{"style":3619},[8220],{"type":3080,"value":8221},"enabled",{"type":3075,"tag":3445,"props":8223,"children":8224},{"style":3610},[8225],{"type":3080,"value":8226},"  =",{"type":3075,"tag":3445,"props":8228,"children":8229},{"style":3604},[8230],{"type":3080,"value":5146},{"type":3075,"tag":3445,"props":8232,"children":8233},{"class":3447,"line":3477},[8234,8239,8244],{"type":3075,"tag":3445,"props":8235,"children":8236},{"style":3619},[8237],{"type":3080,"value":8238},"filter",{"type":3075,"tag":3445,"props":8240,"children":8241},{"style":3610},[8242],{"type":3080,"value":8243},"   =",{"type":3075,"tag":3445,"props":8245,"children":8246},{"style":3604},[8247],{"type":3080,"value":3474},{"type":3075,"tag":3445,"props":8249,"children":8250},{"class":3447,"line":3486},[8251,8256,8260],{"type":3075,"tag":3445,"props":8252,"children":8253},{"style":3619},[8254],{"type":3080,"value":8255},"logpath",{"type":3075,"tag":3445,"props":8257,"children":8258},{"style":3610},[8259],{"type":3080,"value":8226},{"type":3075,"tag":3445,"props":8261,"children":8262},{"style":3604},[8263],{"type":3080,"value":8264}," \u002Fvar\u002Flog\u002Fnuxt-api-shield\u002Fshield-*.log\n",{"type":3075,"tag":3445,"props":8266,"children":8267},{"class":3447,"line":3039},[8268,8272,8277],{"type":3075,"tag":3445,"props":8269,"children":8270},{"style":3619},[8271],{"type":3080,"value":4942},{"type":3075,"tag":3445,"props":8273,"children":8274},{"style":3610},[8275],{"type":3080,"value":8276},"     =",{"type":3075,"tag":3445,"props":8278,"children":8279},{"style":3604},[8280],{"type":3080,"value":8281}," http,https\n",{"type":3075,"tag":3445,"props":8283,"children":8284},{"class":3447,"line":3511},[8285,8290,8294],{"type":3075,"tag":3445,"props":8286,"children":8287},{"style":3619},[8288],{"type":3080,"value":8289},"banaction",{"type":3075,"tag":3445,"props":8291,"children":8292},{"style":3610},[8293],{"type":3080,"value":5558},{"type":3075,"tag":3445,"props":8295,"children":8296},{"style":3604},[8297],{"type":3080,"value":8298}," iptables-multiport\n",{"type":3075,"tag":3445,"props":8300,"children":8301},{"class":3447,"line":3519},[8302,8307,8311],{"type":3075,"tag":3445,"props":8303,"children":8304},{"style":3619},[8305],{"type":3080,"value":8306},"maxretry",{"type":3075,"tag":3445,"props":8308,"children":8309},{"style":3610},[8310],{"type":3080,"value":5558},{"type":3075,"tag":3445,"props":8312,"children":8313},{"style":3604},[8314],{"type":3080,"value":8315}," 1\n",{"type":3075,"tag":3445,"props":8317,"children":8318},{"class":3447,"line":3064},[8319,8324,8328],{"type":3075,"tag":3445,"props":8320,"children":8321},{"style":3619},[8322],{"type":3080,"value":8323},"findtime",{"type":3075,"tag":3445,"props":8325,"children":8326},{"style":3610},[8327],{"type":3080,"value":5558},{"type":3075,"tag":3445,"props":8329,"children":8330},{"style":3604},[8331],{"type":3080,"value":8315},{"type":3075,"tag":3445,"props":8333,"children":8334},{"class":3447,"line":3715},[8335,8340,8344],{"type":3075,"tag":3445,"props":8336,"children":8337},{"style":3619},[8338],{"type":3080,"value":8339},"bantime",{"type":3075,"tag":3445,"props":8341,"children":8342},{"style":3610},[8343],{"type":3080,"value":8226},{"type":3075,"tag":3445,"props":8345,"children":8346},{"style":3604},[8347],{"type":3080,"value":8348}," 3600\n",{"type":3075,"tag":3082,"props":8350,"children":8351},{},[8352,8354,8359,8361,8367,8369,8375,8376,8382,8384,8389],{"type":3080,"value":8353},"Since ",{"type":3075,"tag":3232,"props":8355,"children":8357},{"className":8356},[],[8358],{"type":3080,"value":3016},{"type":3080,"value":8360}," already applies its own ban logic (configurable via ",{"type":3075,"tag":3232,"props":8362,"children":8364},{"className":8363},[],[8365],{"type":3080,"value":8366},"limit.ban",{"type":3080,"value":8368},"), set ",{"type":3075,"tag":3232,"props":8370,"children":8372},{"className":8371},[],[8373],{"type":3080,"value":8374},"maxretry = 1",{"type":3080,"value":3331},{"type":3075,"tag":3232,"props":8377,"children":8379},{"className":8378},[],[8380],{"type":3080,"value":8381},"findtime = 1",{"type":3080,"value":8383}," so fail2ban acts immediately on each ban log entry. Adjust ",{"type":3075,"tag":3232,"props":8385,"children":8387},{"className":8386},[],[8388],{"type":3080,"value":8339},{"type":3080,"value":8390}," to match or extend your module-level ban duration.",{"type":3075,"tag":3082,"props":8392,"children":8393},{},[8394],{"type":3080,"value":8395},"Restart fail2ban after adding the config:",{"type":3075,"tag":3435,"props":8397,"children":8399},{"className":3437,"code":8398,"language":3439,"meta":3019,"style":3019},"sudo systemctl restart fail2ban\n",[8400],{"type":3075,"tag":3232,"props":8401,"children":8402},{"__ignoreMap":3019},[8403],{"type":3075,"tag":3445,"props":8404,"children":8405},{"class":3447,"line":3047},[8406,8411,8416,8421],{"type":3075,"tag":3445,"props":8407,"children":8408},{"style":3460},[8409],{"type":3080,"value":8410},"sudo",{"type":3075,"tag":3445,"props":8412,"children":8413},{"style":3466},[8414],{"type":3080,"value":8415}," systemctl",{"type":3075,"tag":3445,"props":8417,"children":8418},{"style":3466},[8419],{"type":3080,"value":8420}," restart",{"type":3075,"tag":3445,"props":8422,"children":8423},{"style":3466},[8424],{"type":3080,"value":8425}," fail2ban\n",{"type":3075,"tag":8427,"props":8428,"children":8429},"blockquote",{},[8430],{"type":3075,"tag":3082,"props":8431,"children":8432},{},[8433,8438,8440,8445],{"type":3075,"tag":3170,"props":8434,"children":8435},{},[8436],{"type":3080,"value":8437},"Note:",{"type":3080,"value":8439}," The ",{"type":3075,"tag":3232,"props":8441,"children":8443},{"className":8442},[],[8444],{"type":3080,"value":7905},{"type":3080,"value":8446}," directory must be readable by the fail2ban service. Ensure permissions are set accordingly.",{"type":3075,"tag":3158,"props":8448,"children":8450},{"id":8449},"typescript-types",[8451],{"type":3080,"value":8452},"TypeScript Types",{"type":3075,"tag":3082,"props":8454,"children":8455},{},[8456],{"type":3080,"value":8457},"The module exports TypeScript types that you can use in your application:",{"type":3075,"tag":3421,"props":8459,"children":8461},{"id":8460},"ratelimit-type",[8462,8468],{"type":3075,"tag":3232,"props":8463,"children":8465},{"className":8464},[],[8466],{"type":3080,"value":8467},"RateLimit",{"type":3080,"value":8469}," Type",{"type":3075,"tag":3082,"props":8471,"children":8472},{},[8473,8474,8479],{"type":3080,"value":4445},{"type":3075,"tag":3232,"props":8475,"children":8477},{"className":8476},[],[8478],{"type":3080,"value":8467},{"type":3080,"value":8480}," type represents the structure of rate limit data stored for each IP address:",{"type":3075,"tag":3435,"props":8482,"children":8484},{"className":5345,"code":8483,"language":5347,"meta":3019,"style":3019},"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",[8485],{"type":3075,"tag":3232,"props":8486,"children":8487},{"__ignoreMap":3019},[8488,8531,8538,8546,8554,8567,8580],{"type":3075,"tag":3445,"props":8489,"children":8490},{"class":3447,"line":3047},[8491,8495,8499,8503,8507,8511,8515,8519,8523,8527],{"type":3075,"tag":3445,"props":8492,"children":8493},{"style":3587},[8494],{"type":3080,"value":5359},{"type":3075,"tag":3445,"props":8496,"children":8497},{"style":3587},[8498],{"type":3080,"value":6100},{"type":3075,"tag":3445,"props":8500,"children":8501},{"style":3610},[8502],{"type":3080,"value":5364},{"type":3075,"tag":3445,"props":8504,"children":8505},{"style":3604},[8506],{"type":3080,"value":6109},{"type":3075,"tag":3445,"props":8508,"children":8509},{"style":3610},[8510],{"type":3080,"value":5374},{"type":3075,"tag":3445,"props":8512,"children":8513},{"style":3587},[8514],{"type":3080,"value":5379},{"type":3075,"tag":3445,"props":8516,"children":8517},{"style":3610},[8518],{"type":3080,"value":4153},{"type":3075,"tag":3445,"props":8520,"children":8521},{"style":3466},[8522],{"type":3080,"value":3016},{"type":3075,"tag":3445,"props":8524,"children":8525},{"style":3610},[8526],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":8528,"children":8529},{"style":3610},[8530],{"type":3080,"value":3987},{"type":3075,"tag":3445,"props":8532,"children":8533},{"class":3447,"line":3043},[8534],{"type":3075,"tag":3445,"props":8535,"children":8536},{"emptyLinePlaceholder":1200},[8537],{"type":3080,"value":3483},{"type":3075,"tag":3445,"props":8539,"children":8540},{"class":3447,"line":3477},[8541],{"type":3075,"tag":3445,"props":8542,"children":8543},{"style":3451},[8544],{"type":3080,"value":8545},"\u002F\u002F RateLimit structure:\n",{"type":3075,"tag":3445,"props":8547,"children":8548},{"class":3447,"line":3486},[8549],{"type":3075,"tag":3445,"props":8550,"children":8551},{"style":3451},[8552],{"type":3080,"value":8553},"\u002F\u002F {\n",{"type":3075,"tag":3445,"props":8555,"children":8556},{"class":3447,"line":3039},[8557,8562],{"type":3075,"tag":3445,"props":8558,"children":8559},{"style":3451},[8560],{"type":3080,"value":8561},"\u002F\u002F   count: number",{"type":3075,"tag":3445,"props":8563,"children":8564},{"style":3451},[8565],{"type":3080,"value":8566},"  \u002F\u002F Number of requests made\n",{"type":3075,"tag":3445,"props":8568,"children":8569},{"class":3447,"line":3511},[8570,8575],{"type":3075,"tag":3445,"props":8571,"children":8572},{"style":3451},[8573],{"type":3080,"value":8574},"\u002F\u002F   time: number",{"type":3075,"tag":3445,"props":8576,"children":8577},{"style":3451},[8578],{"type":3080,"value":8579},"   \u002F\u002F Timestamp of the last request\n",{"type":3075,"tag":3445,"props":8581,"children":8582},{"class":3447,"line":3519},[8583],{"type":3075,"tag":3445,"props":8584,"children":8585},{"style":3451},[8586],{"type":3080,"value":8587},"\u002F\u002F }\n",{"type":3075,"tag":3082,"props":8589,"children":8590},{},[8591],{"type":3075,"tag":3170,"props":8592,"children":8593},{},[8594],{"type":3080,"value":8595},"Usage Example:",{"type":3075,"tag":3435,"props":8597,"children":8599},{"className":5345,"code":8598,"language":5347,"meta":3019,"style":3019},"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",[8600],{"type":3075,"tag":3232,"props":8601,"children":8602},{"__ignoreMap":3019},[8603,8646,8685,8692,8737,8770,8831,8838,8855,8922,9003],{"type":3075,"tag":3445,"props":8604,"children":8605},{"class":3447,"line":3047},[8606,8610,8614,8618,8622,8626,8630,8634,8638,8642],{"type":3075,"tag":3445,"props":8607,"children":8608},{"style":3587},[8609],{"type":3080,"value":5359},{"type":3075,"tag":3445,"props":8611,"children":8612},{"style":3587},[8613],{"type":3080,"value":6100},{"type":3075,"tag":3445,"props":8615,"children":8616},{"style":3610},[8617],{"type":3080,"value":5364},{"type":3075,"tag":3445,"props":8619,"children":8620},{"style":3604},[8621],{"type":3080,"value":6109},{"type":3075,"tag":3445,"props":8623,"children":8624},{"style":3610},[8625],{"type":3080,"value":5374},{"type":3075,"tag":3445,"props":8627,"children":8628},{"style":3587},[8629],{"type":3080,"value":5379},{"type":3075,"tag":3445,"props":8631,"children":8632},{"style":3610},[8633],{"type":3080,"value":4153},{"type":3075,"tag":3445,"props":8635,"children":8636},{"style":3466},[8637],{"type":3080,"value":3016},{"type":3075,"tag":3445,"props":8639,"children":8640},{"style":3610},[8641],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":8643,"children":8644},{"style":3610},[8645],{"type":3080,"value":3987},{"type":3075,"tag":3445,"props":8647,"children":8648},{"class":3447,"line":3043},[8649,8653,8657,8661,8665,8669,8673,8677,8681],{"type":3075,"tag":3445,"props":8650,"children":8651},{"style":3587},[8652],{"type":3080,"value":5359},{"type":3075,"tag":3445,"props":8654,"children":8655},{"style":3610},[8656],{"type":3080,"value":5364},{"type":3075,"tag":3445,"props":8658,"children":8659},{"style":3604},[8660],{"type":3080,"value":5563},{"type":3075,"tag":3445,"props":8662,"children":8663},{"style":3610},[8664],{"type":3080,"value":5374},{"type":3075,"tag":3445,"props":8666,"children":8667},{"style":3587},[8668],{"type":3080,"value":5379},{"type":3075,"tag":3445,"props":8670,"children":8671},{"style":3610},[8672],{"type":3080,"value":4153},{"type":3075,"tag":3445,"props":8674,"children":8675},{"style":3466},[8676],{"type":3080,"value":5388},{"type":3075,"tag":3445,"props":8678,"children":8679},{"style":3610},[8680],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":8682,"children":8683},{"style":3610},[8684],{"type":3080,"value":3987},{"type":3075,"tag":3445,"props":8686,"children":8687},{"class":3447,"line":3477},[8688],{"type":3075,"tag":3445,"props":8689,"children":8690},{"emptyLinePlaceholder":1200},[8691],{"type":3080,"value":3483},{"type":3075,"tag":3445,"props":8693,"children":8694},{"class":3447,"line":3486},[8695,8699,8704,8709,8713,8717,8721,8725,8729,8733],{"type":3075,"tag":3445,"props":8696,"children":8697},{"style":4632},[8698],{"type":3080,"value":5716},{"type":3075,"tag":3445,"props":8700,"children":8701},{"style":3604},[8702],{"type":3080,"value":8703}," shieldStorage ",{"type":3075,"tag":3445,"props":8705,"children":8706},{"style":3610},[8707],{"type":3080,"value":8708},"=",{"type":3075,"tag":3445,"props":8710,"children":8711},{"style":3598},[8712],{"type":3080,"value":5563},{"type":3075,"tag":3445,"props":8714,"children":8715},{"style":3604},[8716],{"type":3080,"value":3607},{"type":3075,"tag":3445,"props":8718,"children":8719},{"style":3610},[8720],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":8722,"children":8723},{"style":3466},[8724],{"type":3080,"value":4603},{"type":3075,"tag":3445,"props":8726,"children":8727},{"style":3610},[8728],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":8730,"children":8731},{"style":3604},[8732],{"type":3080,"value":3982},{"type":3075,"tag":3445,"props":8734,"children":8735},{"style":3610},[8736],{"type":3080,"value":3987},{"type":3075,"tag":3445,"props":8738,"children":8739},{"class":3447,"line":3039},[8740,8744,8749,8753,8757,8762,8766],{"type":3075,"tag":3445,"props":8741,"children":8742},{"style":4632},[8743],{"type":3080,"value":5716},{"type":3075,"tag":3445,"props":8745,"children":8746},{"style":3604},[8747],{"type":3080,"value":8748}," ipKey ",{"type":3075,"tag":3445,"props":8750,"children":8751},{"style":3610},[8752],{"type":3080,"value":8708},{"type":3075,"tag":3445,"props":8754,"children":8755},{"style":3610},[8756],{"type":3080,"value":4153},{"type":3075,"tag":3445,"props":8758,"children":8759},{"style":3466},[8760],{"type":3080,"value":8761},"ip:192.168.1.1",{"type":3075,"tag":3445,"props":8763,"children":8764},{"style":3610},[8765],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":8767,"children":8768},{"style":3610},[8769],{"type":3080,"value":3987},{"type":3075,"tag":3445,"props":8771,"children":8772},{"class":3447,"line":3511},[8773,8777,8782,8786,8790,8794,8798,8802,8806,8811,8815,8819,8823,8827],{"type":3075,"tag":3445,"props":8774,"children":8775},{"style":4632},[8776],{"type":3080,"value":5716},{"type":3075,"tag":3445,"props":8778,"children":8779},{"style":3604},[8780],{"type":3080,"value":8781}," entry ",{"type":3075,"tag":3445,"props":8783,"children":8784},{"style":3610},[8785],{"type":3080,"value":8708},{"type":3075,"tag":3445,"props":8787,"children":8788},{"style":3604},[8789],{"type":3080,"value":5711},{"type":3075,"tag":3445,"props":8791,"children":8792},{"style":3587},[8793],{"type":3080,"value":6840},{"type":3075,"tag":3445,"props":8795,"children":8796},{"style":3604},[8797],{"type":3080,"value":5553},{"type":3075,"tag":3445,"props":8799,"children":8800},{"style":3610},[8801],{"type":3080,"value":4574},{"type":3075,"tag":3445,"props":8803,"children":8804},{"style":3598},[8805],{"type":3080,"value":5773},{"type":3075,"tag":3445,"props":8807,"children":8808},{"style":3604},[8809],{"type":3080,"value":8810},"(ipKey)) ",{"type":3075,"tag":3445,"props":8812,"children":8813},{"style":3587},[8814],{"type":3080,"value":6869},{"type":3075,"tag":3445,"props":8816,"children":8817},{"style":3460},[8818],{"type":3080,"value":6109},{"type":3075,"tag":3445,"props":8820,"children":8821},{"style":3610},[8822],{"type":3080,"value":6878},{"type":3075,"tag":3445,"props":8824,"children":8825},{"style":3460},[8826],{"type":3080,"value":6883},{"type":3075,"tag":3445,"props":8828,"children":8829},{"style":3610},[8830],{"type":3080,"value":3987},{"type":3075,"tag":3445,"props":8832,"children":8833},{"class":3447,"line":3519},[8834],{"type":3075,"tag":3445,"props":8835,"children":8836},{"emptyLinePlaceholder":1200},[8837],{"type":3080,"value":3483},{"type":3075,"tag":3445,"props":8839,"children":8840},{"class":3447,"line":3064},[8841,8846,8851],{"type":3075,"tag":3445,"props":8842,"children":8843},{"style":3587},[8844],{"type":3080,"value":8845},"if",{"type":3075,"tag":3445,"props":8847,"children":8848},{"style":3604},[8849],{"type":3080,"value":8850}," (entry) ",{"type":3075,"tag":3445,"props":8852,"children":8853},{"style":3610},[8854],{"type":3080,"value":3613},{"type":3075,"tag":3445,"props":8856,"children":8857},{"class":3447,"line":3715},[8858,8863,8867,8871,8875,8879,8884,8888,8892,8896,8901,8905,8910,8914,8918],{"type":3075,"tag":3445,"props":8859,"children":8860},{"style":3604},[8861],{"type":3080,"value":8862},"  console",{"type":3075,"tag":3445,"props":8864,"children":8865},{"style":3610},[8866],{"type":3080,"value":4574},{"type":3075,"tag":3445,"props":8868,"children":8869},{"style":3598},[8870],{"type":3080,"value":5906},{"type":3075,"tag":3445,"props":8872,"children":8873},{"style":3619},[8874],{"type":3080,"value":3607},{"type":3075,"tag":3445,"props":8876,"children":8877},{"style":3610},[8878],{"type":3080,"value":5915},{"type":3075,"tag":3445,"props":8880,"children":8881},{"style":3466},[8882],{"type":3080,"value":8883},"IP has made ",{"type":3075,"tag":3445,"props":8885,"children":8886},{"style":3610},[8887],{"type":3080,"value":5925},{"type":3075,"tag":3445,"props":8889,"children":8890},{"style":3604},[8891],{"type":3080,"value":6920},{"type":3075,"tag":3445,"props":8893,"children":8894},{"style":3610},[8895],{"type":3080,"value":4574},{"type":3075,"tag":3445,"props":8897,"children":8898},{"style":3604},[8899],{"type":3080,"value":8900},"count",{"type":3075,"tag":3445,"props":8902,"children":8903},{"style":3610},[8904],{"type":3080,"value":3977},{"type":3075,"tag":3445,"props":8906,"children":8907},{"style":3466},[8908],{"type":3080,"value":8909}," requests",{"type":3075,"tag":3445,"props":8911,"children":8912},{"style":3610},[8913],{"type":3080,"value":5915},{"type":3075,"tag":3445,"props":8915,"children":8916},{"style":3619},[8917],{"type":3080,"value":3982},{"type":3075,"tag":3445,"props":8919,"children":8920},{"style":3610},[8921],{"type":3080,"value":3987},{"type":3075,"tag":3445,"props":8923,"children":8924},{"class":3447,"line":3724},[8925,8929,8933,8937,8941,8945,8950,8954,8959,8963,8968,8972,8977,8981,8986,8990,8995,8999],{"type":3075,"tag":3445,"props":8926,"children":8927},{"style":3604},[8928],{"type":3080,"value":8862},{"type":3075,"tag":3445,"props":8930,"children":8931},{"style":3610},[8932],{"type":3080,"value":4574},{"type":3075,"tag":3445,"props":8934,"children":8935},{"style":3598},[8936],{"type":3080,"value":5906},{"type":3075,"tag":3445,"props":8938,"children":8939},{"style":3619},[8940],{"type":3080,"value":3607},{"type":3075,"tag":3445,"props":8942,"children":8943},{"style":3610},[8944],{"type":3080,"value":5915},{"type":3075,"tag":3445,"props":8946,"children":8947},{"style":3466},[8948],{"type":3080,"value":8949},"Last request at: ",{"type":3075,"tag":3445,"props":8951,"children":8952},{"style":3610},[8953],{"type":3080,"value":5925},{"type":3075,"tag":3445,"props":8955,"children":8956},{"style":3610},[8957],{"type":3080,"value":8958},"new",{"type":3075,"tag":3445,"props":8960,"children":8961},{"style":3598},[8962],{"type":3080,"value":6733},{"type":3075,"tag":3445,"props":8964,"children":8965},{"style":3604},[8966],{"type":3080,"value":8967},"(entry",{"type":3075,"tag":3445,"props":8969,"children":8970},{"style":3610},[8971],{"type":3080,"value":4574},{"type":3075,"tag":3445,"props":8973,"children":8974},{"style":3604},[8975],{"type":3080,"value":8976},"time)",{"type":3075,"tag":3445,"props":8978,"children":8979},{"style":3610},[8980],{"type":3080,"value":4574},{"type":3075,"tag":3445,"props":8982,"children":8983},{"style":3598},[8984],{"type":3080,"value":8985},"toISOString",{"type":3075,"tag":3445,"props":8987,"children":8988},{"style":3604},[8989],{"type":3080,"value":5536},{"type":3075,"tag":3445,"props":8991,"children":8992},{"style":3610},[8993],{"type":3080,"value":8994},"}`",{"type":3075,"tag":3445,"props":8996,"children":8997},{"style":3619},[8998],{"type":3080,"value":3982},{"type":3075,"tag":3445,"props":9000,"children":9001},{"style":3610},[9002],{"type":3080,"value":3987},{"type":3075,"tag":3445,"props":9004,"children":9005},{"class":3447,"line":3733},[9006],{"type":3075,"tag":3445,"props":9007,"children":9008},{"style":3610},[9009],{"type":3080,"value":4426},{"type":3075,"tag":3421,"props":9011,"children":9013},{"id":9012},"moduleoptions-type",[9014,9020],{"type":3075,"tag":3232,"props":9015,"children":9017},{"className":9016},[],[9018],{"type":3080,"value":9019},"ModuleOptions",{"type":3080,"value":8469},{"type":3075,"tag":3082,"props":9022,"children":9023},{},[9024],{"type":3080,"value":9025},"You can also import the module configuration type:",{"type":3075,"tag":3435,"props":9027,"children":9029},{"className":5345,"code":9028,"language":5347,"meta":3019,"style":3019},"import type { ModuleOptions } from \"nuxt-api-shield\";\n",[9030],{"type":3075,"tag":3232,"props":9031,"children":9032},{"__ignoreMap":3019},[9033],{"type":3075,"tag":3445,"props":9034,"children":9035},{"class":3447,"line":3047},[9036,9040,9044,9048,9053,9057,9061,9065,9069,9073],{"type":3075,"tag":3445,"props":9037,"children":9038},{"style":3587},[9039],{"type":3080,"value":5359},{"type":3075,"tag":3445,"props":9041,"children":9042},{"style":3587},[9043],{"type":3080,"value":6100},{"type":3075,"tag":3445,"props":9045,"children":9046},{"style":3610},[9047],{"type":3080,"value":5364},{"type":3075,"tag":3445,"props":9049,"children":9050},{"style":3604},[9051],{"type":3080,"value":9052}," ModuleOptions",{"type":3075,"tag":3445,"props":9054,"children":9055},{"style":3610},[9056],{"type":3080,"value":5374},{"type":3075,"tag":3445,"props":9058,"children":9059},{"style":3587},[9060],{"type":3080,"value":5379},{"type":3075,"tag":3445,"props":9062,"children":9063},{"style":3610},[9064],{"type":3080,"value":4153},{"type":3075,"tag":3445,"props":9066,"children":9067},{"style":3466},[9068],{"type":3080,"value":3016},{"type":3075,"tag":3445,"props":9070,"children":9071},{"style":3610},[9072],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":9074,"children":9075},{"style":3610},[9076],{"type":3080,"value":3987},{"type":3075,"tag":3158,"props":9078,"children":9080},{"id":9079},"per-route-rate-limiting",[9081],{"type":3080,"value":9082},"Per-Route Rate Limiting",{"type":3075,"tag":3082,"props":9084,"children":9085},{},[9086,9091,9093,9098],{"type":3075,"tag":3232,"props":9087,"children":9089},{"className":9088},[],[9090],{"type":3080,"value":3016},{"type":3080,"value":9092}," supports ",{"type":3075,"tag":3170,"props":9094,"children":9095},{},[9096],{"type":3080,"value":9097},"per-route rate limiting",{"type":3080,"value":9099},", allowing you to define custom limits for specific API endpoints while keeping a global default configuration for all other routes.",{"type":3075,"tag":3082,"props":9101,"children":9102},{},[9103,9105,9111,9112,9118,9120,9126],{"type":3080,"value":9104},"This is useful when certain endpoints (such as ",{"type":3075,"tag":3232,"props":9106,"children":9108},{"className":9107},[],[9109],{"type":3080,"value":9110},"\u002Fapi\u002Flogin",{"type":3080,"value":3397},{"type":3075,"tag":3232,"props":9113,"children":9115},{"className":9114},[],[9116],{"type":3080,"value":9117},"\u002Fapi\u002Fauth",{"type":3080,"value":9119},", or ",{"type":3075,"tag":3232,"props":9121,"children":9123},{"className":9122},[],[9124],{"type":3080,"value":9125},"\u002Fapi\u002Fpayment",{"type":3080,"value":9127},") require stricter protection.",{"type":3075,"tag":9129,"props":9130,"children":9131},"hr",{},[],{"type":3075,"tag":3421,"props":9133,"children":9135},{"id":9134},"configuration-example",[9136],{"type":3080,"value":9137},"Configuration Example",{"type":3075,"tag":3082,"props":9139,"children":9140},{},[9141,9142,9148],{"type":3080,"value":4445},{"type":3075,"tag":3232,"props":9143,"children":9145},{"className":9144},[],[9146],{"type":3080,"value":9147},"routes",{"type":3080,"value":9149}," option accepts a mixed array of strings (exact matches) and objects (custom limits or patterns).",{"type":3075,"tag":3435,"props":9151,"children":9153},{"className":5345,"code":9152,"language":5347,"meta":3019,"style":3019},"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",[9154],{"type":3075,"tag":3232,"props":9155,"children":9156},{"__ignoreMap":3019},[9157,9180,9215,9222,9237,9253,9273,9293,9313,9320,9327,9344,9352,9372,9379,9387,9395,9424,9445,9466,9474,9482,9489,9497,9504,9532,9552,9571,9587,9594,9606,9613],{"type":3075,"tag":3445,"props":9158,"children":9159},{"class":3447,"line":3047},[9160,9164,9168,9172,9176],{"type":3075,"tag":3445,"props":9161,"children":9162},{"style":3587},[9163],{"type":3080,"value":3590},{"type":3075,"tag":3445,"props":9165,"children":9166},{"style":3587},[9167],{"type":3080,"value":3595},{"type":3075,"tag":3445,"props":9169,"children":9170},{"style":3598},[9171],{"type":3080,"value":3601},{"type":3075,"tag":3445,"props":9173,"children":9174},{"style":3604},[9175],{"type":3080,"value":3607},{"type":3075,"tag":3445,"props":9177,"children":9178},{"style":3610},[9179],{"type":3080,"value":3613},{"type":3075,"tag":3445,"props":9181,"children":9182},{"class":3447,"line":3043},[9183,9187,9191,9195,9199,9203,9207,9211],{"type":3075,"tag":3445,"props":9184,"children":9185},{"style":3619},[9186],{"type":3080,"value":3622},{"type":3075,"tag":3445,"props":9188,"children":9189},{"style":3610},[9190],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":9192,"children":9193},{"style":3604},[9194],{"type":3080,"value":3632},{"type":3075,"tag":3445,"props":9196,"children":9197},{"style":3610},[9198],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":9200,"children":9201},{"style":3466},[9202],{"type":3080,"value":3016},{"type":3075,"tag":3445,"props":9204,"children":9205},{"style":3610},[9206],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":9208,"children":9209},{"style":3604},[9210],{"type":3080,"value":3650},{"type":3075,"tag":3445,"props":9212,"children":9213},{"style":3610},[9214],{"type":3080,"value":3655},{"type":3075,"tag":3445,"props":9216,"children":9217},{"class":3447,"line":3477},[9218],{"type":3075,"tag":3445,"props":9219,"children":9220},{"emptyLinePlaceholder":1200},[9221],{"type":3080,"value":3483},{"type":3075,"tag":3445,"props":9223,"children":9224},{"class":3447,"line":3486},[9225,9229,9233],{"type":3075,"tag":3445,"props":9226,"children":9227},{"style":3619},[9228],{"type":3080,"value":3663},{"type":3075,"tag":3445,"props":9230,"children":9231},{"style":3610},[9232],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":9234,"children":9235},{"style":3610},[9236],{"type":3080,"value":3672},{"type":3075,"tag":3445,"props":9238,"children":9239},{"class":3447,"line":3039},[9240,9245,9249],{"type":3075,"tag":3445,"props":9241,"children":9242},{"style":3619},[9243],{"type":3080,"value":9244},"    limit",{"type":3075,"tag":3445,"props":9246,"children":9247},{"style":3610},[9248],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":9250,"children":9251},{"style":3610},[9252],{"type":3080,"value":3672},{"type":3075,"tag":3445,"props":9254,"children":9255},{"class":3447,"line":3511},[9256,9261,9265,9269],{"type":3075,"tag":3445,"props":9257,"children":9258},{"style":3619},[9259],{"type":3080,"value":9260},"      max",{"type":3075,"tag":3445,"props":9262,"children":9263},{"style":3610},[9264],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":9266,"children":9267},{"style":3885},[9268],{"type":3080,"value":4052},{"type":3075,"tag":3445,"props":9270,"children":9271},{"style":3610},[9272],{"type":3080,"value":3655},{"type":3075,"tag":3445,"props":9274,"children":9275},{"class":3447,"line":3519},[9276,9281,9285,9289],{"type":3075,"tag":3445,"props":9277,"children":9278},{"style":3619},[9279],{"type":3080,"value":9280},"      duration",{"type":3075,"tag":3445,"props":9282,"children":9283},{"style":3610},[9284],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":9286,"children":9287},{"style":3885},[9288],{"type":3080,"value":4073},{"type":3075,"tag":3445,"props":9290,"children":9291},{"style":3610},[9292],{"type":3080,"value":3655},{"type":3075,"tag":3445,"props":9294,"children":9295},{"class":3447,"line":3064},[9296,9301,9305,9309],{"type":3075,"tag":3445,"props":9297,"children":9298},{"style":3619},[9299],{"type":3080,"value":9300},"      ban",{"type":3075,"tag":3445,"props":9302,"children":9303},{"style":3610},[9304],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":9306,"children":9307},{"style":3885},[9308],{"type":3080,"value":4099},{"type":3075,"tag":3445,"props":9310,"children":9311},{"style":3610},[9312],{"type":3080,"value":3655},{"type":3075,"tag":3445,"props":9314,"children":9315},{"class":3447,"line":3715},[9316],{"type":3075,"tag":3445,"props":9317,"children":9318},{"style":3610},[9319],{"type":3080,"value":3721},{"type":3075,"tag":3445,"props":9321,"children":9322},{"class":3447,"line":3724},[9323],{"type":3075,"tag":3445,"props":9324,"children":9325},{"emptyLinePlaceholder":1200},[9326],{"type":3080,"value":3483},{"type":3075,"tag":3445,"props":9328,"children":9329},{"class":3447,"line":3733},[9330,9335,9339],{"type":3075,"tag":3445,"props":9331,"children":9332},{"style":3619},[9333],{"type":3080,"value":9334},"    routes",{"type":3075,"tag":3445,"props":9336,"children":9337},{"style":3610},[9338],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":9340,"children":9341},{"style":3604},[9342],{"type":3080,"value":9343}," [\n",{"type":3075,"tag":3445,"props":9345,"children":9346},{"class":3447,"line":3742},[9347],{"type":3075,"tag":3445,"props":9348,"children":9349},{"style":3451},[9350],{"type":3080,"value":9351},"      \u002F\u002F 1. String: uses the global default limit (exact match)\n",{"type":3075,"tag":3445,"props":9353,"children":9354},{"class":3447,"line":3751},[9355,9359,9364,9368],{"type":3075,"tag":3445,"props":9356,"children":9357},{"style":3610},[9358],{"type":3080,"value":4680},{"type":3075,"tag":3445,"props":9360,"children":9361},{"style":3466},[9362],{"type":3080,"value":9363},"\u002Fapi\u002Fexample",{"type":3075,"tag":3445,"props":9365,"children":9366},{"style":3610},[9367],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":9369,"children":9370},{"style":3610},[9371],{"type":3080,"value":3655},{"type":3075,"tag":3445,"props":9373,"children":9374},{"class":3447,"line":3760},[9375],{"type":3075,"tag":3445,"props":9376,"children":9377},{"emptyLinePlaceholder":1200},[9378],{"type":3080,"value":3483},{"type":3075,"tag":3445,"props":9380,"children":9381},{"class":3447,"line":3769},[9382],{"type":3075,"tag":3445,"props":9383,"children":9384},{"style":3451},[9385],{"type":3080,"value":9386},"      \u002F\u002F 2. Object: custom rate limit for a specific route (exact match)\n",{"type":3075,"tag":3445,"props":9388,"children":9389},{"class":3447,"line":3778},[9390],{"type":3075,"tag":3445,"props":9391,"children":9392},{"style":3610},[9393],{"type":3080,"value":9394},"      {\n",{"type":3075,"tag":3445,"props":9396,"children":9397},{"class":3447,"line":3787},[9398,9403,9407,9411,9416,9420],{"type":3075,"tag":3445,"props":9399,"children":9400},{"style":3619},[9401],{"type":3080,"value":9402},"        path",{"type":3075,"tag":3445,"props":9404,"children":9405},{"style":3610},[9406],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":9408,"children":9409},{"style":3610},[9410],{"type":3080,"value":4153},{"type":3075,"tag":3445,"props":9412,"children":9413},{"style":3466},[9414],{"type":3080,"value":9415},"\u002Fapi\u002Fexample-per-route",{"type":3075,"tag":3445,"props":9417,"children":9418},{"style":3610},[9419],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":9421,"children":9422},{"style":3610},[9423],{"type":3080,"value":3655},{"type":3075,"tag":3445,"props":9425,"children":9426},{"class":3447,"line":3795},[9427,9432,9436,9441],{"type":3075,"tag":3445,"props":9428,"children":9429},{"style":3619},[9430],{"type":3080,"value":9431},"        max",{"type":3075,"tag":3445,"props":9433,"children":9434},{"style":3610},[9435],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":9437,"children":9438},{"style":3885},[9439],{"type":3080,"value":9440}," 5",{"type":3075,"tag":3445,"props":9442,"children":9443},{"style":3610},[9444],{"type":3080,"value":3655},{"type":3075,"tag":3445,"props":9446,"children":9447},{"class":3447,"line":3804},[9448,9453,9457,9462],{"type":3075,"tag":3445,"props":9449,"children":9450},{"style":3619},[9451],{"type":3080,"value":9452},"        duration",{"type":3075,"tag":3445,"props":9454,"children":9455},{"style":3610},[9456],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":9458,"children":9459},{"style":3885},[9460],{"type":3080,"value":9461}," 10",{"type":3075,"tag":3445,"props":9463,"children":9464},{"style":3610},[9465],{"type":3080,"value":3655},{"type":3075,"tag":3445,"props":9467,"children":9468},{"class":3447,"line":3813},[9469],{"type":3075,"tag":3445,"props":9470,"children":9471},{"style":3451},[9472],{"type":3080,"value":9473},"        \u002F\u002F \"ban\" can also be overridden per route\n",{"type":3075,"tag":3445,"props":9475,"children":9476},{"class":3447,"line":3827},[9477],{"type":3075,"tag":3445,"props":9478,"children":9479},{"style":3610},[9480],{"type":3080,"value":9481},"      },\n",{"type":3075,"tag":3445,"props":9483,"children":9484},{"class":3447,"line":3855},[9485],{"type":3075,"tag":3445,"props":9486,"children":9487},{"emptyLinePlaceholder":1200},[9488],{"type":3080,"value":3483},{"type":3075,"tag":3445,"props":9490,"children":9491},{"class":3447,"line":3863},[9492],{"type":3075,"tag":3445,"props":9493,"children":9494},{"style":3451},[9495],{"type":3080,"value":9496},"      \u002F\u002F 3. Object: Wildcard pattern\n",{"type":3075,"tag":3445,"props":9498,"children":9499},{"class":3447,"line":3872},[9500],{"type":3075,"tag":3445,"props":9501,"children":9502},{"style":3610},[9503],{"type":3080,"value":9394},{"type":3075,"tag":3445,"props":9505,"children":9506},{"class":3447,"line":3900},[9507,9511,9515,9519,9524,9528],{"type":3075,"tag":3445,"props":9508,"children":9509},{"style":3619},[9510],{"type":3080,"value":9402},{"type":3075,"tag":3445,"props":9512,"children":9513},{"style":3610},[9514],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":9516,"children":9517},{"style":3610},[9518],{"type":3080,"value":4153},{"type":3075,"tag":3445,"props":9520,"children":9521},{"style":3466},[9522],{"type":3080,"value":9523},"\u002Fapi\u002Fusers\u002F*\u002Fprofile",{"type":3075,"tag":3445,"props":9525,"children":9526},{"style":3610},[9527],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":9529,"children":9530},{"style":3610},[9531],{"type":3080,"value":3655},{"type":3075,"tag":3445,"props":9533,"children":9534},{"class":3447,"line":3917},[9535,9540,9544,9548],{"type":3075,"tag":3445,"props":9536,"children":9537},{"style":3619},[9538],{"type":3080,"value":9539},"        pattern",{"type":3075,"tag":3445,"props":9541,"children":9542},{"style":3610},[9543],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":9545,"children":9546},{"style":3939},[9547],{"type":3080,"value":4132},{"type":3075,"tag":3445,"props":9549,"children":9550},{"style":3610},[9551],{"type":3080,"value":3655},{"type":3075,"tag":3445,"props":9553,"children":9554},{"class":3447,"line":3926},[9555,9559,9563,9567],{"type":3075,"tag":3445,"props":9556,"children":9557},{"style":3619},[9558],{"type":3080,"value":9431},{"type":3075,"tag":3445,"props":9560,"children":9561},{"style":3610},[9562],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":9564,"children":9565},{"style":3885},[9566],{"type":3080,"value":9461},{"type":3075,"tag":3445,"props":9568,"children":9569},{"style":3610},[9570],{"type":3080,"value":3655},{"type":3075,"tag":3445,"props":9572,"children":9573},{"class":3447,"line":3954},[9574,9578,9582],{"type":3075,"tag":3445,"props":9575,"children":9576},{"style":3619},[9577],{"type":3080,"value":9452},{"type":3075,"tag":3445,"props":9579,"children":9580},{"style":3610},[9581],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":9583,"children":9584},{"style":3885},[9585],{"type":3080,"value":9586}," 60\n",{"type":3075,"tag":3445,"props":9588,"children":9589},{"class":3447,"line":3962},[9590],{"type":3075,"tag":3445,"props":9591,"children":9592},{"style":3610},[9593],{"type":3080,"value":4747},{"type":3075,"tag":3445,"props":9595,"children":9596},{"class":3447,"line":3971},[9597,9602],{"type":3075,"tag":3445,"props":9598,"children":9599},{"style":3604},[9600],{"type":3080,"value":9601},"    ]",{"type":3075,"tag":3445,"props":9603,"children":9604},{"style":3610},[9605],{"type":3080,"value":3655},{"type":3075,"tag":3445,"props":9607,"children":9608},{"class":3447,"line":6897},[9609],{"type":3075,"tag":3445,"props":9610,"children":9611},{"style":3610},[9612],{"type":3080,"value":3968},{"type":3075,"tag":3445,"props":9614,"children":9615},{"class":3447,"line":6906},[9616,9620,9624],{"type":3075,"tag":3445,"props":9617,"children":9618},{"style":3610},[9619],{"type":3080,"value":3977},{"type":3075,"tag":3445,"props":9621,"children":9622},{"style":3604},[9623],{"type":3080,"value":3982},{"type":3075,"tag":3445,"props":9625,"children":9626},{"style":3610},[9627],{"type":3080,"value":3987},{"type":3075,"tag":3421,"props":9629,"children":9631},{"id":9630},"wildcard-route-support",[9632],{"type":3080,"value":9633},"Wildcard Route Support",{"type":3075,"tag":3082,"props":9635,"children":9636},{},[9637,9639,9645],{"type":3080,"value":9638},"Wildcard patterns allow you to apply the same limits to groups of related API endpoints. Enable them by setting ",{"type":3075,"tag":3232,"props":9640,"children":9642},{"className":9641},[],[9643],{"type":3080,"value":9644},"pattern: true",{"type":3080,"value":9646}," in your route configuration.",{"type":3075,"tag":5311,"props":9648,"children":9650},{"id":9649},"wildcard-pattern-syntax",[9651],{"type":3080,"value":9652},"Wildcard Pattern Syntax",{"type":3075,"tag":3132,"props":9654,"children":9655},{},[9656,9700],{"type":3075,"tag":3136,"props":9657,"children":9658},{},[9659,9671,9673],{"type":3075,"tag":3170,"props":9660,"children":9661},{},[9662,9664,9670],{"type":3080,"value":9663},"Single-Segment Wildcard (",{"type":3075,"tag":3232,"props":9665,"children":9667},{"className":9666},[],[9668],{"type":3080,"value":9669},"*",{"type":3080,"value":3982},{"type":3080,"value":9672},": Matches exactly one path segment.\n",{"type":3075,"tag":3132,"props":9674,"children":9675},{},[9676],{"type":3075,"tag":3136,"props":9677,"children":9678},{},[9679,9684,9686,9692,9693,9699],{"type":3075,"tag":3232,"props":9680,"children":9682},{"className":9681},[],[9683],{"type":3080,"value":9523},{"type":3080,"value":9685}," matches ",{"type":3075,"tag":3232,"props":9687,"children":9689},{"className":9688},[],[9690],{"type":3080,"value":9691},"\u002Fapi\u002Fusers\u002F123\u002Fprofile",{"type":3080,"value":7366},{"type":3075,"tag":3232,"props":9694,"children":9696},{"className":9695},[],[9697],{"type":3080,"value":9698},"\u002Fapi\u002Fusers\u002Fadmin\u002Fprofile",{"type":3080,"value":4574},{"type":3075,"tag":3136,"props":9701,"children":9702},{},[9703,9715,9717],{"type":3075,"tag":3170,"props":9704,"children":9705},{},[9706,9708,9714],{"type":3080,"value":9707},"Multi-Segment Wildcard (",{"type":3075,"tag":3232,"props":9709,"children":9711},{"className":9710},[],[9712],{"type":3080,"value":9713},"**",{"type":3080,"value":3982},{"type":3080,"value":9716},": Matches zero or more path segments.\n",{"type":3075,"tag":3132,"props":9718,"children":9719},{},[9720],{"type":3075,"tag":3136,"props":9721,"children":9722},{},[9723,9729,9730,9736,9737,9743],{"type":3075,"tag":3232,"props":9724,"children":9726},{"className":9725},[],[9727],{"type":3080,"value":9728},"\u002Fapi\u002Freports\u002F**\u002Fsummary",{"type":3080,"value":9685},{"type":3075,"tag":3232,"props":9731,"children":9733},{"className":9732},[],[9734],{"type":3080,"value":9735},"\u002Fapi\u002Freports\u002Fmonthly\u002F2023\u002Fsummary",{"type":3080,"value":7366},{"type":3075,"tag":3232,"props":9738,"children":9740},{"className":9739},[],[9741],{"type":3080,"value":9742},"\u002Fapi\u002Freports\u002Fsummary",{"type":3080,"value":4574},{"type":3075,"tag":5311,"props":9745,"children":9747},{"id":9746},"pattern-precedence",[9748],{"type":3080,"value":9749},"Pattern Precedence",{"type":3075,"tag":9751,"props":9752,"children":9753},"ol",{},[9754,9764,9774],{"type":3075,"tag":3136,"props":9755,"children":9756},{},[9757,9762],{"type":3075,"tag":3170,"props":9758,"children":9759},{},[9760],{"type":3080,"value":9761},"Exact matches",{"type":3080,"value":9763}," always take precedence over wildcard patterns.",{"type":3075,"tag":3136,"props":9765,"children":9766},{},[9767,9772],{"type":3075,"tag":3170,"props":9768,"children":9769},{},[9770],{"type":3080,"value":9771},"More specific wildcards",{"type":3080,"value":9773}," take precedence over less specific ones.",{"type":3075,"tag":3136,"props":9775,"children":9776},{},[9777],{"type":3080,"value":9778},"When multiple wildcard patterns match, the most specific one is used.",{"type":3075,"tag":5311,"props":9780,"children":9782},{"id":9781},"important-notes",[9783],{"type":3080,"value":9784},"Important Notes",{"type":3075,"tag":3132,"props":9786,"children":9787},{},[9788,9798],{"type":3075,"tag":3136,"props":9789,"children":9790},{},[9791,9796],{"type":3075,"tag":3170,"props":9792,"children":9793},{},[9794],{"type":3080,"value":9795},"Shared Rate Limits:",{"type":3080,"value":9797}," All requests that match the same wildcard pattern share the same rate limit counter.",{"type":3075,"tag":3136,"props":9799,"children":9800},{},[9801,9806,9808,9814,9815,9821],{"type":3075,"tag":3170,"props":9802,"children":9803},{},[9804],{"type":3080,"value":9805},"Security:",{"type":3080,"value":9807}," Broad or dangerous patterns like ",{"type":3075,"tag":3232,"props":9809,"children":9811},{"className":9810},[],[9812],{"type":3080,"value":9813},"\u002F**",{"type":3080,"value":7366},{"type":3075,"tag":3232,"props":9816,"children":9818},{"className":9817},[],[9819],{"type":3080,"value":9820},"\u002F*",{"type":3080,"value":9822}," are automatically rejected to prevent accidental global blocking.",{"type":3075,"tag":3158,"props":9824,"children":9826},{"id":9825},"skipping-routes",[9827],{"type":3080,"value":9828},"Skipping Routes",{"type":3075,"tag":3082,"props":9830,"children":9831},{},[9832,9833,9839,9841,9846],{"type":3080,"value":4445},{"type":3075,"tag":3232,"props":9834,"children":9836},{"className":9835},[],[9837],{"type":3080,"value":9838},"skipRoutes",{"type":3080,"value":9840}," 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":3075,"tag":3232,"props":9842,"children":9844},{"className":9843},[],[9845],{"type":3080,"value":9147},{"type":3080,"value":9847}," array.",{"type":3075,"tag":3082,"props":9849,"children":9850},{},[9851],{"type":3080,"value":9852},"This is useful for health checks, webhook endpoints, monitoring probes, or internal status routes that should always respond regardless of traffic.",{"type":3075,"tag":3421,"props":9854,"children":9856},{"id":9855},"configuration-example-1",[9857],{"type":3080,"value":9137},{"type":3075,"tag":3435,"props":9859,"children":9861},{"className":5345,"code":9860,"language":5347,"meta":3019,"style":3019},"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",[9862],{"type":3075,"tag":3232,"props":9863,"children":9864},{"__ignoreMap":3019},[9865,9888,9923,9930,9945,9960,9979,9998,10017,10024,10031,10046,10071,10096,10121,10132,10139],{"type":3075,"tag":3445,"props":9866,"children":9867},{"class":3447,"line":3047},[9868,9872,9876,9880,9884],{"type":3075,"tag":3445,"props":9869,"children":9870},{"style":3587},[9871],{"type":3080,"value":3590},{"type":3075,"tag":3445,"props":9873,"children":9874},{"style":3587},[9875],{"type":3080,"value":3595},{"type":3075,"tag":3445,"props":9877,"children":9878},{"style":3598},[9879],{"type":3080,"value":3601},{"type":3075,"tag":3445,"props":9881,"children":9882},{"style":3604},[9883],{"type":3080,"value":3607},{"type":3075,"tag":3445,"props":9885,"children":9886},{"style":3610},[9887],{"type":3080,"value":3613},{"type":3075,"tag":3445,"props":9889,"children":9890},{"class":3447,"line":3043},[9891,9895,9899,9903,9907,9911,9915,9919],{"type":3075,"tag":3445,"props":9892,"children":9893},{"style":3619},[9894],{"type":3080,"value":3622},{"type":3075,"tag":3445,"props":9896,"children":9897},{"style":3610},[9898],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":9900,"children":9901},{"style":3604},[9902],{"type":3080,"value":3632},{"type":3075,"tag":3445,"props":9904,"children":9905},{"style":3610},[9906],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":9908,"children":9909},{"style":3466},[9910],{"type":3080,"value":3016},{"type":3075,"tag":3445,"props":9912,"children":9913},{"style":3610},[9914],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":9916,"children":9917},{"style":3604},[9918],{"type":3080,"value":3650},{"type":3075,"tag":3445,"props":9920,"children":9921},{"style":3610},[9922],{"type":3080,"value":3655},{"type":3075,"tag":3445,"props":9924,"children":9925},{"class":3447,"line":3477},[9926],{"type":3075,"tag":3445,"props":9927,"children":9928},{"emptyLinePlaceholder":1200},[9929],{"type":3080,"value":3483},{"type":3075,"tag":3445,"props":9931,"children":9932},{"class":3447,"line":3486},[9933,9937,9941],{"type":3075,"tag":3445,"props":9934,"children":9935},{"style":3619},[9936],{"type":3080,"value":3663},{"type":3075,"tag":3445,"props":9938,"children":9939},{"style":3610},[9940],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":9942,"children":9943},{"style":3610},[9944],{"type":3080,"value":3672},{"type":3075,"tag":3445,"props":9946,"children":9947},{"class":3447,"line":3039},[9948,9952,9956],{"type":3075,"tag":3445,"props":9949,"children":9950},{"style":3619},[9951],{"type":3080,"value":9244},{"type":3075,"tag":3445,"props":9953,"children":9954},{"style":3610},[9955],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":9957,"children":9958},{"style":3610},[9959],{"type":3080,"value":3672},{"type":3075,"tag":3445,"props":9961,"children":9962},{"class":3447,"line":3511},[9963,9967,9971,9975],{"type":3075,"tag":3445,"props":9964,"children":9965},{"style":3619},[9966],{"type":3080,"value":9260},{"type":3075,"tag":3445,"props":9968,"children":9969},{"style":3610},[9970],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":9972,"children":9973},{"style":3885},[9974],{"type":3080,"value":4052},{"type":3075,"tag":3445,"props":9976,"children":9977},{"style":3610},[9978],{"type":3080,"value":3655},{"type":3075,"tag":3445,"props":9980,"children":9981},{"class":3447,"line":3519},[9982,9986,9990,9994],{"type":3075,"tag":3445,"props":9983,"children":9984},{"style":3619},[9985],{"type":3080,"value":9280},{"type":3075,"tag":3445,"props":9987,"children":9988},{"style":3610},[9989],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":9991,"children":9992},{"style":3885},[9993],{"type":3080,"value":4073},{"type":3075,"tag":3445,"props":9995,"children":9996},{"style":3610},[9997],{"type":3080,"value":3655},{"type":3075,"tag":3445,"props":9999,"children":10000},{"class":3447,"line":3064},[10001,10005,10009,10013],{"type":3075,"tag":3445,"props":10002,"children":10003},{"style":3619},[10004],{"type":3080,"value":9300},{"type":3075,"tag":3445,"props":10006,"children":10007},{"style":3610},[10008],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":10010,"children":10011},{"style":3885},[10012],{"type":3080,"value":4099},{"type":3075,"tag":3445,"props":10014,"children":10015},{"style":3610},[10016],{"type":3080,"value":3655},{"type":3075,"tag":3445,"props":10018,"children":10019},{"class":3447,"line":3715},[10020],{"type":3075,"tag":3445,"props":10021,"children":10022},{"style":3610},[10023],{"type":3080,"value":3721},{"type":3075,"tag":3445,"props":10025,"children":10026},{"class":3447,"line":3724},[10027],{"type":3075,"tag":3445,"props":10028,"children":10029},{"emptyLinePlaceholder":1200},[10030],{"type":3080,"value":3483},{"type":3075,"tag":3445,"props":10032,"children":10033},{"class":3447,"line":3733},[10034,10038,10042],{"type":3075,"tag":3445,"props":10035,"children":10036},{"style":3619},[10037],{"type":3080,"value":3833},{"type":3075,"tag":3445,"props":10039,"children":10040},{"style":3610},[10041],{"type":3080,"value":3627},{"type":3075,"tag":3445,"props":10043,"children":10044},{"style":3604},[10045],{"type":3080,"value":9343},{"type":3075,"tag":3445,"props":10047,"children":10048},{"class":3447,"line":3742},[10049,10053,10058,10062,10066],{"type":3075,"tag":3445,"props":10050,"children":10051},{"style":3610},[10052],{"type":3080,"value":4680},{"type":3075,"tag":3445,"props":10054,"children":10055},{"style":3466},[10056],{"type":3080,"value":10057},"\u002Fapi\u002Fhealth",{"type":3075,"tag":3445,"props":10059,"children":10060},{"style":3610},[10061],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":10063,"children":10064},{"style":3610},[10065],{"type":3080,"value":3847},{"type":3075,"tag":3445,"props":10067,"children":10068},{"style":3451},[10069],{"type":3080,"value":10070},"          \u002F\u002F exact match\n",{"type":3075,"tag":3445,"props":10072,"children":10073},{"class":3447,"line":3751},[10074,10078,10083,10087,10091],{"type":3075,"tag":3445,"props":10075,"children":10076},{"style":3610},[10077],{"type":3080,"value":4680},{"type":3075,"tag":3445,"props":10079,"children":10080},{"style":3466},[10081],{"type":3080,"value":10082},"\u002Fapi\u002F_nuxt\u002F**",{"type":3075,"tag":3445,"props":10084,"children":10085},{"style":3610},[10086],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":10088,"children":10089},{"style":3610},[10090],{"type":3080,"value":3847},{"type":3075,"tag":3445,"props":10092,"children":10093},{"style":3451},[10094],{"type":3080,"value":10095},"        \u002F\u002F multi-segment wildcard\n",{"type":3075,"tag":3445,"props":10097,"children":10098},{"class":3447,"line":3760},[10099,10103,10108,10112,10116],{"type":3075,"tag":3445,"props":10100,"children":10101},{"style":3610},[10102],{"type":3080,"value":4680},{"type":3075,"tag":3445,"props":10104,"children":10105},{"style":3466},[10106],{"type":3080,"value":10107},"\u002Fapi\u002Fwebhooks\u002Fstripe",{"type":3075,"tag":3445,"props":10109,"children":10110},{"style":3610},[10111],{"type":3080,"value":3637},{"type":3075,"tag":3445,"props":10113,"children":10114},{"style":3610},[10115],{"type":3080,"value":3847},{"type":3075,"tag":3445,"props":10117,"children":10118},{"style":3451},[10119],{"type":3080,"value":10120}," \u002F\u002F exact match\n",{"type":3075,"tag":3445,"props":10122,"children":10123},{"class":3447,"line":3769},[10124,10128],{"type":3075,"tag":3445,"props":10125,"children":10126},{"style":3604},[10127],{"type":3080,"value":9601},{"type":3075,"tag":3445,"props":10129,"children":10130},{"style":3610},[10131],{"type":3080,"value":3655},{"type":3075,"tag":3445,"props":10133,"children":10134},{"class":3447,"line":3778},[10135],{"type":3075,"tag":3445,"props":10136,"children":10137},{"style":3610},[10138],{"type":3080,"value":3968},{"type":3075,"tag":3445,"props":10140,"children":10141},{"class":3447,"line":3787},[10142,10146],{"type":3075,"tag":3445,"props":10143,"children":10144},{"style":3610},[10145],{"type":3080,"value":3977},{"type":3075,"tag":3445,"props":10147,"children":10148},{"style":3604},[10149],{"type":3080,"value":8113},{"type":3075,"tag":3421,"props":10151,"children":10153},{"id":10152},"how-it-works",[10154],{"type":3080,"value":10155},"How It Works",{"type":3075,"tag":3132,"props":10157,"children":10158},{},[10159,10171,10183],{"type":3075,"tag":3136,"props":10160,"children":10161},{},[10162,10164,10169],{"type":3080,"value":10163},"Routes in ",{"type":3075,"tag":3232,"props":10165,"children":10167},{"className":10166},[],[10168],{"type":3080,"value":9838},{"type":3080,"value":10170}," bypass the middleware entirely — no ban check, no rate limit counter, no log entry.",{"type":3075,"tag":3136,"props":10172,"children":10173},{},[10174,10176,10181],{"type":3080,"value":10175},"The rest of your API routes (those matching the global defaults or the ",{"type":3075,"tag":3232,"props":10177,"children":10179},{"className":10178},[],[10180],{"type":3080,"value":9147},{"type":3080,"value":10182}," option) continue to be rate limited normally.",{"type":3075,"tag":3136,"props":10184,"children":10185},{},[10186,10188,10193,10195,10200],{"type":3080,"value":10187},"Supports the same wildcard syntax as per-route patterns: ",{"type":3075,"tag":3232,"props":10189,"children":10191},{"className":10190},[],[10192],{"type":3080,"value":9669},{"type":3080,"value":10194}," for single segment, ",{"type":3075,"tag":3232,"props":10196,"children":10198},{"className":10197},[],[10199],{"type":3080,"value":9713},{"type":3080,"value":10201}," for multi-segment.",{"type":3075,"tag":3158,"props":10203,"children":10205},{"id":10204},"important-considerations",[10206],{"type":3080,"value":10207},"Important Considerations",{"type":3075,"tag":3421,"props":10209,"children":10211},{"id":10210},"data-privacy-ip-address-storage",[10212],{"type":3080,"value":10213},"Data Privacy (IP Address Storage)",{"type":3075,"tag":3082,"props":10215,"children":10216},{},[10217,10222],{"type":3075,"tag":3232,"props":10218,"children":10220},{"className":10219},[],[10221],{"type":3080,"value":3016},{"type":3080,"value":10223}," 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":3075,"tag":3132,"props":10225,"children":10226},{},[10227,10268,10278],{"type":3075,"tag":3136,"props":10228,"children":10229},{},[10230,10235],{"type":3075,"tag":3170,"props":10231,"children":10232},{},[10233],{"type":3080,"value":10234},"Data Stored:",{"type":3075,"tag":3132,"props":10236,"children":10237},{},[10238,10257],{"type":3075,"tag":3136,"props":10239,"children":10240},{},[10241,10247,10249,10255],{"type":3075,"tag":3232,"props":10242,"children":10244},{"className":10243},[],[10245],{"type":3080,"value":10246},"ip:\u003CIP_ADDRESS>",{"type":3080,"value":10248},": Stores ",{"type":3075,"tag":3232,"props":10250,"children":10252},{"className":10251},[],[10253],{"type":3080,"value":10254},"{ count: number, time: number }",{"type":3080,"value":10256}," for tracking request rates.",{"type":3075,"tag":3136,"props":10258,"children":10259},{},[10260,10266],{"type":3075,"tag":3232,"props":10261,"children":10263},{"className":10262},[],[10264],{"type":3080,"value":10265},"ban:\u003CIP_ADDRESS>",{"type":3080,"value":10267},": Stores a timestamp indicating when a ban on an IP address expires.",{"type":3075,"tag":3136,"props":10269,"children":10270},{},[10271,10276],{"type":3075,"tag":3170,"props":10272,"children":10273},{},[10274],{"type":3080,"value":10275},"Compliance:",{"type":3080,"value":10277}," 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":3075,"tag":3136,"props":10279,"children":10280},{},[10281,10286],{"type":3075,"tag":3170,"props":10282,"children":10283},{},[10284],{"type":3080,"value":10285},"Data Retention:",{"type":3075,"tag":3132,"props":10287,"children":10288},{},[10289,10301],{"type":3075,"tag":3136,"props":10290,"children":10291},{},[10292,10294,10299],{"type":3080,"value":10293},"Ban entries are cleaned up by the ",{"type":3075,"tag":3232,"props":10295,"children":10297},{"className":10296},[],[10298],{"type":3080,"value":3329},{"type":3080,"value":10300}," task after expiry.",{"type":3075,"tag":3136,"props":10302,"children":10303},{},[10304,10306,10311,10313,10318],{"type":3080,"value":10305},"IP tracking entries are cleaned up by the ",{"type":3075,"tag":3232,"props":10307,"children":10309},{"className":10308},[],[10310],{"type":3080,"value":3337},{"type":3080,"value":10312}," task based on the ",{"type":3075,"tag":3232,"props":10314,"children":10316},{"className":10315},[],[10317],{"type":3080,"value":5035},{"type":3080,"value":10319}," setting.",{"type":3075,"tag":3421,"props":10321,"children":10323},{"id":10322},"storage-security",[10324],{"type":3080,"value":10325},"Storage Security",{"type":3075,"tag":3132,"props":10327,"children":10328},{},[10329,10407],{"type":3075,"tag":3136,"props":10330,"children":10331},{},[10332,10345,10347,10353,10355,10360,10361,10367,10369,10375,10377,10382,10384],{"type":3075,"tag":3170,"props":10333,"children":10334},{},[10335,10337,10343],{"type":3080,"value":10336},"Filesystem Driver (",{"type":3075,"tag":3232,"props":10338,"children":10340},{"className":10339},[],[10341],{"type":3080,"value":10342},"driver: 'fs'",{"type":3080,"value":10344},"):",{"type":3080,"value":10346}," If you use the filesystem driver for ",{"type":3075,"tag":3232,"props":10348,"children":10350},{"className":10349},[],[10351],{"type":3080,"value":10352},"unstorage",{"type":3080,"value":10354}," (e.g., ",{"type":3075,"tag":3232,"props":10356,"children":10358},{"className":10357},[],[10359],{"type":3080,"value":10342},{"type":3080,"value":3397},{"type":3075,"tag":3232,"props":10362,"children":10364},{"className":10363},[],[10365],{"type":3080,"value":10366},"base: '.shield'",{"type":3080,"value":10368},"), ensure that the storage directory (and the ",{"type":3075,"tag":3232,"props":10370,"children":10372},{"className":10371},[],[10373],{"type":3080,"value":10374},"logs",{"type":3080,"value":10376}," directory if logging is enabled via ",{"type":3075,"tag":3232,"props":10378,"children":10380},{"className":10379},[],[10381],{"type":3080,"value":7905},{"type":3080,"value":10383},") is:\n",{"type":3075,"tag":3132,"props":10385,"children":10386},{},[10387,10397],{"type":3075,"tag":3136,"props":10388,"children":10389},{},[10390,10395],{"type":3075,"tag":3170,"props":10391,"children":10392},{},[10393],{"type":3080,"value":10394},"Not web-accessible:",{"type":3080,"value":10396}," Your web server should not be configured to serve files from these directories.",{"type":3075,"tag":3136,"props":10398,"children":10399},{},[10400,10405],{"type":3075,"tag":3170,"props":10401,"children":10402},{},[10403],{"type":3080,"value":10404},"Properly permissioned:",{"type":3080,"value":10406}," The directories should have appropriate server-side file permissions to prevent unauthorized reading or writing.",{"type":3075,"tag":3136,"props":10408,"children":10409},{},[10410,10415],{"type":3075,"tag":3170,"props":10411,"children":10412},{},[10413],{"type":3080,"value":10414},"Other Drivers (Redis, etc.):",{"type":3080,"value":10416}," If using database drivers like Redis, ensure your database server itself is secured (e.g., authentication, network access controls).",{"type":3075,"tag":3421,"props":10418,"children":10420},{"id":10419},"error-message-errormessage",[10421,10423,10429],{"type":3080,"value":10422},"Error Message (",{"type":3075,"tag":3232,"props":10424,"children":10426},{"className":10425},[],[10427],{"type":3080,"value":10428},"errorMessage",{"type":3080,"value":3982},{"type":3075,"tag":3082,"props":10431,"children":10432},{},[10433,10434,10439],{"type":3080,"value":4445},{"type":3075,"tag":3232,"props":10435,"children":10437},{"className":10436},[],[10438],{"type":3080,"value":10428},{"type":3080,"value":10440}," option in the module configuration is returned in the body of a 429 response.",{"type":3075,"tag":3132,"props":10442,"children":10443},{},[10444,10449],{"type":3075,"tag":3136,"props":10445,"children":10446},{},[10447],{"type":3080,"value":10448},"It's recommended to use a plain text message.",{"type":3075,"tag":3136,"props":10450,"children":10451},{},[10452,10454,10459],{"type":3080,"value":10453},"If you choose to use HTML in your ",{"type":3075,"tag":3232,"props":10455,"children":10457},{"className":10456},[],[10458],{"type":3080,"value":10428},{"type":3080,"value":10460},", 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":3075,"tag":3158,"props":10462,"children":10464},{"id":10463},"development",[10465],{"type":3080,"value":10466},"Development",{"type":3075,"tag":3435,"props":10468,"children":10470},{"className":3437,"code":10469,"language":3439,"meta":3019,"style":3019},"# 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",[10471],{"type":3075,"tag":3232,"props":10472,"children":10473},{"__ignoreMap":3019},[10474,10482,10490,10497,10505,10517,10524,10532,10544,10551,10559,10571,10578,10586,10598,10605,10613,10625,10637,10644,10652,10664],{"type":3075,"tag":3445,"props":10475,"children":10476},{"class":3447,"line":3047},[10477],{"type":3075,"tag":3445,"props":10478,"children":10479},{"style":3451},[10480],{"type":3080,"value":10481},"# Install dependencies\n",{"type":3075,"tag":3445,"props":10483,"children":10484},{"class":3447,"line":3043},[10485],{"type":3075,"tag":3445,"props":10486,"children":10487},{"style":3460},[10488],{"type":3080,"value":10489},"yarn\n",{"type":3075,"tag":3445,"props":10491,"children":10492},{"class":3447,"line":3477},[10493],{"type":3075,"tag":3445,"props":10494,"children":10495},{"emptyLinePlaceholder":1200},[10496],{"type":3080,"value":3483},{"type":3075,"tag":3445,"props":10498,"children":10499},{"class":3447,"line":3486},[10500],{"type":3075,"tag":3445,"props":10501,"children":10502},{"style":3451},[10503],{"type":3080,"value":10504},"# Generate type stubs\n",{"type":3075,"tag":3445,"props":10506,"children":10507},{"class":3447,"line":3039},[10508,10512],{"type":3075,"tag":3445,"props":10509,"children":10510},{"style":3460},[10511],{"type":3080,"value":3500},{"type":3075,"tag":3445,"props":10513,"children":10514},{"style":3466},[10515],{"type":3080,"value":10516}," dev:prepare\n",{"type":3075,"tag":3445,"props":10518,"children":10519},{"class":3447,"line":3511},[10520],{"type":3075,"tag":3445,"props":10521,"children":10522},{"emptyLinePlaceholder":1200},[10523],{"type":3080,"value":3483},{"type":3075,"tag":3445,"props":10525,"children":10526},{"class":3447,"line":3519},[10527],{"type":3075,"tag":3445,"props":10528,"children":10529},{"style":3451},[10530],{"type":3080,"value":10531},"# Develop with the playground\n",{"type":3075,"tag":3445,"props":10533,"children":10534},{"class":3447,"line":3064},[10535,10539],{"type":3075,"tag":3445,"props":10536,"children":10537},{"style":3460},[10538],{"type":3080,"value":3500},{"type":3075,"tag":3445,"props":10540,"children":10541},{"style":3466},[10542],{"type":3080,"value":10543}," dev\n",{"type":3075,"tag":3445,"props":10545,"children":10546},{"class":3447,"line":3715},[10547],{"type":3075,"tag":3445,"props":10548,"children":10549},{"emptyLinePlaceholder":1200},[10550],{"type":3080,"value":3483},{"type":3075,"tag":3445,"props":10552,"children":10553},{"class":3447,"line":3724},[10554],{"type":3075,"tag":3445,"props":10555,"children":10556},{"style":3451},[10557],{"type":3080,"value":10558},"# Build the playground\n",{"type":3075,"tag":3445,"props":10560,"children":10561},{"class":3447,"line":3733},[10562,10566],{"type":3075,"tag":3445,"props":10563,"children":10564},{"style":3460},[10565],{"type":3080,"value":3500},{"type":3075,"tag":3445,"props":10567,"children":10568},{"style":3466},[10569],{"type":3080,"value":10570}," dev:build\n",{"type":3075,"tag":3445,"props":10572,"children":10573},{"class":3447,"line":3742},[10574],{"type":3075,"tag":3445,"props":10575,"children":10576},{"emptyLinePlaceholder":1200},[10577],{"type":3080,"value":3483},{"type":3075,"tag":3445,"props":10579,"children":10580},{"class":3447,"line":3751},[10581],{"type":3075,"tag":3445,"props":10582,"children":10583},{"style":3451},[10584],{"type":3080,"value":10585},"# Run ESLint\n",{"type":3075,"tag":3445,"props":10587,"children":10588},{"class":3447,"line":3760},[10589,10593],{"type":3075,"tag":3445,"props":10590,"children":10591},{"style":3460},[10592],{"type":3080,"value":3500},{"type":3075,"tag":3445,"props":10594,"children":10595},{"style":3466},[10596],{"type":3080,"value":10597}," lint\n",{"type":3075,"tag":3445,"props":10599,"children":10600},{"class":3447,"line":3769},[10601],{"type":3075,"tag":3445,"props":10602,"children":10603},{"emptyLinePlaceholder":1200},[10604],{"type":3080,"value":3483},{"type":3075,"tag":3445,"props":10606,"children":10607},{"class":3447,"line":3778},[10608],{"type":3075,"tag":3445,"props":10609,"children":10610},{"style":3451},[10611],{"type":3080,"value":10612},"# Run Vitest\n",{"type":3075,"tag":3445,"props":10614,"children":10615},{"class":3447,"line":3787},[10616,10620],{"type":3075,"tag":3445,"props":10617,"children":10618},{"style":3460},[10619],{"type":3080,"value":3500},{"type":3075,"tag":3445,"props":10621,"children":10622},{"style":3466},[10623],{"type":3080,"value":10624}," test\n",{"type":3075,"tag":3445,"props":10626,"children":10627},{"class":3447,"line":3795},[10628,10632],{"type":3075,"tag":3445,"props":10629,"children":10630},{"style":3460},[10631],{"type":3080,"value":3500},{"type":3075,"tag":3445,"props":10633,"children":10634},{"style":3466},[10635],{"type":3080,"value":10636}," test:watch\n",{"type":3075,"tag":3445,"props":10638,"children":10639},{"class":3447,"line":3804},[10640],{"type":3075,"tag":3445,"props":10641,"children":10642},{"emptyLinePlaceholder":1200},[10643],{"type":3080,"value":3483},{"type":3075,"tag":3445,"props":10645,"children":10646},{"class":3447,"line":3813},[10647],{"type":3075,"tag":3445,"props":10648,"children":10649},{"style":3451},[10650],{"type":3080,"value":10651},"# Release new version\n",{"type":3075,"tag":3445,"props":10653,"children":10654},{"class":3447,"line":3827},[10655,10659],{"type":3075,"tag":3445,"props":10656,"children":10657},{"style":3460},[10658],{"type":3080,"value":3500},{"type":3075,"tag":3445,"props":10660,"children":10661},{"style":3466},[10662],{"type":3080,"value":10663}," release:patch\n",{"type":3075,"tag":3445,"props":10665,"children":10666},{"class":3447,"line":3855},[10667,10671],{"type":3075,"tag":3445,"props":10668,"children":10669},{"style":3460},[10670],{"type":3080,"value":3500},{"type":3075,"tag":3445,"props":10672,"children":10673},{"style":3466},[10674],{"type":3080,"value":10675}," release:minor\n",{"type":3075,"tag":10677,"props":10678,"children":10679},"style",{},[10680],{"type":3080,"value":10681},"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":3019,"searchDepth":3043,"depth":3043,"links":10683},[10684,10685,10696,10701,10706,10712,10716,10720,10726],{"id":3160,"depth":3043,"text":399},{"id":3416,"depth":3043,"text":3419,"children":10686},[10687,10689,10691,10693,10695],{"id":3423,"depth":3477,"text":10688},"1. Add nuxt-api-shield dependency to your project",{"id":3545,"depth":3477,"text":10690},"2. Add nuxt-api-shield to the modules section of nuxt.config.ts",{"id":4577,"depth":3477,"text":10692},"3. Add nitro\u002Fstorage to nuxt.config.ts",{"id":4986,"depth":3477,"text":10694},"4. Schedule bundled cleanup tasks in nuxt.config.ts",{"id":5287,"depth":3477,"text":5290},{"id":7376,"depth":3043,"text":7379,"children":10697},[10698,10699],{"id":7382,"depth":3477,"text":7385},{"id":7792,"depth":3477,"text":10700},"When memory \u002F fs is acceptable",{"id":7851,"depth":3043,"text":7854,"children":10702},[10703,10704,10705],{"id":7877,"depth":3477,"text":7880},{"id":8131,"depth":3477,"text":8134},{"id":8183,"depth":3477,"text":8186},{"id":8449,"depth":3043,"text":8452,"children":10707},[10708,10710],{"id":8460,"depth":3477,"text":10709},"RateLimit Type",{"id":9012,"depth":3477,"text":10711},"ModuleOptions Type",{"id":9079,"depth":3043,"text":9082,"children":10713},[10714,10715],{"id":9134,"depth":3477,"text":9137},{"id":9630,"depth":3477,"text":9633},{"id":9825,"depth":3043,"text":9828,"children":10717},[10718,10719],{"id":9855,"depth":3477,"text":9137},{"id":10152,"depth":3477,"text":10155},{"id":10204,"depth":3043,"text":10207,"children":10721},[10722,10723,10724],{"id":10210,"depth":3477,"text":10213},{"id":10322,"depth":3477,"text":10325},{"id":10419,"depth":3477,"text":10725},"Error Message (errorMessage)",{"id":10463,"depth":3043,"text":10466}]