[{"data":1,"prerenderedAt":1304},["ShallowReactive",2],{"navLinks":3,"sidebar_docs_navigation_\u002F":64,"navLinks_footer":65,"navigation":78,"landing":792},{"id":4,"extension":5,"links":6,"meta":61,"stem":62,"__hash__":63},"navigationMenu\u002Fnavigation.json","json",[7,52,57],{"nested":8,"label":9,"icon":10,"to":11,"children":12},true,"Docs","i-lucide-book-open","\u002Fdocs\u002Fgetting-started",[13,19,26,32,39,45],{"label":14,"icon":15,"to":11,"description":16,"github":17,"badge":18},"Getting Started","i-lucide-rocket","An introduction to help you understand the core components.","https:\u002F\u002Fgithub.com\u002FSergo706\u002Fdocshub","Start Here",{"label":20,"icon":21,"to":22,"description":23,"github":24,"badge":25},"Auth H3 Client","i-lucide-key-round","\u002Fdocs\u002Fauth-h3client","Seamlessly enforce OAuth 2.0 authentication and session management integrated directly as the client of the IAM module.","https:\u002F\u002Fgithub.com\u002FSergo706\u002Fauth-h3client","Core",{"label":27,"icon":28,"to":29,"description":30,"github":31,"badge":25},"IAM","i-lucide-shield-check","\u002Fdocs\u002Fiam","Identity and Access Management featuring granular roles, permissions, and security policies.","https:\u002F\u002Fgithub.com\u002FSergo706\u002Fauth",{"label":33,"icon":34,"to":35,"description":36,"github":37,"badge":38},"Bot Detection","i-lucide-cpu","\u002Fdocs\u002Fbot-detection","Advanced behavioral analysis and request fingerprinting to stop malicious automated traffic.","https:\u002F\u002Fgithub.com\u002FSergo706\u002Fbot-detector","Security",{"label":40,"icon":41,"to":42,"description":43,"github":44,"badge":38},"Shield Base","i-lucide-database-zap","\u002Fdocs\u002Fshield-base","CLI and programmatic toolkit for compiling offline-ready IP intelligence databases from BGP, GeoIP, Tor, FireHOL, and other public threat feeds.","https:\u002F\u002Fgithub.com\u002FSergo706\u002Fshield-base-cli",{"label":46,"icon":47,"to":48,"description":49,"github":50,"badge":51},"Utils","i-lucide-wrench","\u002Fdocs\u002Futils","A standard library of highly optimized helpers for formatting, validation, and core logic.","https:\u002F\u002Fgithub.com\u002FSergo706\u002Futils","Library",{"nested":53,"label":54,"icon":55,"to":56},false,"Blog","i-lucide-pen-line","\u002Fblog",{"nested":53,"label":58,"icon":59,"to":60},"Website","lucide:app-window-mac","https:\u002F\u002Friavzon.com",{},"navigation","gkaQ0xRGxSLrLyM3kttLe0oBwkrR1EBjlepF8LSbwF8",[],{"id":4,"extension":5,"links":66,"meta":77,"stem":62,"__hash__":63},[67,75,76],{"nested":8,"label":9,"icon":10,"to":11,"children":68},[69,70,71,72,73,74],{"label":14,"icon":15,"to":11,"description":16,"github":17,"badge":18},{"label":20,"icon":21,"to":22,"description":23,"github":24,"badge":25},{"label":27,"icon":28,"to":29,"description":30,"github":31,"badge":25},{"label":33,"icon":34,"to":35,"description":36,"github":37,"badge":38},{"label":40,"icon":41,"to":42,"description":43,"github":44,"badge":38},{"label":46,"icon":47,"to":48,"description":49,"github":50,"badge":51},{"nested":53,"label":54,"icon":55,"to":56},{"nested":53,"label":58,"icon":59,"to":60},{},[79],{"title":9,"path":80,"stem":81,"children":82,"page":53},"\u002Fdocs","docs",[83,231,349,354,532,599],{"title":20,"path":22,"stem":84,"children":85,"page":-1},"docs\u002Fauth-h3client\u002Findex",[86,87,96,133,159,181,184,205,209],{"title":20,"path":22,"stem":84},{"title":14,"path":88,"stem":89,"children":90,"page":-1},"\u002Fdocs\u002Fauth-h3client\u002Fgetting-started","docs\u002Fauth-h3client\u002F00.getting-started\u002Findex",[91,92],{"title":14,"path":88,"stem":89},{"title":93,"path":94,"stem":95},"Nuxt Module","\u002Fdocs\u002Fauth-h3client\u002Fgetting-started\u002Fnuxt","docs\u002Fauth-h3client\u002F00.getting-started\u002F00.nuxt",{"title":97,"path":98,"stem":99,"children":100,"page":-1},"Essentials","\u002Fdocs\u002Fauth-h3client\u002Fessentials","docs\u002Fauth-h3client\u002F01.essentials\u002Findex",[101,102,106,110,114,118,122,125,129],{"title":97,"path":98,"stem":99},{"title":103,"path":104,"stem":105},"Session Management","\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Fsession","docs\u002Fauth-h3client\u002F01.essentials\u002F00.session",{"title":107,"path":108,"stem":109},"Route Protection","\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Froute-protection","docs\u002Fauth-h3client\u002F01.essentials\u002F01.route-protection",{"title":111,"path":112,"stem":113},"CSRF Protection","\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Fcsrf","docs\u002Fauth-h3client\u002F01.essentials\u002F02.csrf",{"title":115,"path":116,"stem":117},"Auth Flows","\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Fauth-flows","docs\u002Fauth-h3client\u002F01.essentials\u002F03.auth-flows",{"title":119,"path":120,"stem":121},"OAuth and OIDC","\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Foauth","docs\u002Fauth-h3client\u002F01.essentials\u002F04.oauth",{"title":33,"path":123,"stem":124},"\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Fbot-detection","docs\u002Fauth-h3client\u002F01.essentials\u002F05.bot-detection",{"title":126,"path":127,"stem":128},"Cookies","\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Fcookies","docs\u002Fauth-h3client\u002F01.essentials\u002F06.cookies",{"title":130,"path":131,"stem":132},"Logging","\u002Fdocs\u002Fauth-h3client\u002Fessentials\u002Flogging","docs\u002Fauth-h3client\u002F01.essentials\u002F07.logging",{"title":134,"path":135,"stem":136,"children":137,"page":-1},"MFA","\u002Fdocs\u002Fauth-h3client\u002Fmfa","docs\u002Fauth-h3client\u002F02.mfa\u002Findex",[138,139,143,147,151,155],{"title":134,"path":135,"stem":136},{"title":140,"path":141,"stem":142},"Built-in MFA","\u002Fdocs\u002Fauth-h3client\u002Fmfa\u002Fbuilt-in-flow","docs\u002Fauth-h3client\u002F02.mfa\u002F01.built-in-flow",{"title":144,"path":145,"stem":146},"Password Reset","\u002Fdocs\u002Fauth-h3client\u002Fmfa\u002Fpassword-reset","docs\u002Fauth-h3client\u002F02.mfa\u002F02.password-reset",{"title":148,"path":149,"stem":150},"Email Change","\u002Fdocs\u002Fauth-h3client\u002Fmfa\u002Femail-change","docs\u002Fauth-h3client\u002F02.mfa\u002F03.email-change",{"title":152,"path":153,"stem":154},"Custom MFA Flow","\u002Fdocs\u002Fauth-h3client\u002Fmfa\u002Fcustom-flow","docs\u002Fauth-h3client\u002F02.mfa\u002F04.custom-flow",{"title":156,"path":157,"stem":158},"Client-Side MFA","\u002Fdocs\u002Fauth-h3client\u002Fmfa\u002Fclient-side","docs\u002Fauth-h3client\u002F02.mfa\u002F05.client-side",{"title":160,"path":161,"stem":162,"children":163,"page":-1},"Client-side","\u002Fdocs\u002Fauth-h3client\u002Fclient","docs\u002Fauth-h3client\u002F03.client\u002Findex",[164,165,169,173,177],{"title":160,"path":161,"stem":162},{"title":166,"path":167,"stem":168},"useAuthData","\u002Fdocs\u002Fauth-h3client\u002Fclient\u002Fuse-auth-data","docs\u002Fauth-h3client\u002F03.client\u002F00.use-auth-data",{"title":170,"path":171,"stem":172},"useMagicLink","\u002Fdocs\u002Fauth-h3client\u002Fclient\u002Fuse-magic-link","docs\u002Fauth-h3client\u002F03.client\u002F01.use-magic-link",{"title":174,"path":175,"stem":176},"executeRequest","\u002Fdocs\u002Fauth-h3client\u002Fclient\u002Fexecute-request","docs\u002Fauth-h3client\u002F03.client\u002F02.execute-request",{"title":178,"path":179,"stem":180},"getCsrfToken","\u002Fdocs\u002Fauth-h3client\u002Fclient\u002Fget-csrf-token","docs\u002Fauth-h3client\u002F03.client\u002F03.get-csrf-token",{"title":38,"path":182,"stem":183},"\u002Fdocs\u002Fauth-h3client\u002Fsecurity","docs\u002Fauth-h3client\u002F04.security",{"title":185,"path":186,"stem":187,"children":188,"page":53},"Guides","\u002Fdocs\u002Fauth-h3client\u002Fguides","docs\u002Fauth-h3client\u002F05.guides",[189,193,197,201],{"title":190,"path":191,"stem":192},"H3 and Nitro Setup","\u002Fdocs\u002Fauth-h3client\u002Fguides\u002Fh3-nitro","docs\u002Fauth-h3client\u002F05.guides\u002F00.h3-nitro",{"title":194,"path":195,"stem":196},"HMAC Inter-service Auth","\u002Fdocs\u002Fauth-h3client\u002Fguides\u002Fhmac","docs\u002Fauth-h3client\u002F05.guides\u002Fhmac",{"title":198,"path":199,"stem":200},"Image Upload","\u002Fdocs\u002Fauth-h3client\u002Fguides\u002Fimage-upload","docs\u002Fauth-h3client\u002F05.guides\u002Fimage-upload",{"title":202,"path":203,"stem":204},"mTLS Configuration","\u002Fdocs\u002Fauth-h3client\u002Fguides\u002Fmtls","docs\u002Fauth-h3client\u002F05.guides\u002Fmtls",{"title":206,"path":207,"stem":208},"Configuration","\u002Fdocs\u002Fauth-h3client\u002Fconfiguration","docs\u002Fauth-h3client\u002F06.configuration",{"title":210,"path":211,"stem":212,"children":213,"page":-1},"API Reference","\u002Fdocs\u002Fauth-h3client\u002Fapi","docs\u002Fauth-h3client\u002F07.api\u002Findex",[214,215,219,223,227],{"title":210,"path":211,"stem":212},{"title":216,"path":217,"stem":218},"Routes Reference","\u002Fdocs\u002Fauth-h3client\u002Fapi\u002Fcontrollers","docs\u002Fauth-h3client\u002F07.api\u002F00.controllers",{"title":220,"path":221,"stem":222},"Middleware Reference","\u002Fdocs\u002Fauth-h3client\u002Fapi\u002Fmiddleware","docs\u002Fauth-h3client\u002F07.api\u002F01.middleware",{"title":224,"path":225,"stem":226},"Client-side Reference","\u002Fdocs\u002Fauth-h3client\u002Fapi\u002Fcomposables","docs\u002Fauth-h3client\u002F07.api\u002F02.composables",{"title":228,"path":229,"stem":230},"Utilities","\u002Fdocs\u002Fauth-h3client\u002Fapi\u002Futilities","docs\u002Fauth-h3client\u002F07.api\u002F03.utilities",{"title":232,"path":35,"stem":233,"children":234,"page":-1},"Bot Detector","docs\u002Fbot-detection\u002Findex",[235,236,239,243,247,266,340,343,346],{"title":232,"path":35,"stem":233},{"title":14,"path":237,"stem":238},"\u002Fdocs\u002Fbot-detection\u002Fgetting-started","docs\u002Fbot-detection\u002F00.getting-started",{"title":240,"path":241,"stem":242},"CLI","\u002Fdocs\u002Fbot-detection\u002Fcli","docs\u002Fbot-detection\u002F01.cli",{"title":244,"path":245,"stem":246},"Data Sources","\u002Fdocs\u002Fbot-detection\u002Fdata-sources","docs\u002Fbot-detection\u002F02.data-sources",{"title":185,"path":248,"stem":249,"children":250,"page":53},"\u002Fdocs\u002Fbot-detection\u002Fguides","docs\u002Fbot-detection\u002F03.guides",[251,255,259,262],{"title":252,"path":253,"stem":254},"Custom Checkers","\u002Fdocs\u002Fbot-detection\u002Fguides\u002Fcustom","docs\u002Fbot-detection\u002F03.guides\u002FCUSTOM",{"title":256,"path":257,"stem":258},"Scheduling Database Generation","\u002Fdocs\u002Fbot-detection\u002Fguides\u002Fgenerate","docs\u002Fbot-detection\u002F03.guides\u002FGENERATE",{"title":130,"path":260,"stem":261},"\u002Fdocs\u002Fbot-detection\u002Fguides\u002Flogging","docs\u002Fbot-detection\u002F03.guides\u002FLOGGING",{"title":263,"path":264,"stem":265},"Score Modes and Reputation Healing","\u002Fdocs\u002Fbot-detection\u002Fguides\u002Fscore","docs\u002Fbot-detection\u002F03.guides\u002FSCORE",{"title":267,"path":268,"stem":269,"children":270,"page":-1},"Checkers","\u002Fdocs\u002Fbot-detection\u002Fcheckers","docs\u002Fbot-detection\u002F04.checkers\u002Findex",[271,272,276,280,284,288,292,296,300,304,308,312,316,320,324,328,332,336],{"title":267,"path":268,"stem":269},{"title":273,"path":274,"stem":275},"IP Validation","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fip-validation","docs\u002Fbot-detection\u002F04.checkers\u002F01.ip-validation",{"title":277,"path":278,"stem":279},"Good \u002F Bad Bot Verification","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fgood-bots","docs\u002Fbot-detection\u002F04.checkers\u002F02.good-bots",{"title":281,"path":282,"stem":283},"Browser & Device Fingerprint","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fbrowser-device","docs\u002Fbot-detection\u002F04.checkers\u002F03.browser-device",{"title":285,"path":286,"stem":287},"Locale Map","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Flocale-map","docs\u002Fbot-detection\u002F04.checkers\u002F04.locale-map",{"title":289,"path":290,"stem":291},"Known Threats","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fknown-threats","docs\u002Fbot-detection\u002F04.checkers\u002F05.known-threats",{"title":293,"path":294,"stem":295},"ASN Classification","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fasn-classification","docs\u002Fbot-detection\u002F04.checkers\u002F06.asn-classification",{"title":297,"path":298,"stem":299},"Tor Analysis","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Ftor-analysis","docs\u002Fbot-detection\u002F04.checkers\u002F07.tor-analysis",{"title":301,"path":302,"stem":303},"Timezone Consistency","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Ftimezone-consistency","docs\u002Fbot-detection\u002F04.checkers\u002F08.timezone-consistency",{"title":305,"path":306,"stem":307},"Honeypot","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fhoneypot","docs\u002Fbot-detection\u002F04.checkers\u002F09.honeypot",{"title":309,"path":310,"stem":311},"Known Bad IPs","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fknown-bad-ips","docs\u002Fbot-detection\u002F04.checkers\u002F10.known-bad-ips",{"title":313,"path":314,"stem":315},"Behavior Rate","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fbehavior-rate","docs\u002Fbot-detection\u002F04.checkers\u002F11.behavior-rate",{"title":317,"path":318,"stem":319},"Proxy \u002F ISP \u002F Cookie","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fproxy-isp-cookies","docs\u002Fbot-detection\u002F04.checkers\u002F12.proxy-isp-cookies",{"title":321,"path":322,"stem":323},"Session Coherence","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fsession-coherence","docs\u002Fbot-detection\u002F04.checkers\u002F13.session-coherence",{"title":325,"path":326,"stem":327},"Velocity Fingerprint","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fvelocity-fingerprint","docs\u002Fbot-detection\u002F04.checkers\u002F14.velocity-fingerprint",{"title":329,"path":330,"stem":331},"UA & Header Analysis","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fua-header","docs\u002Fbot-detection\u002F04.checkers\u002F15.ua-header",{"title":333,"path":334,"stem":335},"Geolocation","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fgeolocation","docs\u002Fbot-detection\u002F04.checkers\u002F16.geolocation",{"title":337,"path":338,"stem":339},"Known Bad User-Agents","\u002Fdocs\u002Fbot-detection\u002Fcheckers\u002Fknown-bad-ua","docs\u002Fbot-detection\u002F04.checkers\u002F17.known-bad-ua",{"title":38,"path":341,"stem":342},"\u002Fdocs\u002Fbot-detection\u002Fsecurity","docs\u002Fbot-detection\u002F04.security",{"title":210,"path":344,"stem":345},"\u002Fdocs\u002Fbot-detection\u002Fapi","docs\u002Fbot-detection\u002F05.api",{"title":206,"path":347,"stem":348},"\u002Fdocs\u002Fbot-detection\u002Fconfiguration","docs\u002Fbot-detection\u002F06.configuration",{"title":350,"path":11,"stem":351,"children":352},"Introduction","docs\u002Fgetting-started\u002Findex",[353],{"title":350,"path":11,"stem":351},{"title":27,"path":29,"stem":355,"children":356,"page":-1},"docs\u002Fiam\u002Findex",[357,358,361,496,499,515,518],{"title":27,"path":29,"stem":355},{"title":14,"path":359,"stem":360},"\u002Fdocs\u002Fiam\u002Fgetting-started","docs\u002Fiam\u002F00.getting-started",{"title":97,"path":362,"stem":363,"children":364,"page":-1},"\u002Fdocs\u002Fiam\u002Fessentials","docs\u002Fiam\u002F01.essentials\u002Findex",[365,366,370,374,378,382,386,390,394,398,402,406,409,413,417,421,425,428,432,436,439,443,446],{"title":97,"path":362,"stem":363},{"title":367,"path":368,"stem":369},"Tokens","\u002Fdocs\u002Fiam\u002Fessentials\u002Ftokens","docs\u002Fiam\u002F01.essentials\u002F00.tokens",{"title":371,"path":372,"stem":373},"Access Tokens","\u002Fdocs\u002Fiam\u002Fessentials\u002Faccess-tokens","docs\u002Fiam\u002F01.essentials\u002F01.access-tokens",{"title":375,"path":376,"stem":377},"Refresh Tokens","\u002Fdocs\u002Fiam\u002Fessentials\u002Frefresh-tokens","docs\u002Fiam\u002F01.essentials\u002F02.refresh-tokens",{"title":379,"path":380,"stem":381},"Anomaly Detection","\u002Fdocs\u002Fiam\u002Fessentials\u002Fanomalies","docs\u002Fiam\u002F01.essentials\u002F03.anomalies",{"title":383,"path":384,"stem":385},"Signup","\u002Fdocs\u002Fiam\u002Fessentials\u002Fsignup","docs\u002Fiam\u002F01.essentials\u002F04.signup",{"title":387,"path":388,"stem":389},"Login","\u002Fdocs\u002Fiam\u002Fessentials\u002Flogin","docs\u002Fiam\u002F01.essentials\u002F05.login",{"title":391,"path":392,"stem":393},"Logout","\u002Fdocs\u002Fiam\u002Fessentials\u002Flogout","docs\u002Fiam\u002F01.essentials\u002F06.logout",{"title":395,"path":396,"stem":397},"OAuth","\u002Fdocs\u002Fiam\u002Fessentials\u002Foauth","docs\u002Fiam\u002F01.essentials\u002F07.oauth",{"title":399,"path":400,"stem":401},"Magic Links","\u002Fdocs\u002Fiam\u002Fessentials\u002Fmagic-links","docs\u002Fiam\u002F01.essentials\u002F08.magic-links",{"title":403,"path":404,"stem":405},"Emails","\u002Fdocs\u002Fiam\u002Fessentials\u002Femails","docs\u002Fiam\u002F01.essentials\u002F09.emails",{"title":134,"path":407,"stem":408},"\u002Fdocs\u002Fiam\u002Fessentials\u002Fmfa","docs\u002Fiam\u002F01.essentials\u002F10.mfa",{"title":410,"path":411,"stem":412},"Fingerprinting","\u002Fdocs\u002Fiam\u002Fessentials\u002Ffingerprinting","docs\u002Fiam\u002F01.essentials\u002F11.fingerprinting",{"title":414,"path":415,"stem":416},"Backend for Frontend","\u002Fdocs\u002Fiam\u002Fessentials\u002Fbff","docs\u002Fiam\u002F01.essentials\u002F12.bff",{"title":418,"path":419,"stem":420},"HMAC Authentication","\u002Fdocs\u002Fiam\u002Fessentials\u002Fhmac","docs\u002Fiam\u002F01.essentials\u002F13.hmac",{"title":422,"path":423,"stem":424},"XSS Protection","\u002Fdocs\u002Fiam\u002Fessentials\u002Fxss","docs\u002Fiam\u002F01.essentials\u002F14.xss",{"title":130,"path":426,"stem":427},"\u002Fdocs\u002Fiam\u002Fessentials\u002Flogging","docs\u002Fiam\u002F01.essentials\u002F15.logging",{"title":429,"path":430,"stem":431},"Rate Limiting","\u002Fdocs\u002Fiam\u002Fessentials\u002Frate-limiting","docs\u002Fiam\u002F01.essentials\u002F16.rate-limiting",{"title":433,"path":434,"stem":435},"Database","\u002Fdocs\u002Fiam\u002Fessentials\u002Fdatabase","docs\u002Fiam\u002F01.essentials\u002F17.database",{"title":126,"path":437,"stem":438},"\u002Fdocs\u002Fiam\u002Fessentials\u002Fcookies","docs\u002Fiam\u002F01.essentials\u002F18.cookies",{"title":440,"path":441,"stem":442},"Service Startup","\u002Fdocs\u002Fiam\u002Fessentials\u002Fservice","docs\u002Fiam\u002F01.essentials\u002F19.service",{"title":144,"path":444,"stem":445},"\u002Fdocs\u002Fiam\u002Fessentials\u002Fpassword-reset","docs\u002Fiam\u002F01.essentials\u002F20.password-reset",{"title":447,"path":448,"stem":449,"children":450,"page":-1},"API Tokens","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi","docs\u002Fiam\u002F01.essentials\u002F21.api\u002Findex",[451,452,456,460,490,493],{"title":447,"path":448,"stem":449},{"title":453,"path":454,"stem":455},"Creating Tokens","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fcreation","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F00.creation",{"title":457,"path":458,"stem":459},"Verifying Tokens","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fverification","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F01.verification",{"title":461,"path":462,"stem":463,"children":464,"page":-1},"Management","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fmanagement","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F02.management\u002Findex",[465,466,470,474,478,482,486],{"title":461,"path":462,"stem":463},{"title":467,"path":468,"stem":469},"Privilege and Scopes","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fmanagement\u002Fprivilege","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F02.management\u002F00.privilege",{"title":471,"path":472,"stem":473},"Revocation","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fmanagement\u002Frevocation","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F02.management\u002F01.revocation",{"title":475,"path":476,"stem":477},"Rotation","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fmanagement\u002Frotation","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F02.management\u002F02.rotation",{"title":479,"path":480,"stem":481},"IP Restriction","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fmanagement\u002Fip-updates","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F02.management\u002F03.ip-updates",{"title":483,"path":484,"stem":485},"Metadata","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fmanagement\u002Fmetadata","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F02.management\u002F04.metadata",{"title":487,"path":488,"stem":489},"Token Listing","\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fmanagement\u002Flist","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F02.management\u002F05.list",{"title":429,"path":491,"stem":492},"\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Frate-limiting","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F03.rate-limiting",{"title":38,"path":494,"stem":495},"\u002Fdocs\u002Fiam\u002Fessentials\u002Fapi\u002Fsecurity","docs\u002Fiam\u002F01.essentials\u002F21.api\u002F04.security",{"title":38,"path":497,"stem":498},"\u002Fdocs\u002Fiam\u002Fsecurity","docs\u002Fiam\u002F02.security",{"title":185,"path":500,"stem":501,"children":502,"page":53},"\u002Fdocs\u002Fiam\u002Fguides","docs\u002Fiam\u002F03.guides",[503,507,511],{"title":504,"path":505,"stem":506},"Deployment","\u002Fdocs\u002Fiam\u002Fguides\u002Fdeployment","docs\u002Fiam\u002F03.guides\u002Fdeployment",{"title":508,"path":509,"stem":510},"Operation Scripts","\u002Fdocs\u002Fiam\u002Fguides\u002Foperation-scripts","docs\u002Fiam\u002F03.guides\u002Foperation-scripts",{"title":512,"path":513,"stem":514},"Role-Based Access Control","\u002Fdocs\u002Fiam\u002Fguides\u002Frbac","docs\u002Fiam\u002F03.guides\u002Frbac",{"title":206,"path":516,"stem":517},"\u002Fdocs\u002Fiam\u002Fconfiguration","docs\u002Fiam\u002F04.configuration",{"title":519,"path":520,"stem":521,"children":522,"page":53},"Api","\u002Fdocs\u002Fiam\u002Fapi","docs\u002Fiam\u002F05.API",[523,526,529],{"title":210,"path":524,"stem":525},"\u002Fdocs\u002Fiam\u002Fapi\u002Fapi","docs\u002Fiam\u002F05.API\u002F00.api",{"title":220,"path":527,"stem":528},"\u002Fdocs\u002Fiam\u002Fapi\u002Fmiddlewares","docs\u002Fiam\u002F05.API\u002F02.middlewares",{"title":216,"path":530,"stem":531},"\u002Fdocs\u002Fiam\u002Fapi\u002Froutes","docs\u002Fiam\u002F05.API\u002F03.routes",{"title":40,"path":42,"stem":533,"children":534,"page":-1},"docs\u002Fshield-base\u002Findex",[535,536,539,543,584,588,592,596],{"title":40,"path":42,"stem":533},{"title":14,"path":537,"stem":538},"\u002Fdocs\u002Fshield-base\u002Fgetting-started","docs\u002Fshield-base\u002F00.getting-started",{"title":540,"path":541,"stem":542},"CLI Reference","\u002Fdocs\u002Fshield-base\u002Fcli","docs\u002Fshield-base\u002F01.cli",{"title":244,"path":544,"stem":545,"children":546,"page":-1},"\u002Fdocs\u002Fshield-base\u002Fdata-sources","docs\u002Fshield-base\u002F02.data-sources\u002Findex",[547,548,552,556,560,564,568,572,576,580],{"title":244,"path":544,"stem":545},{"title":549,"path":550,"stem":551},"BGP \u002F ASN","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Fbgp","docs\u002Fshield-base\u002F02.data-sources\u002Fbgp",{"title":553,"path":554,"stem":555},"City Geolocation","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Fcity","docs\u002Fshield-base\u002F02.data-sources\u002Fcity",{"title":557,"path":558,"stem":559},"Country Geolocation","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Fcountry","docs\u002Fshield-base\u002F02.data-sources\u002Fcountry",{"title":561,"path":562,"stem":563},"Verified Crawlers","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Fcrawlers","docs\u002Fshield-base\u002F02.data-sources\u002Fcrawlers",{"title":565,"path":566,"stem":567},"Disposable Emails","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Femail","docs\u002Fshield-base\u002F02.data-sources\u002Femail",{"title":569,"path":570,"stem":571},"FireHOL Threat Intelligence","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Ffirehol","docs\u002Fshield-base\u002F02.data-sources\u002Ffirehol",{"title":573,"path":574,"stem":575},"Proxy Detection","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Fproxy","docs\u002Fshield-base\u002F02.data-sources\u002Fproxy",{"title":577,"path":578,"stem":579},"Tor Nodes","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Ftor","docs\u002Fshield-base\u002F02.data-sources\u002Ftor",{"title":581,"path":582,"stem":583},"Suspicious User-Agents","\u002Fdocs\u002Fshield-base\u002Fdata-sources\u002Fuseragent","docs\u002Fshield-base\u002F02.data-sources\u002Fuseragent",{"title":585,"path":586,"stem":587},"Programmatic Usage","\u002Fdocs\u002Fshield-base\u002Fusage","docs\u002Fshield-base\u002F03.usage",{"title":589,"path":590,"stem":591},"Custom Data Sources","\u002Fdocs\u002Fshield-base\u002Fcustom-data-sources","docs\u002Fshield-base\u002F04.custom-data-sources",{"title":593,"path":594,"stem":595},"TypeScript Types","\u002Fdocs\u002Fshield-base\u002Ftypes","docs\u002Fshield-base\u002F05.types",{"title":210,"path":597,"stem":598},"\u002Fdocs\u002Fshield-base\u002Fapi","docs\u002Fshield-base\u002F06.api",{"title":228,"path":48,"stem":600,"children":601,"page":-1},"docs\u002Futils\u002Findex",[602,603,620,653,750],{"title":228,"path":48,"stem":600},{"title":604,"path":605,"stem":606,"children":607,"page":53},"Eslint","\u002Fdocs\u002Futils\u002Feslint","docs\u002Futils\u002Feslint",[608,612,616],{"title":609,"path":610,"stem":611},"React Config","\u002Fdocs\u002Futils\u002Feslint\u002Freact","docs\u002Futils\u002Feslint\u002Freact",{"title":613,"path":614,"stem":615},"TypeScript Config","\u002Fdocs\u002Futils\u002Feslint\u002Ftypescript","docs\u002Futils\u002Feslint\u002Ftypescript",{"title":617,"path":618,"stem":619},"Vue Config","\u002Fdocs\u002Futils\u002Feslint\u002Fvue","docs\u002Futils\u002Feslint\u002Fvue",{"title":621,"path":622,"stem":623,"children":624,"page":53},"Server","\u002Fdocs\u002Futils\u002Fserver","docs\u002Futils\u002Fserver",[625,629,633,637,641,645,649],{"title":626,"path":627,"stem":628},"Encryption","\u002Fdocs\u002Futils\u002Fserver\u002Fencryption","docs\u002Futils\u002Fserver\u002Fencryption",{"title":630,"path":631,"stem":632},"Path Resolver","\u002Fdocs\u002Futils\u002Fserver\u002Fpathresolver","docs\u002Futils\u002Fserver\u002FpathResolver",{"title":634,"path":635,"stem":636},"File Replacements","\u002Fdocs\u002Futils\u002Fserver\u002Freplace","docs\u002Futils\u002Fserver\u002Freplace",{"title":638,"path":639,"stem":640},"run","\u002Fdocs\u002Futils\u002Fserver\u002Frun","docs\u002Futils\u002Fserver\u002Frun",{"title":642,"path":643,"stem":644},"scheduleTask","\u002Fdocs\u002Futils\u002Fserver\u002Fscheduletask","docs\u002Futils\u002Fserver\u002FscheduleTask",{"title":646,"path":647,"stem":648},"spawnRun","\u002Fdocs\u002Futils\u002Fserver\u002Fspawnrun","docs\u002Futils\u002Fserver\u002FspawnRun",{"title":650,"path":651,"stem":652},"uploadCsv","\u002Fdocs\u002Futils\u002Fserver\u002Fuploadcsv","docs\u002Futils\u002Fserver\u002FuploadCsv",{"title":654,"path":655,"stem":656,"children":657,"page":53},"Shared","\u002Fdocs\u002Futils\u002Fshared","docs\u002Futils\u002Fshared",[658,662,666,670,674,678,682,686,690,694,698,702,706,710,714,718,722,726,730,734,738,742,746],{"title":659,"path":660,"stem":661},"BatchQueue","\u002Fdocs\u002Futils\u002Fshared\u002Fbatchqueue","docs\u002Futils\u002Fshared\u002FbatchQueue",{"title":663,"path":664,"stem":665},"capitalize","\u002Fdocs\u002Futils\u002Fshared\u002Fcapitalize","docs\u002Futils\u002Fshared\u002Fcapitalize",{"title":667,"path":668,"stem":669},"chunkProcess","\u002Fdocs\u002Futils\u002Fshared\u002Fchunkprocess","docs\u002Futils\u002Fshared\u002FchunkProcess",{"title":671,"path":672,"stem":673},"cleanObject","\u002Fdocs\u002Futils\u002Fshared\u002Fcleanobject","docs\u002Futils\u002Fshared\u002FcleanObject",{"title":675,"path":676,"stem":677},"createConfigManager","\u002Fdocs\u002Futils\u002Fshared\u002Fconfigurationdefiner","docs\u002Futils\u002Fshared\u002FconfigurationDefiner",{"title":679,"path":680,"stem":681},"debounce","\u002Fdocs\u002Futils\u002Fshared\u002Fdebounce","docs\u002Futils\u002Fshared\u002Fdebounce",{"title":683,"path":684,"stem":685},"ensureArray","\u002Fdocs\u002Futils\u002Fshared\u002Fensurearray","docs\u002Futils\u002Fshared\u002FensureArray",{"title":687,"path":688,"stem":689},"fetchWithRetry","\u002Fdocs\u002Futils\u002Fshared\u002Ffetchwithretry","docs\u002Futils\u002Fshared\u002FfetchWithRetry",{"title":691,"path":692,"stem":693},"filterEmptyValues","\u002Fdocs\u002Futils\u002Fshared\u002Ffilteremptyvalues","docs\u002Futils\u002Fshared\u002FfilterEmptyValues",{"title":695,"path":696,"stem":697},"findStringsInObject","\u002Fdocs\u002Futils\u002Fshared\u002Ffindobjectvalues","docs\u002Futils\u002Fshared\u002FfindObjectValues",{"title":699,"path":700,"stem":701},"fisherYatesShuffle","\u002Fdocs\u002Futils\u002Fshared\u002Ffisheryatesshuffle","docs\u002Futils\u002Fshared\u002FfisherYatesShuffle",{"title":703,"path":704,"stem":705},"getRandomImage","\u002Fdocs\u002Futils\u002Fshared\u002Fgetrandomimage","docs\u002Futils\u002Fshared\u002FgetRandomImage",{"title":707,"path":708,"stem":709},"isObjectHasValues","\u002Fdocs\u002Futils\u002Fshared\u002Fisobjecthasvalues","docs\u002Futils\u002Fshared\u002FisObjectHasValues",{"title":711,"path":712,"stem":713},"isAsyncOrPromise","\u002Fdocs\u002Futils\u002Fshared\u002Fispromise","docs\u002Futils\u002Fshared\u002FisPromise",{"title":715,"path":716,"stem":717},"MiniCache","\u002Fdocs\u002Futils\u002Fshared\u002Fminicache","docs\u002Futils\u002Fshared\u002FminiCache",{"title":719,"path":720,"stem":721},"parseCookies","\u002Fdocs\u002Futils\u002Fshared\u002Fparserawcookies","docs\u002Futils\u002Fshared\u002FparseRawCookies",{"title":723,"path":724,"stem":725},"safeAction","\u002Fdocs\u002Futils\u002Fshared\u002Fpromiselocker","docs\u002Futils\u002Fshared\u002FpromiseLocker",{"title":727,"path":728,"stem":729},"Random","\u002Fdocs\u002Futils\u002Fshared\u002Frandom","docs\u002Futils\u002Fshared\u002Frandom",{"title":731,"path":732,"stem":733},"range","\u002Fdocs\u002Futils\u002Fshared\u002Frange","docs\u002Futils\u002Fshared\u002Frange",{"title":735,"path":736,"stem":737},"rateLimiters","\u002Fdocs\u002Futils\u002Fshared\u002Fratelimiters","docs\u002Futils\u002Fshared\u002FrateLimiters",{"title":739,"path":740,"stem":741},"safeObjectMerge","\u002Fdocs\u002Futils\u002Fshared\u002Fsafemerge","docs\u002Futils\u002Fshared\u002FsafeMerge",{"title":743,"path":744,"stem":745},"textTruncation","\u002Fdocs\u002Futils\u002Fshared\u002Ftexttruncation","docs\u002Futils\u002Fshared\u002FtextTruncation",{"title":747,"path":748,"stem":749},"validateZodSchema","\u002Fdocs\u002Futils\u002Fshared\u002Fvalidatezodschema","docs\u002Futils\u002Fshared\u002FvalidateZodSchema",{"title":751,"path":752,"stem":753,"children":754,"page":-1},"Utility Types","\u002Fdocs\u002Futils\u002Ftypes","docs\u002Futils\u002Ftypes\u002Findex",[755,756,760,764,768,772,776,780,784,788],{"title":751,"path":752,"stem":753},{"title":757,"path":758,"stem":759},"Brand","\u002Fdocs\u002Futils\u002Ftypes\u002Fbrand","docs\u002Futils\u002Ftypes\u002FBrand",{"title":761,"path":762,"stem":763},"DeepPartial","\u002Fdocs\u002Futils\u002Ftypes\u002Fdeeppartial","docs\u002Futils\u002Ftypes\u002FDeepPartial",{"title":765,"path":766,"stem":767},"Merge","\u002Fdocs\u002Futils\u002Ftypes\u002Fmerge","docs\u002Futils\u002Ftypes\u002FMerge",{"title":769,"path":770,"stem":771},"NonNullable","\u002Fdocs\u002Futils\u002Ftypes\u002Fnonnullable","docs\u002Futils\u002Ftypes\u002FNonNullable",{"title":773,"path":774,"stem":775},"Prettify","\u002Fdocs\u002Futils\u002Ftypes\u002Fprettify","docs\u002Futils\u002Ftypes\u002FPrettify",{"title":777,"path":778,"stem":779},"PromiseType","\u002Fdocs\u002Futils\u002Ftypes\u002Fpromisetype","docs\u002Futils\u002Ftypes\u002FPromiseType",{"title":781,"path":782,"stem":783},"RequireKeys","\u002Fdocs\u002Futils\u002Ftypes\u002Frequirekeys","docs\u002Futils\u002Ftypes\u002FRequireKeys",{"title":785,"path":786,"stem":787},"StandardResponse","\u002Fdocs\u002Futils\u002Ftypes\u002Fstandardresponse","docs\u002Futils\u002Ftypes\u002FStandardResponse",{"title":789,"path":790,"stem":791},"ValueOf","\u002Fdocs\u002Futils\u002Ftypes\u002Fvalueof","docs\u002Futils\u002Ftypes\u002FValueOf",{"landing":793,"metadata":1237},{"id":794,"title":795,"body":796,"description":803,"extension":1231,"meta":1232,"navigation":8,"path":1233,"seo":1234,"stem":1235,"__hash__":1236},"landing\u002Findex.md","Distributed Authentication & Security",{"type":797,"value":798,"toc":1229},"minimark",[799,1225],[800,801,806],"u-page-hero",{":links":802,"description":803,"headline":804,"orientation":805,"title":795},"links","Drop-in authentication for Nuxt, Nitro, and H3. IAM service, BFF gateway, and bot detection — all wired together.","Riavzon Ecosystem","horizontal",[807,808,812,911,1031,1155],"u-tabs",{":items":809,":ui":810,"variant":811},"[{\"label\":\"Protect\",\"icon\":\"i-lucide-shield-check\",\"slot\":\"protect\"},{\"label\":\"Personalize\",\"icon\":\"i-lucide-user-cog\",\"slot\":\"personalize\"},{\"label\":\"Rotate Tokens\",\"icon\":\"i-lucide-refresh-cw\",\"slot\":\"rotate\"},{\"label\":\"Bots\",\"icon\":\"i-lucide-bot\",\"slot\":\"bots\"}]","{\"list\":\"overflow-x-auto overflow-y-hidden flex-nowrap scrollbar-hide\",\"trigger\":\"shrink-0\",\"label\":\"whitespace-nowrap\"}","link",[813,814,816],"template",{"v-slot:protect":815},"",[817,818,823],"pre",{"className":819,"code":820,"filename":821,"language":822,"meta":815,"style":815},"language-ts shiki shiki-themes light-plus light-plus dracula","export default defineAuthenticatedEventHandler((async) => {\n    const { userId } = event.context.authorizedData;\n    \u002F\u002F Do authenticated stuff\n})\n","protect.ts","ts",[824,825,826,860,898,905],"code",{"__ignoreMap":815},[827,828,831,835,838,842,846,850,853,857],"span",{"class":829,"line":830},"line",1,[827,832,834],{"class":833},"sZ328","export",[827,836,837],{"class":833}," default",[827,839,841],{"class":840},"sHOzp"," defineAuthenticatedEventHandler",[827,843,845],{"class":844},"sDd4n","((",[827,847,849],{"class":848},"sygFZ","async",[827,851,852],{"class":844},") ",[827,854,856],{"class":855},"sl46w","=>",[827,858,859],{"class":844}," {\n",[827,861,863,866,869,873,876,880,884,887,890,892,895],{"class":829,"line":862},2,[827,864,865],{"class":855},"    const",[827,867,868],{"class":844}," { ",[827,870,872],{"class":871},"s3JHE","userId",[827,874,875],{"class":844}," } ",[827,877,879],{"class":878},"saOXh","=",[827,881,883],{"class":882},"sjsA6"," event",[827,885,886],{"class":844},".",[827,888,889],{"class":882},"context",[827,891,886],{"class":844},[827,893,894],{"class":882},"authorizedData",[827,896,897],{"class":844},";\n",[827,899,901],{"class":829,"line":900},3,[827,902,904],{"class":903},"sghk6","    \u002F\u002F Do authenticated stuff\n",[827,906,908],{"class":829,"line":907},4,[827,909,910],{"class":844},"})\n",[813,912,913],{"v-slot:personalize":815},[817,914,917],{"className":819,"code":915,"filename":916,"language":822,"meta":815,"style":815},"import { defineOptionalAuthenticationEvent } from 'auth-h3client';\n export default defineOptionalAuthenticationEvent((event) => {\n    const {authorized, userId} = event.context.authorizedData;\n    if (authorized) {\n        \u002F\u002F Do stuff with userId\n    }\n});\n","personalize.ts",[824,918,919,947,968,1000,1013,1019,1025],{"__ignoreMap":815},[827,920,921,924,926,929,931,934,938,942,945],{"class":829,"line":830},[827,922,923],{"class":833},"import",[827,925,868],{"class":844},[827,927,928],{"class":882},"defineOptionalAuthenticationEvent",[827,930,875],{"class":844},[827,932,933],{"class":833},"from",[827,935,937],{"class":936},"sFkSl"," '",[827,939,941],{"class":940},"sFB1V","auth-h3client",[827,943,944],{"class":936},"'",[827,946,897],{"class":844},[827,948,949,952,954,957,959,962,964,966],{"class":829,"line":862},[827,950,951],{"class":833}," export",[827,953,837],{"class":833},[827,955,956],{"class":840}," defineOptionalAuthenticationEvent",[827,958,845],{"class":844},[827,960,961],{"class":848},"event",[827,963,852],{"class":844},[827,965,856],{"class":855},[827,967,859],{"class":844},[827,969,970,972,975,978,981,983,986,988,990,992,994,996,998],{"class":829,"line":900},[827,971,865],{"class":855},[827,973,974],{"class":844}," {",[827,976,977],{"class":871},"authorized",[827,979,980],{"class":844},", ",[827,982,872],{"class":871},[827,984,985],{"class":844},"} ",[827,987,879],{"class":878},[827,989,883],{"class":882},[827,991,886],{"class":844},[827,993,889],{"class":882},[827,995,886],{"class":844},[827,997,894],{"class":882},[827,999,897],{"class":844},[827,1001,1002,1005,1008,1010],{"class":829,"line":907},[827,1003,1004],{"class":833},"    if",[827,1006,1007],{"class":844}," (",[827,1009,977],{"class":882},[827,1011,1012],{"class":844},") {\n",[827,1014,1016],{"class":829,"line":1015},5,[827,1017,1018],{"class":903},"        \u002F\u002F Do stuff with userId\n",[827,1020,1022],{"class":829,"line":1021},6,[827,1023,1024],{"class":844},"    }\n",[827,1026,1028],{"class":829,"line":1027},7,[827,1029,1030],{"class":844},"});\n",[813,1032,1033],{"v-slot:rotate":815},[817,1034,1037],{"className":819,"code":1035,"filename":1036,"language":822,"meta":815,"style":815},"import {ensureValidCredentials} from 'auth-h3client'\nexport default defineEventHandler( async (event) => {\n    const value = await ensureValidCredentials(event);\n    const newToken = event.context.accessToken;\n    const newRefreshToken = event.context.session;\n})\n","rotate.ts",[824,1038,1039,1059,1083,1107,1129,1151],{"__ignoreMap":815},[827,1040,1041,1043,1045,1048,1050,1052,1054,1056],{"class":829,"line":830},[827,1042,923],{"class":833},[827,1044,974],{"class":844},[827,1046,1047],{"class":882},"ensureValidCredentials",[827,1049,985],{"class":844},[827,1051,933],{"class":833},[827,1053,937],{"class":936},[827,1055,941],{"class":940},[827,1057,1058],{"class":936},"'\n",[827,1060,1061,1063,1065,1068,1071,1073,1075,1077,1079,1081],{"class":829,"line":862},[827,1062,834],{"class":833},[827,1064,837],{"class":833},[827,1066,1067],{"class":840}," defineEventHandler",[827,1069,1070],{"class":844},"( ",[827,1072,849],{"class":855},[827,1074,1007],{"class":844},[827,1076,961],{"class":848},[827,1078,852],{"class":844},[827,1080,856],{"class":855},[827,1082,859],{"class":844},[827,1084,1085,1087,1090,1093,1096,1099,1102,1104],{"class":829,"line":900},[827,1086,865],{"class":855},[827,1088,1089],{"class":871}," value",[827,1091,1092],{"class":878}," =",[827,1094,1095],{"class":833}," await",[827,1097,1098],{"class":840}," ensureValidCredentials",[827,1100,1101],{"class":844},"(",[827,1103,961],{"class":882},[827,1105,1106],{"class":844},");\n",[827,1108,1109,1111,1114,1116,1118,1120,1122,1124,1127],{"class":829,"line":907},[827,1110,865],{"class":855},[827,1112,1113],{"class":871}," newToken",[827,1115,1092],{"class":878},[827,1117,883],{"class":882},[827,1119,886],{"class":844},[827,1121,889],{"class":882},[827,1123,886],{"class":844},[827,1125,1126],{"class":882},"accessToken",[827,1128,897],{"class":844},[827,1130,1131,1133,1136,1138,1140,1142,1144,1146,1149],{"class":829,"line":1015},[827,1132,865],{"class":855},[827,1134,1135],{"class":871}," newRefreshToken",[827,1137,1092],{"class":878},[827,1139,883],{"class":882},[827,1141,886],{"class":844},[827,1143,889],{"class":882},[827,1145,886],{"class":844},[827,1147,1148],{"class":882},"session",[827,1150,897],{"class":844},[827,1152,1153],{"class":829,"line":1021},[827,1154,910],{"class":844},[813,1156,1157],{"v-slot:bots":815},[817,1158,1161],{"className":819,"code":1159,"filename":1160,"language":822,"meta":815,"style":815},"    import {botDetectorMiddleware} from 'auth-h3client'\n    export default defineEventHandler( async (event) => {\n        await botDetectorMiddleware(event);\n    })\n\n","bots.ts",[824,1162,1163,1183,1206,1220],{"__ignoreMap":815},[827,1164,1165,1168,1170,1173,1175,1177,1179,1181],{"class":829,"line":830},[827,1166,1167],{"class":833},"    import",[827,1169,974],{"class":844},[827,1171,1172],{"class":882},"botDetectorMiddleware",[827,1174,985],{"class":844},[827,1176,933],{"class":833},[827,1178,937],{"class":936},[827,1180,941],{"class":940},[827,1182,1058],{"class":936},[827,1184,1185,1188,1190,1192,1194,1196,1198,1200,1202,1204],{"class":829,"line":862},[827,1186,1187],{"class":833},"    export",[827,1189,837],{"class":833},[827,1191,1067],{"class":840},[827,1193,1070],{"class":844},[827,1195,849],{"class":855},[827,1197,1007],{"class":844},[827,1199,961],{"class":848},[827,1201,852],{"class":844},[827,1203,856],{"class":855},[827,1205,859],{"class":844},[827,1207,1208,1211,1214,1216,1218],{"class":829,"line":900},[827,1209,1210],{"class":833},"        await",[827,1212,1213],{"class":840}," botDetectorMiddleware",[827,1215,1101],{"class":844},[827,1217,961],{"class":882},[827,1219,1106],{"class":844},[827,1221,1222],{"class":829,"line":907},[827,1223,1224],{"class":844},"    })\n",[1226,1227,1228],"style",{},"html pre.shiki code .sZ328, html code.shiki .sZ328{--shiki-light:#AF00DB;--shiki-default:#AF00DB;--shiki-dark:#FF79C6}html pre.shiki code .sHOzp, html code.shiki .sHOzp{--shiki-light:#795E26;--shiki-default:#795E26;--shiki-dark:#50FA7B}html pre.shiki code .sDd4n, html code.shiki .sDd4n{--shiki-light:#000000;--shiki-default:#000000;--shiki-dark:#F8F8F2}html pre.shiki code .sygFZ, html code.shiki .sygFZ{--shiki-light:#001080;--shiki-light-font-style:inherit;--shiki-default:#001080;--shiki-default-font-style:inherit;--shiki-dark:#FFB86C;--shiki-dark-font-style:italic}html pre.shiki code .sl46w, html code.shiki .sl46w{--shiki-light:#0000FF;--shiki-default:#0000FF;--shiki-dark:#FF79C6}html pre.shiki code .s3JHE, html code.shiki .s3JHE{--shiki-light:#0070C1;--shiki-default:#0070C1;--shiki-dark:#F8F8F2}html pre.shiki code .saOXh, html code.shiki .saOXh{--shiki-light:#000000;--shiki-default:#000000;--shiki-dark:#FF79C6}html pre.shiki code .sjsA6, html code.shiki .sjsA6{--shiki-light:#001080;--shiki-default:#001080;--shiki-dark:#F8F8F2}html pre.shiki code .sghk6, html code.shiki .sghk6{--shiki-light:#008000;--shiki-default:#008000;--shiki-dark:#6272A4}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);}html pre.shiki code .sFkSl, html code.shiki .sFkSl{--shiki-light:#A31515;--shiki-default:#A31515;--shiki-dark:#E9F284}html pre.shiki code .sFB1V, html code.shiki .sFB1V{--shiki-light:#A31515;--shiki-default:#A31515;--shiki-dark:#F1FA8C}",{"title":815,"searchDepth":862,"depth":862,"links":1230},[],"md",{},"\u002F",{"title":795,"description":803},"index","jp_rQ3Z6zdW1WDSYopkQUKE-_E9pPtyDaOiG_REu9_A",{"id":1238,"extension":5,"featuresMetaData":1239,"meta":1291,"stem":1292,"tools":1293,"__hash__":1303},"metadata\u002Fmetadata.json",{"featuresTitle":1240,"featuresDescription":1241,"features":1242},"Ecosystem Capabilities","Discover the powerful features that make up the Riavzon security and authentication infrastructure.",[1243,1248,1253,1258,1263,1268,1273,1278,1282,1287],{"title":1244,"description":1245,"icon":1246,"to":1247},"Centralized Identity Management","Complete signup, login, and comprehensive user session management providing a robust single source of truth for your applications.","i-lucide-users","\u002Fdocs\u002Fauth",{"title":1249,"description":1250,"icon":1251,"to":1252},"Advanced Bot Defense","Multi-layered traffic analysis that intelligently identifies and blocks sophisticated scrapers while permitting known search engines.","i-lucide-bot","\u002Fdocs\u002Fbot-detector",{"title":1254,"description":1255,"icon":1256,"to":1257},"Robust Token Architecture","Enterprise-grade JWT security utilizing long-lived hashed refresh tokens alongside fast, stateless, short-lived access tokens.","i-lucide-key","\u002Fdocs\u002Fauth\u002Ftokens",{"title":1259,"description":1260,"icon":1261,"to":1262},"Passwordless Auth & MFA","Enhance user security and experience with built-in support for secure magic links and email-based Multi-Factor Authentication.","i-lucide-mail","\u002Fdocs\u002Fauth\u002Fmfa",{"title":1264,"description":1265,"icon":1266,"to":1267},"Dynamic Traffic Filtering","Protect downstream endpoints with granular IP validation, deep GeoIP tracking, proxy detection, and customizable penalty scoring.","i-lucide-shield-alert","\u002Fdocs\u002Fbot-detector\u002Ffiltering",{"title":1269,"description":1270,"icon":1271,"to":1272},"Seamless OAuth","Pre-configured third-party authentication flows that synchronize natively and effortlessly with your core user database.","i-lucide-plug","\u002Fdocs\u002Fauth\u002Foauth",{"title":1274,"description":1275,"icon":1276,"to":1277},"Persistent Rate Limiting","Mitigate brute-force attacks via comprehensive multi-tiered burst and sustained rate limiting, backed securely by MySQL.","i-lucide-timer","\u002Fdocs\u002Fauth\u002Frate-limiting",{"title":1279,"description":1280,"icon":1281,"to":11},"Native Framework Support","Drop-in caching, routing, middlewares, and strict utilities designed specifically to integrate with Nuxt, Nitro, and Express.","i-lucide-blocks",{"title":1283,"description":1284,"icon":1285,"to":1286},"HMAC Request Sealing","Ensure total integrity and authenticity of server-to-server requests originating from the edge gateway using HMAC-SHA256 signatures.","i-lucide-file-signature","\u002Fdocs\u002Fauth\u002Fserver-to-server",{"title":1288,"description":1289,"icon":1290,"to":1286},"Mutual TLS (mTLS)","Enforce rigorous enterprise security standards by requiring bi-directional cryptographic identity validation for internal network traffic.","i-lucide-lock",{},"metadata",[1294,1295,1296,1297,1298,1299,1300,1301,1302],"vscode-icons:file-type-node","i-simple-icons-typescript","i-simple-icons-sqlite","i-simple-icons-express","i-simple-icons-redis","i-simple-icons-vuedotjs","i-simple-icons-nuxtdotjs","custom:nitro","custom:h3","rjs47xsoUFL9CGrUTdO23J0wi9OIh7kTWmU8U-MWbbg",1780564508514]