[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$f30r277ag21rfj":3,"module-api-shield":3023,"versions":10738},[4,1124,1971,2817],{"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,2271,2647,2724,2746,2780],{"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,2156,2176,2186,2214,2234],{"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,2150,2153],{"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":2147,"path":2148,"stem":2149,"titleTemplate":6},"Server Components","\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts\u002Fserver-components","docs\u002F5.x\u002F3.guide\u002F1.concepts\u002F6.server-components",{"title":280,"path":2151,"stem":2152,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fconcepts\u002Ftypescript","docs\u002F5.x\u002F3.guide\u002F1.concepts\u002F8.typescript",{"title":284,"path":2154,"stem":2155,"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":2157,"stem":2158,"children":2159,"page":108},"\u002Fdocs\u002F5.x\u002Fguide\u002Fbest-practices","docs\u002F5.x\u002F3.guide\u002F2.best-practices",[2160,2164,2167,2170,2173],{"title":2161,"path":2162,"stem":2163,"titleTemplate":6},"Accessibility","\u002Fdocs\u002F5.x\u002Fguide\u002Fbest-practices\u002Faccessibility","docs\u002F5.x\u002F3.guide\u002F2.best-practices\u002Faccessibility",{"title":1314,"path":2165,"stem":2166,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fbest-practices\u002Fdevcontainers","docs\u002F5.x\u002F3.guide\u002F2.best-practices\u002Fdevcontainers",{"title":1318,"path":2168,"stem":2169,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fbest-practices\u002Fhydration","docs\u002F5.x\u002F3.guide\u002F2.best-practices\u002Fhydration",{"title":299,"path":2171,"stem":2172,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fbest-practices\u002Fperformance","docs\u002F5.x\u002F3.guide\u002F2.best-practices\u002Fperformance",{"title":303,"path":2174,"stem":2175,"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":2177,"stem":2178,"children":2179,"page":108},"\u002Fdocs\u002F5.x\u002Fguide\u002Fai","docs\u002F5.x\u002F3.guide\u002F3.ai",[2180,2183],{"title":314,"path":2181,"stem":2182,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fai\u002Fmcp","docs\u002F5.x\u002F3.guide\u002F3.ai\u002F1.mcp",{"title":318,"path":2184,"stem":2185,"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":2187,"stem":2188,"children":2189,"page":108},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules","docs\u002F5.x\u002F3.guide\u002F4.modules",[2190,2193,2196,2199,2202,2205,2208,2211],{"title":329,"path":2191,"stem":2192,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Fgetting-started","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F1.getting-started",{"title":333,"path":2194,"stem":2195,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Fmodule-anatomy","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F2.module-anatomy",{"title":337,"path":2197,"stem":2198,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Frecipes-basics","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F3.recipes-basics",{"title":341,"path":2200,"stem":2201,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Fmodule-dependencies","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F4.module-dependencies",{"title":345,"path":2203,"stem":2204,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Frecipes-advanced","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F5.recipes-advanced",{"title":349,"path":2206,"stem":2207,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Ftesting","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F6.testing",{"title":353,"path":2209,"stem":2210,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Fbest-practices","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F7.best-practices",{"title":357,"path":2212,"stem":2213,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fmodules\u002Fecosystem","docs\u002F5.x\u002F3.guide\u002F4.modules\u002F8.ecosystem",{"title":361,"titleTemplate":362,"icon":363,"path":2215,"stem":2216,"children":2217,"page":108},"\u002Fdocs\u002F5.x\u002Fguide\u002Frecipes","docs\u002F5.x\u002F3.guide\u002F5.recipes",[2218,2221,2224,2227,2230],{"title":368,"path":2219,"stem":2220,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Frecipes\u002Fcustom-routing","docs\u002F5.x\u002F3.guide\u002F5.recipes\u002F1.custom-routing",{"title":372,"path":2222,"stem":2223,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Frecipes\u002Fvite-plugin","docs\u002F5.x\u002F3.guide\u002F5.recipes\u002F2.vite-plugin",{"title":376,"path":2225,"stem":2226,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Frecipes\u002Fcustom-usefetch","docs\u002F5.x\u002F3.guide\u002F5.recipes\u002F3.custom-usefetch",{"title":380,"path":2228,"stem":2229,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Frecipes\u002Fsessions-and-authentication","docs\u002F5.x\u002F3.guide\u002F5.recipes\u002F4.sessions-and-authentication",{"title":2231,"path":2232,"stem":2233,"titleTemplate":6},"Mostly-Static Sites","\u002Fdocs\u002F5.x\u002Fguide\u002Frecipes\u002Fmostly-static-sites","docs\u002F5.x\u002F3.guide\u002F5.recipes\u002F5.mostly-static-sites",{"title":384,"titleTemplate":385,"icon":386,"path":2235,"stem":2236,"children":2237,"page":108},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further","docs\u002F5.x\u002F3.guide\u002F6.going-further",[2238,2241,2244,2247,2250,2253,2256,2259,2262,2265,2268],{"title":391,"path":2239,"stem":2240,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fevents","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F1.events",{"title":395,"path":2242,"stem":2243,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fexperimental-features","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F1.experimental-features",{"title":399,"path":2245,"stem":2246,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Ffeatures","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F1.features",{"title":403,"path":2248,"stem":2249,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fruntime-config","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F10.runtime-config",{"title":407,"path":2251,"stem":2252,"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":2254,"stem":2255,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fhooks","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F2.hooks",{"title":415,"path":2257,"stem":2258,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fkit","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F4.kit",{"title":419,"path":2260,"stem":2261,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fnuxt-app","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F6.nuxt-app",{"title":423,"path":2263,"stem":2264,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Flayers","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F7.layers",{"title":1413,"path":2266,"stem":2267,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fguide\u002Fgoing-further\u002Fbuilders","docs\u002F5.x\u002F3.guide\u002F6.going-further\u002F8.builders",{"title":427,"path":2269,"stem":2270,"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":2272,"stem":2273,"children":2274,"page":108},"\u002Fdocs\u002F5.x\u002Fapi","docs\u002F5.x\u002F4.api",[2275,2327,2430,2521,2573,2634,2644],{"title":438,"titleTemplate":439,"icon":324,"path":2276,"stem":2277,"children":2278,"page":108},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents","docs\u002F5.x\u002F4.api\u002F1.components",[2279,2282,2285,2288,2291,2294,2297,2300,2303,2306,2309,2312,2315,2318,2321,2324],{"title":444,"path":2280,"stem":2281,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fclient-only","docs\u002F5.x\u002F4.api\u002F1.components\u002F1.client-only",{"title":448,"path":2283,"stem":2284,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fdev-only","docs\u002F5.x\u002F4.api\u002F1.components\u002F1.dev-only",{"title":452,"path":2286,"stem":2287,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-client-fallback","docs\u002F5.x\u002F4.api\u002F1.components\u002F1.nuxt-client-fallback",{"title":456,"path":2289,"stem":2290,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-picture","docs\u002F5.x\u002F4.api\u002F1.components\u002F10.nuxt-picture",{"title":460,"path":2292,"stem":2293,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fteleports","docs\u002F5.x\u002F4.api\u002F1.components\u002F11.teleports",{"title":464,"path":2295,"stem":2296,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-route-announcer","docs\u002F5.x\u002F4.api\u002F1.components\u002F12.nuxt-route-announcer",{"title":468,"path":2298,"stem":2299,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-time","docs\u002F5.x\u002F4.api\u002F1.components\u002F13.nuxt-time",{"title":1449,"path":2301,"stem":2302,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-announcer","docs\u002F5.x\u002F4.api\u002F1.components\u002F14.nuxt-announcer",{"title":472,"path":2304,"stem":2305,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-page","docs\u002F5.x\u002F4.api\u002F1.components\u002F2.nuxt-page",{"title":476,"path":2307,"stem":2308,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-layout","docs\u002F5.x\u002F4.api\u002F1.components\u002F3.nuxt-layout",{"title":480,"path":2310,"stem":2311,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-link","docs\u002F5.x\u002F4.api\u002F1.components\u002F4.nuxt-link",{"title":484,"path":2313,"stem":2314,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-loading-indicator","docs\u002F5.x\u002F4.api\u002F1.components\u002F5.nuxt-loading-indicator",{"title":488,"path":2316,"stem":2317,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-error-boundary","docs\u002F5.x\u002F4.api\u002F1.components\u002F6.nuxt-error-boundary",{"title":492,"path":2319,"stem":2320,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-welcome","docs\u002F5.x\u002F4.api\u002F1.components\u002F7.nuxt-welcome",{"title":496,"path":2322,"stem":2323,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomponents\u002Fnuxt-island","docs\u002F5.x\u002F4.api\u002F1.components\u002F8.nuxt-island",{"title":500,"path":2325,"stem":2326,"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":2328,"stem":2329,"children":2330,"page":108},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables","docs\u002F5.x\u002F4.api\u002F2.composables",[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,2418,2421,2424,2427],{"title":1481,"path":2332,"stem":2333,"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":2335,"stem":2336,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fcreate-use-fetch","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fcreate-use-fetch",{"title":511,"path":2338,"stem":2339,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fon-prehydrate","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fon-prehydrate",{"title":1492,"path":2341,"stem":2342,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-announcer","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-announcer",{"title":515,"path":2344,"stem":2345,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-app-config","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-app-config",{"title":519,"path":2347,"stem":2348,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-async-data","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-async-data",{"title":523,"path":2350,"stem":2351,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-cookie","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-cookie",{"title":527,"path":2353,"stem":2354,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-error","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-error",{"title":531,"path":2356,"stem":2357,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-fetch","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-fetch",{"title":535,"path":2359,"stem":2360,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-head","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-head",{"title":539,"path":2362,"stem":2363,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-head-safe","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-head-safe",{"title":543,"path":2365,"stem":2366,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-hydration","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-hydration",{"title":1520,"path":2368,"stem":2369,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-layout","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-layout",{"title":547,"path":2371,"stem":2372,"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":2374,"stem":2375,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-lazy-fetch","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-lazy-fetch",{"title":555,"path":2377,"stem":2378,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-loading-indicator","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-loading-indicator",{"title":559,"path":2380,"stem":2381,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-nuxt-app","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-nuxt-app",{"title":563,"path":2383,"stem":2384,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-nuxt-data","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-nuxt-data",{"title":567,"path":2386,"stem":2387,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-preview-mode","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-preview-mode",{"title":571,"path":2389,"stem":2390,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-request-event","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-request-event",{"title":575,"path":2392,"stem":2393,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-request-fetch","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-request-fetch",{"title":579,"path":2395,"stem":2396,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-request-header","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-request-header",{"title":583,"path":2398,"stem":2399,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-request-headers","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-request-headers",{"title":587,"path":2401,"stem":2402,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-request-url","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-request-url",{"title":591,"path":2404,"stem":2405,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-response-header","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-response-header",{"title":595,"path":2407,"stem":2408,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-route","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-route",{"title":599,"path":2410,"stem":2411,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-route-announcer","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-route-announcer",{"title":603,"path":2413,"stem":2414,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-router","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-router",{"title":607,"path":2416,"stem":2417,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-runtime-config","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-runtime-config",{"title":611,"path":2419,"stem":2420,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-runtime-hook","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-runtime-hook",{"title":615,"path":2422,"stem":2423,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcomposables\u002Fuse-seo-meta","docs\u002F5.x\u002F4.api\u002F2.composables\u002Fuse-seo-meta",{"title":619,"path":2425,"stem":2426,"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":2428,"stem":2429,"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":2431,"stem":2432,"children":2433,"page":108},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils","docs\u002F5.x\u002F4.api\u002F3.utils",[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,2509,2512,2515,2518],{"title":634,"path":2435,"stem":2436,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fdollarfetch","docs\u002F5.x\u002F4.api\u002F3.utils\u002F$fetch",{"title":638,"path":2438,"stem":2439,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fabort-navigation","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fabort-navigation",{"title":642,"path":2441,"stem":2442,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fadd-route-middleware","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fadd-route-middleware",{"title":646,"path":2444,"stem":2445,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fcall-once","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fcall-once",{"title":650,"path":2447,"stem":2448,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fclear-error","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fclear-error",{"title":654,"path":2450,"stem":2451,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fclear-nuxt-data","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fclear-nuxt-data",{"title":658,"path":2453,"stem":2454,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fclear-nuxt-state","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fclear-nuxt-state",{"title":662,"path":2456,"stem":2457,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fcreate-error","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fcreate-error",{"title":666,"path":2459,"stem":2460,"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":2462,"stem":2463,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fdefine-nuxt-component","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fdefine-nuxt-component",{"title":674,"path":2465,"stem":2466,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fdefine-nuxt-plugin","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fdefine-nuxt-plugin",{"title":678,"path":2468,"stem":2469,"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":2471,"stem":2472,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fdefine-page-meta","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fdefine-page-meta",{"title":686,"path":2474,"stem":2475,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fdefine-route-rules","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fdefine-route-rules",{"title":690,"path":2477,"stem":2478,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fnavigate-to","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fnavigate-to",{"title":694,"path":2480,"stem":2481,"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":2483,"stem":2484,"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":2486,"stem":2487,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fon-nuxt-ready","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fon-nuxt-ready",{"title":706,"path":2489,"stem":2490,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fprefetch-components","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fprefetch-components",{"title":710,"path":2492,"stem":2493,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fpreload-components","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fpreload-components",{"title":714,"path":2495,"stem":2496,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fpreload-route-components","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fpreload-route-components",{"title":718,"path":2498,"stem":2499,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fprerender-routes","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fprerender-routes",{"title":722,"path":2501,"stem":2502,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Frefresh-cookie","docs\u002F5.x\u002F4.api\u002F3.utils\u002Frefresh-cookie",{"title":726,"path":2504,"stem":2505,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Frefresh-nuxt-data","docs\u002F5.x\u002F4.api\u002F3.utils\u002Frefresh-nuxt-data",{"title":730,"path":2507,"stem":2508,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Freload-nuxt-app","docs\u002F5.x\u002F4.api\u002F3.utils\u002Freload-nuxt-app",{"title":734,"path":2510,"stem":2511,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fset-page-layout","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fset-page-layout",{"title":738,"path":2513,"stem":2514,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fset-response-status","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fset-response-status",{"title":742,"path":2516,"stem":2517,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Futils\u002Fshow-error","docs\u002F5.x\u002F4.api\u002F3.utils\u002Fshow-error",{"title":746,"path":2519,"stem":2520,"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":2522,"stem":2523,"children":2524,"page":108},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands","docs\u002F5.x\u002F4.api\u002F4.commands",[2525,2528,2531,2534,2537,2540,2543,2546,2549,2552,2555,2558,2561,2564,2567,2570],{"title":757,"path":2526,"stem":2527,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fadd","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fadd",{"title":761,"path":2529,"stem":2530,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fanalyze","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fanalyze",{"title":765,"path":2532,"stem":2533,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fbuild","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fbuild",{"title":769,"path":2535,"stem":2536,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fbuild-module","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fbuild-module",{"title":773,"path":2538,"stem":2539,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fcleanup","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fcleanup",{"title":777,"path":2541,"stem":2542,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fdev","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fdev",{"title":781,"path":2544,"stem":2545,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fdevtools","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fdevtools",{"title":785,"path":2547,"stem":2548,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fgenerate","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fgenerate",{"title":789,"path":2550,"stem":2551,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Finfo","docs\u002F5.x\u002F4.api\u002F4.commands\u002Finfo",{"title":793,"path":2553,"stem":2554,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Finit","docs\u002F5.x\u002F4.api\u002F4.commands\u002Finit",{"title":797,"path":2556,"stem":2557,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fmodule","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fmodule",{"title":801,"path":2559,"stem":2560,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fprepare","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fprepare",{"title":805,"path":2562,"stem":2563,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fpreview","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fpreview",{"title":809,"path":2565,"stem":2566,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Ftest","docs\u002F5.x\u002F4.api\u002F4.commands\u002Ftest",{"title":813,"path":2568,"stem":2569,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Ftypecheck","docs\u002F5.x\u002F4.api\u002F4.commands\u002Ftypecheck",{"title":817,"path":2571,"stem":2572,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fcommands\u002Fupgrade","docs\u002F5.x\u002F4.api\u002F4.commands\u002Fupgrade",{"title":415,"titleTemplate":821,"icon":822,"path":2574,"stem":2575,"children":2576,"page":108},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit","docs\u002F5.x\u002F4.api\u002F5.kit",[2577,2580,2583,2586,2589,2592,2595,2598,2601,2604,2607,2610,2613,2616,2619,2622,2625,2628,2631],{"title":276,"path":2578,"stem":2579,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fmodules","docs\u002F5.x\u002F4.api\u002F5.kit\u002F1.modules",{"title":403,"path":2581,"stem":2582,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fruntime-config","docs\u002F5.x\u002F4.api\u002F5.kit\u002F10.runtime-config",{"title":833,"path":2584,"stem":2585,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Ftemplates","docs\u002F5.x\u002F4.api\u002F5.kit\u002F10.templates",{"title":1740,"path":2587,"stem":2588,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fapp-config","docs\u002F5.x\u002F4.api\u002F5.kit\u002F11.app-config",{"title":837,"path":2590,"stem":2591,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fnitro","docs\u002F5.x\u002F4.api\u002F5.kit\u002F12.nitro",{"title":841,"path":2593,"stem":2594,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fresolving","docs\u002F5.x\u002F4.api\u002F5.kit\u002F13.resolving",{"title":845,"path":2596,"stem":2597,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Flogging","docs\u002F5.x\u002F4.api\u002F5.kit\u002F14.logging",{"title":849,"path":2599,"stem":2600,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fbuilder","docs\u002F5.x\u002F4.api\u002F5.kit\u002F15.builder",{"title":853,"path":2602,"stem":2603,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fexamples","docs\u002F5.x\u002F4.api\u002F5.kit\u002F16.examples",{"title":84,"path":2605,"stem":2606,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Flayers","docs\u002F5.x\u002F4.api\u002F5.kit\u002F17.layers",{"title":860,"path":2608,"stem":2609,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fprogrammatic","docs\u002F5.x\u002F4.api\u002F5.kit\u002F2.programmatic",{"title":864,"path":2611,"stem":2612,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fcompatibility","docs\u002F5.x\u002F4.api\u002F5.kit\u002F3.compatibility",{"title":268,"path":2614,"stem":2615,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fautoimports","docs\u002F5.x\u002F4.api\u002F5.kit\u002F4.autoimports",{"title":438,"path":2617,"stem":2618,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fcomponents","docs\u002F5.x\u002F4.api\u002F5.kit\u002F5.components",{"title":874,"path":2620,"stem":2621,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fcontext","docs\u002F5.x\u002F4.api\u002F5.kit\u002F6.context",{"title":878,"path":2623,"stem":2624,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fpages","docs\u002F5.x\u002F4.api\u002F5.kit\u002F7.pages",{"title":882,"path":2626,"stem":2627,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Flayout","docs\u002F5.x\u002F4.api\u002F5.kit\u002F8.layout",{"title":886,"path":2629,"stem":2630,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fhead","docs\u002F5.x\u002F4.api\u002F5.kit\u002F9.head",{"title":890,"path":2632,"stem":2633,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fkit\u002Fplugins","docs\u002F5.x\u002F4.api\u002F5.kit\u002F9.plugins",{"title":894,"titleTemplate":6,"icon":895,"path":2635,"stem":2636,"children":2637,"page":108},"\u002Fdocs\u002F5.x\u002Fapi\u002Fadvanced","docs\u002F5.x\u002F4.api\u002F6.advanced",[2638,2641],{"title":411,"path":2639,"stem":2640,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fadvanced\u002Fhooks","docs\u002F5.x\u002F4.api\u002F6.advanced\u002F1.hooks",{"title":903,"path":2642,"stem":2643,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fapi\u002Fadvanced\u002Fimport-meta","docs\u002F5.x\u002F4.api\u002F6.advanced\u002F2.import-meta",{"title":907,"path":2645,"stem":2646,"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":2648,"stem":2649,"children":2650,"page":108},"\u002Fdocs\u002F5.x\u002Fexamples","docs\u002F5.x\u002F4.examples",[2651,2654,2673,2686,2717],{"title":918,"path":2652,"stem":2653,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fhello-world","docs\u002F5.x\u002F4.examples\u002F0.hello-world",{"title":399,"path":2655,"stem":2656,"children":2657,"page":108},"\u002Fdocs\u002F5.x\u002Fexamples\u002Ffeatures","docs\u002F5.x\u002F4.examples\u002F1.features",[2658,2661,2664,2667,2670],{"title":926,"path":2659,"stem":2660,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Ffeatures\u002Fauto-imports","docs\u002F5.x\u002F4.examples\u002F1.features\u002F1.auto-imports",{"title":64,"path":2662,"stem":2663,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Ffeatures\u002Fdata-fetching","docs\u002F5.x\u002F4.examples\u002F1.features\u002F2.data-fetching",{"title":69,"path":2665,"stem":2666,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Ffeatures\u002Fstate-management","docs\u002F5.x\u002F4.examples\u002F1.features\u002F3.state-management",{"title":936,"path":2668,"stem":2669,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Ffeatures\u002Fmeta-tags","docs\u002F5.x\u002F4.examples\u002F1.features\u002F4.meta-tags",{"title":940,"path":2671,"stem":2672,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Ffeatures\u002Flayouts","docs\u002F5.x\u002F4.examples\u002F1.features\u002F5.layouts",{"title":49,"path":2674,"stem":2675,"children":2676,"page":108},"\u002Fdocs\u002F5.x\u002Fexamples\u002Frouting","docs\u002F5.x\u002F4.examples\u002F2.routing",[2677,2680,2683],{"title":948,"path":2678,"stem":2679,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Frouting\u002Fmiddleware","docs\u002F5.x\u002F4.examples\u002F2.routing\u002Fmiddleware",{"title":878,"path":2681,"stem":2682,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Frouting\u002Fpages","docs\u002F5.x\u002F4.examples\u002F2.routing\u002Fpages",{"title":955,"path":2684,"stem":2685,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Frouting\u002Funiversal-router","docs\u002F5.x\u002F4.examples\u002F2.routing\u002Funiversal-router",{"title":894,"path":2687,"stem":2688,"children":2689,"page":108},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced","docs\u002F5.x\u002F4.examples\u002F4.advanced",[2690,2693,2696,2699,2702,2705,2708,2711,2714],{"title":84,"path":2691,"stem":2692,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Fconfig-extends","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Fconfig-extends",{"title":74,"path":2694,"stem":2695,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Ferror-handling","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Ferror-handling",{"title":969,"path":2697,"stem":2698,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Fjsx","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Fjsx",{"title":973,"path":2700,"stem":2701,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Flocale","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Flocale",{"title":977,"path":2703,"stem":2704,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Fmodule-extend-pages","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Fmodule-extend-pages",{"title":981,"path":2706,"stem":2707,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Fteleport","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Fteleport",{"title":99,"path":2709,"stem":2710,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Ftesting","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Ftesting",{"title":523,"path":2712,"stem":2713,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fadvanced\u002Fuse-cookie","docs\u002F5.x\u002F4.examples\u002F4.advanced\u002Fuse-cookie",{"title":991,"path":2715,"stem":2716,"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":2718,"stem":2719,"children":2720,"page":108},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fexperimental","docs\u002F5.x\u002F4.examples\u002F7.experimental",[2721],{"title":1000,"path":2722,"stem":2723,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fexamples\u002Fexperimental\u002Fwasm","docs\u002F5.x\u002F4.examples\u002F7.experimental\u002Fwasm",{"title":1004,"titleTemplate":1005,"icon":1006,"path":2725,"stem":2726,"children":2727,"page":108},"\u002Fdocs\u002F5.x\u002Fcommunity","docs\u002F5.x\u002F5.community",[2728,2731,2734,2737,2740,2743],{"title":1011,"path":2729,"stem":2730,"titleTemplate":6,"icon":1014},"\u002Fdocs\u002F5.x\u002Fcommunity\u002Fgetting-help","docs\u002F5.x\u002F5.community\u002F2.getting-help",{"title":1016,"path":2732,"stem":2733,"titleTemplate":6,"icon":1019},"\u002Fdocs\u002F5.x\u002Fcommunity\u002Freporting-bugs","docs\u002F5.x\u002F5.community\u002F3.reporting-bugs",{"title":1021,"path":2735,"stem":2736,"titleTemplate":6,"icon":1024},"\u002Fdocs\u002F5.x\u002Fcommunity\u002Fcontribution","docs\u002F5.x\u002F5.community\u002F4.contribution",{"title":1026,"path":2738,"stem":2739,"titleTemplate":6,"icon":1029},"\u002Fdocs\u002F5.x\u002Fcommunity\u002Fframework-contribution","docs\u002F5.x\u002F5.community\u002F5.framework-contribution",{"title":1031,"path":2741,"stem":2742,"titleTemplate":6,"icon":1034},"\u002Fdocs\u002F5.x\u002Fcommunity\u002Froadmap","docs\u002F5.x\u002F5.community\u002F6.roadmap",{"title":1036,"path":2744,"stem":2745,"titleTemplate":6,"icon":1039},"\u002Fdocs\u002F5.x\u002Fcommunity\u002Fchangelog","docs\u002F5.x\u002F5.community\u002F7.changelog",{"title":1041,"titleTemplate":1042,"icon":1043,"path":2747,"stem":2748,"children":2749,"page":108},"\u002Fdocs\u002F5.x\u002Fbridge","docs\u002F5.x\u002F6.bridge",[2750,2753,2756,2759,2762,2765,2768,2771,2774,2777],{"title":1048,"path":2751,"stem":2752,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Foverview","docs\u002F5.x\u002F6.bridge\u002F1.overview",{"title":29,"path":2754,"stem":2755,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fconfiguration","docs\u002F5.x\u002F6.bridge\u002F10.configuration",{"title":280,"path":2757,"stem":2758,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Ftypescript","docs\u002F5.x\u002F6.bridge\u002F2.typescript",{"title":1058,"path":2760,"stem":2761,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fbridge-composition-api","docs\u002F5.x\u002F6.bridge\u002F3.bridge-composition-api",{"title":1062,"path":2763,"stem":2764,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fplugins-and-middleware","docs\u002F5.x\u002F6.bridge\u002F4.plugins-and-middleware",{"title":1066,"path":2766,"stem":2767,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fnuxt3-compatible-api","docs\u002F5.x\u002F6.bridge\u002F5.nuxt3-compatible-api",{"title":936,"path":2769,"stem":2770,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fmeta","docs\u002F5.x\u002F6.bridge\u002F6.meta",{"title":403,"path":2772,"stem":2773,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fruntime-config","docs\u002F5.x\u002F6.bridge\u002F7.runtime-config",{"title":837,"path":2775,"stem":2776,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fnitro","docs\u002F5.x\u002F6.bridge\u002F8.nitro",{"title":1079,"path":2778,"stem":2779,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fbridge\u002Fvite","docs\u002F5.x\u002F6.bridge\u002F9.vite",{"title":1083,"titleTemplate":1084,"icon":107,"path":2781,"stem":2782,"children":2783,"page":108},"\u002Fdocs\u002F5.x\u002Fmigration","docs\u002F5.x\u002F7.migration",[2784,2787,2790,2793,2796,2799,2802,2805,2808,2811,2814],{"title":1048,"path":2785,"stem":2786,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Foverview","docs\u002F5.x\u002F7.migration\u002F1.overview",{"title":1092,"path":2788,"stem":2789,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fbundling","docs\u002F5.x\u002F7.migration\u002F10.bundling",{"title":79,"path":2791,"stem":2792,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fserver","docs\u002F5.x\u002F7.migration\u002F11.server",{"title":29,"path":2794,"stem":2795,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fconfiguration","docs\u002F5.x\u002F7.migration\u002F2.configuration",{"title":276,"path":2797,"stem":2798,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fmodule-authors","docs\u002F5.x\u002F7.migration\u002F20.module-authors",{"title":926,"path":2800,"stem":2801,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fauto-imports","docs\u002F5.x\u002F7.migration\u002F3.auto-imports",{"title":936,"path":2803,"stem":2804,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fmeta","docs\u002F5.x\u002F7.migration\u002F4.meta",{"title":1062,"path":2806,"stem":2807,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fplugins-and-middleware","docs\u002F5.x\u002F7.migration\u002F5.plugins-and-middleware",{"title":1114,"path":2809,"stem":2810,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fpages-and-layouts","docs\u002F5.x\u002F7.migration\u002F6.pages-and-layouts",{"title":1118,"path":2812,"stem":2813,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fcomponent-options","docs\u002F5.x\u002F7.migration\u002F7.component-options",{"title":403,"path":2815,"stem":2816,"titleTemplate":6},"\u002Fdocs\u002F5.x\u002Fmigration\u002Fruntime-config","docs\u002F5.x\u002F7.migration\u002F8.runtime-config",{"title":2818,"icon":2819,"path":2820,"stem":2821,"children":2822,"page":108},"Blog","i-lucide-newspaper","\u002Fblog","blog",[2823,2827,2831,2835,2839,2843,2847,2851,2855,2859,2863,2867,2871,2875,2879,2883,2887,2891,2895,2899,2903,2907,2911,2915,2919,2923,2927,2931,2935,2939,2943,2947,2951,2955,2959,2963,2967,2971,2975,2979,2983,2987,2991,2995,2999,3003,3007,3011,3015,3019],{"title":2824,"path":2825,"stem":2826},"Announcing 3.0","\u002Fblog\u002Fv3","blog\u002F1.v3",{"title":2828,"path":2829,"stem":2830},"Nuxt 3.3","\u002Fblog\u002Fv3-3","blog\u002F10.v3-3",{"title":2832,"path":2833,"stem":2834},"Nuxt 3.4","\u002Fblog\u002Fv3-4","blog\u002F11.v3-4",{"title":2836,"path":2837,"stem":2838},"Nuxt 3.5","\u002Fblog\u002Fv3-5","blog\u002F12.v3-5",{"title":2840,"path":2841,"stem":2842},"Nuxt 3.6","\u002Fblog\u002Fv3-6","blog\u002F13.v3-6",{"title":2844,"path":2845,"stem":2846},"Nuxt on the Edge","\u002Fblog\u002Fnuxt-on-the-edge","blog\u002F14.nuxt-on-the-edge",{"title":2848,"path":2849,"stem":2850},"Nuxt 3.7","\u002Fblog\u002Fv3-7","blog\u002F15.v3-7",{"title":2852,"path":2853,"stem":2854},"A New Website","\u002Fblog\u002Fnew-website","blog\u002F16.new-website",{"title":2856,"path":2857,"stem":2858},"Nuxt 3.8","\u002Fblog\u002Fv3-8","blog\u002F17.v3-8",{"title":2860,"path":2861,"stem":2862},"Nuxt DevTools v1.0","\u002Fblog\u002Fnuxt-devtools-v1-0","blog\u002F18.nuxt-devtools-v1-0",{"title":2864,"path":2865,"stem":2866},"Nuxt 3.9","\u002Fblog\u002Fv3-9","blog\u002F19.v3-9",{"title":2868,"path":2869,"stem":2870},"Nuxt: A vision for 2023","\u002Fblog\u002Fvision-2023","blog\u002F2.vision-2023",{"title":2872,"path":2873,"stem":2874},"Nuxt 3.10","\u002Fblog\u002Fv3-10","blog\u002F20.v3-10",{"title":2876,"path":2877,"stem":2878},"The Evolution of Shiki v1.0","\u002Fblog\u002Fshiki-v1","blog\u002F21.shiki-v1",{"title":2880,"path":2881,"stem":2882},"Nuxt 3.11","\u002Fblog\u002Fv3-11","blog\u002F22.v3-11",{"title":2884,"path":2885,"stem":2886},"Nuxt: Looking forward","\u002Fblog\u002Flooking-forward-2024","blog\u002F23.looking-forward-2024",{"title":2888,"path":2889,"stem":2890},"Refreshed Nuxt ESLint Integrations","\u002Fblog\u002Feslint-module","blog\u002F24.eslint-module",{"title":2892,"path":2893,"stem":2894},"Nuxt 3.12","\u002Fblog\u002Fv3-12","blog\u002F25.v3-12",{"title":2896,"path":2897,"stem":2898},"Introducing Nuxt Scripts","\u002Fblog\u002Fnuxt-scripts","blog\u002F26.nuxt-scripts",{"title":2900,"path":2901,"stem":2902},"Nuxt 3.13","\u002Fblog\u002Fv3-13","blog\u002F27.v3-13",{"title":2904,"path":2905,"stem":2906},"Nuxt 3.14","\u002Fblog\u002Fv3-14","blog\u002F27.v3-14",{"title":2908,"path":2909,"stem":2910},"Introducing Nuxt Icon v1","\u002Fblog\u002Fnuxt-icon-v1-0","blog\u002F29.nuxt-icon-v1-0",{"title":2912,"path":2913,"stem":2914},"Introducing Nuxt DevTools","\u002Fblog\u002Fintroducing-nuxt-devtools","blog\u002F3.introducing-nuxt-devtools",{"title":2916,"path":2917,"stem":2918},"Announcing Nuxt 3 Release Candidate","\u002Fblog\u002Fnuxt3-rc","blog\u002F3.nuxt3-rc",{"title":2920,"path":2921,"stem":2922},"Nuxt 3.15","\u002Fblog\u002Fv3-15","blog\u002F30.v3-15",{"title":2924,"path":2925,"stem":2926},"Nuxt 3.16","\u002Fblog\u002Fv3-16","blog\u002F31.v3-16",{"title":2928,"path":2929,"stem":2930},"Nuxt UI v3","\u002Fblog\u002Fnuxt-ui-v3","blog\u002F32.nuxt-ui-v3",{"title":2932,"path":2933,"stem":2934},"Nuxt 3.17","\u002Fblog\u002Fv3-17","blog\u002F33.v3-17",{"title":2936,"path":2937,"stem":2938},"Roadmap to v4","\u002Fblog\u002Froadmap-v4","blog\u002F34.roadmap-v4",{"title":2940,"path":2941,"stem":2942},"Building a Privacy-First Feedback Widget","\u002Fblog\u002Fbuilding-a-feedback-widget","blog\u002F35.building-a-feedback-widget",{"title":2944,"path":2945,"stem":2946},"Announcing Nuxt 4.0","\u002Fblog\u002Fv4","blog\u002F36.v4",{"title":2948,"path":2949,"stem":2950},"Nuxt 3.18","\u002Fblog\u002Fv3-18","blog\u002F37.v3-18",{"title":2952,"path":2953,"stem":2954},"Nuxt 4.1","\u002Fblog\u002Fv4-1","blog\u002F38.v4-1",{"title":2956,"path":2957,"stem":2958},"Nuxt UI v4","\u002Fblog\u002Fnuxt-ui-v4","blog\u002F39.nuxt-ui-v4",{"title":2960,"path":2961,"stem":2962},"Nuxt 2 End-of-Life (EOL)","\u002Fblog\u002Fnuxt2-eol","blog\u002F4.nuxt2-eol",{"title":2964,"path":2965,"stem":2966},"Introducing Nuxt 3 Beta","\u002Fblog\u002Fnuxt3-beta","blog\u002F4.nuxt3-beta",{"title":2968,"path":2969,"stem":2970},"Building an MCP Server for Nuxt","\u002Fblog\u002Fbuilding-nuxt-mcp","blog\u002F40.building-nuxt-mcp",{"title":2972,"path":2973,"stem":2974},"Nuxt 4.2","\u002Fblog\u002Fv4-2","blog\u002F40.v4-2",{"title":2976,"path":2977,"stem":2978},"Nuxt Image v2","\u002Fblog\u002Fnuxt-image-v2","blog\u002F41.nuxt-image-v2",{"title":2980,"path":2981,"stem":2982},"Nuxt 4.3","\u002Fblog\u002Fv4-3","blog\u002F42.v4-3",{"title":2984,"path":2985,"stem":2986},"Nuxt 4.4","\u002Fblog\u002Fv4-4","blog\u002F43.v4-4",{"title":2988,"path":2989,"stem":2990},"Introducing the Nuxt Agent","\u002Fblog\u002Fintroducing-nuxt-agent","blog\u002F44.introducing-nuxt-agent",{"title":2992,"path":2993,"stem":2994},"Meet Nuxi","\u002Fblog\u002Fmeet-nuxi","blog\u002F45.meet-nuxi",{"title":2996,"path":2997,"stem":2998},"Nuxt 4.5","\u002Fblog\u002Fv4-5","blog\u002F46.v4-5",{"title":3000,"path":3001,"stem":3002},"Nuxt Security Patch Releases","\u002Fblog\u002Fv4-5-security","blog\u002F47.v4-5-security",{"title":3004,"path":3005,"stem":3006},"Going Full Static","\u002Fblog\u002Fgoing-full-static","blog\u002F5.going-full-static",{"title":3008,"path":3009,"stem":3010},"Introducing Smart Prefetching","\u002Fblog\u002Fintroducing-smart-prefetching","blog\u002F6.introducing-smart-prefetching",{"title":3012,"path":3013,"stem":3014},"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":3016,"path":3017,"stem":3018},"Nuxt 2 Static Improvements","\u002Fblog\u002Fnuxt-static-improvements","blog\u002F8.nuxt-static-improvements",{"title":3020,"path":3021,"stem":3022},"Nuxt 2: From Terminal to Browser","\u002Fblog\u002Fnuxtjs-from-terminal-to-browser","blog\u002F9.nuxtjs-from-terminal-to-browser",{"name":3024,"description":3025,"repo":3026,"npm":3027,"icon":3028,"github":3029,"website":3029,"learn_more":3030,"category":3031,"type":3032,"maintainers":3033,"compatibility":3039,"generatedAt":3042,"contributors":3043,"stats":3071,"readme":3079},"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",[3034],{"name":3035,"github":3036,"twitter":3037,"bluesky":3038},"rrd","rrd108","radharadhya","rrd108.bsky.social",{"nuxt":3040,"requires":3041},">=3.0.0",{},"2026-08-07T07:53:36.155Z",[3044,3047,3051,3055,3059,3062,3065,3068],{"id":3045,"username":3036,"contributions":3046},3147489,282,{"id":3048,"username":3049,"contributions":3050},31929574,"ravesandstorm",5,{"id":3052,"username":3053,"contributions":3054},28706372,"danielroe",2,{"id":3056,"username":3057,"contributions":3058},20068593,"kschnekenburger",1,{"id":3060,"username":3061,"contributions":3058},32599710,"simonmaass",{"id":3063,"username":3064,"contributions":3058},125942725,"nd2024",{"id":3066,"username":3067,"contributions":3058},10197526,"chachew",{"id":3069,"username":3070,"contributions":3058},55457896,"LeeKrane",{"version":3072,"downloads":3073,"stars":3074,"watchers":3074,"forks":3075,"defaultBranch":3076,"publishedAt":3077,"createdAt":3078},"1.0.0",11818,56,8,"main",1782038138831,1711731542236,{"data":3080,"body":3082,"toc":10693},{"title":3081,"description":3030},"Nuxt API Shield",{"type":3083,"children":3084},"root",[3085,3092,3137,3142,3168,3174,3425,3431,3445,3554,3579,3584,3999,4017,4438,4452,4481,4586,4605,4617,4781,4786,4995,5006,5072,5291,5296,5302,5321,5328,5341,5354,6023,6047,6053,6082,6093,7318,7358,7385,7391,7397,7423,7565,7584,7787,7801,7820,7837,7855,7860,7866,7886,7892,7918,8125,8130,8140,8146,8158,8192,8198,8210,8360,8402,8407,8437,8458,8464,8469,8481,8492,8599,8607,9021,9032,9037,9088,9094,9111,9139,9143,9149,9161,9639,9645,9658,9664,9755,9761,9790,9796,9834,9840,9859,9864,9869,10161,10167,10213,10219,10225,10235,10331,10337,10428,10441,10452,10472,10478,10687],{"type":3086,"tag":3087,"props":3088,"children":3089},"element","h1",{"id":3027},[3090],{"type":3091,"value":3081},"text",{"type":3086,"tag":3093,"props":3094,"children":3095},"p",{},[3096,3109,3118,3127],{"type":3086,"tag":3097,"props":3098,"children":3102},"a",{"href":3099,"rel":3100},"https:\u002F\u002Fnpmjs.com\u002Fpackage\u002Fnuxt-api-shield",[3101],"nofollow",[3103],{"type":3086,"tag":3104,"props":3105,"children":3108},"img",{"alt":3106,"src":3107},"npm version","https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002Fnuxt-api-shield\u002Flatest.svg?style=flat&colorA=020420&colorB=00DC82",[],{"type":3086,"tag":3097,"props":3110,"children":3112},{"href":3099,"rel":3111},[3101],[3113],{"type":3086,"tag":3104,"props":3114,"children":3117},{"alt":3115,"src":3116},"npm downloads","https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fdm\u002Fnuxt-api-shield.svg?style=flat&colorA=020420&colorB=00DC82",[],{"type":3086,"tag":3097,"props":3119,"children":3121},{"href":3099,"rel":3120},[3101],[3122],{"type":3086,"tag":3104,"props":3123,"children":3126},{"alt":3124,"src":3125},"License","https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fl\u002Fnuxt-api-shield.svg?style=flat&colorA=020420&colorB=00DC82",[],{"type":3086,"tag":3097,"props":3128,"children":3131},{"href":3129,"rel":3130},"https:\u002F\u002Fnuxt.com",[3101],[3132],{"type":3086,"tag":3104,"props":3133,"children":3136},{"alt":3134,"src":3135},"Nuxt","https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FNuxt-020420?logo=nuxt.js",[],{"type":3086,"tag":3093,"props":3138,"children":3139},{},[3140],{"type":3091,"value":3141},"This Nuxt module implements a rate limiting middleware to protect your API endpoints from excessive requests.",{"type":3086,"tag":3143,"props":3144,"children":3145},"ul",{},[3146],{"type":3086,"tag":3147,"props":3148,"children":3149},"li",{},[3150,3156],{"type":3086,"tag":3097,"props":3151,"children":3153},{"href":3152},"\u002FCHANGELOG.md",[3154],{"type":3091,"value":3155},"✨  Release Notes",{"type":3086,"tag":3143,"props":3157,"children":3158},{},[3159],{"type":3086,"tag":3147,"props":3160,"children":3161},{},[3162],{"type":3086,"tag":3097,"props":3163,"children":3165},{"href":3029,"rel":3164},[3101],[3166],{"type":3091,"value":3167},"📖  Documentation",{"type":3086,"tag":3169,"props":3170,"children":3172},"h2",{"id":3171},"features",[3173],{"type":3091,"value":399},{"type":3086,"tag":3143,"props":3175,"children":3176},{},[3177,3199,3256,3277,3298,3319,3351,3385],{"type":3086,"tag":3147,"props":3178,"children":3179},{},[3180,3186],{"type":3086,"tag":3181,"props":3182,"children":3183},"strong",{},[3184],{"type":3091,"value":3185},"IP-Based Rate limiting and Brute Force Protection",{"type":3086,"tag":3143,"props":3187,"children":3188},{},[3189,3194],{"type":3086,"tag":3147,"props":3190,"children":3191},{},[3192],{"type":3091,"value":3193},"Tracks and enforces rate limits for individual IP addresses.",{"type":3086,"tag":3147,"props":3195,"children":3196},{},[3197],{"type":3091,"value":3198},"Prevents malicious actors or excessive requests from a single source from overwhelming your API.",{"type":3086,"tag":3147,"props":3200,"children":3201},{},[3202,3207],{"type":3086,"tag":3181,"props":3203,"children":3204},{},[3205],{"type":3091,"value":3206},"Customizable Rate Limits",{"type":3086,"tag":3143,"props":3208,"children":3209},{},[3210,3215,3227,3232,3237,3251],{"type":3086,"tag":3147,"props":3211,"children":3212},{},[3213],{"type":3091,"value":3214},"Configure maximum request count, duration within which the limit applies, and a ban period for exceeding the limit.",{"type":3086,"tag":3147,"props":3216,"children":3217},{},[3218,3220,3225],{"type":3091,"value":3219},"If the request limit is exceeded, the user is banned for the configured ban period. During the ban period, ",{"type":3086,"tag":3181,"props":3221,"children":3222},{},[3223],{"type":3091,"value":3224},"all requests are blocked with a 429 error",{"type":3091,"value":3226},", regardless of the rate limit window.",{"type":3086,"tag":3147,"props":3228,"children":3229},{},[3230],{"type":3091,"value":3231},"Add a delay to responses when a user is banned to discourage further abuse (optional).",{"type":3086,"tag":3147,"props":3233,"children":3234},{},[3235],{"type":3091,"value":3236},"Customize the error message for banned users.",{"type":3086,"tag":3147,"props":3238,"children":3239},{},[3240,3242,3249],{"type":3091,"value":3241},"Optionally include the ",{"type":3086,"tag":3243,"props":3244,"children":3246},"code",{"className":3245},[],[3247],{"type":3091,"value":3248},"Retry-After",{"type":3091,"value":3250}," header in responses when a user is banned.",{"type":3086,"tag":3147,"props":3252,"children":3253},{},[3254],{"type":3091,"value":3255},"Tailor the rate-limiting behavior to align with your API's specific needs and usage patterns.",{"type":3086,"tag":3147,"props":3257,"children":3258},{},[3259,3264],{"type":3086,"tag":3181,"props":3260,"children":3261},{},[3262],{"type":3091,"value":3263},"Event-Driven Handling",{"type":3086,"tag":3143,"props":3265,"children":3266},{},[3267,3272],{"type":3086,"tag":3147,"props":3268,"children":3269},{},[3270],{"type":3091,"value":3271},"Intercepts incoming API requests efficiently using Nuxt's event system.",{"type":3086,"tag":3147,"props":3273,"children":3274},{},[3275],{"type":3091,"value":3276},"Ensures seamless integration with your Nuxt application's request lifecycle.",{"type":3086,"tag":3147,"props":3278,"children":3279},{},[3280,3285],{"type":3086,"tag":3181,"props":3281,"children":3282},{},[3283],{"type":3091,"value":3284},"Flexible Storage",{"type":3086,"tag":3143,"props":3286,"children":3287},{},[3288,3293],{"type":3086,"tag":3147,"props":3289,"children":3290},{},[3291],{"type":3091,"value":3292},"Utilizes Nuxt's unstorage abstraction for versatile storage options.",{"type":3086,"tag":3147,"props":3294,"children":3295},{},[3296],{"type":3091,"value":3297},"Store rate-limiting data in various storage providers (filesystem, memory, databases, etc.) based on your project's requirements.",{"type":3086,"tag":3147,"props":3299,"children":3300},{},[3301,3306],{"type":3086,"tag":3181,"props":3302,"children":3303},{},[3304],{"type":3091,"value":3305},"Configurable with Runtime Config",{"type":3086,"tag":3143,"props":3307,"children":3308},{},[3309,3314],{"type":3086,"tag":3147,"props":3310,"children":3311},{},[3312],{"type":3091,"value":3313},"Easily adjust rate-limiting parameters without code changes.",{"type":3086,"tag":3147,"props":3315,"children":3316},{},[3317],{"type":3091,"value":3318},"Adapt to dynamic needs and maintain control over rate-limiting behavior through Nuxt's runtime configuration.",{"type":3086,"tag":3147,"props":3320,"children":3321},{},[3322,3327],{"type":3086,"tag":3181,"props":3323,"children":3324},{},[3325],{"type":3091,"value":3326},"Bundled cleanup tasks",{"type":3086,"tag":3143,"props":3328,"children":3329},{},[3330],{"type":3086,"tag":3147,"props":3331,"children":3332},{},[3333,3335,3341,3343,3349],{"type":3091,"value":3334},"Registers Nitro tasks ",{"type":3086,"tag":3243,"props":3336,"children":3338},{"className":3337},[],[3339],{"type":3091,"value":3340},"shield:cleanBans",{"type":3091,"value":3342}," and ",{"type":3086,"tag":3243,"props":3344,"children":3346},{"className":3345},[],[3347],{"type":3091,"value":3348},"shield:cleanIpData",{"type":3091,"value":3350}," so you can schedule maintenance without adding task files (see setup step 4).",{"type":3086,"tag":3147,"props":3352,"children":3353},{},[3354,3359],{"type":3086,"tag":3181,"props":3355,"children":3356},{},[3357],{"type":3091,"value":3358},"Clear Error Handling",{"type":3086,"tag":3143,"props":3360,"children":3361},{},[3362,3367,3380],{"type":3086,"tag":3147,"props":3363,"children":3364},{},[3365],{"type":3091,"value":3366},"Returns a standardized 429 \"Too Many Requests\" error response when rate limits are exceeded or when a user is banned.",{"type":3086,"tag":3147,"props":3368,"children":3369},{},[3370,3372,3378],{"type":3091,"value":3371},"The 429 body is JSON (",{"type":3086,"tag":3243,"props":3373,"children":3375},{"className":3374},[],[3376],{"type":3091,"value":3377},"{ error, retryAfter }",{"type":3091,"value":3379},") for predictable client-side handling.",{"type":3086,"tag":3147,"props":3381,"children":3382},{},[3383],{"type":3091,"value":3384},"Facilitates proper error handling in client-side applications for a smooth user experience.",{"type":3086,"tag":3147,"props":3386,"children":3387},{},[3388,3393],{"type":3086,"tag":3181,"props":3389,"children":3390},{},[3391],{"type":3091,"value":3392},"Standard Rate-Limit Headers",{"type":3086,"tag":3143,"props":3394,"children":3395},{},[3396],{"type":3086,"tag":3147,"props":3397,"children":3398},{},[3399,3401,3407,3409,3415,3417,3423],{"type":3091,"value":3400},"Every response includes ",{"type":3086,"tag":3243,"props":3402,"children":3404},{"className":3403},[],[3405],{"type":3091,"value":3406},"X-RateLimit-Limit",{"type":3091,"value":3408},", ",{"type":3086,"tag":3243,"props":3410,"children":3412},{"className":3411},[],[3413],{"type":3091,"value":3414},"X-RateLimit-Remaining",{"type":3091,"value":3416},", and ",{"type":3086,"tag":3243,"props":3418,"children":3420},{"className":3419},[],[3421],{"type":3091,"value":3422},"X-RateLimit-Reset",{"type":3091,"value":3424}," headers so clients and CDNs can track usage without parsing response bodies.",{"type":3086,"tag":3169,"props":3426,"children":3428},{"id":3427},"quick-setup",[3429],{"type":3091,"value":3430},"Quick Setup",{"type":3086,"tag":3432,"props":3433,"children":3435},"h3",{"id":3434},"_1-add-nuxt-api-shield-dependency-to-your-project",[3436,3438,3443],{"type":3091,"value":3437},"1. Add ",{"type":3086,"tag":3243,"props":3439,"children":3441},{"className":3440},[],[3442],{"type":3091,"value":3027},{"type":3091,"value":3444}," dependency to your project",{"type":3086,"tag":3446,"props":3447,"children":3451},"pre",{"className":3448,"code":3449,"language":3450,"meta":3030,"style":3030},"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",[3452],{"type":3086,"tag":3243,"props":3453,"children":3454},{"__ignoreMap":3030},[3455,3466,3486,3495,3504,3520,3528,3537],{"type":3086,"tag":3456,"props":3457,"children":3459},"span",{"class":3458,"line":3058},"line",[3460],{"type":3086,"tag":3456,"props":3461,"children":3463},{"style":3462},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#90A4AE;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[3464],{"type":3091,"value":3465},"# Using pnpm\n",{"type":3086,"tag":3456,"props":3467,"children":3468},{"class":3458,"line":3054},[3469,3475,3481],{"type":3086,"tag":3456,"props":3470,"children":3472},{"style":3471},"--shiki-light:#E2931D;--shiki-default:#E2931D;--shiki-dark:#FFCB6B",[3473],{"type":3091,"value":3474},"pnpm",{"type":3086,"tag":3456,"props":3476,"children":3478},{"style":3477},"--shiki-light:#91B859;--shiki-default:#91B859;--shiki-dark:#C3E88D",[3479],{"type":3091,"value":3480}," add",{"type":3086,"tag":3456,"props":3482,"children":3483},{"style":3477},[3484],{"type":3091,"value":3485}," nuxt-api-shield\n",{"type":3086,"tag":3456,"props":3487,"children":3489},{"class":3458,"line":3488},3,[3490],{"type":3086,"tag":3456,"props":3491,"children":3492},{"emptyLinePlaceholder":1200},[3493],{"type":3091,"value":3494},"\n",{"type":3086,"tag":3456,"props":3496,"children":3498},{"class":3458,"line":3497},4,[3499],{"type":3086,"tag":3456,"props":3500,"children":3501},{"style":3462},[3502],{"type":3091,"value":3503},"# Using yarn\n",{"type":3086,"tag":3456,"props":3505,"children":3506},{"class":3458,"line":3050},[3507,3512,3516],{"type":3086,"tag":3456,"props":3508,"children":3509},{"style":3471},[3510],{"type":3091,"value":3511},"yarn",{"type":3086,"tag":3456,"props":3513,"children":3514},{"style":3477},[3515],{"type":3091,"value":3480},{"type":3086,"tag":3456,"props":3517,"children":3518},{"style":3477},[3519],{"type":3091,"value":3485},{"type":3086,"tag":3456,"props":3521,"children":3523},{"class":3458,"line":3522},6,[3524],{"type":3086,"tag":3456,"props":3525,"children":3526},{"emptyLinePlaceholder":1200},[3527],{"type":3091,"value":3494},{"type":3086,"tag":3456,"props":3529,"children":3531},{"class":3458,"line":3530},7,[3532],{"type":3086,"tag":3456,"props":3533,"children":3534},{"style":3462},[3535],{"type":3091,"value":3536},"# Using npm\n",{"type":3086,"tag":3456,"props":3538,"children":3539},{"class":3458,"line":3075},[3540,3545,3550],{"type":3086,"tag":3456,"props":3541,"children":3542},{"style":3471},[3543],{"type":3091,"value":3544},"npm",{"type":3086,"tag":3456,"props":3546,"children":3547},{"style":3477},[3548],{"type":3091,"value":3549}," install",{"type":3086,"tag":3456,"props":3551,"children":3552},{"style":3477},[3553],{"type":3091,"value":3485},{"type":3086,"tag":3432,"props":3555,"children":3557},{"id":3556},"_2-add-nuxt-api-shield-to-the-modules-section-of-nuxtconfigts",[3558,3560,3565,3567,3572,3574],{"type":3091,"value":3559},"2. Add ",{"type":3086,"tag":3243,"props":3561,"children":3563},{"className":3562},[],[3564],{"type":3091,"value":3027},{"type":3091,"value":3566}," to the ",{"type":3086,"tag":3243,"props":3568,"children":3570},{"className":3569},[],[3571],{"type":3091,"value":162},{"type":3091,"value":3573}," section of ",{"type":3086,"tag":3243,"props":3575,"children":3577},{"className":3576},[],[3578],{"type":3091,"value":233},{"type":3086,"tag":3093,"props":3580,"children":3581},{},[3582],{"type":3091,"value":3583},"You should add only the values you want to use differently from the default values.",{"type":3086,"tag":3446,"props":3585,"children":3589},{"className":3586,"code":3587,"language":3588,"meta":3030,"style":3030},"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",[3590],{"type":3086,"tag":3243,"props":3591,"children":3592},{"__ignoreMap":3030},[3593,3625,3667,3684,3692,3700,3708,3716,3724,3733,3742,3751,3760,3769,3778,3787,3796,3804,3813,3822,3836,3864,3872,3881,3909,3926,3935,3963,3971,3980],{"type":3086,"tag":3456,"props":3594,"children":3595},{"class":3458,"line":3058},[3596,3602,3607,3613,3619],{"type":3086,"tag":3456,"props":3597,"children":3599},{"style":3598},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#39ADB5;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[3600],{"type":3091,"value":3601},"export",{"type":3086,"tag":3456,"props":3603,"children":3604},{"style":3598},[3605],{"type":3091,"value":3606}," default",{"type":3086,"tag":3456,"props":3608,"children":3610},{"style":3609},"--shiki-light:#6182B8;--shiki-default:#6182B8;--shiki-dark:#82AAFF",[3611],{"type":3091,"value":3612}," defineNuxtConfig",{"type":3086,"tag":3456,"props":3614,"children":3616},{"style":3615},"--shiki-light:#90A4AE;--shiki-default:#90A4AE;--shiki-dark:#BABED8",[3617],{"type":3091,"value":3618},"(",{"type":3086,"tag":3456,"props":3620,"children":3622},{"style":3621},"--shiki-light:#39ADB5;--shiki-default:#39ADB5;--shiki-dark:#89DDFF",[3623],{"type":3091,"value":3624},"{\n",{"type":3086,"tag":3456,"props":3626,"children":3627},{"class":3458,"line":3054},[3628,3634,3639,3644,3649,3653,3657,3662],{"type":3086,"tag":3456,"props":3629,"children":3631},{"style":3630},"--shiki-light:#E53935;--shiki-default:#E53935;--shiki-dark:#F07178",[3632],{"type":3091,"value":3633},"  modules",{"type":3086,"tag":3456,"props":3635,"children":3636},{"style":3621},[3637],{"type":3091,"value":3638},":",{"type":3086,"tag":3456,"props":3640,"children":3641},{"style":3615},[3642],{"type":3091,"value":3643}," [",{"type":3086,"tag":3456,"props":3645,"children":3646},{"style":3621},[3647],{"type":3091,"value":3648},"\"",{"type":3086,"tag":3456,"props":3650,"children":3651},{"style":3477},[3652],{"type":3091,"value":3027},{"type":3086,"tag":3456,"props":3654,"children":3655},{"style":3621},[3656],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":3658,"children":3659},{"style":3615},[3660],{"type":3091,"value":3661},"]",{"type":3086,"tag":3456,"props":3663,"children":3664},{"style":3621},[3665],{"type":3091,"value":3666},",\n",{"type":3086,"tag":3456,"props":3668,"children":3669},{"class":3458,"line":3488},[3670,3675,3679],{"type":3086,"tag":3456,"props":3671,"children":3672},{"style":3630},[3673],{"type":3091,"value":3674},"  nuxtApiShield",{"type":3086,"tag":3456,"props":3676,"children":3677},{"style":3621},[3678],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":3680,"children":3681},{"style":3621},[3682],{"type":3091,"value":3683}," {\n",{"type":3086,"tag":3456,"props":3685,"children":3686},{"class":3458,"line":3497},[3687],{"type":3086,"tag":3456,"props":3688,"children":3689},{"style":3462},[3690],{"type":3091,"value":3691},"    \u002F*limit: {\n",{"type":3086,"tag":3456,"props":3693,"children":3694},{"class":3458,"line":3050},[3695],{"type":3086,"tag":3456,"props":3696,"children":3697},{"style":3462},[3698],{"type":3091,"value":3699},"      max: 12,        \u002F\u002F maximum requests per duration time, default is 12\u002Fduration\n",{"type":3086,"tag":3456,"props":3701,"children":3702},{"class":3458,"line":3522},[3703],{"type":3086,"tag":3456,"props":3704,"children":3705},{"style":3462},[3706],{"type":3091,"value":3707},"      duration: 108,   \u002F\u002F duration time in seconds, default is 108 seconds\n",{"type":3086,"tag":3456,"props":3709,"children":3710},{"class":3458,"line":3530},[3711],{"type":3086,"tag":3456,"props":3712,"children":3713},{"style":3462},[3714],{"type":3091,"value":3715},"      ban: 3600,      \u002F\u002F ban time in seconds, default is 3600 seconds = 1 hour\n",{"type":3086,"tag":3456,"props":3717,"children":3718},{"class":3458,"line":3075},[3719],{"type":3086,"tag":3456,"props":3720,"children":3721},{"style":3462},[3722],{"type":3091,"value":3723},"      \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":3086,"tag":3456,"props":3725,"children":3727},{"class":3458,"line":3726},9,[3728],{"type":3086,"tag":3456,"props":3729,"children":3730},{"style":3462},[3731],{"type":3091,"value":3732},"    },\n",{"type":3086,"tag":3456,"props":3734,"children":3736},{"class":3458,"line":3735},10,[3737],{"type":3086,"tag":3456,"props":3738,"children":3739},{"style":3462},[3740],{"type":3091,"value":3741},"    delayOnBan: true  \u002F\u002F delay every response with +1sec when the user is banned, default is true\n",{"type":3086,"tag":3456,"props":3743,"children":3745},{"class":3458,"line":3744},11,[3746],{"type":3086,"tag":3456,"props":3747,"children":3748},{"style":3462},[3749],{"type":3091,"value":3750},"    errorMessage: \"Too Many Requests\",  \u002F\u002F error message when the user is banned, default is \"Too Many Requests\"\n",{"type":3086,"tag":3456,"props":3752,"children":3754},{"class":3458,"line":3753},12,[3755],{"type":3086,"tag":3456,"props":3756,"children":3757},{"style":3462},[3758],{"type":3091,"value":3759},"    retryAfterHeader: false, \u002F\u002F when the user is banned add the Retry-After header to the response, default is false\n",{"type":3086,"tag":3456,"props":3761,"children":3763},{"class":3458,"line":3762},13,[3764],{"type":3086,"tag":3456,"props":3765,"children":3766},{"style":3462},[3767],{"type":3091,"value":3768},"    log: {\n",{"type":3086,"tag":3456,"props":3770,"children":3772},{"class":3458,"line":3771},14,[3773],{"type":3086,"tag":3456,"props":3774,"children":3775},{"style":3462},[3776],{"type":3091,"value":3777},"      path: \"\", \u002F\u002F path to the log file, every day a new log file will be created, use \"\" to disable logging\n",{"type":3086,"tag":3456,"props":3779,"children":3781},{"class":3458,"line":3780},15,[3782],{"type":3086,"tag":3456,"props":3783,"children":3784},{"style":3462},[3785],{"type":3091,"value":3786},"      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":3086,"tag":3456,"props":3788,"children":3790},{"class":3458,"line":3789},16,[3791],{"type":3086,"tag":3456,"props":3792,"children":3793},{"style":3462},[3794],{"type":3091,"value":3795},"      fail2ban: false, \u002F\u002F enable fail2ban-compatible log format for ban events (see fail2ban section)\n",{"type":3086,"tag":3456,"props":3797,"children":3799},{"class":3458,"line":3798},17,[3800],{"type":3086,"tag":3456,"props":3801,"children":3802},{"style":3462},[3803],{"type":3091,"value":3732},{"type":3086,"tag":3456,"props":3805,"children":3807},{"class":3458,"line":3806},18,[3808],{"type":3086,"tag":3456,"props":3809,"children":3810},{"style":3462},[3811],{"type":3091,"value":3812},"    routes: [], \u002F\u002F specify routes to apply rate limiting to, default is an empty array meaning all routes are protected.\n",{"type":3086,"tag":3456,"props":3814,"children":3816},{"class":3458,"line":3815},19,[3817],{"type":3086,"tag":3456,"props":3818,"children":3819},{"style":3462},[3820],{"type":3091,"value":3821},"    \u002F\u002F Example:\n",{"type":3086,"tag":3456,"props":3823,"children":3825},{"class":3458,"line":3824},20,[3826,3831],{"type":3086,"tag":3456,"props":3827,"children":3828},{"style":3462},[3829],{"type":3091,"value":3830},"    \u002F\u002F routes: [\"\u002Fapi\u002Fv2\u002F\", \"\u002Fapi\u002Fv3\u002F\"],",{"type":3086,"tag":3456,"props":3832,"children":3833},{"style":3462},[3834],{"type":3091,"value":3835}," \u002F\u002F \u002Fapi\u002Fv1 will not be protected, \u002Fapi\u002Fv2\u002F and \u002Fapi\u002Fv3\u002F will be protected *\u002F\n",{"type":3086,"tag":3456,"props":3837,"children":3839},{"class":3458,"line":3838},21,[3840,3845,3849,3854,3859],{"type":3086,"tag":3456,"props":3841,"children":3842},{"style":3630},[3843],{"type":3091,"value":3844},"    skipRoutes",{"type":3086,"tag":3456,"props":3846,"children":3847},{"style":3621},[3848],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":3850,"children":3851},{"style":3615},[3852],{"type":3091,"value":3853}," []",{"type":3086,"tag":3456,"props":3855,"children":3856},{"style":3621},[3857],{"type":3091,"value":3858},",",{"type":3086,"tag":3456,"props":3860,"children":3861},{"style":3462},[3862],{"type":3091,"value":3863}," \u002F\u002F specify routes to skip\u002Fexempt from rate limiting, supports wildcard patterns (*\u002F**)\n",{"type":3086,"tag":3456,"props":3865,"children":3867},{"class":3458,"line":3866},22,[3868],{"type":3086,"tag":3456,"props":3869,"children":3870},{"style":3462},[3871],{"type":3091,"value":3821},{"type":3086,"tag":3456,"props":3873,"children":3875},{"class":3458,"line":3874},23,[3876],{"type":3086,"tag":3456,"props":3877,"children":3878},{"style":3462},[3879],{"type":3091,"value":3880},"    \u002F\u002F skipRoutes: [\"\u002Fapi\u002Fhealth\", \"\u002Fapi\u002F_nuxt\u002F**\", \"\u002Fapi\u002Fwebhooks\u002Fstripe\"],\n",{"type":3086,"tag":3456,"props":3882,"children":3884},{"class":3458,"line":3883},24,[3885,3890,3894,3900,3904],{"type":3086,"tag":3456,"props":3886,"children":3887},{"style":3630},[3888],{"type":3091,"value":3889},"    ipTTL",{"type":3086,"tag":3456,"props":3891,"children":3892},{"style":3621},[3893],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":3895,"children":3897},{"style":3896},"--shiki-light:#F76D47;--shiki-default:#F76D47;--shiki-dark:#F78C6C",[3898],{"type":3091,"value":3899}," 604800",{"type":3086,"tag":3456,"props":3901,"children":3902},{"style":3621},[3903],{"type":3091,"value":3858},{"type":3086,"tag":3456,"props":3905,"children":3906},{"style":3462},[3907],{"type":3091,"value":3908}," \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":3086,"tag":3456,"props":3910,"children":3912},{"class":3458,"line":3911},25,[3913,3918,3922],{"type":3086,"tag":3456,"props":3914,"children":3915},{"style":3630},[3916],{"type":3091,"value":3917},"    security",{"type":3086,"tag":3456,"props":3919,"children":3920},{"style":3621},[3921],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":3923,"children":3924},{"style":3621},[3925],{"type":3091,"value":3683},{"type":3086,"tag":3456,"props":3927,"children":3929},{"class":3458,"line":3928},26,[3930],{"type":3086,"tag":3456,"props":3931,"children":3932},{"style":3462},[3933],{"type":3091,"value":3934},"      \u002F\u002F Optional: Security-related configurations\n",{"type":3086,"tag":3456,"props":3936,"children":3938},{"class":3458,"line":3937},27,[3939,3944,3948,3954,3958],{"type":3086,"tag":3456,"props":3940,"children":3941},{"style":3630},[3942],{"type":3091,"value":3943},"      trustXForwardedFor",{"type":3086,"tag":3456,"props":3945,"children":3946},{"style":3621},[3947],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":3949,"children":3951},{"style":3950},"--shiki-light:#FF5370;--shiki-default:#FF5370;--shiki-dark:#FF9CAC",[3952],{"type":3091,"value":3953}," false",{"type":3086,"tag":3456,"props":3955,"children":3956},{"style":3621},[3957],{"type":3091,"value":3858},{"type":3086,"tag":3456,"props":3959,"children":3960},{"style":3462},[3961],{"type":3091,"value":3962}," \u002F\u002F Default: false. Whether to trust X-Forwarded-For headers. See warning below.\n",{"type":3086,"tag":3456,"props":3964,"children":3966},{"class":3458,"line":3965},28,[3967],{"type":3086,"tag":3456,"props":3968,"children":3969},{"style":3621},[3970],{"type":3091,"value":3732},{"type":3086,"tag":3456,"props":3972,"children":3974},{"class":3458,"line":3973},29,[3975],{"type":3086,"tag":3456,"props":3976,"children":3977},{"style":3621},[3978],{"type":3091,"value":3979},"  },\n",{"type":3086,"tag":3456,"props":3981,"children":3983},{"class":3458,"line":3982},30,[3984,3989,3994],{"type":3086,"tag":3456,"props":3985,"children":3986},{"style":3621},[3987],{"type":3091,"value":3988},"}",{"type":3086,"tag":3456,"props":3990,"children":3991},{"style":3615},[3992],{"type":3091,"value":3993},")",{"type":3086,"tag":3456,"props":3995,"children":3996},{"style":3621},[3997],{"type":3091,"value":3998},";\n",{"type":3086,"tag":3093,"props":4000,"children":4001},{},[4002,4007,4009,4015],{"type":3086,"tag":3181,"props":4003,"children":4004},{},[4005],{"type":3091,"value":4006},"Default Configuration Values:",{"type":3091,"value":4008},"\n(These are applied by the module if not specified in your ",{"type":3086,"tag":3243,"props":4010,"children":4012},{"className":4011},[],[4013],{"type":3091,"value":4014},"nuxtApiShield",{"type":3091,"value":4016}," config)",{"type":3086,"tag":3446,"props":4018,"children":4020},{"className":3586,"code":4019,"language":3588,"meta":3030,"style":3030},"{\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",[4021],{"type":3086,"tag":3243,"props":4022,"children":4023},{"__ignoreMap":3030},[4024,4031,4047,4068,4094,4120,4127,4148,4178,4198,4214,4240,4266,4286,4293,4313,4333,4386,4402,4422,4430],{"type":3086,"tag":3456,"props":4025,"children":4026},{"class":3458,"line":3058},[4027],{"type":3086,"tag":3456,"props":4028,"children":4029},{"style":3621},[4030],{"type":3091,"value":3624},{"type":3086,"tag":3456,"props":4032,"children":4033},{"class":3458,"line":3054},[4034,4039,4043],{"type":3086,"tag":3456,"props":4035,"children":4036},{"style":3471},[4037],{"type":3091,"value":4038},"  limit",{"type":3086,"tag":3456,"props":4040,"children":4041},{"style":3621},[4042],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":4044,"children":4045},{"style":3621},[4046],{"type":3091,"value":3683},{"type":3086,"tag":3456,"props":4048,"children":4049},{"class":3458,"line":3488},[4050,4055,4059,4064],{"type":3086,"tag":3456,"props":4051,"children":4052},{"style":3471},[4053],{"type":3091,"value":4054},"    max",{"type":3086,"tag":3456,"props":4056,"children":4057},{"style":3621},[4058],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":4060,"children":4061},{"style":3896},[4062],{"type":3091,"value":4063}," 12",{"type":3086,"tag":3456,"props":4065,"children":4066},{"style":3621},[4067],{"type":3091,"value":3666},{"type":3086,"tag":3456,"props":4069,"children":4070},{"class":3458,"line":3497},[4071,4076,4080,4085,4089],{"type":3086,"tag":3456,"props":4072,"children":4073},{"style":3471},[4074],{"type":3091,"value":4075},"    duration",{"type":3086,"tag":3456,"props":4077,"children":4078},{"style":3621},[4079],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":4081,"children":4082},{"style":3896},[4083],{"type":3091,"value":4084}," 108",{"type":3086,"tag":3456,"props":4086,"children":4087},{"style":3621},[4088],{"type":3091,"value":3858},{"type":3086,"tag":3456,"props":4090,"children":4091},{"style":3462},[4092],{"type":3091,"value":4093}," \u002F\u002F seconds\n",{"type":3086,"tag":3456,"props":4095,"children":4096},{"class":3458,"line":3050},[4097,4102,4106,4111,4115],{"type":3086,"tag":3456,"props":4098,"children":4099},{"style":3471},[4100],{"type":3091,"value":4101},"    ban",{"type":3086,"tag":3456,"props":4103,"children":4104},{"style":3621},[4105],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":4107,"children":4108},{"style":3896},[4109],{"type":3091,"value":4110}," 3600",{"type":3086,"tag":3456,"props":4112,"children":4113},{"style":3621},[4114],{"type":3091,"value":3858},{"type":3086,"tag":3456,"props":4116,"children":4117},{"style":3462},[4118],{"type":3091,"value":4119},"     \u002F\u002F seconds\n",{"type":3086,"tag":3456,"props":4121,"children":4122},{"class":3458,"line":3522},[4123],{"type":3086,"tag":3456,"props":4124,"children":4125},{"style":3621},[4126],{"type":3091,"value":3979},{"type":3086,"tag":3456,"props":4128,"children":4129},{"class":3458,"line":3530},[4130,4135,4139,4144],{"type":3086,"tag":3456,"props":4131,"children":4132},{"style":3471},[4133],{"type":3091,"value":4134},"  delayOnBan",{"type":3086,"tag":3456,"props":4136,"children":4137},{"style":3621},[4138],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":4140,"children":4141},{"style":3950},[4142],{"type":3091,"value":4143}," true",{"type":3086,"tag":3456,"props":4145,"children":4146},{"style":3621},[4147],{"type":3091,"value":3666},{"type":3086,"tag":3456,"props":4149,"children":4150},{"class":3458,"line":3075},[4151,4156,4160,4165,4170,4174],{"type":3086,"tag":3456,"props":4152,"children":4153},{"style":3471},[4154],{"type":3091,"value":4155},"  errorMessage",{"type":3086,"tag":3456,"props":4157,"children":4158},{"style":3621},[4159],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":4161,"children":4162},{"style":3621},[4163],{"type":3091,"value":4164}," \"",{"type":3086,"tag":3456,"props":4166,"children":4167},{"style":3477},[4168],{"type":3091,"value":4169},"Too Many Requests",{"type":3086,"tag":3456,"props":4171,"children":4172},{"style":3621},[4173],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":4175,"children":4176},{"style":3621},[4177],{"type":3091,"value":3666},{"type":3086,"tag":3456,"props":4179,"children":4180},{"class":3458,"line":3726},[4181,4186,4190,4194],{"type":3086,"tag":3456,"props":4182,"children":4183},{"style":3471},[4184],{"type":3091,"value":4185},"  retryAfterHeader",{"type":3086,"tag":3456,"props":4187,"children":4188},{"style":3621},[4189],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":4191,"children":4192},{"style":3950},[4193],{"type":3091,"value":3953},{"type":3086,"tag":3456,"props":4195,"children":4196},{"style":3621},[4197],{"type":3091,"value":3666},{"type":3086,"tag":3456,"props":4199,"children":4200},{"class":3458,"line":3735},[4201,4206,4210],{"type":3086,"tag":3456,"props":4202,"children":4203},{"style":3471},[4204],{"type":3091,"value":4205},"  log",{"type":3086,"tag":3456,"props":4207,"children":4208},{"style":3621},[4209],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":4211,"children":4212},{"style":3621},[4213],{"type":3091,"value":3683},{"type":3086,"tag":3456,"props":4215,"children":4216},{"class":3458,"line":3744},[4217,4222,4226,4231,4235],{"type":3086,"tag":3456,"props":4218,"children":4219},{"style":3471},[4220],{"type":3091,"value":4221},"    path",{"type":3086,"tag":3456,"props":4223,"children":4224},{"style":3621},[4225],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":4227,"children":4228},{"style":3621},[4229],{"type":3091,"value":4230}," \"\"",{"type":3086,"tag":3456,"props":4232,"children":4233},{"style":3621},[4234],{"type":3091,"value":3858},{"type":3086,"tag":3456,"props":4236,"children":4237},{"style":3462},[4238],{"type":3091,"value":4239}," \u002F\u002F Logging is disabled if path is empty\n",{"type":3086,"tag":3456,"props":4241,"children":4242},{"class":3458,"line":3753},[4243,4248,4252,4257,4261],{"type":3086,"tag":3456,"props":4244,"children":4245},{"style":3471},[4246],{"type":3091,"value":4247},"    attempts",{"type":3086,"tag":3456,"props":4249,"children":4250},{"style":3621},[4251],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":4253,"children":4254},{"style":3896},[4255],{"type":3091,"value":4256}," 0",{"type":3086,"tag":3456,"props":4258,"children":4259},{"style":3621},[4260],{"type":3091,"value":3858},{"type":3086,"tag":3456,"props":4262,"children":4263},{"style":3462},[4264],{"type":3091,"value":4265}," \u002F\u002F Logging per IP is disabled if attempts is 0\n",{"type":3086,"tag":3456,"props":4267,"children":4268},{"class":3458,"line":3762},[4269,4274,4278,4282],{"type":3086,"tag":3456,"props":4270,"children":4271},{"style":3471},[4272],{"type":3091,"value":4273},"    fail2ban",{"type":3086,"tag":3456,"props":4275,"children":4276},{"style":3621},[4277],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":4279,"children":4280},{"style":3950},[4281],{"type":3091,"value":3953},{"type":3086,"tag":3456,"props":4283,"children":4284},{"style":3621},[4285],{"type":3091,"value":3666},{"type":3086,"tag":3456,"props":4287,"children":4288},{"class":3458,"line":3771},[4289],{"type":3086,"tag":3456,"props":4290,"children":4291},{"style":3621},[4292],{"type":3091,"value":3979},{"type":3086,"tag":3456,"props":4294,"children":4295},{"class":3458,"line":3780},[4296,4301,4305,4309],{"type":3086,"tag":3456,"props":4297,"children":4298},{"style":3471},[4299],{"type":3091,"value":4300},"  routes",{"type":3086,"tag":3456,"props":4302,"children":4303},{"style":3621},[4304],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":4306,"children":4307},{"style":3630},[4308],{"type":3091,"value":3853},{"type":3086,"tag":3456,"props":4310,"children":4311},{"style":3621},[4312],{"type":3091,"value":3666},{"type":3086,"tag":3456,"props":4314,"children":4315},{"class":3458,"line":3789},[4316,4321,4325,4329],{"type":3086,"tag":3456,"props":4317,"children":4318},{"style":3471},[4319],{"type":3091,"value":4320},"  skipRoutes",{"type":3086,"tag":3456,"props":4322,"children":4323},{"style":3621},[4324],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":4326,"children":4327},{"style":3630},[4328],{"type":3091,"value":3853},{"type":3086,"tag":3456,"props":4330,"children":4331},{"style":3621},[4332],{"type":3091,"value":3666},{"type":3086,"tag":3456,"props":4334,"children":4335},{"class":3458,"line":3798},[4336,4341,4345,4350,4355,4360,4364,4369,4373,4377,4381],{"type":3086,"tag":3456,"props":4337,"children":4338},{"style":3471},[4339],{"type":3091,"value":4340},"  ipTTL",{"type":3086,"tag":3456,"props":4342,"children":4343},{"style":3621},[4344],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":4346,"children":4347},{"style":3896},[4348],{"type":3091,"value":4349}," 7",{"type":3086,"tag":3456,"props":4351,"children":4352},{"style":3621},[4353],{"type":3091,"value":4354}," *",{"type":3086,"tag":3456,"props":4356,"children":4357},{"style":3896},[4358],{"type":3091,"value":4359}," 24",{"type":3086,"tag":3456,"props":4361,"children":4362},{"style":3621},[4363],{"type":3091,"value":4354},{"type":3086,"tag":3456,"props":4365,"children":4366},{"style":3896},[4367],{"type":3091,"value":4368}," 60",{"type":3086,"tag":3456,"props":4370,"children":4371},{"style":3621},[4372],{"type":3091,"value":4354},{"type":3086,"tag":3456,"props":4374,"children":4375},{"style":3896},[4376],{"type":3091,"value":4368},{"type":3086,"tag":3456,"props":4378,"children":4379},{"style":3621},[4380],{"type":3091,"value":3858},{"type":3086,"tag":3456,"props":4382,"children":4383},{"style":3462},[4384],{"type":3091,"value":4385}," \u002F\u002F 7 days in seconds\n",{"type":3086,"tag":3456,"props":4387,"children":4388},{"class":3458,"line":3806},[4389,4394,4398],{"type":3086,"tag":3456,"props":4390,"children":4391},{"style":3471},[4392],{"type":3091,"value":4393},"  security",{"type":3086,"tag":3456,"props":4395,"children":4396},{"style":3621},[4397],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":4399,"children":4400},{"style":3621},[4401],{"type":3091,"value":3683},{"type":3086,"tag":3456,"props":4403,"children":4404},{"class":3458,"line":3815},[4405,4410,4414,4418],{"type":3086,"tag":3456,"props":4406,"children":4407},{"style":3471},[4408],{"type":3091,"value":4409},"    trustXForwardedFor",{"type":3086,"tag":3456,"props":4411,"children":4412},{"style":3621},[4413],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":4415,"children":4416},{"style":3950},[4417],{"type":3091,"value":3953},{"type":3086,"tag":3456,"props":4419,"children":4420},{"style":3621},[4421],{"type":3091,"value":3666},{"type":3086,"tag":3456,"props":4423,"children":4424},{"class":3458,"line":3824},[4425],{"type":3086,"tag":3456,"props":4426,"children":4427},{"style":3621},[4428],{"type":3091,"value":4429},"  }\n",{"type":3086,"tag":3456,"props":4431,"children":4432},{"class":3458,"line":3838},[4433],{"type":3086,"tag":3456,"props":4434,"children":4435},{"style":3621},[4436],{"type":3091,"value":4437},"}\n",{"type":3086,"tag":3093,"props":4439,"children":4440},{},[4441],{"type":3086,"tag":3181,"props":4442,"children":4443},{},[4444,4446],{"type":3091,"value":4445},"Security Warning: ",{"type":3086,"tag":3243,"props":4447,"children":4449},{"className":4448},[],[4450],{"type":3091,"value":4451},"trustXForwardedFor",{"type":3086,"tag":3093,"props":4453,"children":4454},{},[4455,4457,4463,4465,4471,4473,4479],{"type":3091,"value":4456},"The ",{"type":3086,"tag":3243,"props":4458,"children":4460},{"className":4459},[],[4461],{"type":3091,"value":4462},"security.trustXForwardedFor",{"type":3091,"value":4464}," option (default is ",{"type":3086,"tag":3243,"props":4466,"children":4468},{"className":4467},[],[4469],{"type":3091,"value":4470},"false",{"type":3091,"value":4472},", set by the module) determines if the module uses the ",{"type":3086,"tag":3243,"props":4474,"children":4476},{"className":4475},[],[4477],{"type":3091,"value":4478},"X-Forwarded-For",{"type":3091,"value":4480}," HTTP header to identify the client's IP address.",{"type":3086,"tag":3143,"props":4482,"children":4483},{},[4484,4504,4542,4561],{"type":3086,"tag":3147,"props":4485,"children":4486},{},[4487,4489,4495,4497,4502],{"type":3091,"value":4488},"If set to ",{"type":3086,"tag":3243,"props":4490,"children":4492},{"className":4491},[],[4493],{"type":3091,"value":4494},"true",{"type":3091,"value":4496},": The module will use the IP address provided in the ",{"type":3086,"tag":3243,"props":4498,"children":4500},{"className":4499},[],[4501],{"type":3091,"value":4478},{"type":3091,"value":4503}," 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":3086,"tag":3147,"props":4505,"children":4506},{},[4507,4512,4514,4519,4521,4526,4528,4533,4535,4540],{"type":3086,"tag":3181,"props":4508,"children":4509},{},[4510],{"type":3091,"value":4511},"WARNING:",{"type":3091,"value":4513}," If ",{"type":3086,"tag":3243,"props":4515,"children":4517},{"className":4516},[],[4518],{"type":3091,"value":4451},{"type":3091,"value":4520}," is ",{"type":3086,"tag":3243,"props":4522,"children":4524},{"className":4523},[],[4525],{"type":3091,"value":4494},{"type":3091,"value":4527}," and your application is directly internet-facing OR your proxy is not configured to strip incoming ",{"type":3086,"tag":3243,"props":4529,"children":4531},{"className":4530},[],[4532],{"type":3091,"value":4478},{"type":3091,"value":4534}," headers from clients, malicious users can spoof their IP address by sending a fake ",{"type":3086,"tag":3243,"props":4536,"children":4538},{"className":4537},[],[4539],{"type":3091,"value":4478},{"type":3091,"value":4541}," header. This would allow them to bypass rate limits or cause other users to be incorrectly rate-limited.",{"type":3086,"tag":3147,"props":4543,"children":4544},{},[4545,4546,4551,4553,4559],{"type":3091,"value":4488},{"type":3086,"tag":3243,"props":4547,"children":4549},{"className":4548},[],[4550],{"type":3091,"value":4470},{"type":3091,"value":4552},": The module will use the direct IP address of the incoming connection (i.e., ",{"type":3086,"tag":3243,"props":4554,"children":4556},{"className":4555},[],[4557],{"type":3091,"value":4558},"event.node.req.socket.remoteAddress",{"type":3091,"value":4560},"). Use this setting if your application is directly internet-facing or if you are unsure about your proxy's configuration.",{"type":3086,"tag":3147,"props":4562,"children":4563},{},[4564,4569,4571,4577,4579,4584],{"type":3086,"tag":3181,"props":4565,"children":4566},{},[4567],{"type":3091,"value":4568},"Recommendation:",{"type":3091,"value":4570}," Only enable ",{"type":3086,"tag":3243,"props":4572,"children":4574},{"className":4573},[],[4575],{"type":3091,"value":4576},"trustXForwardedFor: true",{"type":3091,"value":4578}," 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":3086,"tag":3243,"props":4580,"children":4582},{"className":4581},[],[4583],{"type":3091,"value":4470},{"type":3091,"value":4585},".",{"type":3086,"tag":3432,"props":4587,"children":4589},{"id":4588},"_3-add-nitrostorage-to-nuxtconfigts",[4590,4592,4598,4600],{"type":3091,"value":4591},"3. Add ",{"type":3086,"tag":3243,"props":4593,"children":4595},{"className":4594},[],[4596],{"type":3091,"value":4597},"nitro\u002Fstorage",{"type":3091,"value":4599}," to ",{"type":3086,"tag":3243,"props":4601,"children":4603},{"className":4602},[],[4604],{"type":3091,"value":233},{"type":3086,"tag":3093,"props":4606,"children":4607},{},[4608,4610,4615],{"type":3091,"value":4609},"You can use any storage you want, but you have to use ",{"type":3086,"tag":3181,"props":4611,"children":4612},{},[4613],{"type":3091,"value":4614},"shield",{"type":3091,"value":4616}," as the name of the storage.",{"type":3086,"tag":3446,"props":4618,"children":4622},{"className":4619,"code":4620,"language":4621,"meta":3030,"style":3030},"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",[4623],{"type":3086,"tag":3243,"props":4624,"children":4625},{"__ignoreMap":3030},[4626,4633,4659,4684,4708,4716,4751,4759,4767,4774],{"type":3086,"tag":3456,"props":4627,"children":4628},{"class":3458,"line":3058},[4629],{"type":3086,"tag":3456,"props":4630,"children":4631},{"style":3621},[4632],{"type":3091,"value":3624},{"type":3086,"tag":3456,"props":4634,"children":4635},{"class":3458,"line":3054},[4636,4641,4647,4651,4655],{"type":3086,"tag":3456,"props":4637,"children":4638},{"style":3621},[4639],{"type":3091,"value":4640},"  \"",{"type":3086,"tag":3456,"props":4642,"children":4644},{"style":4643},"--shiki-light:#9C3EDA;--shiki-default:#9C3EDA;--shiki-dark:#C792EA",[4645],{"type":3091,"value":4646},"nitro",{"type":3086,"tag":3456,"props":4648,"children":4649},{"style":3621},[4650],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":4652,"children":4653},{"style":3621},[4654],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":4656,"children":4657},{"style":3621},[4658],{"type":3091,"value":3683},{"type":3086,"tag":3456,"props":4660,"children":4661},{"class":3458,"line":3488},[4662,4667,4672,4676,4680],{"type":3086,"tag":3456,"props":4663,"children":4664},{"style":3621},[4665],{"type":3091,"value":4666},"    \"",{"type":3086,"tag":3456,"props":4668,"children":4669},{"style":3471},[4670],{"type":3091,"value":4671},"storage",{"type":3086,"tag":3456,"props":4673,"children":4674},{"style":3621},[4675],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":4677,"children":4678},{"style":3621},[4679],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":4681,"children":4682},{"style":3621},[4683],{"type":3091,"value":3683},{"type":3086,"tag":3456,"props":4685,"children":4686},{"class":3458,"line":3497},[4687,4692,4696,4700,4704],{"type":3086,"tag":3456,"props":4688,"children":4689},{"style":3621},[4690],{"type":3091,"value":4691},"      \"",{"type":3086,"tag":3456,"props":4693,"children":4694},{"style":3896},[4695],{"type":3091,"value":4614},{"type":3086,"tag":3456,"props":4697,"children":4698},{"style":3621},[4699],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":4701,"children":4702},{"style":3621},[4703],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":4705,"children":4706},{"style":3621},[4707],{"type":3091,"value":3683},{"type":3086,"tag":3456,"props":4709,"children":4710},{"class":3458,"line":3050},[4711],{"type":3086,"tag":3456,"props":4712,"children":4713},{"style":3462},[4714],{"type":3091,"value":4715},"        \u002F\u002F storage name, you **must** use \"shield\" as the name\n",{"type":3086,"tag":3456,"props":4717,"children":4718},{"class":3458,"line":3522},[4719,4724,4729,4733,4737,4741,4746],{"type":3086,"tag":3456,"props":4720,"children":4721},{"style":3621},[4722],{"type":3091,"value":4723},"        \"",{"type":3086,"tag":3456,"props":4725,"children":4726},{"style":3630},[4727],{"type":3091,"value":4728},"driver",{"type":3086,"tag":3456,"props":4730,"children":4731},{"style":3621},[4732],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":4734,"children":4735},{"style":3621},[4736],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":4738,"children":4739},{"style":3621},[4740],{"type":3091,"value":4164},{"type":3086,"tag":3456,"props":4742,"children":4743},{"style":3477},[4744],{"type":3091,"value":4745},"memory",{"type":3086,"tag":3456,"props":4747,"children":4748},{"style":3621},[4749],{"type":3091,"value":4750},"\"\n",{"type":3086,"tag":3456,"props":4752,"children":4753},{"class":3458,"line":3530},[4754],{"type":3086,"tag":3456,"props":4755,"children":4756},{"style":3621},[4757],{"type":3091,"value":4758},"      }\n",{"type":3086,"tag":3456,"props":4760,"children":4761},{"class":3458,"line":3075},[4762],{"type":3086,"tag":3456,"props":4763,"children":4764},{"style":3621},[4765],{"type":3091,"value":4766},"    }\n",{"type":3086,"tag":3456,"props":4768,"children":4769},{"class":3458,"line":3726},[4770],{"type":3086,"tag":3456,"props":4771,"children":4772},{"style":3621},[4773],{"type":3091,"value":4429},{"type":3086,"tag":3456,"props":4775,"children":4776},{"class":3458,"line":3735},[4777],{"type":3086,"tag":3456,"props":4778,"children":4779},{"style":3621},[4780],{"type":3091,"value":4437},{"type":3086,"tag":3093,"props":4782,"children":4783},{},[4784],{"type":3091,"value":4785},"If you use for example redis, you can use the following configuration, define the host and port.",{"type":3086,"tag":3446,"props":4787,"children":4789},{"className":4619,"code":4788,"language":4621,"meta":3030,"style":3030},"{\n  \"nitro\": {\n    \"storage\": {\n      \"shield\": {\n        \"driver\": \"redis\",\n        \"host\": \"localhost\",\n        \"port\": 6379\n      }\n    }\n  }\n}\n",[4790],{"type":3086,"tag":3243,"props":4791,"children":4792},{"__ignoreMap":3030},[4793,4800,4823,4846,4869,4905,4942,4967,4974,4981,4988],{"type":3086,"tag":3456,"props":4794,"children":4795},{"class":3458,"line":3058},[4796],{"type":3086,"tag":3456,"props":4797,"children":4798},{"style":3621},[4799],{"type":3091,"value":3624},{"type":3086,"tag":3456,"props":4801,"children":4802},{"class":3458,"line":3054},[4803,4807,4811,4815,4819],{"type":3086,"tag":3456,"props":4804,"children":4805},{"style":3621},[4806],{"type":3091,"value":4640},{"type":3086,"tag":3456,"props":4808,"children":4809},{"style":4643},[4810],{"type":3091,"value":4646},{"type":3086,"tag":3456,"props":4812,"children":4813},{"style":3621},[4814],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":4816,"children":4817},{"style":3621},[4818],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":4820,"children":4821},{"style":3621},[4822],{"type":3091,"value":3683},{"type":3086,"tag":3456,"props":4824,"children":4825},{"class":3458,"line":3488},[4826,4830,4834,4838,4842],{"type":3086,"tag":3456,"props":4827,"children":4828},{"style":3621},[4829],{"type":3091,"value":4666},{"type":3086,"tag":3456,"props":4831,"children":4832},{"style":3471},[4833],{"type":3091,"value":4671},{"type":3086,"tag":3456,"props":4835,"children":4836},{"style":3621},[4837],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":4839,"children":4840},{"style":3621},[4841],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":4843,"children":4844},{"style":3621},[4845],{"type":3091,"value":3683},{"type":3086,"tag":3456,"props":4847,"children":4848},{"class":3458,"line":3497},[4849,4853,4857,4861,4865],{"type":3086,"tag":3456,"props":4850,"children":4851},{"style":3621},[4852],{"type":3091,"value":4691},{"type":3086,"tag":3456,"props":4854,"children":4855},{"style":3896},[4856],{"type":3091,"value":4614},{"type":3086,"tag":3456,"props":4858,"children":4859},{"style":3621},[4860],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":4862,"children":4863},{"style":3621},[4864],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":4866,"children":4867},{"style":3621},[4868],{"type":3091,"value":3683},{"type":3086,"tag":3456,"props":4870,"children":4871},{"class":3458,"line":3050},[4872,4876,4880,4884,4888,4892,4897,4901],{"type":3086,"tag":3456,"props":4873,"children":4874},{"style":3621},[4875],{"type":3091,"value":4723},{"type":3086,"tag":3456,"props":4877,"children":4878},{"style":3630},[4879],{"type":3091,"value":4728},{"type":3086,"tag":3456,"props":4881,"children":4882},{"style":3621},[4883],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":4885,"children":4886},{"style":3621},[4887],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":4889,"children":4890},{"style":3621},[4891],{"type":3091,"value":4164},{"type":3086,"tag":3456,"props":4893,"children":4894},{"style":3477},[4895],{"type":3091,"value":4896},"redis",{"type":3086,"tag":3456,"props":4898,"children":4899},{"style":3621},[4900],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":4902,"children":4903},{"style":3621},[4904],{"type":3091,"value":3666},{"type":3086,"tag":3456,"props":4906,"children":4907},{"class":3458,"line":3522},[4908,4912,4917,4921,4925,4929,4934,4938],{"type":3086,"tag":3456,"props":4909,"children":4910},{"style":3621},[4911],{"type":3091,"value":4723},{"type":3086,"tag":3456,"props":4913,"children":4914},{"style":3630},[4915],{"type":3091,"value":4916},"host",{"type":3086,"tag":3456,"props":4918,"children":4919},{"style":3621},[4920],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":4922,"children":4923},{"style":3621},[4924],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":4926,"children":4927},{"style":3621},[4928],{"type":3091,"value":4164},{"type":3086,"tag":3456,"props":4930,"children":4931},{"style":3477},[4932],{"type":3091,"value":4933},"localhost",{"type":3086,"tag":3456,"props":4935,"children":4936},{"style":3621},[4937],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":4939,"children":4940},{"style":3621},[4941],{"type":3091,"value":3666},{"type":3086,"tag":3456,"props":4943,"children":4944},{"class":3458,"line":3530},[4945,4949,4954,4958,4962],{"type":3086,"tag":3456,"props":4946,"children":4947},{"style":3621},[4948],{"type":3091,"value":4723},{"type":3086,"tag":3456,"props":4950,"children":4951},{"style":3630},[4952],{"type":3091,"value":4953},"port",{"type":3086,"tag":3456,"props":4955,"children":4956},{"style":3621},[4957],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":4959,"children":4960},{"style":3621},[4961],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":4963,"children":4964},{"style":3896},[4965],{"type":3091,"value":4966}," 6379\n",{"type":3086,"tag":3456,"props":4968,"children":4969},{"class":3458,"line":3075},[4970],{"type":3086,"tag":3456,"props":4971,"children":4972},{"style":3621},[4973],{"type":3091,"value":4758},{"type":3086,"tag":3456,"props":4975,"children":4976},{"class":3458,"line":3726},[4977],{"type":3086,"tag":3456,"props":4978,"children":4979},{"style":3621},[4980],{"type":3091,"value":4766},{"type":3086,"tag":3456,"props":4982,"children":4983},{"class":3458,"line":3735},[4984],{"type":3086,"tag":3456,"props":4985,"children":4986},{"style":3621},[4987],{"type":3091,"value":4429},{"type":3086,"tag":3456,"props":4989,"children":4990},{"class":3458,"line":3744},[4991],{"type":3086,"tag":3456,"props":4992,"children":4993},{"style":3621},[4994],{"type":3091,"value":4437},{"type":3086,"tag":3432,"props":4996,"children":4998},{"id":4997},"_4-schedule-bundled-cleanup-tasks-in-nuxtconfigts",[4999,5001],{"type":3091,"value":5000},"4. Schedule bundled cleanup tasks in ",{"type":3086,"tag":3243,"props":5002,"children":5004},{"className":5003},[],[5005],{"type":3091,"value":233},{"type":3086,"tag":3093,"props":5007,"children":5008},{},[5009,5011,5016,5018,5024,5026,5031,5033,5039,5041,5047,5049,5055,5057,5062,5064,5070],{"type":3091,"value":5010},"The module registers two Nitro tasks for you: ",{"type":3086,"tag":3243,"props":5012,"children":5014},{"className":5013},[],[5015],{"type":3091,"value":3340},{"type":3091,"value":5017}," (removes expired ",{"type":3086,"tag":3243,"props":5019,"children":5021},{"className":5020},[],[5022],{"type":3091,"value":5023},"ban:*",{"type":3091,"value":5025}," keys) and ",{"type":3086,"tag":3243,"props":5027,"children":5029},{"className":5028},[],[5030],{"type":3091,"value":3348},{"type":3091,"value":5032}," (removes stale ",{"type":3086,"tag":3243,"props":5034,"children":5036},{"className":5035},[],[5037],{"type":3091,"value":5038},"ip:*",{"type":3091,"value":5040}," keys using ",{"type":3086,"tag":3243,"props":5042,"children":5044},{"className":5043},[],[5045],{"type":3091,"value":5046},"ipTTL",{"type":3091,"value":5048},"). Turn on Nitro tasks and add ",{"type":3086,"tag":3243,"props":5050,"children":5052},{"className":5051},[],[5053],{"type":3091,"value":5054},"scheduledTasks",{"type":3091,"value":5056}," so they run on a cadence you choose. You do ",{"type":3086,"tag":3181,"props":5058,"children":5059},{},[5060],{"type":3091,"value":5061},"not",{"type":3091,"value":5063}," need files under ",{"type":3086,"tag":3243,"props":5065,"children":5067},{"className":5066},[],[5068],{"type":3091,"value":5069},"server\u002Ftasks\u002F",{"type":3091,"value":5071}," for this default setup.",{"type":3086,"tag":3446,"props":5073,"children":5075},{"className":4619,"code":5074,"language":4621,"meta":3030,"style":3030},"{\n  \"nitro\": {\n    \"experimental\": {\n      \"tasks\": true\n    },\n    \"scheduledTasks\": {\n      \"*\u002F15 * * * *\": [\"shield:cleanBans\"],\n      \"0 0 * * *\": [\"shield:cleanIpData\"]\n    }\n  }\n}\n",[5076],{"type":3086,"tag":3243,"props":5077,"children":5078},{"__ignoreMap":3030},[5079,5086,5109,5133,5158,5165,5188,5229,5270,5277,5284],{"type":3086,"tag":3456,"props":5080,"children":5081},{"class":3458,"line":3058},[5082],{"type":3086,"tag":3456,"props":5083,"children":5084},{"style":3621},[5085],{"type":3091,"value":3624},{"type":3086,"tag":3456,"props":5087,"children":5088},{"class":3458,"line":3054},[5089,5093,5097,5101,5105],{"type":3086,"tag":3456,"props":5090,"children":5091},{"style":3621},[5092],{"type":3091,"value":4640},{"type":3086,"tag":3456,"props":5094,"children":5095},{"style":4643},[5096],{"type":3091,"value":4646},{"type":3086,"tag":3456,"props":5098,"children":5099},{"style":3621},[5100],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":5102,"children":5103},{"style":3621},[5104],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":5106,"children":5107},{"style":3621},[5108],{"type":3091,"value":3683},{"type":3086,"tag":3456,"props":5110,"children":5111},{"class":3458,"line":3488},[5112,5116,5121,5125,5129],{"type":3086,"tag":3456,"props":5113,"children":5114},{"style":3621},[5115],{"type":3091,"value":4666},{"type":3086,"tag":3456,"props":5117,"children":5118},{"style":3471},[5119],{"type":3091,"value":5120},"experimental",{"type":3086,"tag":3456,"props":5122,"children":5123},{"style":3621},[5124],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":5126,"children":5127},{"style":3621},[5128],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":5130,"children":5131},{"style":3621},[5132],{"type":3091,"value":3683},{"type":3086,"tag":3456,"props":5134,"children":5135},{"class":3458,"line":3497},[5136,5140,5145,5149,5153],{"type":3086,"tag":3456,"props":5137,"children":5138},{"style":3621},[5139],{"type":3091,"value":4691},{"type":3086,"tag":3456,"props":5141,"children":5142},{"style":3896},[5143],{"type":3091,"value":5144},"tasks",{"type":3086,"tag":3456,"props":5146,"children":5147},{"style":3621},[5148],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":5150,"children":5151},{"style":3621},[5152],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":5154,"children":5155},{"style":3621},[5156],{"type":3091,"value":5157}," true\n",{"type":3086,"tag":3456,"props":5159,"children":5160},{"class":3458,"line":3050},[5161],{"type":3086,"tag":3456,"props":5162,"children":5163},{"style":3621},[5164],{"type":3091,"value":3732},{"type":3086,"tag":3456,"props":5166,"children":5167},{"class":3458,"line":3522},[5168,5172,5176,5180,5184],{"type":3086,"tag":3456,"props":5169,"children":5170},{"style":3621},[5171],{"type":3091,"value":4666},{"type":3086,"tag":3456,"props":5173,"children":5174},{"style":3471},[5175],{"type":3091,"value":5054},{"type":3086,"tag":3456,"props":5177,"children":5178},{"style":3621},[5179],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":5181,"children":5182},{"style":3621},[5183],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":5185,"children":5186},{"style":3621},[5187],{"type":3091,"value":3683},{"type":3086,"tag":3456,"props":5189,"children":5190},{"class":3458,"line":3530},[5191,5195,5200,5204,5208,5212,5216,5220,5224],{"type":3086,"tag":3456,"props":5192,"children":5193},{"style":3621},[5194],{"type":3091,"value":4691},{"type":3086,"tag":3456,"props":5196,"children":5197},{"style":3896},[5198],{"type":3091,"value":5199},"*\u002F15 * * * *",{"type":3086,"tag":3456,"props":5201,"children":5202},{"style":3621},[5203],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":5205,"children":5206},{"style":3621},[5207],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":5209,"children":5210},{"style":3621},[5211],{"type":3091,"value":3643},{"type":3086,"tag":3456,"props":5213,"children":5214},{"style":3621},[5215],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":5217,"children":5218},{"style":3477},[5219],{"type":3091,"value":3340},{"type":3086,"tag":3456,"props":5221,"children":5222},{"style":3621},[5223],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":5225,"children":5226},{"style":3621},[5227],{"type":3091,"value":5228},"],\n",{"type":3086,"tag":3456,"props":5230,"children":5231},{"class":3458,"line":3075},[5232,5236,5241,5245,5249,5253,5257,5261,5265],{"type":3086,"tag":3456,"props":5233,"children":5234},{"style":3621},[5235],{"type":3091,"value":4691},{"type":3086,"tag":3456,"props":5237,"children":5238},{"style":3896},[5239],{"type":3091,"value":5240},"0 0 * * *",{"type":3086,"tag":3456,"props":5242,"children":5243},{"style":3621},[5244],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":5246,"children":5247},{"style":3621},[5248],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":5250,"children":5251},{"style":3621},[5252],{"type":3091,"value":3643},{"type":3086,"tag":3456,"props":5254,"children":5255},{"style":3621},[5256],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":5258,"children":5259},{"style":3477},[5260],{"type":3091,"value":3348},{"type":3086,"tag":3456,"props":5262,"children":5263},{"style":3621},[5264],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":5266,"children":5267},{"style":3621},[5268],{"type":3091,"value":5269},"]\n",{"type":3086,"tag":3456,"props":5271,"children":5272},{"class":3458,"line":3726},[5273],{"type":3086,"tag":3456,"props":5274,"children":5275},{"style":3621},[5276],{"type":3091,"value":4766},{"type":3086,"tag":3456,"props":5278,"children":5279},{"class":3458,"line":3735},[5280],{"type":3086,"tag":3456,"props":5281,"children":5282},{"style":3621},[5283],{"type":3091,"value":4429},{"type":3086,"tag":3456,"props":5285,"children":5286},{"class":3458,"line":3744},[5287],{"type":3086,"tag":3456,"props":5288,"children":5289},{"style":3621},[5290],{"type":3091,"value":4437},{"type":3086,"tag":3093,"props":5292,"children":5293},{},[5294],{"type":3091,"value":5295},"Cron expressions are examples only: for instance, clean expired bans every 15 minutes and IP tracking data daily at midnight.",{"type":3086,"tag":3432,"props":5297,"children":5299},{"id":5298},"_5-optional-custom-cleanup-task-implementations",[5300],{"type":3091,"value":5301},"5. Optional: custom cleanup task implementations",{"type":3086,"tag":3093,"props":5303,"children":5304},{},[5305,5307,5312,5314,5319],{"type":3091,"value":5306},"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":3086,"tag":3181,"props":5308,"children":5309},{},[5310],{"type":3091,"value":5311},"another",{"type":3091,"value":5313}," task name and point ",{"type":3086,"tag":3243,"props":5315,"children":5317},{"className":5316},[],[5318],{"type":3091,"value":5054},{"type":3091,"value":5320}," at that name instead.",{"type":3086,"tag":5322,"props":5323,"children":5325},"h4",{"id":5324},"a-task-for-cleaning-expired-bans",[5326],{"type":3091,"value":5327},"a) Task for cleaning expired bans",{"type":3086,"tag":3093,"props":5329,"children":5330},{},[5331,5333,5339],{"type":3091,"value":5332},"Removes ban entries (",{"type":3086,"tag":3243,"props":5334,"children":5336},{"className":5335},[],[5337],{"type":3091,"value":5338},"ban:xxx.xxx.xxx.xxx",{"type":3091,"value":5340},") after the ban timestamp has passed.",{"type":3086,"tag":3093,"props":5342,"children":5343},{},[5344,5346,5352],{"type":3091,"value":5345},"Example ",{"type":3086,"tag":3243,"props":5347,"children":5349},{"className":5348},[],[5350],{"type":3091,"value":5351},"server\u002Ftasks\u002Fshield\u002FcleanBans.ts",{"type":3091,"value":5353}," (task name must match what you schedule):",{"type":3086,"tag":3446,"props":5355,"children":5359},{"className":5356,"code":5357,"language":5358,"meta":3030,"style":3030},"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",[5360],{"type":3086,"tag":3243,"props":5361,"children":5362},{"__ignoreMap":3030},[5363,5414,5421,5445,5461,5494,5523,5530,5552,5604,5611,5619,5678,5685,5710,5751,5802,5837,5874,5887,5894,5901,5963,6001,6008],{"type":3086,"tag":3456,"props":5364,"children":5365},{"class":3458,"line":3058},[5366,5371,5376,5381,5386,5391,5395,5400,5404,5409],{"type":3086,"tag":3456,"props":5367,"children":5368},{"style":3598},[5369],{"type":3091,"value":5370},"import",{"type":3086,"tag":3456,"props":5372,"children":5373},{"style":3621},[5374],{"type":3091,"value":5375}," {",{"type":3086,"tag":3456,"props":5377,"children":5378},{"style":3615},[5379],{"type":3091,"value":5380}," isActualBanTimestampExpired",{"type":3086,"tag":3456,"props":5382,"children":5383},{"style":3621},[5384],{"type":3091,"value":5385}," }",{"type":3086,"tag":3456,"props":5387,"children":5388},{"style":3598},[5389],{"type":3091,"value":5390}," from",{"type":3086,"tag":3456,"props":5392,"children":5393},{"style":3621},[5394],{"type":3091,"value":4164},{"type":3086,"tag":3456,"props":5396,"children":5397},{"style":3477},[5398],{"type":3091,"value":5399},"#imports",{"type":3086,"tag":3456,"props":5401,"children":5402},{"style":3621},[5403],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":5405,"children":5406},{"style":3621},[5407],{"type":3091,"value":5408},";",{"type":3086,"tag":3456,"props":5410,"children":5411},{"style":3462},[5412],{"type":3091,"value":5413}," \u002F\u002F Auto-imported utility from nuxt-api-shield\n",{"type":3086,"tag":3456,"props":5415,"children":5416},{"class":3458,"line":3054},[5417],{"type":3086,"tag":3456,"props":5418,"children":5419},{"emptyLinePlaceholder":1200},[5420],{"type":3091,"value":3494},{"type":3086,"tag":3456,"props":5422,"children":5423},{"class":3458,"line":3488},[5424,5428,5432,5437,5441],{"type":3086,"tag":3456,"props":5425,"children":5426},{"style":3598},[5427],{"type":3091,"value":3601},{"type":3086,"tag":3456,"props":5429,"children":5430},{"style":3598},[5431],{"type":3091,"value":3606},{"type":3086,"tag":3456,"props":5433,"children":5434},{"style":3609},[5435],{"type":3091,"value":5436}," defineTask",{"type":3086,"tag":3456,"props":5438,"children":5439},{"style":3615},[5440],{"type":3091,"value":3618},{"type":3086,"tag":3456,"props":5442,"children":5443},{"style":3621},[5444],{"type":3091,"value":3624},{"type":3086,"tag":3456,"props":5446,"children":5447},{"class":3458,"line":3497},[5448,5453,5457],{"type":3086,"tag":3456,"props":5449,"children":5450},{"style":3630},[5451],{"type":3091,"value":5452},"  meta",{"type":3086,"tag":3456,"props":5454,"children":5455},{"style":3621},[5456],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":5458,"children":5459},{"style":3621},[5460],{"type":3091,"value":3683},{"type":3086,"tag":3456,"props":5462,"children":5463},{"class":3458,"line":3050},[5464,5469,5473,5477,5481,5485,5489],{"type":3086,"tag":3456,"props":5465,"children":5466},{"style":3630},[5467],{"type":3091,"value":5468},"    name",{"type":3086,"tag":3456,"props":5470,"children":5471},{"style":3621},[5472],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":5474,"children":5475},{"style":3621},[5476],{"type":3091,"value":4164},{"type":3086,"tag":3456,"props":5478,"children":5479},{"style":3477},[5480],{"type":3091,"value":3340},{"type":3086,"tag":3456,"props":5482,"children":5483},{"style":3621},[5484],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":5486,"children":5487},{"style":3621},[5488],{"type":3091,"value":3858},{"type":3086,"tag":3456,"props":5490,"children":5491},{"style":3462},[5492],{"type":3091,"value":5493}," \u002F\u002F Match the name in scheduledTasks\n",{"type":3086,"tag":3456,"props":5495,"children":5496},{"class":3458,"line":3522},[5497,5502,5506,5510,5515,5519],{"type":3086,"tag":3456,"props":5498,"children":5499},{"style":3630},[5500],{"type":3091,"value":5501},"    description",{"type":3086,"tag":3456,"props":5503,"children":5504},{"style":3621},[5505],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":5507,"children":5508},{"style":3621},[5509],{"type":3091,"value":4164},{"type":3086,"tag":3456,"props":5511,"children":5512},{"style":3477},[5513],{"type":3091,"value":5514},"Clean expired bans from nuxt-api-shield storage.",{"type":3086,"tag":3456,"props":5516,"children":5517},{"style":3621},[5518],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":5520,"children":5521},{"style":3621},[5522],{"type":3091,"value":3666},{"type":3086,"tag":3456,"props":5524,"children":5525},{"class":3458,"line":3530},[5526],{"type":3086,"tag":3456,"props":5527,"children":5528},{"style":3621},[5529],{"type":3091,"value":3979},{"type":3086,"tag":3456,"props":5531,"children":5532},{"class":3458,"line":3075},[5533,5538,5543,5548],{"type":3086,"tag":3456,"props":5534,"children":5535},{"style":4643},[5536],{"type":3091,"value":5537},"  async",{"type":3086,"tag":3456,"props":5539,"children":5540},{"style":3630},[5541],{"type":3091,"value":5542}," run",{"type":3086,"tag":3456,"props":5544,"children":5545},{"style":3621},[5546],{"type":3091,"value":5547},"()",{"type":3086,"tag":3456,"props":5549,"children":5550},{"style":3621},[5551],{"type":3091,"value":3683},{"type":3086,"tag":3456,"props":5553,"children":5554},{"class":3458,"line":3726},[5555,5560,5565,5570,5575,5579,5583,5587,5591,5595,5599],{"type":3086,"tag":3456,"props":5556,"children":5557},{"style":4643},[5558],{"type":3091,"value":5559},"    const",{"type":3086,"tag":3456,"props":5561,"children":5562},{"style":3615},[5563],{"type":3091,"value":5564}," shieldStorage",{"type":3086,"tag":3456,"props":5566,"children":5567},{"style":3621},[5568],{"type":3091,"value":5569}," =",{"type":3086,"tag":3456,"props":5571,"children":5572},{"style":3609},[5573],{"type":3091,"value":5574}," useStorage",{"type":3086,"tag":3456,"props":5576,"children":5577},{"style":3630},[5578],{"type":3091,"value":3618},{"type":3086,"tag":3456,"props":5580,"children":5581},{"style":3621},[5582],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":5584,"children":5585},{"style":3477},[5586],{"type":3091,"value":4614},{"type":3086,"tag":3456,"props":5588,"children":5589},{"style":3621},[5590],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":5592,"children":5593},{"style":3630},[5594],{"type":3091,"value":3993},{"type":3086,"tag":3456,"props":5596,"children":5597},{"style":3621},[5598],{"type":3091,"value":5408},{"type":3086,"tag":3456,"props":5600,"children":5601},{"style":3462},[5602],{"type":3091,"value":5603}," \u002F\u002F Use your configured storage name\n",{"type":3086,"tag":3456,"props":5605,"children":5606},{"class":3458,"line":3735},[5607],{"type":3086,"tag":3456,"props":5608,"children":5609},{"emptyLinePlaceholder":1200},[5610],{"type":3091,"value":3494},{"type":3086,"tag":3456,"props":5612,"children":5613},{"class":3458,"line":3744},[5614],{"type":3086,"tag":3456,"props":5615,"children":5616},{"style":3462},[5617],{"type":3091,"value":5618},"    \u002F\u002F Only fetch keys that start with the 'ban:' prefix\n",{"type":3086,"tag":3456,"props":5620,"children":5621},{"class":3458,"line":3753},[5622,5626,5631,5635,5640,5644,5648,5653,5657,5661,5666,5670,5674],{"type":3086,"tag":3456,"props":5623,"children":5624},{"style":4643},[5625],{"type":3091,"value":5559},{"type":3086,"tag":3456,"props":5627,"children":5628},{"style":3615},[5629],{"type":3091,"value":5630}," banKeys",{"type":3086,"tag":3456,"props":5632,"children":5633},{"style":3621},[5634],{"type":3091,"value":5569},{"type":3086,"tag":3456,"props":5636,"children":5637},{"style":3598},[5638],{"type":3091,"value":5639}," await",{"type":3086,"tag":3456,"props":5641,"children":5642},{"style":3615},[5643],{"type":3091,"value":5564},{"type":3086,"tag":3456,"props":5645,"children":5646},{"style":3621},[5647],{"type":3091,"value":4585},{"type":3086,"tag":3456,"props":5649,"children":5650},{"style":3609},[5651],{"type":3091,"value":5652},"getKeys",{"type":3086,"tag":3456,"props":5654,"children":5655},{"style":3630},[5656],{"type":3091,"value":3618},{"type":3086,"tag":3456,"props":5658,"children":5659},{"style":3621},[5660],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":5662,"children":5663},{"style":3477},[5664],{"type":3091,"value":5665},"ban:",{"type":3086,"tag":3456,"props":5667,"children":5668},{"style":3621},[5669],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":5671,"children":5672},{"style":3630},[5673],{"type":3091,"value":3993},{"type":3086,"tag":3456,"props":5675,"children":5676},{"style":3621},[5677],{"type":3091,"value":3998},{"type":3086,"tag":3456,"props":5679,"children":5680},{"class":3458,"line":3762},[5681],{"type":3086,"tag":3456,"props":5682,"children":5683},{"emptyLinePlaceholder":1200},[5684],{"type":3091,"value":3494},{"type":3086,"tag":3456,"props":5686,"children":5687},{"class":3458,"line":3771},[5688,5693,5698,5702,5706],{"type":3086,"tag":3456,"props":5689,"children":5690},{"style":4643},[5691],{"type":3091,"value":5692},"    let",{"type":3086,"tag":3456,"props":5694,"children":5695},{"style":3615},[5696],{"type":3091,"value":5697}," cleanedCount",{"type":3086,"tag":3456,"props":5699,"children":5700},{"style":3621},[5701],{"type":3091,"value":5569},{"type":3086,"tag":3456,"props":5703,"children":5704},{"style":3896},[5705],{"type":3091,"value":4256},{"type":3086,"tag":3456,"props":5707,"children":5708},{"style":3621},[5709],{"type":3091,"value":3998},{"type":3086,"tag":3456,"props":5711,"children":5712},{"class":3458,"line":3780},[5713,5718,5723,5728,5733,5738,5742,5747],{"type":3086,"tag":3456,"props":5714,"children":5715},{"style":3598},[5716],{"type":3091,"value":5717},"    for",{"type":3086,"tag":3456,"props":5719,"children":5720},{"style":3630},[5721],{"type":3091,"value":5722}," (",{"type":3086,"tag":3456,"props":5724,"children":5725},{"style":4643},[5726],{"type":3091,"value":5727},"const",{"type":3086,"tag":3456,"props":5729,"children":5730},{"style":3615},[5731],{"type":3091,"value":5732}," key",{"type":3086,"tag":3456,"props":5734,"children":5735},{"style":3621},[5736],{"type":3091,"value":5737}," of",{"type":3086,"tag":3456,"props":5739,"children":5740},{"style":3615},[5741],{"type":3091,"value":5630},{"type":3086,"tag":3456,"props":5743,"children":5744},{"style":3630},[5745],{"type":3091,"value":5746},") ",{"type":3086,"tag":3456,"props":5748,"children":5749},{"style":3621},[5750],{"type":3091,"value":3624},{"type":3086,"tag":3456,"props":5752,"children":5753},{"class":3458,"line":3789},[5754,5759,5764,5768,5772,5776,5780,5785,5789,5794,5798],{"type":3086,"tag":3456,"props":5755,"children":5756},{"style":4643},[5757],{"type":3091,"value":5758},"      const",{"type":3086,"tag":3456,"props":5760,"children":5761},{"style":3615},[5762],{"type":3091,"value":5763}," bannedUntilRaw",{"type":3086,"tag":3456,"props":5765,"children":5766},{"style":3621},[5767],{"type":3091,"value":5569},{"type":3086,"tag":3456,"props":5769,"children":5770},{"style":3598},[5771],{"type":3091,"value":5639},{"type":3086,"tag":3456,"props":5773,"children":5774},{"style":3615},[5775],{"type":3091,"value":5564},{"type":3086,"tag":3456,"props":5777,"children":5778},{"style":3621},[5779],{"type":3091,"value":4585},{"type":3086,"tag":3456,"props":5781,"children":5782},{"style":3609},[5783],{"type":3091,"value":5784},"getItem",{"type":3086,"tag":3456,"props":5786,"children":5787},{"style":3630},[5788],{"type":3091,"value":3618},{"type":3086,"tag":3456,"props":5790,"children":5791},{"style":3615},[5792],{"type":3091,"value":5793},"key",{"type":3086,"tag":3456,"props":5795,"children":5796},{"style":3630},[5797],{"type":3091,"value":3993},{"type":3086,"tag":3456,"props":5799,"children":5800},{"style":3621},[5801],{"type":3091,"value":3998},{"type":3086,"tag":3456,"props":5803,"children":5804},{"class":3458,"line":3798},[5805,5810,5814,5819,5823,5828,5833],{"type":3086,"tag":3456,"props":5806,"children":5807},{"style":3598},[5808],{"type":3091,"value":5809},"      if",{"type":3086,"tag":3456,"props":5811,"children":5812},{"style":3630},[5813],{"type":3091,"value":5722},{"type":3086,"tag":3456,"props":5815,"children":5816},{"style":3609},[5817],{"type":3091,"value":5818},"isActualBanTimestampExpired",{"type":3086,"tag":3456,"props":5820,"children":5821},{"style":3630},[5822],{"type":3091,"value":3618},{"type":3086,"tag":3456,"props":5824,"children":5825},{"style":3615},[5826],{"type":3091,"value":5827},"bannedUntilRaw",{"type":3086,"tag":3456,"props":5829,"children":5830},{"style":3630},[5831],{"type":3091,"value":5832},")) ",{"type":3086,"tag":3456,"props":5834,"children":5835},{"style":3621},[5836],{"type":3091,"value":3624},{"type":3086,"tag":3456,"props":5838,"children":5839},{"class":3458,"line":3806},[5840,5845,5849,5853,5858,5862,5866,5870],{"type":3086,"tag":3456,"props":5841,"children":5842},{"style":3598},[5843],{"type":3091,"value":5844},"        await",{"type":3086,"tag":3456,"props":5846,"children":5847},{"style":3615},[5848],{"type":3091,"value":5564},{"type":3086,"tag":3456,"props":5850,"children":5851},{"style":3621},[5852],{"type":3091,"value":4585},{"type":3086,"tag":3456,"props":5854,"children":5855},{"style":3609},[5856],{"type":3091,"value":5857},"removeItem",{"type":3086,"tag":3456,"props":5859,"children":5860},{"style":3630},[5861],{"type":3091,"value":3618},{"type":3086,"tag":3456,"props":5863,"children":5864},{"style":3615},[5865],{"type":3091,"value":5793},{"type":3086,"tag":3456,"props":5867,"children":5868},{"style":3630},[5869],{"type":3091,"value":3993},{"type":3086,"tag":3456,"props":5871,"children":5872},{"style":3621},[5873],{"type":3091,"value":3998},{"type":3086,"tag":3456,"props":5875,"children":5876},{"class":3458,"line":3815},[5877,5882],{"type":3086,"tag":3456,"props":5878,"children":5879},{"style":3615},[5880],{"type":3091,"value":5881},"        cleanedCount",{"type":3086,"tag":3456,"props":5883,"children":5884},{"style":3621},[5885],{"type":3091,"value":5886},"++;\n",{"type":3086,"tag":3456,"props":5888,"children":5889},{"class":3458,"line":3824},[5890],{"type":3086,"tag":3456,"props":5891,"children":5892},{"style":3621},[5893],{"type":3091,"value":4758},{"type":3086,"tag":3456,"props":5895,"children":5896},{"class":3458,"line":3838},[5897],{"type":3086,"tag":3456,"props":5898,"children":5899},{"style":3621},[5900],{"type":3091,"value":4766},{"type":3086,"tag":3456,"props":5902,"children":5903},{"class":3458,"line":3866},[5904,5909,5913,5918,5922,5927,5932,5937,5942,5946,5951,5955,5959],{"type":3086,"tag":3456,"props":5905,"children":5906},{"style":3615},[5907],{"type":3091,"value":5908},"    console",{"type":3086,"tag":3456,"props":5910,"children":5911},{"style":3621},[5912],{"type":3091,"value":4585},{"type":3086,"tag":3456,"props":5914,"children":5915},{"style":3609},[5916],{"type":3091,"value":5917},"log",{"type":3086,"tag":3456,"props":5919,"children":5920},{"style":3630},[5921],{"type":3091,"value":3618},{"type":3086,"tag":3456,"props":5923,"children":5924},{"style":3621},[5925],{"type":3091,"value":5926},"`",{"type":3086,"tag":3456,"props":5928,"children":5929},{"style":3477},[5930],{"type":3091,"value":5931},"[nuxt-api-shield] Cleaned ",{"type":3086,"tag":3456,"props":5933,"children":5934},{"style":3621},[5935],{"type":3091,"value":5936},"${",{"type":3086,"tag":3456,"props":5938,"children":5939},{"style":3615},[5940],{"type":3091,"value":5941},"cleanedCount",{"type":3086,"tag":3456,"props":5943,"children":5944},{"style":3621},[5945],{"type":3091,"value":3988},{"type":3086,"tag":3456,"props":5947,"children":5948},{"style":3477},[5949],{"type":3091,"value":5950}," expired ban(s).",{"type":3086,"tag":3456,"props":5952,"children":5953},{"style":3621},[5954],{"type":3091,"value":5926},{"type":3086,"tag":3456,"props":5956,"children":5957},{"style":3630},[5958],{"type":3091,"value":3993},{"type":3086,"tag":3456,"props":5960,"children":5961},{"style":3621},[5962],{"type":3091,"value":3998},{"type":3086,"tag":3456,"props":5964,"children":5965},{"class":3458,"line":3874},[5966,5971,5975,5980,5984,5988,5992,5996],{"type":3086,"tag":3456,"props":5967,"children":5968},{"style":3598},[5969],{"type":3091,"value":5970},"    return",{"type":3086,"tag":3456,"props":5972,"children":5973},{"style":3621},[5974],{"type":3091,"value":5375},{"type":3086,"tag":3456,"props":5976,"children":5977},{"style":3630},[5978],{"type":3091,"value":5979}," result",{"type":3086,"tag":3456,"props":5981,"children":5982},{"style":3621},[5983],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":5985,"children":5986},{"style":3621},[5987],{"type":3091,"value":5375},{"type":3086,"tag":3456,"props":5989,"children":5990},{"style":3615},[5991],{"type":3091,"value":5697},{"type":3086,"tag":3456,"props":5993,"children":5994},{"style":3621},[5995],{"type":3091,"value":5385},{"type":3086,"tag":3456,"props":5997,"children":5998},{"style":3621},[5999],{"type":3091,"value":6000}," };\n",{"type":3086,"tag":3456,"props":6002,"children":6003},{"class":3458,"line":3883},[6004],{"type":3086,"tag":3456,"props":6005,"children":6006},{"style":3621},[6007],{"type":3091,"value":3979},{"type":3086,"tag":3456,"props":6009,"children":6010},{"class":3458,"line":3911},[6011,6015,6019],{"type":3086,"tag":3456,"props":6012,"children":6013},{"style":3621},[6014],{"type":3091,"value":3988},{"type":3086,"tag":3456,"props":6016,"children":6017},{"style":3615},[6018],{"type":3091,"value":3993},{"type":3086,"tag":3456,"props":6020,"children":6021},{"style":3621},[6022],{"type":3091,"value":3998},{"type":3086,"tag":3093,"props":6024,"children":6025},{},[6026,6027,6032,6034,6039,6041,6046],{"type":3091,"value":4456},{"type":3086,"tag":3243,"props":6028,"children":6030},{"className":6029},[],[6031],{"type":3091,"value":5818},{"type":3091,"value":6033}," utility is provided by ",{"type":3086,"tag":3243,"props":6035,"children":6037},{"className":6036},[],[6038],{"type":3091,"value":3027},{"type":3091,"value":6040}," and should be available via ",{"type":3086,"tag":3243,"props":6042,"children":6044},{"className":6043},[],[6045],{"type":3091,"value":5399},{"type":3091,"value":4585},{"type":3086,"tag":5322,"props":6048,"children":6050},{"id":6049},"b-task-for-cleaning-old-ip-tracking-data",[6051],{"type":3091,"value":6052},"b) Task for cleaning old IP tracking data",{"type":3086,"tag":3093,"props":6054,"children":6055},{},[6056,6058,6064,6066,6072,6074,6080],{"type":3091,"value":6057},"Cleans IP tracking entries (",{"type":3086,"tag":3243,"props":6059,"children":6061},{"className":6060},[],[6062],{"type":3091,"value":6063},"ip:xxx.xxx.xxx.xxx",{"type":3091,"value":6065},") whose ",{"type":3086,"tag":3243,"props":6067,"children":6069},{"className":6068},[],[6070],{"type":3091,"value":6071},"time",{"type":3091,"value":6073}," is older than ",{"type":3086,"tag":3243,"props":6075,"children":6077},{"className":6076},[],[6078],{"type":3091,"value":6079},"nuxtApiShield.ipTTL",{"type":3091,"value":6081}," (default 7 days), and drops malformed entries. That keeps storage from growing with one-off IPs that were never banned.",{"type":3086,"tag":3093,"props":6083,"children":6084},{},[6085,6086,6092],{"type":3091,"value":5345},{"type":3086,"tag":3243,"props":6087,"children":6089},{"className":6088},[],[6090],{"type":3091,"value":6091},"server\u002Ftasks\u002Fshield\u002FcleanIpData.ts",{"type":3091,"value":3638},{"type":3086,"tag":3446,"props":6094,"children":6096},{"className":5356,"code":6095,"language":5358,"meta":3030,"style":3030},"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",[6097],{"type":3086,"tag":3243,"props":6098,"children":6099},{"__ignoreMap":3030},[6100,6145,6185,6192,6215,6230,6261,6289,6296,6315,6358,6402,6409,6417,6449,6456,6504,6525,6541,6553,6620,6627,6660,6667,6724,6762,6785,6792,6827,6899,6906,6915,6980,7032,7069,7082,7091,7109,7118,7154,7166,7174,7182,7190,7210,7245,7258,7294,7302],{"type":3086,"tag":3456,"props":6101,"children":6102},{"class":3458,"line":3058},[6103,6107,6112,6116,6121,6125,6129,6133,6137,6141],{"type":3086,"tag":3456,"props":6104,"children":6105},{"style":3598},[6106],{"type":3091,"value":5370},{"type":3086,"tag":3456,"props":6108,"children":6109},{"style":3598},[6110],{"type":3091,"value":6111}," type",{"type":3086,"tag":3456,"props":6113,"children":6114},{"style":3621},[6115],{"type":3091,"value":5375},{"type":3086,"tag":3456,"props":6117,"children":6118},{"style":3615},[6119],{"type":3091,"value":6120}," RateLimit",{"type":3086,"tag":3456,"props":6122,"children":6123},{"style":3621},[6124],{"type":3091,"value":5385},{"type":3086,"tag":3456,"props":6126,"children":6127},{"style":3598},[6128],{"type":3091,"value":5390},{"type":3086,"tag":3456,"props":6130,"children":6131},{"style":3621},[6132],{"type":3091,"value":4164},{"type":3086,"tag":3456,"props":6134,"children":6135},{"style":3477},[6136],{"type":3091,"value":3027},{"type":3086,"tag":3456,"props":6138,"children":6139},{"style":3621},[6140],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":6142,"children":6143},{"style":3621},[6144],{"type":3091,"value":3998},{"type":3086,"tag":3456,"props":6146,"children":6147},{"class":3458,"line":3054},[6148,6152,6156,6161,6165,6169,6173,6177,6181],{"type":3086,"tag":3456,"props":6149,"children":6150},{"style":3598},[6151],{"type":3091,"value":5370},{"type":3086,"tag":3456,"props":6153,"children":6154},{"style":3621},[6155],{"type":3091,"value":5375},{"type":3086,"tag":3456,"props":6157,"children":6158},{"style":3615},[6159],{"type":3091,"value":6160}," useRuntimeConfig",{"type":3086,"tag":3456,"props":6162,"children":6163},{"style":3621},[6164],{"type":3091,"value":5385},{"type":3086,"tag":3456,"props":6166,"children":6167},{"style":3598},[6168],{"type":3091,"value":5390},{"type":3086,"tag":3456,"props":6170,"children":6171},{"style":3621},[6172],{"type":3091,"value":4164},{"type":3086,"tag":3456,"props":6174,"children":6175},{"style":3477},[6176],{"type":3091,"value":5399},{"type":3086,"tag":3456,"props":6178,"children":6179},{"style":3621},[6180],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":6182,"children":6183},{"style":3621},[6184],{"type":3091,"value":3998},{"type":3086,"tag":3456,"props":6186,"children":6187},{"class":3458,"line":3488},[6188],{"type":3086,"tag":3456,"props":6189,"children":6190},{"emptyLinePlaceholder":1200},[6191],{"type":3091,"value":3494},{"type":3086,"tag":3456,"props":6193,"children":6194},{"class":3458,"line":3497},[6195,6199,6203,6207,6211],{"type":3086,"tag":3456,"props":6196,"children":6197},{"style":3598},[6198],{"type":3091,"value":3601},{"type":3086,"tag":3456,"props":6200,"children":6201},{"style":3598},[6202],{"type":3091,"value":3606},{"type":3086,"tag":3456,"props":6204,"children":6205},{"style":3609},[6206],{"type":3091,"value":5436},{"type":3086,"tag":3456,"props":6208,"children":6209},{"style":3615},[6210],{"type":3091,"value":3618},{"type":3086,"tag":3456,"props":6212,"children":6213},{"style":3621},[6214],{"type":3091,"value":3624},{"type":3086,"tag":3456,"props":6216,"children":6217},{"class":3458,"line":3050},[6218,6222,6226],{"type":3086,"tag":3456,"props":6219,"children":6220},{"style":3630},[6221],{"type":3091,"value":5452},{"type":3086,"tag":3456,"props":6223,"children":6224},{"style":3621},[6225],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":6227,"children":6228},{"style":3621},[6229],{"type":3091,"value":3683},{"type":3086,"tag":3456,"props":6231,"children":6232},{"class":3458,"line":3522},[6233,6237,6241,6245,6249,6253,6257],{"type":3086,"tag":3456,"props":6234,"children":6235},{"style":3630},[6236],{"type":3091,"value":5468},{"type":3086,"tag":3456,"props":6238,"children":6239},{"style":3621},[6240],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":6242,"children":6243},{"style":3621},[6244],{"type":3091,"value":4164},{"type":3086,"tag":3456,"props":6246,"children":6247},{"style":3477},[6248],{"type":3091,"value":3348},{"type":3086,"tag":3456,"props":6250,"children":6251},{"style":3621},[6252],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":6254,"children":6255},{"style":3621},[6256],{"type":3091,"value":3858},{"type":3086,"tag":3456,"props":6258,"children":6259},{"style":3462},[6260],{"type":3091,"value":5493},{"type":3086,"tag":3456,"props":6262,"children":6263},{"class":3458,"line":3530},[6264,6268,6272,6276,6281,6285],{"type":3086,"tag":3456,"props":6265,"children":6266},{"style":3630},[6267],{"type":3091,"value":5501},{"type":3086,"tag":3456,"props":6269,"children":6270},{"style":3621},[6271],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":6273,"children":6274},{"style":3621},[6275],{"type":3091,"value":4164},{"type":3086,"tag":3456,"props":6277,"children":6278},{"style":3477},[6279],{"type":3091,"value":6280},"Clean old IP tracking data from nuxt-api-shield storage.",{"type":3086,"tag":3456,"props":6282,"children":6283},{"style":3621},[6284],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":6286,"children":6287},{"style":3621},[6288],{"type":3091,"value":3666},{"type":3086,"tag":3456,"props":6290,"children":6291},{"class":3458,"line":3075},[6292],{"type":3086,"tag":3456,"props":6293,"children":6294},{"style":3621},[6295],{"type":3091,"value":3979},{"type":3086,"tag":3456,"props":6297,"children":6298},{"class":3458,"line":3726},[6299,6303,6307,6311],{"type":3086,"tag":3456,"props":6300,"children":6301},{"style":4643},[6302],{"type":3091,"value":5537},{"type":3086,"tag":3456,"props":6304,"children":6305},{"style":3630},[6306],{"type":3091,"value":5542},{"type":3086,"tag":3456,"props":6308,"children":6309},{"style":3621},[6310],{"type":3091,"value":5547},{"type":3086,"tag":3456,"props":6312,"children":6313},{"style":3621},[6314],{"type":3091,"value":3683},{"type":3086,"tag":3456,"props":6316,"children":6317},{"class":3458,"line":3735},[6318,6322,6326,6330,6334,6338,6342,6346,6350,6354],{"type":3086,"tag":3456,"props":6319,"children":6320},{"style":4643},[6321],{"type":3091,"value":5559},{"type":3086,"tag":3456,"props":6323,"children":6324},{"style":3615},[6325],{"type":3091,"value":5564},{"type":3086,"tag":3456,"props":6327,"children":6328},{"style":3621},[6329],{"type":3091,"value":5569},{"type":3086,"tag":3456,"props":6331,"children":6332},{"style":3609},[6333],{"type":3091,"value":5574},{"type":3086,"tag":3456,"props":6335,"children":6336},{"style":3630},[6337],{"type":3091,"value":3618},{"type":3086,"tag":3456,"props":6339,"children":6340},{"style":3621},[6341],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":6343,"children":6344},{"style":3477},[6345],{"type":3091,"value":4614},{"type":3086,"tag":3456,"props":6347,"children":6348},{"style":3621},[6349],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":6351,"children":6352},{"style":3630},[6353],{"type":3091,"value":3993},{"type":3086,"tag":3456,"props":6355,"children":6356},{"style":3621},[6357],{"type":3091,"value":3998},{"type":3086,"tag":3456,"props":6359,"children":6360},{"class":3458,"line":3744},[6361,6365,6370,6374,6378,6382,6386,6390,6394,6398],{"type":3086,"tag":3456,"props":6362,"children":6363},{"style":4643},[6364],{"type":3091,"value":5559},{"type":3086,"tag":3456,"props":6366,"children":6367},{"style":3615},[6368],{"type":3091,"value":6369}," config",{"type":3086,"tag":3456,"props":6371,"children":6372},{"style":3621},[6373],{"type":3091,"value":5569},{"type":3086,"tag":3456,"props":6375,"children":6376},{"style":3609},[6377],{"type":3091,"value":6160},{"type":3086,"tag":3456,"props":6379,"children":6380},{"style":3630},[6381],{"type":3091,"value":5547},{"type":3086,"tag":3456,"props":6383,"children":6384},{"style":3621},[6385],{"type":3091,"value":4585},{"type":3086,"tag":3456,"props":6387,"children":6388},{"style":3615},[6389],{"type":3091,"value":180},{"type":3086,"tag":3456,"props":6391,"children":6392},{"style":3621},[6393],{"type":3091,"value":4585},{"type":3086,"tag":3456,"props":6395,"children":6396},{"style":3615},[6397],{"type":3091,"value":4014},{"type":3086,"tag":3456,"props":6399,"children":6400},{"style":3621},[6401],{"type":3091,"value":3998},{"type":3086,"tag":3456,"props":6403,"children":6404},{"class":3458,"line":3753},[6405],{"type":3086,"tag":3456,"props":6406,"children":6407},{"emptyLinePlaceholder":1200},[6408],{"type":3091,"value":3494},{"type":3086,"tag":3456,"props":6410,"children":6411},{"class":3458,"line":3762},[6412],{"type":3086,"tag":3456,"props":6413,"children":6414},{"style":3462},[6415],{"type":3091,"value":6416},"    \u002F\u002F ipTTL is expected to be in seconds from config (module applies default if not set by user)\n",{"type":3086,"tag":3456,"props":6418,"children":6419},{"class":3458,"line":3771},[6420,6424,6429,6433,6437,6441,6445],{"type":3086,"tag":3456,"props":6421,"children":6422},{"style":4643},[6423],{"type":3091,"value":5559},{"type":3086,"tag":3456,"props":6425,"children":6426},{"style":3615},[6427],{"type":3091,"value":6428}," ipTTLseconds",{"type":3086,"tag":3456,"props":6430,"children":6431},{"style":3621},[6432],{"type":3091,"value":5569},{"type":3086,"tag":3456,"props":6434,"children":6435},{"style":3615},[6436],{"type":3091,"value":6369},{"type":3086,"tag":3456,"props":6438,"children":6439},{"style":3621},[6440],{"type":3091,"value":4585},{"type":3086,"tag":3456,"props":6442,"children":6443},{"style":3615},[6444],{"type":3091,"value":5046},{"type":3086,"tag":3456,"props":6446,"children":6447},{"style":3621},[6448],{"type":3091,"value":3998},{"type":3086,"tag":3456,"props":6450,"children":6451},{"class":3458,"line":3780},[6452],{"type":3086,"tag":3456,"props":6453,"children":6454},{"emptyLinePlaceholder":1200},[6455],{"type":3091,"value":3494},{"type":3086,"tag":3456,"props":6457,"children":6458},{"class":3458,"line":3789},[6459,6464,6468,6473,6478,6483,6487,6492,6496,6500],{"type":3086,"tag":3456,"props":6460,"children":6461},{"style":3598},[6462],{"type":3091,"value":6463},"    if",{"type":3086,"tag":3456,"props":6465,"children":6466},{"style":3630},[6467],{"type":3091,"value":5722},{"type":3086,"tag":3456,"props":6469,"children":6470},{"style":3621},[6471],{"type":3091,"value":6472},"!",{"type":3086,"tag":3456,"props":6474,"children":6475},{"style":3615},[6476],{"type":3091,"value":6477},"ipTTLseconds",{"type":3086,"tag":3456,"props":6479,"children":6480},{"style":3621},[6481],{"type":3091,"value":6482}," ||",{"type":3086,"tag":3456,"props":6484,"children":6485},{"style":3615},[6486],{"type":3091,"value":6428},{"type":3086,"tag":3456,"props":6488,"children":6489},{"style":3621},[6490],{"type":3091,"value":6491}," \u003C=",{"type":3086,"tag":3456,"props":6493,"children":6494},{"style":3896},[6495],{"type":3091,"value":4256},{"type":3086,"tag":3456,"props":6497,"children":6498},{"style":3630},[6499],{"type":3091,"value":5746},{"type":3086,"tag":3456,"props":6501,"children":6502},{"style":3621},[6503],{"type":3091,"value":3624},{"type":3086,"tag":3456,"props":6505,"children":6506},{"class":3458,"line":3798},[6507,6512,6516,6520],{"type":3086,"tag":3456,"props":6508,"children":6509},{"style":3615},[6510],{"type":3091,"value":6511},"      console",{"type":3086,"tag":3456,"props":6513,"children":6514},{"style":3621},[6515],{"type":3091,"value":4585},{"type":3086,"tag":3456,"props":6517,"children":6518},{"style":3609},[6519],{"type":3091,"value":5917},{"type":3086,"tag":3456,"props":6521,"children":6522},{"style":3630},[6523],{"type":3091,"value":6524},"(\n",{"type":3086,"tag":3456,"props":6526,"children":6527},{"class":3458,"line":3806},[6528,6532,6537],{"type":3086,"tag":3456,"props":6529,"children":6530},{"style":3621},[6531],{"type":3091,"value":4723},{"type":3086,"tag":3456,"props":6533,"children":6534},{"style":3477},[6535],{"type":3091,"value":6536},"[nuxt-api-shield] IP data cleanup (ipTTL) is disabled or invalid.",{"type":3086,"tag":3456,"props":6538,"children":6539},{"style":3621},[6540],{"type":3091,"value":4750},{"type":3086,"tag":3456,"props":6542,"children":6543},{"class":3458,"line":3815},[6544,6549],{"type":3086,"tag":3456,"props":6545,"children":6546},{"style":3630},[6547],{"type":3091,"value":6548},"      )",{"type":3086,"tag":3456,"props":6550,"children":6551},{"style":3621},[6552],{"type":3091,"value":3998},{"type":3086,"tag":3456,"props":6554,"children":6555},{"class":3458,"line":3824},[6556,6561,6565,6569,6573,6577,6581,6585,6589,6594,6599,6603,6607,6612,6616],{"type":3086,"tag":3456,"props":6557,"children":6558},{"style":3598},[6559],{"type":3091,"value":6560},"      return",{"type":3086,"tag":3456,"props":6562,"children":6563},{"style":3621},[6564],{"type":3091,"value":5375},{"type":3086,"tag":3456,"props":6566,"children":6567},{"style":3630},[6568],{"type":3091,"value":5979},{"type":3086,"tag":3456,"props":6570,"children":6571},{"style":3621},[6572],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":6574,"children":6575},{"style":3621},[6576],{"type":3091,"value":5375},{"type":3086,"tag":3456,"props":6578,"children":6579},{"style":3630},[6580],{"type":3091,"value":5697},{"type":3086,"tag":3456,"props":6582,"children":6583},{"style":3621},[6584],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":6586,"children":6587},{"style":3896},[6588],{"type":3091,"value":4256},{"type":3086,"tag":3456,"props":6590,"children":6591},{"style":3621},[6592],{"type":3091,"value":6593}," },",{"type":3086,"tag":3456,"props":6595,"children":6596},{"style":3630},[6597],{"type":3091,"value":6598}," status",{"type":3086,"tag":3456,"props":6600,"children":6601},{"style":3621},[6602],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":6604,"children":6605},{"style":3621},[6606],{"type":3091,"value":4164},{"type":3086,"tag":3456,"props":6608,"children":6609},{"style":3477},[6610],{"type":3091,"value":6611},"disabled_or_invalid_ttl",{"type":3086,"tag":3456,"props":6613,"children":6614},{"style":3621},[6615],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":6617,"children":6618},{"style":3621},[6619],{"type":3091,"value":6000},{"type":3086,"tag":3456,"props":6621,"children":6622},{"class":3458,"line":3838},[6623],{"type":3086,"tag":3456,"props":6624,"children":6625},{"style":3621},[6626],{"type":3091,"value":4766},{"type":3086,"tag":3456,"props":6628,"children":6629},{"class":3458,"line":3866},[6630,6634,6639,6643,6647,6651,6656],{"type":3086,"tag":3456,"props":6631,"children":6632},{"style":4643},[6633],{"type":3091,"value":5559},{"type":3086,"tag":3456,"props":6635,"children":6636},{"style":3615},[6637],{"type":3091,"value":6638}," ipTTLms",{"type":3086,"tag":3456,"props":6640,"children":6641},{"style":3621},[6642],{"type":3091,"value":5569},{"type":3086,"tag":3456,"props":6644,"children":6645},{"style":3615},[6646],{"type":3091,"value":6428},{"type":3086,"tag":3456,"props":6648,"children":6649},{"style":3621},[6650],{"type":3091,"value":4354},{"type":3086,"tag":3456,"props":6652,"children":6653},{"style":3896},[6654],{"type":3091,"value":6655}," 1000",{"type":3086,"tag":3456,"props":6657,"children":6658},{"style":3621},[6659],{"type":3091,"value":3998},{"type":3086,"tag":3456,"props":6661,"children":6662},{"class":3458,"line":3874},[6663],{"type":3086,"tag":3456,"props":6664,"children":6665},{"emptyLinePlaceholder":1200},[6666],{"type":3091,"value":3494},{"type":3086,"tag":3456,"props":6668,"children":6669},{"class":3458,"line":3883},[6670,6674,6679,6683,6687,6691,6695,6699,6703,6707,6712,6716,6720],{"type":3086,"tag":3456,"props":6671,"children":6672},{"style":4643},[6673],{"type":3091,"value":5559},{"type":3086,"tag":3456,"props":6675,"children":6676},{"style":3615},[6677],{"type":3091,"value":6678}," ipKeys",{"type":3086,"tag":3456,"props":6680,"children":6681},{"style":3621},[6682],{"type":3091,"value":5569},{"type":3086,"tag":3456,"props":6684,"children":6685},{"style":3598},[6686],{"type":3091,"value":5639},{"type":3086,"tag":3456,"props":6688,"children":6689},{"style":3615},[6690],{"type":3091,"value":5564},{"type":3086,"tag":3456,"props":6692,"children":6693},{"style":3621},[6694],{"type":3091,"value":4585},{"type":3086,"tag":3456,"props":6696,"children":6697},{"style":3609},[6698],{"type":3091,"value":5652},{"type":3086,"tag":3456,"props":6700,"children":6701},{"style":3630},[6702],{"type":3091,"value":3618},{"type":3086,"tag":3456,"props":6704,"children":6705},{"style":3621},[6706],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":6708,"children":6709},{"style":3477},[6710],{"type":3091,"value":6711},"ip:",{"type":3086,"tag":3456,"props":6713,"children":6714},{"style":3621},[6715],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":6717,"children":6718},{"style":3630},[6719],{"type":3091,"value":3993},{"type":3086,"tag":3456,"props":6721,"children":6722},{"style":3621},[6723],{"type":3091,"value":3998},{"type":3086,"tag":3456,"props":6725,"children":6726},{"class":3458,"line":3911},[6727,6731,6736,6740,6745,6749,6754,6758],{"type":3086,"tag":3456,"props":6728,"children":6729},{"style":4643},[6730],{"type":3091,"value":5559},{"type":3086,"tag":3456,"props":6732,"children":6733},{"style":3615},[6734],{"type":3091,"value":6735}," currentTime",{"type":3086,"tag":3456,"props":6737,"children":6738},{"style":3621},[6739],{"type":3091,"value":5569},{"type":3086,"tag":3456,"props":6741,"children":6742},{"style":3615},[6743],{"type":3091,"value":6744}," Date",{"type":3086,"tag":3456,"props":6746,"children":6747},{"style":3621},[6748],{"type":3091,"value":4585},{"type":3086,"tag":3456,"props":6750,"children":6751},{"style":3609},[6752],{"type":3091,"value":6753},"now",{"type":3086,"tag":3456,"props":6755,"children":6756},{"style":3630},[6757],{"type":3091,"value":5547},{"type":3086,"tag":3456,"props":6759,"children":6760},{"style":3621},[6761],{"type":3091,"value":3998},{"type":3086,"tag":3456,"props":6763,"children":6764},{"class":3458,"line":3928},[6765,6769,6773,6777,6781],{"type":3086,"tag":3456,"props":6766,"children":6767},{"style":4643},[6768],{"type":3091,"value":5692},{"type":3086,"tag":3456,"props":6770,"children":6771},{"style":3615},[6772],{"type":3091,"value":5697},{"type":3086,"tag":3456,"props":6774,"children":6775},{"style":3621},[6776],{"type":3091,"value":5569},{"type":3086,"tag":3456,"props":6778,"children":6779},{"style":3896},[6780],{"type":3091,"value":4256},{"type":3086,"tag":3456,"props":6782,"children":6783},{"style":3621},[6784],{"type":3091,"value":3998},{"type":3086,"tag":3456,"props":6786,"children":6787},{"class":3458,"line":3937},[6788],{"type":3086,"tag":3456,"props":6789,"children":6790},{"emptyLinePlaceholder":1200},[6791],{"type":3091,"value":3494},{"type":3086,"tag":3456,"props":6793,"children":6794},{"class":3458,"line":3965},[6795,6799,6803,6807,6811,6815,6819,6823],{"type":3086,"tag":3456,"props":6796,"children":6797},{"style":3598},[6798],{"type":3091,"value":5717},{"type":3086,"tag":3456,"props":6800,"children":6801},{"style":3630},[6802],{"type":3091,"value":5722},{"type":3086,"tag":3456,"props":6804,"children":6805},{"style":4643},[6806],{"type":3091,"value":5727},{"type":3086,"tag":3456,"props":6808,"children":6809},{"style":3615},[6810],{"type":3091,"value":5732},{"type":3086,"tag":3456,"props":6812,"children":6813},{"style":3621},[6814],{"type":3091,"value":5737},{"type":3086,"tag":3456,"props":6816,"children":6817},{"style":3615},[6818],{"type":3091,"value":6678},{"type":3086,"tag":3456,"props":6820,"children":6821},{"style":3630},[6822],{"type":3091,"value":5746},{"type":3086,"tag":3456,"props":6824,"children":6825},{"style":3621},[6826],{"type":3091,"value":3624},{"type":3086,"tag":3456,"props":6828,"children":6829},{"class":3458,"line":3973},[6830,6834,6839,6843,6847,6852,6856,6860,6864,6868,6872,6876,6881,6885,6890,6895],{"type":3086,"tag":3456,"props":6831,"children":6832},{"style":4643},[6833],{"type":3091,"value":5758},{"type":3086,"tag":3456,"props":6835,"children":6836},{"style":3615},[6837],{"type":3091,"value":6838}," entry",{"type":3086,"tag":3456,"props":6840,"children":6841},{"style":3621},[6842],{"type":3091,"value":5569},{"type":3086,"tag":3456,"props":6844,"children":6845},{"style":3630},[6846],{"type":3091,"value":5722},{"type":3086,"tag":3456,"props":6848,"children":6849},{"style":3598},[6850],{"type":3091,"value":6851},"await",{"type":3086,"tag":3456,"props":6853,"children":6854},{"style":3615},[6855],{"type":3091,"value":5564},{"type":3086,"tag":3456,"props":6857,"children":6858},{"style":3621},[6859],{"type":3091,"value":4585},{"type":3086,"tag":3456,"props":6861,"children":6862},{"style":3609},[6863],{"type":3091,"value":5784},{"type":3086,"tag":3456,"props":6865,"children":6866},{"style":3630},[6867],{"type":3091,"value":3618},{"type":3086,"tag":3456,"props":6869,"children":6870},{"style":3615},[6871],{"type":3091,"value":5793},{"type":3086,"tag":3456,"props":6873,"children":6874},{"style":3630},[6875],{"type":3091,"value":5832},{"type":3086,"tag":3456,"props":6877,"children":6878},{"style":3598},[6879],{"type":3091,"value":6880},"as",{"type":3086,"tag":3456,"props":6882,"children":6883},{"style":3471},[6884],{"type":3091,"value":6120},{"type":3086,"tag":3456,"props":6886,"children":6887},{"style":3621},[6888],{"type":3091,"value":6889}," |",{"type":3086,"tag":3456,"props":6891,"children":6892},{"style":3471},[6893],{"type":3091,"value":6894}," null",{"type":3086,"tag":3456,"props":6896,"children":6897},{"style":3621},[6898],{"type":3091,"value":3998},{"type":3086,"tag":3456,"props":6900,"children":6901},{"class":3458,"line":3982},[6902],{"type":3086,"tag":3456,"props":6903,"children":6904},{"emptyLinePlaceholder":1200},[6905],{"type":3091,"value":3494},{"type":3086,"tag":3456,"props":6907,"children":6909},{"class":3458,"line":6908},31,[6910],{"type":3086,"tag":3456,"props":6911,"children":6912},{"style":3462},[6913],{"type":3091,"value":6914},"      \u002F\u002F Check if entry exists and has a numeric 'time' property\n",{"type":3086,"tag":3456,"props":6916,"children":6918},{"class":3458,"line":6917},32,[6919,6923,6927,6932,6937,6942,6946,6950,6954,6959,6963,6968,6972,6976],{"type":3086,"tag":3456,"props":6920,"children":6921},{"style":3598},[6922],{"type":3091,"value":5809},{"type":3086,"tag":3456,"props":6924,"children":6925},{"style":3630},[6926],{"type":3091,"value":5722},{"type":3086,"tag":3456,"props":6928,"children":6929},{"style":3615},[6930],{"type":3091,"value":6931},"entry",{"type":3086,"tag":3456,"props":6933,"children":6934},{"style":3621},[6935],{"type":3091,"value":6936}," &&",{"type":3086,"tag":3456,"props":6938,"children":6939},{"style":3621},[6940],{"type":3091,"value":6941}," typeof",{"type":3086,"tag":3456,"props":6943,"children":6944},{"style":3615},[6945],{"type":3091,"value":6838},{"type":3086,"tag":3456,"props":6947,"children":6948},{"style":3621},[6949],{"type":3091,"value":4585},{"type":3086,"tag":3456,"props":6951,"children":6952},{"style":3615},[6953],{"type":3091,"value":6071},{"type":3086,"tag":3456,"props":6955,"children":6956},{"style":3621},[6957],{"type":3091,"value":6958}," ===",{"type":3086,"tag":3456,"props":6960,"children":6961},{"style":3621},[6962],{"type":3091,"value":4164},{"type":3086,"tag":3456,"props":6964,"children":6965},{"style":3477},[6966],{"type":3091,"value":6967},"number",{"type":3086,"tag":3456,"props":6969,"children":6970},{"style":3621},[6971],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":6973,"children":6974},{"style":3630},[6975],{"type":3091,"value":5746},{"type":3086,"tag":3456,"props":6977,"children":6978},{"style":3621},[6979],{"type":3091,"value":3624},{"type":3086,"tag":3456,"props":6981,"children":6983},{"class":3458,"line":6982},33,[6984,6989,6993,6998,7003,7007,7011,7015,7020,7024,7028],{"type":3086,"tag":3456,"props":6985,"children":6986},{"style":3598},[6987],{"type":3091,"value":6988},"        if",{"type":3086,"tag":3456,"props":6990,"children":6991},{"style":3630},[6992],{"type":3091,"value":5722},{"type":3086,"tag":3456,"props":6994,"children":6995},{"style":3615},[6996],{"type":3091,"value":6997},"currentTime",{"type":3086,"tag":3456,"props":6999,"children":7000},{"style":3621},[7001],{"type":3091,"value":7002}," -",{"type":3086,"tag":3456,"props":7004,"children":7005},{"style":3615},[7006],{"type":3091,"value":6838},{"type":3086,"tag":3456,"props":7008,"children":7009},{"style":3621},[7010],{"type":3091,"value":4585},{"type":3086,"tag":3456,"props":7012,"children":7013},{"style":3615},[7014],{"type":3091,"value":6071},{"type":3086,"tag":3456,"props":7016,"children":7017},{"style":3621},[7018],{"type":3091,"value":7019}," >",{"type":3086,"tag":3456,"props":7021,"children":7022},{"style":3615},[7023],{"type":3091,"value":6638},{"type":3086,"tag":3456,"props":7025,"children":7026},{"style":3630},[7027],{"type":3091,"value":5746},{"type":3086,"tag":3456,"props":7029,"children":7030},{"style":3621},[7031],{"type":3091,"value":3624},{"type":3086,"tag":3456,"props":7033,"children":7035},{"class":3458,"line":7034},34,[7036,7041,7045,7049,7053,7057,7061,7065],{"type":3086,"tag":3456,"props":7037,"children":7038},{"style":3598},[7039],{"type":3091,"value":7040},"          await",{"type":3086,"tag":3456,"props":7042,"children":7043},{"style":3615},[7044],{"type":3091,"value":5564},{"type":3086,"tag":3456,"props":7046,"children":7047},{"style":3621},[7048],{"type":3091,"value":4585},{"type":3086,"tag":3456,"props":7050,"children":7051},{"style":3609},[7052],{"type":3091,"value":5857},{"type":3086,"tag":3456,"props":7054,"children":7055},{"style":3630},[7056],{"type":3091,"value":3618},{"type":3086,"tag":3456,"props":7058,"children":7059},{"style":3615},[7060],{"type":3091,"value":5793},{"type":3086,"tag":3456,"props":7062,"children":7063},{"style":3630},[7064],{"type":3091,"value":3993},{"type":3086,"tag":3456,"props":7066,"children":7067},{"style":3621},[7068],{"type":3091,"value":3998},{"type":3086,"tag":3456,"props":7070,"children":7072},{"class":3458,"line":7071},35,[7073,7078],{"type":3086,"tag":3456,"props":7074,"children":7075},{"style":3615},[7076],{"type":3091,"value":7077},"          cleanedCount",{"type":3086,"tag":3456,"props":7079,"children":7080},{"style":3621},[7081],{"type":3091,"value":5886},{"type":3086,"tag":3456,"props":7083,"children":7085},{"class":3458,"line":7084},36,[7086],{"type":3086,"tag":3456,"props":7087,"children":7088},{"style":3621},[7089],{"type":3091,"value":7090},"        }\n",{"type":3086,"tag":3456,"props":7092,"children":7094},{"class":3458,"line":7093},37,[7095,7100,7105],{"type":3086,"tag":3456,"props":7096,"children":7097},{"style":3621},[7098],{"type":3091,"value":7099},"      }",{"type":3086,"tag":3456,"props":7101,"children":7102},{"style":3598},[7103],{"type":3091,"value":7104}," else",{"type":3086,"tag":3456,"props":7106,"children":7107},{"style":3621},[7108],{"type":3091,"value":3683},{"type":3086,"tag":3456,"props":7110,"children":7112},{"class":3458,"line":7111},38,[7113],{"type":3086,"tag":3456,"props":7114,"children":7115},{"style":3462},[7116],{"type":3091,"value":7117},"        \u002F\u002F Clean up entries that are null, not an object, or missing a numeric 'time'\n",{"type":3086,"tag":3456,"props":7119,"children":7121},{"class":3458,"line":7120},39,[7122,7126,7130,7134,7138,7142,7146,7150],{"type":3086,"tag":3456,"props":7123,"children":7124},{"style":3598},[7125],{"type":3091,"value":5844},{"type":3086,"tag":3456,"props":7127,"children":7128},{"style":3615},[7129],{"type":3091,"value":5564},{"type":3086,"tag":3456,"props":7131,"children":7132},{"style":3621},[7133],{"type":3091,"value":4585},{"type":3086,"tag":3456,"props":7135,"children":7136},{"style":3609},[7137],{"type":3091,"value":5857},{"type":3086,"tag":3456,"props":7139,"children":7140},{"style":3630},[7141],{"type":3091,"value":3618},{"type":3086,"tag":3456,"props":7143,"children":7144},{"style":3615},[7145],{"type":3091,"value":5793},{"type":3086,"tag":3456,"props":7147,"children":7148},{"style":3630},[7149],{"type":3091,"value":3993},{"type":3086,"tag":3456,"props":7151,"children":7152},{"style":3621},[7153],{"type":3091,"value":3998},{"type":3086,"tag":3456,"props":7155,"children":7157},{"class":3458,"line":7156},40,[7158,7162],{"type":3086,"tag":3456,"props":7159,"children":7160},{"style":3615},[7161],{"type":3091,"value":5881},{"type":3086,"tag":3456,"props":7163,"children":7164},{"style":3621},[7165],{"type":3091,"value":5886},{"type":3086,"tag":3456,"props":7167,"children":7169},{"class":3458,"line":7168},41,[7170],{"type":3086,"tag":3456,"props":7171,"children":7172},{"style":3621},[7173],{"type":3091,"value":4758},{"type":3086,"tag":3456,"props":7175,"children":7177},{"class":3458,"line":7176},42,[7178],{"type":3086,"tag":3456,"props":7179,"children":7180},{"style":3621},[7181],{"type":3091,"value":4766},{"type":3086,"tag":3456,"props":7183,"children":7185},{"class":3458,"line":7184},43,[7186],{"type":3086,"tag":3456,"props":7187,"children":7188},{"emptyLinePlaceholder":1200},[7189],{"type":3091,"value":3494},{"type":3086,"tag":3456,"props":7191,"children":7193},{"class":3458,"line":7192},44,[7194,7198,7202,7206],{"type":3086,"tag":3456,"props":7195,"children":7196},{"style":3615},[7197],{"type":3091,"value":5908},{"type":3086,"tag":3456,"props":7199,"children":7200},{"style":3621},[7201],{"type":3091,"value":4585},{"type":3086,"tag":3456,"props":7203,"children":7204},{"style":3609},[7205],{"type":3091,"value":5917},{"type":3086,"tag":3456,"props":7207,"children":7208},{"style":3630},[7209],{"type":3091,"value":6524},{"type":3086,"tag":3456,"props":7211,"children":7213},{"class":3458,"line":7212},45,[7214,7219,7223,7227,7231,7235,7240],{"type":3086,"tag":3456,"props":7215,"children":7216},{"style":3621},[7217],{"type":3091,"value":7218},"      `",{"type":3086,"tag":3456,"props":7220,"children":7221},{"style":3477},[7222],{"type":3091,"value":5931},{"type":3086,"tag":3456,"props":7224,"children":7225},{"style":3621},[7226],{"type":3091,"value":5936},{"type":3086,"tag":3456,"props":7228,"children":7229},{"style":3615},[7230],{"type":3091,"value":5941},{"type":3086,"tag":3456,"props":7232,"children":7233},{"style":3621},[7234],{"type":3091,"value":3988},{"type":3086,"tag":3456,"props":7236,"children":7237},{"style":3477},[7238],{"type":3091,"value":7239}," old\u002Fmalformed IP data entries.",{"type":3086,"tag":3456,"props":7241,"children":7242},{"style":3621},[7243],{"type":3091,"value":7244},"`\n",{"type":3086,"tag":3456,"props":7246,"children":7248},{"class":3458,"line":7247},46,[7249,7254],{"type":3086,"tag":3456,"props":7250,"children":7251},{"style":3630},[7252],{"type":3091,"value":7253},"    )",{"type":3086,"tag":3456,"props":7255,"children":7256},{"style":3621},[7257],{"type":3091,"value":3998},{"type":3086,"tag":3456,"props":7259,"children":7261},{"class":3458,"line":7260},47,[7262,7266,7270,7274,7278,7282,7286,7290],{"type":3086,"tag":3456,"props":7263,"children":7264},{"style":3598},[7265],{"type":3091,"value":5970},{"type":3086,"tag":3456,"props":7267,"children":7268},{"style":3621},[7269],{"type":3091,"value":5375},{"type":3086,"tag":3456,"props":7271,"children":7272},{"style":3630},[7273],{"type":3091,"value":5979},{"type":3086,"tag":3456,"props":7275,"children":7276},{"style":3621},[7277],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":7279,"children":7280},{"style":3621},[7281],{"type":3091,"value":5375},{"type":3086,"tag":3456,"props":7283,"children":7284},{"style":3615},[7285],{"type":3091,"value":5697},{"type":3086,"tag":3456,"props":7287,"children":7288},{"style":3621},[7289],{"type":3091,"value":5385},{"type":3086,"tag":3456,"props":7291,"children":7292},{"style":3621},[7293],{"type":3091,"value":6000},{"type":3086,"tag":3456,"props":7295,"children":7297},{"class":3458,"line":7296},48,[7298],{"type":3086,"tag":3456,"props":7299,"children":7300},{"style":3621},[7301],{"type":3091,"value":3979},{"type":3086,"tag":3456,"props":7303,"children":7305},{"class":3458,"line":7304},49,[7306,7310,7314],{"type":3086,"tag":3456,"props":7307,"children":7308},{"style":3621},[7309],{"type":3091,"value":3988},{"type":3086,"tag":3456,"props":7311,"children":7312},{"style":3615},[7313],{"type":3091,"value":3993},{"type":3086,"tag":3456,"props":7315,"children":7316},{"style":3621},[7317],{"type":3091,"value":3998},{"type":3086,"tag":3093,"props":7319,"children":7320},{},[7321,7323,7328,7330,7335,7337,7342,7343,7349,7351,7356],{"type":3091,"value":7322},"Configure ",{"type":3086,"tag":3243,"props":7324,"children":7326},{"className":7325},[],[7327],{"type":3091,"value":5046},{"type":3091,"value":7329}," under ",{"type":3086,"tag":3243,"props":7331,"children":7333},{"className":7332},[],[7334],{"type":3091,"value":4014},{"type":3091,"value":7336}," if you want a TTL other than the default. Setting ",{"type":3086,"tag":3243,"props":7338,"children":7340},{"className":7339},[],[7341],{"type":3091,"value":5046},{"type":3091,"value":4599},{"type":3086,"tag":3243,"props":7344,"children":7346},{"className":7345},[],[7347],{"type":3091,"value":7348},"0",{"type":3091,"value":7350}," (or any non-positive value) makes the bundled ",{"type":3086,"tag":3243,"props":7352,"children":7354},{"className":7353},[],[7355],{"type":3091,"value":3348},{"type":3091,"value":7357}," task skip IP cleanup (it logs and exits).",{"type":3086,"tag":3093,"props":7359,"children":7360},{},[7361,7363,7369,7371,7376,7378,7383],{"type":3091,"value":7362},"If you add your own task file with the same ",{"type":3086,"tag":3243,"props":7364,"children":7366},{"className":7365},[],[7367],{"type":3091,"value":7368},"meta.name",{"type":3091,"value":7370}," as a bundled task (",{"type":3086,"tag":3243,"props":7372,"children":7374},{"className":7373},[],[7375],{"type":3091,"value":3340},{"type":3091,"value":7377}," or ",{"type":3086,"tag":3243,"props":7379,"children":7381},{"className":7380},[],[7382],{"type":3091,"value":3348},{"type":3091,"value":7384},"), Nitro may prefer your project file over the module—avoid duplicate names unless you intend to override.",{"type":3086,"tag":3169,"props":7386,"children":7388},{"id":7387},"production-deployment",[7389],{"type":3091,"value":7390},"Production Deployment",{"type":3086,"tag":3432,"props":7392,"children":7394},{"id":7393},"use-redis-as-the-storage-driver",[7395],{"type":3091,"value":7396},"Use Redis as the storage driver",{"type":3086,"tag":3093,"props":7398,"children":7399},{},[7400,7402,7407,7409,7414,7415,7421],{"type":3091,"value":7401},"For production deployments — especially with multiple server instances or significant traffic — ",{"type":3086,"tag":3181,"props":7403,"children":7404},{},[7405],{"type":3091,"value":7406},"Redis is the recommended storage driver",{"type":3091,"value":7408},". The ",{"type":3086,"tag":3243,"props":7410,"children":7412},{"className":7411},[],[7413],{"type":3091,"value":4745},{"type":3091,"value":3342},{"type":3086,"tag":3243,"props":7416,"children":7418},{"className":7417},[],[7419],{"type":3091,"value":7420},"fs",{"type":3091,"value":7422}," drivers have important limitations:",{"type":3086,"tag":7424,"props":7425,"children":7426},"table",{},[7427,7461],{"type":3086,"tag":7428,"props":7429,"children":7430},"thead",{},[7431],{"type":3086,"tag":7432,"props":7433,"children":7434},"tr",{},[7435,7441,7456],{"type":3086,"tag":7436,"props":7437,"children":7438},"th",{},[7439],{"type":3091,"value":7440},"Area",{"type":3086,"tag":7436,"props":7442,"children":7443},{},[7444,7449,7451],{"type":3086,"tag":3243,"props":7445,"children":7447},{"className":7446},[],[7448],{"type":3091,"value":4745},{"type":3091,"value":7450}," \u002F ",{"type":3086,"tag":3243,"props":7452,"children":7454},{"className":7453},[],[7455],{"type":3091,"value":7420},{"type":3086,"tag":7436,"props":7457,"children":7458},{},[7459],{"type":3091,"value":7460},"Redis",{"type":3086,"tag":7462,"props":7463,"children":7464},"tbody",{},[7465,7487,7508],{"type":3086,"tag":7432,"props":7466,"children":7467},{},[7468,7477,7482],{"type":3086,"tag":7469,"props":7470,"children":7471},"td",{},[7472],{"type":3086,"tag":3181,"props":7473,"children":7474},{},[7475],{"type":3091,"value":7476},"Multi-instance",{"type":3086,"tag":7469,"props":7478,"children":7479},{},[7480],{"type":3091,"value":7481},"Each process has its own isolated state. Rate limits reset per instance, allowing bypass.",{"type":3086,"tag":7469,"props":7483,"children":7484},{},[7485],{"type":3091,"value":7486},"Shared state across all instances.",{"type":3086,"tag":7432,"props":7488,"children":7489},{},[7490,7498,7503],{"type":3086,"tag":7469,"props":7491,"children":7492},{},[7493],{"type":3086,"tag":3181,"props":7494,"children":7495},{},[7496],{"type":3091,"value":7497},"Atomic operations",{"type":3086,"tag":7469,"props":7499,"children":7500},{},[7501],{"type":3091,"value":7502},"Read → increment → write is not atomic. Concurrent requests can both read the same count and exceed the limit simultaneously.",{"type":3086,"tag":7469,"props":7504,"children":7505},{},[7506],{"type":3091,"value":7507},"Single-threaded — reads and writes are naturally atomic. No race conditions.",{"type":3086,"tag":7432,"props":7509,"children":7510},{},[7511,7519,7545],{"type":3086,"tag":7469,"props":7512,"children":7513},{},[7514],{"type":3086,"tag":3181,"props":7515,"children":7516},{},[7517],{"type":3091,"value":7518},"Cleanup",{"type":3086,"tag":7469,"props":7520,"children":7521},{},[7522,7524,7529,7530,7535,7537,7543],{"type":3091,"value":7523},"Cleanup tasks (",{"type":3086,"tag":3243,"props":7525,"children":7527},{"className":7526},[],[7528],{"type":3091,"value":3340},{"type":3091,"value":3408},{"type":3086,"tag":3243,"props":7531,"children":7533},{"className":7532},[],[7534],{"type":3091,"value":3348},{"type":3091,"value":7536},") must scan all keys with ",{"type":3086,"tag":3243,"props":7538,"children":7540},{"className":7539},[],[7541],{"type":3091,"value":7542},"getKeys()",{"type":3091,"value":7544},". At scale this blocks the event loop.",{"type":3086,"tag":7469,"props":7546,"children":7547},{},[7548,7550,7556,7557,7563],{"type":3091,"value":7549},"Use ",{"type":3086,"tag":3243,"props":7551,"children":7553},{"className":7552},[],[7554],{"type":3091,"value":7555},"EXPIRE",{"type":3091,"value":7377},{"type":3086,"tag":3243,"props":7558,"children":7560},{"className":7559},[],[7561],{"type":3091,"value":7562},"TTL",{"type":3091,"value":7564}," natively — expired keys are reclaimed automatically without scanning.",{"type":3086,"tag":3093,"props":7566,"children":7567},{},[7568,7570,7575,7577,7582],{"type":3091,"value":7569},"To use Redis, configure the ",{"type":3086,"tag":3243,"props":7571,"children":7573},{"className":7572},[],[7574],{"type":3091,"value":4614},{"type":3091,"value":7576}," storage with the ",{"type":3086,"tag":3243,"props":7578,"children":7580},{"className":7579},[],[7581],{"type":3091,"value":4896},{"type":3091,"value":7583}," driver:",{"type":3086,"tag":3446,"props":7585,"children":7586},{"className":4619,"code":4788,"language":4621,"meta":3030,"style":3030},[7587],{"type":3086,"tag":3243,"props":7588,"children":7589},{"__ignoreMap":3030},[7590,7597,7620,7643,7666,7701,7736,7759,7766,7773,7780],{"type":3086,"tag":3456,"props":7591,"children":7592},{"class":3458,"line":3058},[7593],{"type":3086,"tag":3456,"props":7594,"children":7595},{"style":3621},[7596],{"type":3091,"value":3624},{"type":3086,"tag":3456,"props":7598,"children":7599},{"class":3458,"line":3054},[7600,7604,7608,7612,7616],{"type":3086,"tag":3456,"props":7601,"children":7602},{"style":3621},[7603],{"type":3091,"value":4640},{"type":3086,"tag":3456,"props":7605,"children":7606},{"style":4643},[7607],{"type":3091,"value":4646},{"type":3086,"tag":3456,"props":7609,"children":7610},{"style":3621},[7611],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":7613,"children":7614},{"style":3621},[7615],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":7617,"children":7618},{"style":3621},[7619],{"type":3091,"value":3683},{"type":3086,"tag":3456,"props":7621,"children":7622},{"class":3458,"line":3488},[7623,7627,7631,7635,7639],{"type":3086,"tag":3456,"props":7624,"children":7625},{"style":3621},[7626],{"type":3091,"value":4666},{"type":3086,"tag":3456,"props":7628,"children":7629},{"style":3471},[7630],{"type":3091,"value":4671},{"type":3086,"tag":3456,"props":7632,"children":7633},{"style":3621},[7634],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":7636,"children":7637},{"style":3621},[7638],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":7640,"children":7641},{"style":3621},[7642],{"type":3091,"value":3683},{"type":3086,"tag":3456,"props":7644,"children":7645},{"class":3458,"line":3497},[7646,7650,7654,7658,7662],{"type":3086,"tag":3456,"props":7647,"children":7648},{"style":3621},[7649],{"type":3091,"value":4691},{"type":3086,"tag":3456,"props":7651,"children":7652},{"style":3896},[7653],{"type":3091,"value":4614},{"type":3086,"tag":3456,"props":7655,"children":7656},{"style":3621},[7657],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":7659,"children":7660},{"style":3621},[7661],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":7663,"children":7664},{"style":3621},[7665],{"type":3091,"value":3683},{"type":3086,"tag":3456,"props":7667,"children":7668},{"class":3458,"line":3050},[7669,7673,7677,7681,7685,7689,7693,7697],{"type":3086,"tag":3456,"props":7670,"children":7671},{"style":3621},[7672],{"type":3091,"value":4723},{"type":3086,"tag":3456,"props":7674,"children":7675},{"style":3630},[7676],{"type":3091,"value":4728},{"type":3086,"tag":3456,"props":7678,"children":7679},{"style":3621},[7680],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":7682,"children":7683},{"style":3621},[7684],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":7686,"children":7687},{"style":3621},[7688],{"type":3091,"value":4164},{"type":3086,"tag":3456,"props":7690,"children":7691},{"style":3477},[7692],{"type":3091,"value":4896},{"type":3086,"tag":3456,"props":7694,"children":7695},{"style":3621},[7696],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":7698,"children":7699},{"style":3621},[7700],{"type":3091,"value":3666},{"type":3086,"tag":3456,"props":7702,"children":7703},{"class":3458,"line":3522},[7704,7708,7712,7716,7720,7724,7728,7732],{"type":3086,"tag":3456,"props":7705,"children":7706},{"style":3621},[7707],{"type":3091,"value":4723},{"type":3086,"tag":3456,"props":7709,"children":7710},{"style":3630},[7711],{"type":3091,"value":4916},{"type":3086,"tag":3456,"props":7713,"children":7714},{"style":3621},[7715],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":7717,"children":7718},{"style":3621},[7719],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":7721,"children":7722},{"style":3621},[7723],{"type":3091,"value":4164},{"type":3086,"tag":3456,"props":7725,"children":7726},{"style":3477},[7727],{"type":3091,"value":4933},{"type":3086,"tag":3456,"props":7729,"children":7730},{"style":3621},[7731],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":7733,"children":7734},{"style":3621},[7735],{"type":3091,"value":3666},{"type":3086,"tag":3456,"props":7737,"children":7738},{"class":3458,"line":3530},[7739,7743,7747,7751,7755],{"type":3086,"tag":3456,"props":7740,"children":7741},{"style":3621},[7742],{"type":3091,"value":4723},{"type":3086,"tag":3456,"props":7744,"children":7745},{"style":3630},[7746],{"type":3091,"value":4953},{"type":3086,"tag":3456,"props":7748,"children":7749},{"style":3621},[7750],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":7752,"children":7753},{"style":3621},[7754],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":7756,"children":7757},{"style":3896},[7758],{"type":3091,"value":4966},{"type":3086,"tag":3456,"props":7760,"children":7761},{"class":3458,"line":3075},[7762],{"type":3086,"tag":3456,"props":7763,"children":7764},{"style":3621},[7765],{"type":3091,"value":4758},{"type":3086,"tag":3456,"props":7767,"children":7768},{"class":3458,"line":3726},[7769],{"type":3086,"tag":3456,"props":7770,"children":7771},{"style":3621},[7772],{"type":3091,"value":4766},{"type":3086,"tag":3456,"props":7774,"children":7775},{"class":3458,"line":3735},[7776],{"type":3086,"tag":3456,"props":7777,"children":7778},{"style":3621},[7779],{"type":3091,"value":4429},{"type":3086,"tag":3456,"props":7781,"children":7782},{"class":3458,"line":3744},[7783],{"type":3086,"tag":3456,"props":7784,"children":7785},{"style":3621},[7786],{"type":3091,"value":4437},{"type":3086,"tag":3093,"props":7788,"children":7789},{},[7790,7792,7799],{"type":3091,"value":7791},"See the ",{"type":3086,"tag":3097,"props":7793,"children":7796},{"href":7794,"rel":7795},"https:\u002F\u002Funstorage.unjs.io\u002Fdrivers\u002Fredis",[3101],[7797],{"type":3091,"value":7798},"unstorage Redis driver docs",{"type":3091,"value":7800}," for all available options.",{"type":3086,"tag":3432,"props":7802,"children":7804},{"id":7803},"when-memory-fs-is-acceptable",[7805,7807,7812,7813,7818],{"type":3091,"value":7806},"When ",{"type":3086,"tag":3243,"props":7808,"children":7810},{"className":7809},[],[7811],{"type":3091,"value":4745},{"type":3091,"value":7450},{"type":3086,"tag":3243,"props":7814,"children":7816},{"className":7815},[],[7817],{"type":3091,"value":7420},{"type":3091,"value":7819}," is acceptable",{"type":3086,"tag":3093,"props":7821,"children":7822},{},[7823,7824,7829,7830,7835],{"type":3091,"value":4456},{"type":3086,"tag":3243,"props":7825,"children":7827},{"className":7826},[],[7828],{"type":3091,"value":4745},{"type":3091,"value":3342},{"type":3086,"tag":3243,"props":7831,"children":7833},{"className":7832},[],[7834],{"type":3091,"value":7420},{"type":3091,"value":7836}," drivers are fine for:",{"type":3086,"tag":3143,"props":7838,"children":7839},{},[7840,7845,7850],{"type":3086,"tag":3147,"props":7841,"children":7842},{},[7843],{"type":3091,"value":7844},"Single-instance deployments",{"type":3086,"tag":3147,"props":7846,"children":7847},{},[7848],{"type":3091,"value":7849},"Development environments",{"type":3086,"tag":3147,"props":7851,"children":7852},{},[7853],{"type":3091,"value":7854},"Low-traffic applications where occasional race conditions are acceptable",{"type":3086,"tag":3093,"props":7856,"children":7857},{},[7858],{"type":3091,"value":7859},"For everything else, use Redis.",{"type":3086,"tag":3169,"props":7861,"children":7863},{"id":7862},"fail2ban-integration",[7864],{"type":3091,"value":7865},"Fail2ban Integration",{"type":3086,"tag":3093,"props":7867,"children":7868},{},[7869,7871,7876,7878,7884],{"type":3091,"value":7870},"When a user exceeds the rate limit and gets banned, ",{"type":3086,"tag":3243,"props":7872,"children":7874},{"className":7873},[],[7875],{"type":3091,"value":3027},{"type":3091,"value":7877}," can write ban events to the log file in a ",{"type":3086,"tag":3243,"props":7879,"children":7881},{"className":7880},[],[7882],{"type":3091,"value":7883},"fail2ban",{"type":3091,"value":7885},"-compatible format. You can then configure fail2ban to watch these logs and automatically block the IP at the firewall level.",{"type":3086,"tag":3432,"props":7887,"children":7889},{"id":7888},"setup",[7890],{"type":3091,"value":7891},"Setup",{"type":3086,"tag":3093,"props":7893,"children":7894},{},[7895,7897,7903,7904,7909,7911,7917],{"type":3091,"value":7896},"Enable fail2ban logging by setting ",{"type":3086,"tag":3243,"props":7898,"children":7900},{"className":7899},[],[7901],{"type":3091,"value":7902},"log.fail2ban",{"type":3091,"value":4599},{"type":3086,"tag":3243,"props":7905,"children":7907},{"className":7906},[],[7908],{"type":3091,"value":4494},{"type":3091,"value":7910}," and configuring the ",{"type":3086,"tag":3243,"props":7912,"children":7914},{"className":7913},[],[7915],{"type":3091,"value":7916},"log.path",{"type":3091,"value":3638},{"type":3086,"tag":3446,"props":7919,"children":7921},{"className":3586,"code":7920,"language":3588,"meta":3030,"style":3030},"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",[7922],{"type":3086,"tag":3243,"props":7923,"children":7924},{"__ignoreMap":3030},[7925,7948,7983,7998,8014,8048,8074,8099,8106,8113],{"type":3086,"tag":3456,"props":7926,"children":7927},{"class":3458,"line":3058},[7928,7932,7936,7940,7944],{"type":3086,"tag":3456,"props":7929,"children":7930},{"style":3598},[7931],{"type":3091,"value":3601},{"type":3086,"tag":3456,"props":7933,"children":7934},{"style":3598},[7935],{"type":3091,"value":3606},{"type":3086,"tag":3456,"props":7937,"children":7938},{"style":3609},[7939],{"type":3091,"value":3612},{"type":3086,"tag":3456,"props":7941,"children":7942},{"style":3615},[7943],{"type":3091,"value":3618},{"type":3086,"tag":3456,"props":7945,"children":7946},{"style":3621},[7947],{"type":3091,"value":3624},{"type":3086,"tag":3456,"props":7949,"children":7950},{"class":3458,"line":3054},[7951,7955,7959,7963,7967,7971,7975,7979],{"type":3086,"tag":3456,"props":7952,"children":7953},{"style":3630},[7954],{"type":3091,"value":3633},{"type":3086,"tag":3456,"props":7956,"children":7957},{"style":3621},[7958],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":7960,"children":7961},{"style":3615},[7962],{"type":3091,"value":3643},{"type":3086,"tag":3456,"props":7964,"children":7965},{"style":3621},[7966],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":7968,"children":7969},{"style":3477},[7970],{"type":3091,"value":3027},{"type":3086,"tag":3456,"props":7972,"children":7973},{"style":3621},[7974],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":7976,"children":7977},{"style":3615},[7978],{"type":3091,"value":3661},{"type":3086,"tag":3456,"props":7980,"children":7981},{"style":3621},[7982],{"type":3091,"value":3666},{"type":3086,"tag":3456,"props":7984,"children":7985},{"class":3458,"line":3488},[7986,7990,7994],{"type":3086,"tag":3456,"props":7987,"children":7988},{"style":3630},[7989],{"type":3091,"value":3674},{"type":3086,"tag":3456,"props":7991,"children":7992},{"style":3621},[7993],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":7995,"children":7996},{"style":3621},[7997],{"type":3091,"value":3683},{"type":3086,"tag":3456,"props":7999,"children":8000},{"class":3458,"line":3497},[8001,8006,8010],{"type":3086,"tag":3456,"props":8002,"children":8003},{"style":3630},[8004],{"type":3091,"value":8005},"    log",{"type":3086,"tag":3456,"props":8007,"children":8008},{"style":3621},[8009],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":8011,"children":8012},{"style":3621},[8013],{"type":3091,"value":3683},{"type":3086,"tag":3456,"props":8015,"children":8016},{"class":3458,"line":3050},[8017,8022,8026,8030,8035,8039,8043],{"type":3086,"tag":3456,"props":8018,"children":8019},{"style":3630},[8020],{"type":3091,"value":8021},"      path",{"type":3086,"tag":3456,"props":8023,"children":8024},{"style":3621},[8025],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":8027,"children":8028},{"style":3621},[8029],{"type":3091,"value":4164},{"type":3086,"tag":3456,"props":8031,"children":8032},{"style":3477},[8033],{"type":3091,"value":8034},"\u002Fvar\u002Flog\u002Fnuxt-api-shield",{"type":3086,"tag":3456,"props":8036,"children":8037},{"style":3621},[8038],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":8040,"children":8041},{"style":3621},[8042],{"type":3091,"value":3858},{"type":3086,"tag":3456,"props":8044,"children":8045},{"style":3462},[8046],{"type":3091,"value":8047}," \u002F\u002F required — must be set\n",{"type":3086,"tag":3456,"props":8049,"children":8050},{"class":3458,"line":3522},[8051,8056,8060,8065,8069],{"type":3086,"tag":3456,"props":8052,"children":8053},{"style":3630},[8054],{"type":3091,"value":8055},"      attempts",{"type":3086,"tag":3456,"props":8057,"children":8058},{"style":3621},[8059],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":8061,"children":8062},{"style":3896},[8063],{"type":3091,"value":8064}," 1",{"type":3086,"tag":3456,"props":8066,"children":8067},{"style":3621},[8068],{"type":3091,"value":3858},{"type":3086,"tag":3456,"props":8070,"children":8071},{"style":3462},[8072],{"type":3091,"value":8073},"                       \u002F\u002F optional — threshold for regular request logging\n",{"type":3086,"tag":3456,"props":8075,"children":8076},{"class":3458,"line":3530},[8077,8082,8086,8090,8094],{"type":3086,"tag":3456,"props":8078,"children":8079},{"style":3630},[8080],{"type":3091,"value":8081},"      fail2ban",{"type":3086,"tag":3456,"props":8083,"children":8084},{"style":3621},[8085],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":8087,"children":8088},{"style":3950},[8089],{"type":3091,"value":4143},{"type":3086,"tag":3456,"props":8091,"children":8092},{"style":3621},[8093],{"type":3091,"value":3858},{"type":3086,"tag":3456,"props":8095,"children":8096},{"style":3462},[8097],{"type":3091,"value":8098},"                     \u002F\u002F enable fail2ban format\n",{"type":3086,"tag":3456,"props":8100,"children":8101},{"class":3458,"line":3075},[8102],{"type":3086,"tag":3456,"props":8103,"children":8104},{"style":3621},[8105],{"type":3091,"value":3732},{"type":3086,"tag":3456,"props":8107,"children":8108},{"class":3458,"line":3726},[8109],{"type":3086,"tag":3456,"props":8110,"children":8111},{"style":3621},[8112],{"type":3091,"value":3979},{"type":3086,"tag":3456,"props":8114,"children":8115},{"class":3458,"line":3735},[8116,8120],{"type":3086,"tag":3456,"props":8117,"children":8118},{"style":3621},[8119],{"type":3091,"value":3988},{"type":3086,"tag":3456,"props":8121,"children":8122},{"style":3615},[8123],{"type":3091,"value":8124},")\n",{"type":3086,"tag":3093,"props":8126,"children":8127},{},[8128],{"type":3091,"value":8129},"When enabled, every ban event writes a line like:",{"type":3086,"tag":3446,"props":8131,"children":8135},{"className":8132,"code":8134,"language":3091},[8133],"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",[8136],{"type":3086,"tag":3243,"props":8137,"children":8138},{"__ignoreMap":3030},[8139],{"type":3091,"value":8134},{"type":3086,"tag":3432,"props":8141,"children":8143},{"id":8142},"fail2ban-filter-configuration",[8144],{"type":3091,"value":8145},"Fail2ban filter configuration",{"type":3086,"tag":3093,"props":8147,"children":8148},{},[8149,8151,8157],{"type":3091,"value":8150},"Create ",{"type":3086,"tag":3243,"props":8152,"children":8154},{"className":8153},[],[8155],{"type":3091,"value":8156},"\u002Fetc\u002Ffail2ban\u002Ffilter.d\u002Fnuxt-api-shield.conf",{"type":3091,"value":3638},{"type":3086,"tag":3446,"props":8159,"children":8163},{"className":8160,"code":8161,"language":8162,"meta":3030,"style":3030},"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",[8164],{"type":3086,"tag":3243,"props":8165,"children":8166},{"__ignoreMap":3030},[8167,8175],{"type":3086,"tag":3456,"props":8168,"children":8169},{"class":3458,"line":3058},[8170],{"type":3086,"tag":3456,"props":8171,"children":8172},{"style":3621},[8173],{"type":3091,"value":8174},"[Definition]\n",{"type":3086,"tag":3456,"props":8176,"children":8177},{"class":3458,"line":3054},[8178,8183,8187],{"type":3086,"tag":3456,"props":8179,"children":8180},{"style":3630},[8181],{"type":3091,"value":8182},"failregex",{"type":3086,"tag":3456,"props":8184,"children":8185},{"style":3621},[8186],{"type":3091,"value":5569},{"type":3086,"tag":3456,"props":8188,"children":8189},{"style":3615},[8190],{"type":3091,"value":8191}," ^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2},\\d{3} nuxt-api-shield ban \u003CHOST>\n",{"type":3086,"tag":3432,"props":8193,"children":8195},{"id":8194},"jail-configuration",[8196],{"type":3091,"value":8197},"Jail configuration",{"type":3086,"tag":3093,"props":8199,"children":8200},{},[8201,8203,8209],{"type":3091,"value":8202},"Add a jail entry in ",{"type":3086,"tag":3243,"props":8204,"children":8206},{"className":8205},[],[8207],{"type":3091,"value":8208},"\u002Fetc\u002Ffail2ban\u002Fjail.local",{"type":3091,"value":3638},{"type":3086,"tag":3446,"props":8211,"children":8213},{"className":8160,"code":8212,"language":8162,"meta":3030,"style":3030},"[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",[8214],{"type":3086,"tag":3243,"props":8215,"children":8216},{"__ignoreMap":3030},[8217,8225,8242,8259,8276,8293,8310,8327,8343],{"type":3086,"tag":3456,"props":8218,"children":8219},{"class":3458,"line":3058},[8220],{"type":3086,"tag":3456,"props":8221,"children":8222},{"style":3621},[8223],{"type":3091,"value":8224},"[nuxt-api-shield]\n",{"type":3086,"tag":3456,"props":8226,"children":8227},{"class":3458,"line":3054},[8228,8233,8238],{"type":3086,"tag":3456,"props":8229,"children":8230},{"style":3630},[8231],{"type":3091,"value":8232},"enabled",{"type":3086,"tag":3456,"props":8234,"children":8235},{"style":3621},[8236],{"type":3091,"value":8237},"  =",{"type":3086,"tag":3456,"props":8239,"children":8240},{"style":3615},[8241],{"type":3091,"value":5157},{"type":3086,"tag":3456,"props":8243,"children":8244},{"class":3458,"line":3488},[8245,8250,8255],{"type":3086,"tag":3456,"props":8246,"children":8247},{"style":3630},[8248],{"type":3091,"value":8249},"filter",{"type":3086,"tag":3456,"props":8251,"children":8252},{"style":3621},[8253],{"type":3091,"value":8254},"   =",{"type":3086,"tag":3456,"props":8256,"children":8257},{"style":3615},[8258],{"type":3091,"value":3485},{"type":3086,"tag":3456,"props":8260,"children":8261},{"class":3458,"line":3497},[8262,8267,8271],{"type":3086,"tag":3456,"props":8263,"children":8264},{"style":3630},[8265],{"type":3091,"value":8266},"logpath",{"type":3086,"tag":3456,"props":8268,"children":8269},{"style":3621},[8270],{"type":3091,"value":8237},{"type":3086,"tag":3456,"props":8272,"children":8273},{"style":3615},[8274],{"type":3091,"value":8275}," \u002Fvar\u002Flog\u002Fnuxt-api-shield\u002Fshield-*.log\n",{"type":3086,"tag":3456,"props":8277,"children":8278},{"class":3458,"line":3050},[8279,8283,8288],{"type":3086,"tag":3456,"props":8280,"children":8281},{"style":3630},[8282],{"type":3091,"value":4953},{"type":3086,"tag":3456,"props":8284,"children":8285},{"style":3621},[8286],{"type":3091,"value":8287},"     =",{"type":3086,"tag":3456,"props":8289,"children":8290},{"style":3615},[8291],{"type":3091,"value":8292}," http,https\n",{"type":3086,"tag":3456,"props":8294,"children":8295},{"class":3458,"line":3522},[8296,8301,8305],{"type":3086,"tag":3456,"props":8297,"children":8298},{"style":3630},[8299],{"type":3091,"value":8300},"banaction",{"type":3086,"tag":3456,"props":8302,"children":8303},{"style":3621},[8304],{"type":3091,"value":5569},{"type":3086,"tag":3456,"props":8306,"children":8307},{"style":3615},[8308],{"type":3091,"value":8309}," iptables-multiport\n",{"type":3086,"tag":3456,"props":8311,"children":8312},{"class":3458,"line":3530},[8313,8318,8322],{"type":3086,"tag":3456,"props":8314,"children":8315},{"style":3630},[8316],{"type":3091,"value":8317},"maxretry",{"type":3086,"tag":3456,"props":8319,"children":8320},{"style":3621},[8321],{"type":3091,"value":5569},{"type":3086,"tag":3456,"props":8323,"children":8324},{"style":3615},[8325],{"type":3091,"value":8326}," 1\n",{"type":3086,"tag":3456,"props":8328,"children":8329},{"class":3458,"line":3075},[8330,8335,8339],{"type":3086,"tag":3456,"props":8331,"children":8332},{"style":3630},[8333],{"type":3091,"value":8334},"findtime",{"type":3086,"tag":3456,"props":8336,"children":8337},{"style":3621},[8338],{"type":3091,"value":5569},{"type":3086,"tag":3456,"props":8340,"children":8341},{"style":3615},[8342],{"type":3091,"value":8326},{"type":3086,"tag":3456,"props":8344,"children":8345},{"class":3458,"line":3726},[8346,8351,8355],{"type":3086,"tag":3456,"props":8347,"children":8348},{"style":3630},[8349],{"type":3091,"value":8350},"bantime",{"type":3086,"tag":3456,"props":8352,"children":8353},{"style":3621},[8354],{"type":3091,"value":8237},{"type":3086,"tag":3456,"props":8356,"children":8357},{"style":3615},[8358],{"type":3091,"value":8359}," 3600\n",{"type":3086,"tag":3093,"props":8361,"children":8362},{},[8363,8365,8370,8372,8378,8380,8386,8387,8393,8395,8400],{"type":3091,"value":8364},"Since ",{"type":3086,"tag":3243,"props":8366,"children":8368},{"className":8367},[],[8369],{"type":3091,"value":3027},{"type":3091,"value":8371}," already applies its own ban logic (configurable via ",{"type":3086,"tag":3243,"props":8373,"children":8375},{"className":8374},[],[8376],{"type":3091,"value":8377},"limit.ban",{"type":3091,"value":8379},"), set ",{"type":3086,"tag":3243,"props":8381,"children":8383},{"className":8382},[],[8384],{"type":3091,"value":8385},"maxretry = 1",{"type":3091,"value":3342},{"type":3086,"tag":3243,"props":8388,"children":8390},{"className":8389},[],[8391],{"type":3091,"value":8392},"findtime = 1",{"type":3091,"value":8394}," so fail2ban acts immediately on each ban log entry. Adjust ",{"type":3086,"tag":3243,"props":8396,"children":8398},{"className":8397},[],[8399],{"type":3091,"value":8350},{"type":3091,"value":8401}," to match or extend your module-level ban duration.",{"type":3086,"tag":3093,"props":8403,"children":8404},{},[8405],{"type":3091,"value":8406},"Restart fail2ban after adding the config:",{"type":3086,"tag":3446,"props":8408,"children":8410},{"className":3448,"code":8409,"language":3450,"meta":3030,"style":3030},"sudo systemctl restart fail2ban\n",[8411],{"type":3086,"tag":3243,"props":8412,"children":8413},{"__ignoreMap":3030},[8414],{"type":3086,"tag":3456,"props":8415,"children":8416},{"class":3458,"line":3058},[8417,8422,8427,8432],{"type":3086,"tag":3456,"props":8418,"children":8419},{"style":3471},[8420],{"type":3091,"value":8421},"sudo",{"type":3086,"tag":3456,"props":8423,"children":8424},{"style":3477},[8425],{"type":3091,"value":8426}," systemctl",{"type":3086,"tag":3456,"props":8428,"children":8429},{"style":3477},[8430],{"type":3091,"value":8431}," restart",{"type":3086,"tag":3456,"props":8433,"children":8434},{"style":3477},[8435],{"type":3091,"value":8436}," fail2ban\n",{"type":3086,"tag":8438,"props":8439,"children":8440},"blockquote",{},[8441],{"type":3086,"tag":3093,"props":8442,"children":8443},{},[8444,8449,8451,8456],{"type":3086,"tag":3181,"props":8445,"children":8446},{},[8447],{"type":3091,"value":8448},"Note:",{"type":3091,"value":8450}," The ",{"type":3086,"tag":3243,"props":8452,"children":8454},{"className":8453},[],[8455],{"type":3091,"value":7916},{"type":3091,"value":8457}," directory must be readable by the fail2ban service. Ensure permissions are set accordingly.",{"type":3086,"tag":3169,"props":8459,"children":8461},{"id":8460},"typescript-types",[8462],{"type":3091,"value":8463},"TypeScript Types",{"type":3086,"tag":3093,"props":8465,"children":8466},{},[8467],{"type":3091,"value":8468},"The module exports TypeScript types that you can use in your application:",{"type":3086,"tag":3432,"props":8470,"children":8472},{"id":8471},"ratelimit-type",[8473,8479],{"type":3086,"tag":3243,"props":8474,"children":8476},{"className":8475},[],[8477],{"type":3091,"value":8478},"RateLimit",{"type":3091,"value":8480}," Type",{"type":3086,"tag":3093,"props":8482,"children":8483},{},[8484,8485,8490],{"type":3091,"value":4456},{"type":3086,"tag":3243,"props":8486,"children":8488},{"className":8487},[],[8489],{"type":3091,"value":8478},{"type":3091,"value":8491}," type represents the structure of rate limit data stored for each IP address:",{"type":3086,"tag":3446,"props":8493,"children":8495},{"className":5356,"code":8494,"language":5358,"meta":3030,"style":3030},"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",[8496],{"type":3086,"tag":3243,"props":8497,"children":8498},{"__ignoreMap":3030},[8499,8542,8549,8557,8565,8578,8591],{"type":3086,"tag":3456,"props":8500,"children":8501},{"class":3458,"line":3058},[8502,8506,8510,8514,8518,8522,8526,8530,8534,8538],{"type":3086,"tag":3456,"props":8503,"children":8504},{"style":3598},[8505],{"type":3091,"value":5370},{"type":3086,"tag":3456,"props":8507,"children":8508},{"style":3598},[8509],{"type":3091,"value":6111},{"type":3086,"tag":3456,"props":8511,"children":8512},{"style":3621},[8513],{"type":3091,"value":5375},{"type":3086,"tag":3456,"props":8515,"children":8516},{"style":3615},[8517],{"type":3091,"value":6120},{"type":3086,"tag":3456,"props":8519,"children":8520},{"style":3621},[8521],{"type":3091,"value":5385},{"type":3086,"tag":3456,"props":8523,"children":8524},{"style":3598},[8525],{"type":3091,"value":5390},{"type":3086,"tag":3456,"props":8527,"children":8528},{"style":3621},[8529],{"type":3091,"value":4164},{"type":3086,"tag":3456,"props":8531,"children":8532},{"style":3477},[8533],{"type":3091,"value":3027},{"type":3086,"tag":3456,"props":8535,"children":8536},{"style":3621},[8537],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":8539,"children":8540},{"style":3621},[8541],{"type":3091,"value":3998},{"type":3086,"tag":3456,"props":8543,"children":8544},{"class":3458,"line":3054},[8545],{"type":3086,"tag":3456,"props":8546,"children":8547},{"emptyLinePlaceholder":1200},[8548],{"type":3091,"value":3494},{"type":3086,"tag":3456,"props":8550,"children":8551},{"class":3458,"line":3488},[8552],{"type":3086,"tag":3456,"props":8553,"children":8554},{"style":3462},[8555],{"type":3091,"value":8556},"\u002F\u002F RateLimit structure:\n",{"type":3086,"tag":3456,"props":8558,"children":8559},{"class":3458,"line":3497},[8560],{"type":3086,"tag":3456,"props":8561,"children":8562},{"style":3462},[8563],{"type":3091,"value":8564},"\u002F\u002F {\n",{"type":3086,"tag":3456,"props":8566,"children":8567},{"class":3458,"line":3050},[8568,8573],{"type":3086,"tag":3456,"props":8569,"children":8570},{"style":3462},[8571],{"type":3091,"value":8572},"\u002F\u002F   count: number",{"type":3086,"tag":3456,"props":8574,"children":8575},{"style":3462},[8576],{"type":3091,"value":8577},"  \u002F\u002F Number of requests made\n",{"type":3086,"tag":3456,"props":8579,"children":8580},{"class":3458,"line":3522},[8581,8586],{"type":3086,"tag":3456,"props":8582,"children":8583},{"style":3462},[8584],{"type":3091,"value":8585},"\u002F\u002F   time: number",{"type":3086,"tag":3456,"props":8587,"children":8588},{"style":3462},[8589],{"type":3091,"value":8590},"   \u002F\u002F Timestamp of the last request\n",{"type":3086,"tag":3456,"props":8592,"children":8593},{"class":3458,"line":3530},[8594],{"type":3086,"tag":3456,"props":8595,"children":8596},{"style":3462},[8597],{"type":3091,"value":8598},"\u002F\u002F }\n",{"type":3086,"tag":3093,"props":8600,"children":8601},{},[8602],{"type":3086,"tag":3181,"props":8603,"children":8604},{},[8605],{"type":3091,"value":8606},"Usage Example:",{"type":3086,"tag":3446,"props":8608,"children":8610},{"className":5356,"code":8609,"language":5358,"meta":3030,"style":3030},"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",[8611],{"type":3086,"tag":3243,"props":8612,"children":8613},{"__ignoreMap":3030},[8614,8657,8696,8703,8748,8781,8842,8849,8866,8933,9014],{"type":3086,"tag":3456,"props":8615,"children":8616},{"class":3458,"line":3058},[8617,8621,8625,8629,8633,8637,8641,8645,8649,8653],{"type":3086,"tag":3456,"props":8618,"children":8619},{"style":3598},[8620],{"type":3091,"value":5370},{"type":3086,"tag":3456,"props":8622,"children":8623},{"style":3598},[8624],{"type":3091,"value":6111},{"type":3086,"tag":3456,"props":8626,"children":8627},{"style":3621},[8628],{"type":3091,"value":5375},{"type":3086,"tag":3456,"props":8630,"children":8631},{"style":3615},[8632],{"type":3091,"value":6120},{"type":3086,"tag":3456,"props":8634,"children":8635},{"style":3621},[8636],{"type":3091,"value":5385},{"type":3086,"tag":3456,"props":8638,"children":8639},{"style":3598},[8640],{"type":3091,"value":5390},{"type":3086,"tag":3456,"props":8642,"children":8643},{"style":3621},[8644],{"type":3091,"value":4164},{"type":3086,"tag":3456,"props":8646,"children":8647},{"style":3477},[8648],{"type":3091,"value":3027},{"type":3086,"tag":3456,"props":8650,"children":8651},{"style":3621},[8652],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":8654,"children":8655},{"style":3621},[8656],{"type":3091,"value":3998},{"type":3086,"tag":3456,"props":8658,"children":8659},{"class":3458,"line":3054},[8660,8664,8668,8672,8676,8680,8684,8688,8692],{"type":3086,"tag":3456,"props":8661,"children":8662},{"style":3598},[8663],{"type":3091,"value":5370},{"type":3086,"tag":3456,"props":8665,"children":8666},{"style":3621},[8667],{"type":3091,"value":5375},{"type":3086,"tag":3456,"props":8669,"children":8670},{"style":3615},[8671],{"type":3091,"value":5574},{"type":3086,"tag":3456,"props":8673,"children":8674},{"style":3621},[8675],{"type":3091,"value":5385},{"type":3086,"tag":3456,"props":8677,"children":8678},{"style":3598},[8679],{"type":3091,"value":5390},{"type":3086,"tag":3456,"props":8681,"children":8682},{"style":3621},[8683],{"type":3091,"value":4164},{"type":3086,"tag":3456,"props":8685,"children":8686},{"style":3477},[8687],{"type":3091,"value":5399},{"type":3086,"tag":3456,"props":8689,"children":8690},{"style":3621},[8691],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":8693,"children":8694},{"style":3621},[8695],{"type":3091,"value":3998},{"type":3086,"tag":3456,"props":8697,"children":8698},{"class":3458,"line":3488},[8699],{"type":3086,"tag":3456,"props":8700,"children":8701},{"emptyLinePlaceholder":1200},[8702],{"type":3091,"value":3494},{"type":3086,"tag":3456,"props":8704,"children":8705},{"class":3458,"line":3497},[8706,8710,8715,8720,8724,8728,8732,8736,8740,8744],{"type":3086,"tag":3456,"props":8707,"children":8708},{"style":4643},[8709],{"type":3091,"value":5727},{"type":3086,"tag":3456,"props":8711,"children":8712},{"style":3615},[8713],{"type":3091,"value":8714}," shieldStorage ",{"type":3086,"tag":3456,"props":8716,"children":8717},{"style":3621},[8718],{"type":3091,"value":8719},"=",{"type":3086,"tag":3456,"props":8721,"children":8722},{"style":3609},[8723],{"type":3091,"value":5574},{"type":3086,"tag":3456,"props":8725,"children":8726},{"style":3615},[8727],{"type":3091,"value":3618},{"type":3086,"tag":3456,"props":8729,"children":8730},{"style":3621},[8731],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":8733,"children":8734},{"style":3477},[8735],{"type":3091,"value":4614},{"type":3086,"tag":3456,"props":8737,"children":8738},{"style":3621},[8739],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":8741,"children":8742},{"style":3615},[8743],{"type":3091,"value":3993},{"type":3086,"tag":3456,"props":8745,"children":8746},{"style":3621},[8747],{"type":3091,"value":3998},{"type":3086,"tag":3456,"props":8749,"children":8750},{"class":3458,"line":3050},[8751,8755,8760,8764,8768,8773,8777],{"type":3086,"tag":3456,"props":8752,"children":8753},{"style":4643},[8754],{"type":3091,"value":5727},{"type":3086,"tag":3456,"props":8756,"children":8757},{"style":3615},[8758],{"type":3091,"value":8759}," ipKey ",{"type":3086,"tag":3456,"props":8761,"children":8762},{"style":3621},[8763],{"type":3091,"value":8719},{"type":3086,"tag":3456,"props":8765,"children":8766},{"style":3621},[8767],{"type":3091,"value":4164},{"type":3086,"tag":3456,"props":8769,"children":8770},{"style":3477},[8771],{"type":3091,"value":8772},"ip:192.168.1.1",{"type":3086,"tag":3456,"props":8774,"children":8775},{"style":3621},[8776],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":8778,"children":8779},{"style":3621},[8780],{"type":3091,"value":3998},{"type":3086,"tag":3456,"props":8782,"children":8783},{"class":3458,"line":3522},[8784,8788,8793,8797,8801,8805,8809,8813,8817,8822,8826,8830,8834,8838],{"type":3086,"tag":3456,"props":8785,"children":8786},{"style":4643},[8787],{"type":3091,"value":5727},{"type":3086,"tag":3456,"props":8789,"children":8790},{"style":3615},[8791],{"type":3091,"value":8792}," entry ",{"type":3086,"tag":3456,"props":8794,"children":8795},{"style":3621},[8796],{"type":3091,"value":8719},{"type":3086,"tag":3456,"props":8798,"children":8799},{"style":3615},[8800],{"type":3091,"value":5722},{"type":3086,"tag":3456,"props":8802,"children":8803},{"style":3598},[8804],{"type":3091,"value":6851},{"type":3086,"tag":3456,"props":8806,"children":8807},{"style":3615},[8808],{"type":3091,"value":5564},{"type":3086,"tag":3456,"props":8810,"children":8811},{"style":3621},[8812],{"type":3091,"value":4585},{"type":3086,"tag":3456,"props":8814,"children":8815},{"style":3609},[8816],{"type":3091,"value":5784},{"type":3086,"tag":3456,"props":8818,"children":8819},{"style":3615},[8820],{"type":3091,"value":8821},"(ipKey)) ",{"type":3086,"tag":3456,"props":8823,"children":8824},{"style":3598},[8825],{"type":3091,"value":6880},{"type":3086,"tag":3456,"props":8827,"children":8828},{"style":3471},[8829],{"type":3091,"value":6120},{"type":3086,"tag":3456,"props":8831,"children":8832},{"style":3621},[8833],{"type":3091,"value":6889},{"type":3086,"tag":3456,"props":8835,"children":8836},{"style":3471},[8837],{"type":3091,"value":6894},{"type":3086,"tag":3456,"props":8839,"children":8840},{"style":3621},[8841],{"type":3091,"value":3998},{"type":3086,"tag":3456,"props":8843,"children":8844},{"class":3458,"line":3530},[8845],{"type":3086,"tag":3456,"props":8846,"children":8847},{"emptyLinePlaceholder":1200},[8848],{"type":3091,"value":3494},{"type":3086,"tag":3456,"props":8850,"children":8851},{"class":3458,"line":3075},[8852,8857,8862],{"type":3086,"tag":3456,"props":8853,"children":8854},{"style":3598},[8855],{"type":3091,"value":8856},"if",{"type":3086,"tag":3456,"props":8858,"children":8859},{"style":3615},[8860],{"type":3091,"value":8861}," (entry) ",{"type":3086,"tag":3456,"props":8863,"children":8864},{"style":3621},[8865],{"type":3091,"value":3624},{"type":3086,"tag":3456,"props":8867,"children":8868},{"class":3458,"line":3726},[8869,8874,8878,8882,8886,8890,8895,8899,8903,8907,8912,8916,8921,8925,8929],{"type":3086,"tag":3456,"props":8870,"children":8871},{"style":3615},[8872],{"type":3091,"value":8873},"  console",{"type":3086,"tag":3456,"props":8875,"children":8876},{"style":3621},[8877],{"type":3091,"value":4585},{"type":3086,"tag":3456,"props":8879,"children":8880},{"style":3609},[8881],{"type":3091,"value":5917},{"type":3086,"tag":3456,"props":8883,"children":8884},{"style":3630},[8885],{"type":3091,"value":3618},{"type":3086,"tag":3456,"props":8887,"children":8888},{"style":3621},[8889],{"type":3091,"value":5926},{"type":3086,"tag":3456,"props":8891,"children":8892},{"style":3477},[8893],{"type":3091,"value":8894},"IP has made ",{"type":3086,"tag":3456,"props":8896,"children":8897},{"style":3621},[8898],{"type":3091,"value":5936},{"type":3086,"tag":3456,"props":8900,"children":8901},{"style":3615},[8902],{"type":3091,"value":6931},{"type":3086,"tag":3456,"props":8904,"children":8905},{"style":3621},[8906],{"type":3091,"value":4585},{"type":3086,"tag":3456,"props":8908,"children":8909},{"style":3615},[8910],{"type":3091,"value":8911},"count",{"type":3086,"tag":3456,"props":8913,"children":8914},{"style":3621},[8915],{"type":3091,"value":3988},{"type":3086,"tag":3456,"props":8917,"children":8918},{"style":3477},[8919],{"type":3091,"value":8920}," requests",{"type":3086,"tag":3456,"props":8922,"children":8923},{"style":3621},[8924],{"type":3091,"value":5926},{"type":3086,"tag":3456,"props":8926,"children":8927},{"style":3630},[8928],{"type":3091,"value":3993},{"type":3086,"tag":3456,"props":8930,"children":8931},{"style":3621},[8932],{"type":3091,"value":3998},{"type":3086,"tag":3456,"props":8934,"children":8935},{"class":3458,"line":3735},[8936,8940,8944,8948,8952,8956,8961,8965,8970,8974,8979,8983,8988,8992,8997,9001,9006,9010],{"type":3086,"tag":3456,"props":8937,"children":8938},{"style":3615},[8939],{"type":3091,"value":8873},{"type":3086,"tag":3456,"props":8941,"children":8942},{"style":3621},[8943],{"type":3091,"value":4585},{"type":3086,"tag":3456,"props":8945,"children":8946},{"style":3609},[8947],{"type":3091,"value":5917},{"type":3086,"tag":3456,"props":8949,"children":8950},{"style":3630},[8951],{"type":3091,"value":3618},{"type":3086,"tag":3456,"props":8953,"children":8954},{"style":3621},[8955],{"type":3091,"value":5926},{"type":3086,"tag":3456,"props":8957,"children":8958},{"style":3477},[8959],{"type":3091,"value":8960},"Last request at: ",{"type":3086,"tag":3456,"props":8962,"children":8963},{"style":3621},[8964],{"type":3091,"value":5936},{"type":3086,"tag":3456,"props":8966,"children":8967},{"style":3621},[8968],{"type":3091,"value":8969},"new",{"type":3086,"tag":3456,"props":8971,"children":8972},{"style":3609},[8973],{"type":3091,"value":6744},{"type":3086,"tag":3456,"props":8975,"children":8976},{"style":3615},[8977],{"type":3091,"value":8978},"(entry",{"type":3086,"tag":3456,"props":8980,"children":8981},{"style":3621},[8982],{"type":3091,"value":4585},{"type":3086,"tag":3456,"props":8984,"children":8985},{"style":3615},[8986],{"type":3091,"value":8987},"time)",{"type":3086,"tag":3456,"props":8989,"children":8990},{"style":3621},[8991],{"type":3091,"value":4585},{"type":3086,"tag":3456,"props":8993,"children":8994},{"style":3609},[8995],{"type":3091,"value":8996},"toISOString",{"type":3086,"tag":3456,"props":8998,"children":8999},{"style":3615},[9000],{"type":3091,"value":5547},{"type":3086,"tag":3456,"props":9002,"children":9003},{"style":3621},[9004],{"type":3091,"value":9005},"}`",{"type":3086,"tag":3456,"props":9007,"children":9008},{"style":3630},[9009],{"type":3091,"value":3993},{"type":3086,"tag":3456,"props":9011,"children":9012},{"style":3621},[9013],{"type":3091,"value":3998},{"type":3086,"tag":3456,"props":9015,"children":9016},{"class":3458,"line":3744},[9017],{"type":3086,"tag":3456,"props":9018,"children":9019},{"style":3621},[9020],{"type":3091,"value":4437},{"type":3086,"tag":3432,"props":9022,"children":9024},{"id":9023},"moduleoptions-type",[9025,9031],{"type":3086,"tag":3243,"props":9026,"children":9028},{"className":9027},[],[9029],{"type":3091,"value":9030},"ModuleOptions",{"type":3091,"value":8480},{"type":3086,"tag":3093,"props":9033,"children":9034},{},[9035],{"type":3091,"value":9036},"You can also import the module configuration type:",{"type":3086,"tag":3446,"props":9038,"children":9040},{"className":5356,"code":9039,"language":5358,"meta":3030,"style":3030},"import type { ModuleOptions } from \"nuxt-api-shield\";\n",[9041],{"type":3086,"tag":3243,"props":9042,"children":9043},{"__ignoreMap":3030},[9044],{"type":3086,"tag":3456,"props":9045,"children":9046},{"class":3458,"line":3058},[9047,9051,9055,9059,9064,9068,9072,9076,9080,9084],{"type":3086,"tag":3456,"props":9048,"children":9049},{"style":3598},[9050],{"type":3091,"value":5370},{"type":3086,"tag":3456,"props":9052,"children":9053},{"style":3598},[9054],{"type":3091,"value":6111},{"type":3086,"tag":3456,"props":9056,"children":9057},{"style":3621},[9058],{"type":3091,"value":5375},{"type":3086,"tag":3456,"props":9060,"children":9061},{"style":3615},[9062],{"type":3091,"value":9063}," ModuleOptions",{"type":3086,"tag":3456,"props":9065,"children":9066},{"style":3621},[9067],{"type":3091,"value":5385},{"type":3086,"tag":3456,"props":9069,"children":9070},{"style":3598},[9071],{"type":3091,"value":5390},{"type":3086,"tag":3456,"props":9073,"children":9074},{"style":3621},[9075],{"type":3091,"value":4164},{"type":3086,"tag":3456,"props":9077,"children":9078},{"style":3477},[9079],{"type":3091,"value":3027},{"type":3086,"tag":3456,"props":9081,"children":9082},{"style":3621},[9083],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":9085,"children":9086},{"style":3621},[9087],{"type":3091,"value":3998},{"type":3086,"tag":3169,"props":9089,"children":9091},{"id":9090},"per-route-rate-limiting",[9092],{"type":3091,"value":9093},"Per-Route Rate Limiting",{"type":3086,"tag":3093,"props":9095,"children":9096},{},[9097,9102,9104,9109],{"type":3086,"tag":3243,"props":9098,"children":9100},{"className":9099},[],[9101],{"type":3091,"value":3027},{"type":3091,"value":9103}," supports ",{"type":3086,"tag":3181,"props":9105,"children":9106},{},[9107],{"type":3091,"value":9108},"per-route rate limiting",{"type":3091,"value":9110},", allowing you to define custom limits for specific API endpoints while keeping a global default configuration for all other routes.",{"type":3086,"tag":3093,"props":9112,"children":9113},{},[9114,9116,9122,9123,9129,9131,9137],{"type":3091,"value":9115},"This is useful when certain endpoints (such as ",{"type":3086,"tag":3243,"props":9117,"children":9119},{"className":9118},[],[9120],{"type":3091,"value":9121},"\u002Fapi\u002Flogin",{"type":3091,"value":3408},{"type":3086,"tag":3243,"props":9124,"children":9126},{"className":9125},[],[9127],{"type":3091,"value":9128},"\u002Fapi\u002Fauth",{"type":3091,"value":9130},", or ",{"type":3086,"tag":3243,"props":9132,"children":9134},{"className":9133},[],[9135],{"type":3091,"value":9136},"\u002Fapi\u002Fpayment",{"type":3091,"value":9138},") require stricter protection.",{"type":3086,"tag":9140,"props":9141,"children":9142},"hr",{},[],{"type":3086,"tag":3432,"props":9144,"children":9146},{"id":9145},"configuration-example",[9147],{"type":3091,"value":9148},"Configuration Example",{"type":3086,"tag":3093,"props":9150,"children":9151},{},[9152,9153,9159],{"type":3091,"value":4456},{"type":3086,"tag":3243,"props":9154,"children":9156},{"className":9155},[],[9157],{"type":3091,"value":9158},"routes",{"type":3091,"value":9160}," option accepts a mixed array of strings (exact matches) and objects (custom limits or patterns).",{"type":3086,"tag":3446,"props":9162,"children":9164},{"className":5356,"code":9163,"language":5358,"meta":3030,"style":3030},"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",[9165],{"type":3086,"tag":3243,"props":9166,"children":9167},{"__ignoreMap":3030},[9168,9191,9226,9233,9248,9264,9284,9304,9324,9331,9338,9355,9363,9383,9390,9398,9406,9435,9456,9477,9485,9493,9500,9508,9515,9543,9563,9582,9598,9605,9617,9624],{"type":3086,"tag":3456,"props":9169,"children":9170},{"class":3458,"line":3058},[9171,9175,9179,9183,9187],{"type":3086,"tag":3456,"props":9172,"children":9173},{"style":3598},[9174],{"type":3091,"value":3601},{"type":3086,"tag":3456,"props":9176,"children":9177},{"style":3598},[9178],{"type":3091,"value":3606},{"type":3086,"tag":3456,"props":9180,"children":9181},{"style":3609},[9182],{"type":3091,"value":3612},{"type":3086,"tag":3456,"props":9184,"children":9185},{"style":3615},[9186],{"type":3091,"value":3618},{"type":3086,"tag":3456,"props":9188,"children":9189},{"style":3621},[9190],{"type":3091,"value":3624},{"type":3086,"tag":3456,"props":9192,"children":9193},{"class":3458,"line":3054},[9194,9198,9202,9206,9210,9214,9218,9222],{"type":3086,"tag":3456,"props":9195,"children":9196},{"style":3630},[9197],{"type":3091,"value":3633},{"type":3086,"tag":3456,"props":9199,"children":9200},{"style":3621},[9201],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":9203,"children":9204},{"style":3615},[9205],{"type":3091,"value":3643},{"type":3086,"tag":3456,"props":9207,"children":9208},{"style":3621},[9209],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":9211,"children":9212},{"style":3477},[9213],{"type":3091,"value":3027},{"type":3086,"tag":3456,"props":9215,"children":9216},{"style":3621},[9217],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":9219,"children":9220},{"style":3615},[9221],{"type":3091,"value":3661},{"type":3086,"tag":3456,"props":9223,"children":9224},{"style":3621},[9225],{"type":3091,"value":3666},{"type":3086,"tag":3456,"props":9227,"children":9228},{"class":3458,"line":3488},[9229],{"type":3086,"tag":3456,"props":9230,"children":9231},{"emptyLinePlaceholder":1200},[9232],{"type":3091,"value":3494},{"type":3086,"tag":3456,"props":9234,"children":9235},{"class":3458,"line":3497},[9236,9240,9244],{"type":3086,"tag":3456,"props":9237,"children":9238},{"style":3630},[9239],{"type":3091,"value":3674},{"type":3086,"tag":3456,"props":9241,"children":9242},{"style":3621},[9243],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":9245,"children":9246},{"style":3621},[9247],{"type":3091,"value":3683},{"type":3086,"tag":3456,"props":9249,"children":9250},{"class":3458,"line":3050},[9251,9256,9260],{"type":3086,"tag":3456,"props":9252,"children":9253},{"style":3630},[9254],{"type":3091,"value":9255},"    limit",{"type":3086,"tag":3456,"props":9257,"children":9258},{"style":3621},[9259],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":9261,"children":9262},{"style":3621},[9263],{"type":3091,"value":3683},{"type":3086,"tag":3456,"props":9265,"children":9266},{"class":3458,"line":3522},[9267,9272,9276,9280],{"type":3086,"tag":3456,"props":9268,"children":9269},{"style":3630},[9270],{"type":3091,"value":9271},"      max",{"type":3086,"tag":3456,"props":9273,"children":9274},{"style":3621},[9275],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":9277,"children":9278},{"style":3896},[9279],{"type":3091,"value":4063},{"type":3086,"tag":3456,"props":9281,"children":9282},{"style":3621},[9283],{"type":3091,"value":3666},{"type":3086,"tag":3456,"props":9285,"children":9286},{"class":3458,"line":3530},[9287,9292,9296,9300],{"type":3086,"tag":3456,"props":9288,"children":9289},{"style":3630},[9290],{"type":3091,"value":9291},"      duration",{"type":3086,"tag":3456,"props":9293,"children":9294},{"style":3621},[9295],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":9297,"children":9298},{"style":3896},[9299],{"type":3091,"value":4084},{"type":3086,"tag":3456,"props":9301,"children":9302},{"style":3621},[9303],{"type":3091,"value":3666},{"type":3086,"tag":3456,"props":9305,"children":9306},{"class":3458,"line":3075},[9307,9312,9316,9320],{"type":3086,"tag":3456,"props":9308,"children":9309},{"style":3630},[9310],{"type":3091,"value":9311},"      ban",{"type":3086,"tag":3456,"props":9313,"children":9314},{"style":3621},[9315],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":9317,"children":9318},{"style":3896},[9319],{"type":3091,"value":4110},{"type":3086,"tag":3456,"props":9321,"children":9322},{"style":3621},[9323],{"type":3091,"value":3666},{"type":3086,"tag":3456,"props":9325,"children":9326},{"class":3458,"line":3726},[9327],{"type":3086,"tag":3456,"props":9328,"children":9329},{"style":3621},[9330],{"type":3091,"value":3732},{"type":3086,"tag":3456,"props":9332,"children":9333},{"class":3458,"line":3735},[9334],{"type":3086,"tag":3456,"props":9335,"children":9336},{"emptyLinePlaceholder":1200},[9337],{"type":3091,"value":3494},{"type":3086,"tag":3456,"props":9339,"children":9340},{"class":3458,"line":3744},[9341,9346,9350],{"type":3086,"tag":3456,"props":9342,"children":9343},{"style":3630},[9344],{"type":3091,"value":9345},"    routes",{"type":3086,"tag":3456,"props":9347,"children":9348},{"style":3621},[9349],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":9351,"children":9352},{"style":3615},[9353],{"type":3091,"value":9354}," [\n",{"type":3086,"tag":3456,"props":9356,"children":9357},{"class":3458,"line":3753},[9358],{"type":3086,"tag":3456,"props":9359,"children":9360},{"style":3462},[9361],{"type":3091,"value":9362},"      \u002F\u002F 1. String: uses the global default limit (exact match)\n",{"type":3086,"tag":3456,"props":9364,"children":9365},{"class":3458,"line":3762},[9366,9370,9375,9379],{"type":3086,"tag":3456,"props":9367,"children":9368},{"style":3621},[9369],{"type":3091,"value":4691},{"type":3086,"tag":3456,"props":9371,"children":9372},{"style":3477},[9373],{"type":3091,"value":9374},"\u002Fapi\u002Fexample",{"type":3086,"tag":3456,"props":9376,"children":9377},{"style":3621},[9378],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":9380,"children":9381},{"style":3621},[9382],{"type":3091,"value":3666},{"type":3086,"tag":3456,"props":9384,"children":9385},{"class":3458,"line":3771},[9386],{"type":3086,"tag":3456,"props":9387,"children":9388},{"emptyLinePlaceholder":1200},[9389],{"type":3091,"value":3494},{"type":3086,"tag":3456,"props":9391,"children":9392},{"class":3458,"line":3780},[9393],{"type":3086,"tag":3456,"props":9394,"children":9395},{"style":3462},[9396],{"type":3091,"value":9397},"      \u002F\u002F 2. Object: custom rate limit for a specific route (exact match)\n",{"type":3086,"tag":3456,"props":9399,"children":9400},{"class":3458,"line":3789},[9401],{"type":3086,"tag":3456,"props":9402,"children":9403},{"style":3621},[9404],{"type":3091,"value":9405},"      {\n",{"type":3086,"tag":3456,"props":9407,"children":9408},{"class":3458,"line":3798},[9409,9414,9418,9422,9427,9431],{"type":3086,"tag":3456,"props":9410,"children":9411},{"style":3630},[9412],{"type":3091,"value":9413},"        path",{"type":3086,"tag":3456,"props":9415,"children":9416},{"style":3621},[9417],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":9419,"children":9420},{"style":3621},[9421],{"type":3091,"value":4164},{"type":3086,"tag":3456,"props":9423,"children":9424},{"style":3477},[9425],{"type":3091,"value":9426},"\u002Fapi\u002Fexample-per-route",{"type":3086,"tag":3456,"props":9428,"children":9429},{"style":3621},[9430],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":9432,"children":9433},{"style":3621},[9434],{"type":3091,"value":3666},{"type":3086,"tag":3456,"props":9436,"children":9437},{"class":3458,"line":3806},[9438,9443,9447,9452],{"type":3086,"tag":3456,"props":9439,"children":9440},{"style":3630},[9441],{"type":3091,"value":9442},"        max",{"type":3086,"tag":3456,"props":9444,"children":9445},{"style":3621},[9446],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":9448,"children":9449},{"style":3896},[9450],{"type":3091,"value":9451}," 5",{"type":3086,"tag":3456,"props":9453,"children":9454},{"style":3621},[9455],{"type":3091,"value":3666},{"type":3086,"tag":3456,"props":9457,"children":9458},{"class":3458,"line":3815},[9459,9464,9468,9473],{"type":3086,"tag":3456,"props":9460,"children":9461},{"style":3630},[9462],{"type":3091,"value":9463},"        duration",{"type":3086,"tag":3456,"props":9465,"children":9466},{"style":3621},[9467],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":9469,"children":9470},{"style":3896},[9471],{"type":3091,"value":9472}," 10",{"type":3086,"tag":3456,"props":9474,"children":9475},{"style":3621},[9476],{"type":3091,"value":3666},{"type":3086,"tag":3456,"props":9478,"children":9479},{"class":3458,"line":3824},[9480],{"type":3086,"tag":3456,"props":9481,"children":9482},{"style":3462},[9483],{"type":3091,"value":9484},"        \u002F\u002F \"ban\" can also be overridden per route\n",{"type":3086,"tag":3456,"props":9486,"children":9487},{"class":3458,"line":3838},[9488],{"type":3086,"tag":3456,"props":9489,"children":9490},{"style":3621},[9491],{"type":3091,"value":9492},"      },\n",{"type":3086,"tag":3456,"props":9494,"children":9495},{"class":3458,"line":3866},[9496],{"type":3086,"tag":3456,"props":9497,"children":9498},{"emptyLinePlaceholder":1200},[9499],{"type":3091,"value":3494},{"type":3086,"tag":3456,"props":9501,"children":9502},{"class":3458,"line":3874},[9503],{"type":3086,"tag":3456,"props":9504,"children":9505},{"style":3462},[9506],{"type":3091,"value":9507},"      \u002F\u002F 3. Object: Wildcard pattern\n",{"type":3086,"tag":3456,"props":9509,"children":9510},{"class":3458,"line":3883},[9511],{"type":3086,"tag":3456,"props":9512,"children":9513},{"style":3621},[9514],{"type":3091,"value":9405},{"type":3086,"tag":3456,"props":9516,"children":9517},{"class":3458,"line":3911},[9518,9522,9526,9530,9535,9539],{"type":3086,"tag":3456,"props":9519,"children":9520},{"style":3630},[9521],{"type":3091,"value":9413},{"type":3086,"tag":3456,"props":9523,"children":9524},{"style":3621},[9525],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":9527,"children":9528},{"style":3621},[9529],{"type":3091,"value":4164},{"type":3086,"tag":3456,"props":9531,"children":9532},{"style":3477},[9533],{"type":3091,"value":9534},"\u002Fapi\u002Fusers\u002F*\u002Fprofile",{"type":3086,"tag":3456,"props":9536,"children":9537},{"style":3621},[9538],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":9540,"children":9541},{"style":3621},[9542],{"type":3091,"value":3666},{"type":3086,"tag":3456,"props":9544,"children":9545},{"class":3458,"line":3928},[9546,9551,9555,9559],{"type":3086,"tag":3456,"props":9547,"children":9548},{"style":3630},[9549],{"type":3091,"value":9550},"        pattern",{"type":3086,"tag":3456,"props":9552,"children":9553},{"style":3621},[9554],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":9556,"children":9557},{"style":3950},[9558],{"type":3091,"value":4143},{"type":3086,"tag":3456,"props":9560,"children":9561},{"style":3621},[9562],{"type":3091,"value":3666},{"type":3086,"tag":3456,"props":9564,"children":9565},{"class":3458,"line":3937},[9566,9570,9574,9578],{"type":3086,"tag":3456,"props":9567,"children":9568},{"style":3630},[9569],{"type":3091,"value":9442},{"type":3086,"tag":3456,"props":9571,"children":9572},{"style":3621},[9573],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":9575,"children":9576},{"style":3896},[9577],{"type":3091,"value":9472},{"type":3086,"tag":3456,"props":9579,"children":9580},{"style":3621},[9581],{"type":3091,"value":3666},{"type":3086,"tag":3456,"props":9583,"children":9584},{"class":3458,"line":3965},[9585,9589,9593],{"type":3086,"tag":3456,"props":9586,"children":9587},{"style":3630},[9588],{"type":3091,"value":9463},{"type":3086,"tag":3456,"props":9590,"children":9591},{"style":3621},[9592],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":9594,"children":9595},{"style":3896},[9596],{"type":3091,"value":9597}," 60\n",{"type":3086,"tag":3456,"props":9599,"children":9600},{"class":3458,"line":3973},[9601],{"type":3086,"tag":3456,"props":9602,"children":9603},{"style":3621},[9604],{"type":3091,"value":4758},{"type":3086,"tag":3456,"props":9606,"children":9607},{"class":3458,"line":3982},[9608,9613],{"type":3086,"tag":3456,"props":9609,"children":9610},{"style":3615},[9611],{"type":3091,"value":9612},"    ]",{"type":3086,"tag":3456,"props":9614,"children":9615},{"style":3621},[9616],{"type":3091,"value":3666},{"type":3086,"tag":3456,"props":9618,"children":9619},{"class":3458,"line":6908},[9620],{"type":3086,"tag":3456,"props":9621,"children":9622},{"style":3621},[9623],{"type":3091,"value":3979},{"type":3086,"tag":3456,"props":9625,"children":9626},{"class":3458,"line":6917},[9627,9631,9635],{"type":3086,"tag":3456,"props":9628,"children":9629},{"style":3621},[9630],{"type":3091,"value":3988},{"type":3086,"tag":3456,"props":9632,"children":9633},{"style":3615},[9634],{"type":3091,"value":3993},{"type":3086,"tag":3456,"props":9636,"children":9637},{"style":3621},[9638],{"type":3091,"value":3998},{"type":3086,"tag":3432,"props":9640,"children":9642},{"id":9641},"wildcard-route-support",[9643],{"type":3091,"value":9644},"Wildcard Route Support",{"type":3086,"tag":3093,"props":9646,"children":9647},{},[9648,9650,9656],{"type":3091,"value":9649},"Wildcard patterns allow you to apply the same limits to groups of related API endpoints. Enable them by setting ",{"type":3086,"tag":3243,"props":9651,"children":9653},{"className":9652},[],[9654],{"type":3091,"value":9655},"pattern: true",{"type":3091,"value":9657}," in your route configuration.",{"type":3086,"tag":5322,"props":9659,"children":9661},{"id":9660},"wildcard-pattern-syntax",[9662],{"type":3091,"value":9663},"Wildcard Pattern Syntax",{"type":3086,"tag":3143,"props":9665,"children":9666},{},[9667,9711],{"type":3086,"tag":3147,"props":9668,"children":9669},{},[9670,9682,9684],{"type":3086,"tag":3181,"props":9671,"children":9672},{},[9673,9675,9681],{"type":3091,"value":9674},"Single-Segment Wildcard (",{"type":3086,"tag":3243,"props":9676,"children":9678},{"className":9677},[],[9679],{"type":3091,"value":9680},"*",{"type":3091,"value":3993},{"type":3091,"value":9683},": Matches exactly one path segment.\n",{"type":3086,"tag":3143,"props":9685,"children":9686},{},[9687],{"type":3086,"tag":3147,"props":9688,"children":9689},{},[9690,9695,9697,9703,9704,9710],{"type":3086,"tag":3243,"props":9691,"children":9693},{"className":9692},[],[9694],{"type":3091,"value":9534},{"type":3091,"value":9696}," matches ",{"type":3086,"tag":3243,"props":9698,"children":9700},{"className":9699},[],[9701],{"type":3091,"value":9702},"\u002Fapi\u002Fusers\u002F123\u002Fprofile",{"type":3091,"value":7377},{"type":3086,"tag":3243,"props":9705,"children":9707},{"className":9706},[],[9708],{"type":3091,"value":9709},"\u002Fapi\u002Fusers\u002Fadmin\u002Fprofile",{"type":3091,"value":4585},{"type":3086,"tag":3147,"props":9712,"children":9713},{},[9714,9726,9728],{"type":3086,"tag":3181,"props":9715,"children":9716},{},[9717,9719,9725],{"type":3091,"value":9718},"Multi-Segment Wildcard (",{"type":3086,"tag":3243,"props":9720,"children":9722},{"className":9721},[],[9723],{"type":3091,"value":9724},"**",{"type":3091,"value":3993},{"type":3091,"value":9727},": Matches zero or more path segments.\n",{"type":3086,"tag":3143,"props":9729,"children":9730},{},[9731],{"type":3086,"tag":3147,"props":9732,"children":9733},{},[9734,9740,9741,9747,9748,9754],{"type":3086,"tag":3243,"props":9735,"children":9737},{"className":9736},[],[9738],{"type":3091,"value":9739},"\u002Fapi\u002Freports\u002F**\u002Fsummary",{"type":3091,"value":9696},{"type":3086,"tag":3243,"props":9742,"children":9744},{"className":9743},[],[9745],{"type":3091,"value":9746},"\u002Fapi\u002Freports\u002Fmonthly\u002F2023\u002Fsummary",{"type":3091,"value":7377},{"type":3086,"tag":3243,"props":9749,"children":9751},{"className":9750},[],[9752],{"type":3091,"value":9753},"\u002Fapi\u002Freports\u002Fsummary",{"type":3091,"value":4585},{"type":3086,"tag":5322,"props":9756,"children":9758},{"id":9757},"pattern-precedence",[9759],{"type":3091,"value":9760},"Pattern Precedence",{"type":3086,"tag":9762,"props":9763,"children":9764},"ol",{},[9765,9775,9785],{"type":3086,"tag":3147,"props":9766,"children":9767},{},[9768,9773],{"type":3086,"tag":3181,"props":9769,"children":9770},{},[9771],{"type":3091,"value":9772},"Exact matches",{"type":3091,"value":9774}," always take precedence over wildcard patterns.",{"type":3086,"tag":3147,"props":9776,"children":9777},{},[9778,9783],{"type":3086,"tag":3181,"props":9779,"children":9780},{},[9781],{"type":3091,"value":9782},"More specific wildcards",{"type":3091,"value":9784}," take precedence over less specific ones.",{"type":3086,"tag":3147,"props":9786,"children":9787},{},[9788],{"type":3091,"value":9789},"When multiple wildcard patterns match, the most specific one is used.",{"type":3086,"tag":5322,"props":9791,"children":9793},{"id":9792},"important-notes",[9794],{"type":3091,"value":9795},"Important Notes",{"type":3086,"tag":3143,"props":9797,"children":9798},{},[9799,9809],{"type":3086,"tag":3147,"props":9800,"children":9801},{},[9802,9807],{"type":3086,"tag":3181,"props":9803,"children":9804},{},[9805],{"type":3091,"value":9806},"Shared Rate Limits:",{"type":3091,"value":9808}," All requests that match the same wildcard pattern share the same rate limit counter.",{"type":3086,"tag":3147,"props":9810,"children":9811},{},[9812,9817,9819,9825,9826,9832],{"type":3086,"tag":3181,"props":9813,"children":9814},{},[9815],{"type":3091,"value":9816},"Security:",{"type":3091,"value":9818}," Broad or dangerous patterns like ",{"type":3086,"tag":3243,"props":9820,"children":9822},{"className":9821},[],[9823],{"type":3091,"value":9824},"\u002F**",{"type":3091,"value":7377},{"type":3086,"tag":3243,"props":9827,"children":9829},{"className":9828},[],[9830],{"type":3091,"value":9831},"\u002F*",{"type":3091,"value":9833}," are automatically rejected to prevent accidental global blocking.",{"type":3086,"tag":3169,"props":9835,"children":9837},{"id":9836},"skipping-routes",[9838],{"type":3091,"value":9839},"Skipping Routes",{"type":3086,"tag":3093,"props":9841,"children":9842},{},[9843,9844,9850,9852,9857],{"type":3091,"value":4456},{"type":3086,"tag":3243,"props":9845,"children":9847},{"className":9846},[],[9848],{"type":3091,"value":9849},"skipRoutes",{"type":3091,"value":9851}," 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":3086,"tag":3243,"props":9853,"children":9855},{"className":9854},[],[9856],{"type":3091,"value":9158},{"type":3091,"value":9858}," array.",{"type":3086,"tag":3093,"props":9860,"children":9861},{},[9862],{"type":3091,"value":9863},"This is useful for health checks, webhook endpoints, monitoring probes, or internal status routes that should always respond regardless of traffic.",{"type":3086,"tag":3432,"props":9865,"children":9867},{"id":9866},"configuration-example-1",[9868],{"type":3091,"value":9148},{"type":3086,"tag":3446,"props":9870,"children":9872},{"className":5356,"code":9871,"language":5358,"meta":3030,"style":3030},"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",[9873],{"type":3086,"tag":3243,"props":9874,"children":9875},{"__ignoreMap":3030},[9876,9899,9934,9941,9956,9971,9990,10009,10028,10035,10042,10057,10082,10107,10132,10143,10150],{"type":3086,"tag":3456,"props":9877,"children":9878},{"class":3458,"line":3058},[9879,9883,9887,9891,9895],{"type":3086,"tag":3456,"props":9880,"children":9881},{"style":3598},[9882],{"type":3091,"value":3601},{"type":3086,"tag":3456,"props":9884,"children":9885},{"style":3598},[9886],{"type":3091,"value":3606},{"type":3086,"tag":3456,"props":9888,"children":9889},{"style":3609},[9890],{"type":3091,"value":3612},{"type":3086,"tag":3456,"props":9892,"children":9893},{"style":3615},[9894],{"type":3091,"value":3618},{"type":3086,"tag":3456,"props":9896,"children":9897},{"style":3621},[9898],{"type":3091,"value":3624},{"type":3086,"tag":3456,"props":9900,"children":9901},{"class":3458,"line":3054},[9902,9906,9910,9914,9918,9922,9926,9930],{"type":3086,"tag":3456,"props":9903,"children":9904},{"style":3630},[9905],{"type":3091,"value":3633},{"type":3086,"tag":3456,"props":9907,"children":9908},{"style":3621},[9909],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":9911,"children":9912},{"style":3615},[9913],{"type":3091,"value":3643},{"type":3086,"tag":3456,"props":9915,"children":9916},{"style":3621},[9917],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":9919,"children":9920},{"style":3477},[9921],{"type":3091,"value":3027},{"type":3086,"tag":3456,"props":9923,"children":9924},{"style":3621},[9925],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":9927,"children":9928},{"style":3615},[9929],{"type":3091,"value":3661},{"type":3086,"tag":3456,"props":9931,"children":9932},{"style":3621},[9933],{"type":3091,"value":3666},{"type":3086,"tag":3456,"props":9935,"children":9936},{"class":3458,"line":3488},[9937],{"type":3086,"tag":3456,"props":9938,"children":9939},{"emptyLinePlaceholder":1200},[9940],{"type":3091,"value":3494},{"type":3086,"tag":3456,"props":9942,"children":9943},{"class":3458,"line":3497},[9944,9948,9952],{"type":3086,"tag":3456,"props":9945,"children":9946},{"style":3630},[9947],{"type":3091,"value":3674},{"type":3086,"tag":3456,"props":9949,"children":9950},{"style":3621},[9951],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":9953,"children":9954},{"style":3621},[9955],{"type":3091,"value":3683},{"type":3086,"tag":3456,"props":9957,"children":9958},{"class":3458,"line":3050},[9959,9963,9967],{"type":3086,"tag":3456,"props":9960,"children":9961},{"style":3630},[9962],{"type":3091,"value":9255},{"type":3086,"tag":3456,"props":9964,"children":9965},{"style":3621},[9966],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":9968,"children":9969},{"style":3621},[9970],{"type":3091,"value":3683},{"type":3086,"tag":3456,"props":9972,"children":9973},{"class":3458,"line":3522},[9974,9978,9982,9986],{"type":3086,"tag":3456,"props":9975,"children":9976},{"style":3630},[9977],{"type":3091,"value":9271},{"type":3086,"tag":3456,"props":9979,"children":9980},{"style":3621},[9981],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":9983,"children":9984},{"style":3896},[9985],{"type":3091,"value":4063},{"type":3086,"tag":3456,"props":9987,"children":9988},{"style":3621},[9989],{"type":3091,"value":3666},{"type":3086,"tag":3456,"props":9991,"children":9992},{"class":3458,"line":3530},[9993,9997,10001,10005],{"type":3086,"tag":3456,"props":9994,"children":9995},{"style":3630},[9996],{"type":3091,"value":9291},{"type":3086,"tag":3456,"props":9998,"children":9999},{"style":3621},[10000],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":10002,"children":10003},{"style":3896},[10004],{"type":3091,"value":4084},{"type":3086,"tag":3456,"props":10006,"children":10007},{"style":3621},[10008],{"type":3091,"value":3666},{"type":3086,"tag":3456,"props":10010,"children":10011},{"class":3458,"line":3075},[10012,10016,10020,10024],{"type":3086,"tag":3456,"props":10013,"children":10014},{"style":3630},[10015],{"type":3091,"value":9311},{"type":3086,"tag":3456,"props":10017,"children":10018},{"style":3621},[10019],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":10021,"children":10022},{"style":3896},[10023],{"type":3091,"value":4110},{"type":3086,"tag":3456,"props":10025,"children":10026},{"style":3621},[10027],{"type":3091,"value":3666},{"type":3086,"tag":3456,"props":10029,"children":10030},{"class":3458,"line":3726},[10031],{"type":3086,"tag":3456,"props":10032,"children":10033},{"style":3621},[10034],{"type":3091,"value":3732},{"type":3086,"tag":3456,"props":10036,"children":10037},{"class":3458,"line":3735},[10038],{"type":3086,"tag":3456,"props":10039,"children":10040},{"emptyLinePlaceholder":1200},[10041],{"type":3091,"value":3494},{"type":3086,"tag":3456,"props":10043,"children":10044},{"class":3458,"line":3744},[10045,10049,10053],{"type":3086,"tag":3456,"props":10046,"children":10047},{"style":3630},[10048],{"type":3091,"value":3844},{"type":3086,"tag":3456,"props":10050,"children":10051},{"style":3621},[10052],{"type":3091,"value":3638},{"type":3086,"tag":3456,"props":10054,"children":10055},{"style":3615},[10056],{"type":3091,"value":9354},{"type":3086,"tag":3456,"props":10058,"children":10059},{"class":3458,"line":3753},[10060,10064,10069,10073,10077],{"type":3086,"tag":3456,"props":10061,"children":10062},{"style":3621},[10063],{"type":3091,"value":4691},{"type":3086,"tag":3456,"props":10065,"children":10066},{"style":3477},[10067],{"type":3091,"value":10068},"\u002Fapi\u002Fhealth",{"type":3086,"tag":3456,"props":10070,"children":10071},{"style":3621},[10072],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":10074,"children":10075},{"style":3621},[10076],{"type":3091,"value":3858},{"type":3086,"tag":3456,"props":10078,"children":10079},{"style":3462},[10080],{"type":3091,"value":10081},"          \u002F\u002F exact match\n",{"type":3086,"tag":3456,"props":10083,"children":10084},{"class":3458,"line":3762},[10085,10089,10094,10098,10102],{"type":3086,"tag":3456,"props":10086,"children":10087},{"style":3621},[10088],{"type":3091,"value":4691},{"type":3086,"tag":3456,"props":10090,"children":10091},{"style":3477},[10092],{"type":3091,"value":10093},"\u002Fapi\u002F_nuxt\u002F**",{"type":3086,"tag":3456,"props":10095,"children":10096},{"style":3621},[10097],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":10099,"children":10100},{"style":3621},[10101],{"type":3091,"value":3858},{"type":3086,"tag":3456,"props":10103,"children":10104},{"style":3462},[10105],{"type":3091,"value":10106},"        \u002F\u002F multi-segment wildcard\n",{"type":3086,"tag":3456,"props":10108,"children":10109},{"class":3458,"line":3771},[10110,10114,10119,10123,10127],{"type":3086,"tag":3456,"props":10111,"children":10112},{"style":3621},[10113],{"type":3091,"value":4691},{"type":3086,"tag":3456,"props":10115,"children":10116},{"style":3477},[10117],{"type":3091,"value":10118},"\u002Fapi\u002Fwebhooks\u002Fstripe",{"type":3086,"tag":3456,"props":10120,"children":10121},{"style":3621},[10122],{"type":3091,"value":3648},{"type":3086,"tag":3456,"props":10124,"children":10125},{"style":3621},[10126],{"type":3091,"value":3858},{"type":3086,"tag":3456,"props":10128,"children":10129},{"style":3462},[10130],{"type":3091,"value":10131}," \u002F\u002F exact match\n",{"type":3086,"tag":3456,"props":10133,"children":10134},{"class":3458,"line":3780},[10135,10139],{"type":3086,"tag":3456,"props":10136,"children":10137},{"style":3615},[10138],{"type":3091,"value":9612},{"type":3086,"tag":3456,"props":10140,"children":10141},{"style":3621},[10142],{"type":3091,"value":3666},{"type":3086,"tag":3456,"props":10144,"children":10145},{"class":3458,"line":3789},[10146],{"type":3086,"tag":3456,"props":10147,"children":10148},{"style":3621},[10149],{"type":3091,"value":3979},{"type":3086,"tag":3456,"props":10151,"children":10152},{"class":3458,"line":3798},[10153,10157],{"type":3086,"tag":3456,"props":10154,"children":10155},{"style":3621},[10156],{"type":3091,"value":3988},{"type":3086,"tag":3456,"props":10158,"children":10159},{"style":3615},[10160],{"type":3091,"value":8124},{"type":3086,"tag":3432,"props":10162,"children":10164},{"id":10163},"how-it-works",[10165],{"type":3091,"value":10166},"How It Works",{"type":3086,"tag":3143,"props":10168,"children":10169},{},[10170,10182,10194],{"type":3086,"tag":3147,"props":10171,"children":10172},{},[10173,10175,10180],{"type":3091,"value":10174},"Routes in ",{"type":3086,"tag":3243,"props":10176,"children":10178},{"className":10177},[],[10179],{"type":3091,"value":9849},{"type":3091,"value":10181}," bypass the middleware entirely — no ban check, no rate limit counter, no log entry.",{"type":3086,"tag":3147,"props":10183,"children":10184},{},[10185,10187,10192],{"type":3091,"value":10186},"The rest of your API routes (those matching the global defaults or the ",{"type":3086,"tag":3243,"props":10188,"children":10190},{"className":10189},[],[10191],{"type":3091,"value":9158},{"type":3091,"value":10193}," option) continue to be rate limited normally.",{"type":3086,"tag":3147,"props":10195,"children":10196},{},[10197,10199,10204,10206,10211],{"type":3091,"value":10198},"Supports the same wildcard syntax as per-route patterns: ",{"type":3086,"tag":3243,"props":10200,"children":10202},{"className":10201},[],[10203],{"type":3091,"value":9680},{"type":3091,"value":10205}," for single segment, ",{"type":3086,"tag":3243,"props":10207,"children":10209},{"className":10208},[],[10210],{"type":3091,"value":9724},{"type":3091,"value":10212}," for multi-segment.",{"type":3086,"tag":3169,"props":10214,"children":10216},{"id":10215},"important-considerations",[10217],{"type":3091,"value":10218},"Important Considerations",{"type":3086,"tag":3432,"props":10220,"children":10222},{"id":10221},"data-privacy-ip-address-storage",[10223],{"type":3091,"value":10224},"Data Privacy (IP Address Storage)",{"type":3086,"tag":3093,"props":10226,"children":10227},{},[10228,10233],{"type":3086,"tag":3243,"props":10229,"children":10231},{"className":10230},[],[10232],{"type":3091,"value":3027},{"type":3091,"value":10234}," 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":3086,"tag":3143,"props":10236,"children":10237},{},[10238,10279,10289],{"type":3086,"tag":3147,"props":10239,"children":10240},{},[10241,10246],{"type":3086,"tag":3181,"props":10242,"children":10243},{},[10244],{"type":3091,"value":10245},"Data Stored:",{"type":3086,"tag":3143,"props":10247,"children":10248},{},[10249,10268],{"type":3086,"tag":3147,"props":10250,"children":10251},{},[10252,10258,10260,10266],{"type":3086,"tag":3243,"props":10253,"children":10255},{"className":10254},[],[10256],{"type":3091,"value":10257},"ip:\u003CIP_ADDRESS>",{"type":3091,"value":10259},": Stores ",{"type":3086,"tag":3243,"props":10261,"children":10263},{"className":10262},[],[10264],{"type":3091,"value":10265},"{ count: number, time: number }",{"type":3091,"value":10267}," for tracking request rates.",{"type":3086,"tag":3147,"props":10269,"children":10270},{},[10271,10277],{"type":3086,"tag":3243,"props":10272,"children":10274},{"className":10273},[],[10275],{"type":3091,"value":10276},"ban:\u003CIP_ADDRESS>",{"type":3091,"value":10278},": Stores a timestamp indicating when a ban on an IP address expires.",{"type":3086,"tag":3147,"props":10280,"children":10281},{},[10282,10287],{"type":3086,"tag":3181,"props":10283,"children":10284},{},[10285],{"type":3091,"value":10286},"Compliance:",{"type":3091,"value":10288}," 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":3086,"tag":3147,"props":10290,"children":10291},{},[10292,10297],{"type":3086,"tag":3181,"props":10293,"children":10294},{},[10295],{"type":3091,"value":10296},"Data Retention:",{"type":3086,"tag":3143,"props":10298,"children":10299},{},[10300,10312],{"type":3086,"tag":3147,"props":10301,"children":10302},{},[10303,10305,10310],{"type":3091,"value":10304},"Ban entries are cleaned up by the ",{"type":3086,"tag":3243,"props":10306,"children":10308},{"className":10307},[],[10309],{"type":3091,"value":3340},{"type":3091,"value":10311}," task after expiry.",{"type":3086,"tag":3147,"props":10313,"children":10314},{},[10315,10317,10322,10324,10329],{"type":3091,"value":10316},"IP tracking entries are cleaned up by the ",{"type":3086,"tag":3243,"props":10318,"children":10320},{"className":10319},[],[10321],{"type":3091,"value":3348},{"type":3091,"value":10323}," task based on the ",{"type":3086,"tag":3243,"props":10325,"children":10327},{"className":10326},[],[10328],{"type":3091,"value":5046},{"type":3091,"value":10330}," setting.",{"type":3086,"tag":3432,"props":10332,"children":10334},{"id":10333},"storage-security",[10335],{"type":3091,"value":10336},"Storage Security",{"type":3086,"tag":3143,"props":10338,"children":10339},{},[10340,10418],{"type":3086,"tag":3147,"props":10341,"children":10342},{},[10343,10356,10358,10364,10366,10371,10372,10378,10380,10386,10388,10393,10395],{"type":3086,"tag":3181,"props":10344,"children":10345},{},[10346,10348,10354],{"type":3091,"value":10347},"Filesystem Driver (",{"type":3086,"tag":3243,"props":10349,"children":10351},{"className":10350},[],[10352],{"type":3091,"value":10353},"driver: 'fs'",{"type":3091,"value":10355},"):",{"type":3091,"value":10357}," If you use the filesystem driver for ",{"type":3086,"tag":3243,"props":10359,"children":10361},{"className":10360},[],[10362],{"type":3091,"value":10363},"unstorage",{"type":3091,"value":10365}," (e.g., ",{"type":3086,"tag":3243,"props":10367,"children":10369},{"className":10368},[],[10370],{"type":3091,"value":10353},{"type":3091,"value":3408},{"type":3086,"tag":3243,"props":10373,"children":10375},{"className":10374},[],[10376],{"type":3091,"value":10377},"base: '.shield'",{"type":3091,"value":10379},"), ensure that the storage directory (and the ",{"type":3086,"tag":3243,"props":10381,"children":10383},{"className":10382},[],[10384],{"type":3091,"value":10385},"logs",{"type":3091,"value":10387}," directory if logging is enabled via ",{"type":3086,"tag":3243,"props":10389,"children":10391},{"className":10390},[],[10392],{"type":3091,"value":7916},{"type":3091,"value":10394},") is:\n",{"type":3086,"tag":3143,"props":10396,"children":10397},{},[10398,10408],{"type":3086,"tag":3147,"props":10399,"children":10400},{},[10401,10406],{"type":3086,"tag":3181,"props":10402,"children":10403},{},[10404],{"type":3091,"value":10405},"Not web-accessible:",{"type":3091,"value":10407}," Your web server should not be configured to serve files from these directories.",{"type":3086,"tag":3147,"props":10409,"children":10410},{},[10411,10416],{"type":3086,"tag":3181,"props":10412,"children":10413},{},[10414],{"type":3091,"value":10415},"Properly permissioned:",{"type":3091,"value":10417}," The directories should have appropriate server-side file permissions to prevent unauthorized reading or writing.",{"type":3086,"tag":3147,"props":10419,"children":10420},{},[10421,10426],{"type":3086,"tag":3181,"props":10422,"children":10423},{},[10424],{"type":3091,"value":10425},"Other Drivers (Redis, etc.):",{"type":3091,"value":10427}," If using database drivers like Redis, ensure your database server itself is secured (e.g., authentication, network access controls).",{"type":3086,"tag":3432,"props":10429,"children":10431},{"id":10430},"error-message-errormessage",[10432,10434,10440],{"type":3091,"value":10433},"Error Message (",{"type":3086,"tag":3243,"props":10435,"children":10437},{"className":10436},[],[10438],{"type":3091,"value":10439},"errorMessage",{"type":3091,"value":3993},{"type":3086,"tag":3093,"props":10442,"children":10443},{},[10444,10445,10450],{"type":3091,"value":4456},{"type":3086,"tag":3243,"props":10446,"children":10448},{"className":10447},[],[10449],{"type":3091,"value":10439},{"type":3091,"value":10451}," option in the module configuration is returned in the body of a 429 response.",{"type":3086,"tag":3143,"props":10453,"children":10454},{},[10455,10460],{"type":3086,"tag":3147,"props":10456,"children":10457},{},[10458],{"type":3091,"value":10459},"It's recommended to use a plain text message.",{"type":3086,"tag":3147,"props":10461,"children":10462},{},[10463,10465,10470],{"type":3091,"value":10464},"If you choose to use HTML in your ",{"type":3086,"tag":3243,"props":10466,"children":10468},{"className":10467},[],[10469],{"type":3091,"value":10439},{"type":3091,"value":10471},", 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":3086,"tag":3169,"props":10473,"children":10475},{"id":10474},"development",[10476],{"type":3091,"value":10477},"Development",{"type":3086,"tag":3446,"props":10479,"children":10481},{"className":3448,"code":10480,"language":3450,"meta":3030,"style":3030},"# 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",[10482],{"type":3086,"tag":3243,"props":10483,"children":10484},{"__ignoreMap":3030},[10485,10493,10501,10508,10516,10528,10535,10543,10555,10562,10570,10582,10589,10597,10609,10616,10624,10636,10648,10655,10663,10675],{"type":3086,"tag":3456,"props":10486,"children":10487},{"class":3458,"line":3058},[10488],{"type":3086,"tag":3456,"props":10489,"children":10490},{"style":3462},[10491],{"type":3091,"value":10492},"# Install dependencies\n",{"type":3086,"tag":3456,"props":10494,"children":10495},{"class":3458,"line":3054},[10496],{"type":3086,"tag":3456,"props":10497,"children":10498},{"style":3471},[10499],{"type":3091,"value":10500},"yarn\n",{"type":3086,"tag":3456,"props":10502,"children":10503},{"class":3458,"line":3488},[10504],{"type":3086,"tag":3456,"props":10505,"children":10506},{"emptyLinePlaceholder":1200},[10507],{"type":3091,"value":3494},{"type":3086,"tag":3456,"props":10509,"children":10510},{"class":3458,"line":3497},[10511],{"type":3086,"tag":3456,"props":10512,"children":10513},{"style":3462},[10514],{"type":3091,"value":10515},"# Generate type stubs\n",{"type":3086,"tag":3456,"props":10517,"children":10518},{"class":3458,"line":3050},[10519,10523],{"type":3086,"tag":3456,"props":10520,"children":10521},{"style":3471},[10522],{"type":3091,"value":3511},{"type":3086,"tag":3456,"props":10524,"children":10525},{"style":3477},[10526],{"type":3091,"value":10527}," dev:prepare\n",{"type":3086,"tag":3456,"props":10529,"children":10530},{"class":3458,"line":3522},[10531],{"type":3086,"tag":3456,"props":10532,"children":10533},{"emptyLinePlaceholder":1200},[10534],{"type":3091,"value":3494},{"type":3086,"tag":3456,"props":10536,"children":10537},{"class":3458,"line":3530},[10538],{"type":3086,"tag":3456,"props":10539,"children":10540},{"style":3462},[10541],{"type":3091,"value":10542},"# Develop with the playground\n",{"type":3086,"tag":3456,"props":10544,"children":10545},{"class":3458,"line":3075},[10546,10550],{"type":3086,"tag":3456,"props":10547,"children":10548},{"style":3471},[10549],{"type":3091,"value":3511},{"type":3086,"tag":3456,"props":10551,"children":10552},{"style":3477},[10553],{"type":3091,"value":10554}," dev\n",{"type":3086,"tag":3456,"props":10556,"children":10557},{"class":3458,"line":3726},[10558],{"type":3086,"tag":3456,"props":10559,"children":10560},{"emptyLinePlaceholder":1200},[10561],{"type":3091,"value":3494},{"type":3086,"tag":3456,"props":10563,"children":10564},{"class":3458,"line":3735},[10565],{"type":3086,"tag":3456,"props":10566,"children":10567},{"style":3462},[10568],{"type":3091,"value":10569},"# Build the playground\n",{"type":3086,"tag":3456,"props":10571,"children":10572},{"class":3458,"line":3744},[10573,10577],{"type":3086,"tag":3456,"props":10574,"children":10575},{"style":3471},[10576],{"type":3091,"value":3511},{"type":3086,"tag":3456,"props":10578,"children":10579},{"style":3477},[10580],{"type":3091,"value":10581}," dev:build\n",{"type":3086,"tag":3456,"props":10583,"children":10584},{"class":3458,"line":3753},[10585],{"type":3086,"tag":3456,"props":10586,"children":10587},{"emptyLinePlaceholder":1200},[10588],{"type":3091,"value":3494},{"type":3086,"tag":3456,"props":10590,"children":10591},{"class":3458,"line":3762},[10592],{"type":3086,"tag":3456,"props":10593,"children":10594},{"style":3462},[10595],{"type":3091,"value":10596},"# Run ESLint\n",{"type":3086,"tag":3456,"props":10598,"children":10599},{"class":3458,"line":3771},[10600,10604],{"type":3086,"tag":3456,"props":10601,"children":10602},{"style":3471},[10603],{"type":3091,"value":3511},{"type":3086,"tag":3456,"props":10605,"children":10606},{"style":3477},[10607],{"type":3091,"value":10608}," lint\n",{"type":3086,"tag":3456,"props":10610,"children":10611},{"class":3458,"line":3780},[10612],{"type":3086,"tag":3456,"props":10613,"children":10614},{"emptyLinePlaceholder":1200},[10615],{"type":3091,"value":3494},{"type":3086,"tag":3456,"props":10617,"children":10618},{"class":3458,"line":3789},[10619],{"type":3086,"tag":3456,"props":10620,"children":10621},{"style":3462},[10622],{"type":3091,"value":10623},"# Run Vitest\n",{"type":3086,"tag":3456,"props":10625,"children":10626},{"class":3458,"line":3798},[10627,10631],{"type":3086,"tag":3456,"props":10628,"children":10629},{"style":3471},[10630],{"type":3091,"value":3511},{"type":3086,"tag":3456,"props":10632,"children":10633},{"style":3477},[10634],{"type":3091,"value":10635}," test\n",{"type":3086,"tag":3456,"props":10637,"children":10638},{"class":3458,"line":3806},[10639,10643],{"type":3086,"tag":3456,"props":10640,"children":10641},{"style":3471},[10642],{"type":3091,"value":3511},{"type":3086,"tag":3456,"props":10644,"children":10645},{"style":3477},[10646],{"type":3091,"value":10647}," test:watch\n",{"type":3086,"tag":3456,"props":10649,"children":10650},{"class":3458,"line":3815},[10651],{"type":3086,"tag":3456,"props":10652,"children":10653},{"emptyLinePlaceholder":1200},[10654],{"type":3091,"value":3494},{"type":3086,"tag":3456,"props":10656,"children":10657},{"class":3458,"line":3824},[10658],{"type":3086,"tag":3456,"props":10659,"children":10660},{"style":3462},[10661],{"type":3091,"value":10662},"# Release new version\n",{"type":3086,"tag":3456,"props":10664,"children":10665},{"class":3458,"line":3838},[10666,10670],{"type":3086,"tag":3456,"props":10667,"children":10668},{"style":3471},[10669],{"type":3091,"value":3511},{"type":3086,"tag":3456,"props":10671,"children":10672},{"style":3477},[10673],{"type":3091,"value":10674}," release:patch\n",{"type":3086,"tag":3456,"props":10676,"children":10677},{"class":3458,"line":3866},[10678,10682],{"type":3086,"tag":3456,"props":10679,"children":10680},{"style":3471},[10681],{"type":3091,"value":3511},{"type":3086,"tag":3456,"props":10683,"children":10684},{"style":3477},[10685],{"type":3091,"value":10686}," release:minor\n",{"type":3086,"tag":10688,"props":10689,"children":10690},"style",{},[10691],{"type":3091,"value":10692},"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":3030,"searchDepth":3054,"depth":3054,"links":10694},[10695,10696,10707,10712,10717,10723,10727,10731,10737],{"id":3171,"depth":3054,"text":399},{"id":3427,"depth":3054,"text":3430,"children":10697},[10698,10700,10702,10704,10706],{"id":3434,"depth":3488,"text":10699},"1. Add nuxt-api-shield dependency to your project",{"id":3556,"depth":3488,"text":10701},"2. Add nuxt-api-shield to the modules section of nuxt.config.ts",{"id":4588,"depth":3488,"text":10703},"3. Add nitro\u002Fstorage to nuxt.config.ts",{"id":4997,"depth":3488,"text":10705},"4. Schedule bundled cleanup tasks in nuxt.config.ts",{"id":5298,"depth":3488,"text":5301},{"id":7387,"depth":3054,"text":7390,"children":10708},[10709,10710],{"id":7393,"depth":3488,"text":7396},{"id":7803,"depth":3488,"text":10711},"When memory \u002F fs is acceptable",{"id":7862,"depth":3054,"text":7865,"children":10713},[10714,10715,10716],{"id":7888,"depth":3488,"text":7891},{"id":8142,"depth":3488,"text":8145},{"id":8194,"depth":3488,"text":8197},{"id":8460,"depth":3054,"text":8463,"children":10718},[10719,10721],{"id":8471,"depth":3488,"text":10720},"RateLimit Type",{"id":9023,"depth":3488,"text":10722},"ModuleOptions Type",{"id":9090,"depth":3054,"text":9093,"children":10724},[10725,10726],{"id":9145,"depth":3488,"text":9148},{"id":9641,"depth":3488,"text":9644},{"id":9836,"depth":3054,"text":9839,"children":10728},[10729,10730],{"id":9866,"depth":3488,"text":9148},{"id":10163,"depth":3488,"text":10166},{"id":10215,"depth":3054,"text":10218,"children":10732},[10733,10734,10735],{"id":10221,"depth":3488,"text":10224},{"id":10333,"depth":3488,"text":10336},{"id":10430,"depth":3488,"text":10736},"Error Message (errorMessage)",{"id":10474,"depth":3054,"text":10477},{"v5":10739,"v4":10740,"v3":10741,"v2":10742},"5 (nightly)","4.5.2","3.21.11","2.18.1"]