[{"data":1,"prerenderedAt":792},["ShallowReactive",2],{"navigation_docs":3,"-getting-started-installation":265,"-getting-started-installation-surround":787},[4,35,49,89,117,164,193,235,253,257,261],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"Getting Started",false,"/getting-started","1.getting-started",[10,15,20,25,30],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","/getting-started/introduction","1.getting-started/2.introduction","i-lucide-house",{"title":16,"path":17,"stem":18,"icon":19},"Installation","/getting-started/installation","1.getting-started/3.installation","i-lucide-download",{"title":21,"path":22,"stem":23,"icon":24},"Quick Start","/getting-started/quick-start","1.getting-started/4.quick-start","i-lucide-rocket",{"title":26,"path":27,"stem":28,"icon":29},"Configuration","/getting-started/configuration","1.getting-started/5.configuration","i-lucide-sliders-horizontal",{"title":31,"path":32,"stem":33,"icon":34},"First Auth","/getting-started/first-auth","1.getting-started/6.first-auth","i-lucide-key-round",{"title":36,"path":37,"stem":38,"children":39,"page":6},"Migration","/migration","10.migration",[40,45],{"title":41,"path":42,"stem":43,"icon":44},"Migration depuis Firebase Auth","/migration/from-firebase","10.migration/1.from-firebase","i-lucide-arrow-right-left",{"title":46,"path":47,"stem":48,"icon":44},"Migration depuis Supabase Auth","/migration/from-supabase","10.migration/2.from-supabase",{"title":50,"path":51,"stem":52,"children":53,"page":6},"Core Concepts","/core-concepts","2.core-concepts",[54,59,64,69,74,79,84],{"title":55,"path":56,"stem":57,"icon":58},"Architecture","/core-concepts/architecture","2.core-concepts/1.architecture","i-lucide-layers",{"title":60,"path":61,"stem":62,"icon":63},"Providers","/core-concepts/providers","2.core-concepts/2.providers","i-lucide-plug",{"title":65,"path":66,"stem":67,"icon":68},"Sessions","/core-concepts/sessions","2.core-concepts/3.sessions","i-lucide-timer",{"title":70,"path":71,"stem":72,"icon":73},"Storage","/core-concepts/storage","2.core-concepts/4.storage","i-lucide-database",{"title":75,"path":76,"stem":77,"icon":78},"Reactivity","/core-concepts/reactivity","2.core-concepts/5.reactivity","i-lucide-activity",{"title":80,"path":81,"stem":82,"icon":83},"Callbacks","/core-concepts/callbacks","2.core-concepts/6.callbacks","i-lucide-shield-check",{"title":85,"path":86,"stem":87,"icon":88},"Events","/core-concepts/events","2.core-concepts/7.events","i-lucide-radio",{"title":60,"path":90,"stem":91,"children":92,"page":6},"/providers","3.providers",[93,97,101,105,109,113],{"title":94,"path":95,"stem":96},"Credentials Provider","/providers/credentials","3.providers/1.credentials",{"title":98,"path":99,"stem":100},"OAuth2 Provider","/providers/oauth2","3.providers/2.oauth2",{"title":102,"path":103,"stem":104},"Google Provider","/providers/google","3.providers/3.google",{"title":106,"path":107,"stem":108},"GitHub Provider","/providers/github","3.providers/4.github",{"title":110,"path":111,"stem":112},"Apple Provider","/providers/apple","3.providers/5.apple",{"title":114,"path":115,"stem":116},"Proxy OAuth Provider","/providers/proxy-oauth","3.providers/6.proxy-oauth",{"title":118,"path":119,"stem":120,"children":121,"page":6},"Guides","/guides","4.guides",[122,126,131,136,141,146,151,155,159],{"title":123,"path":124,"stem":125},"Email / Password Auth","/guides/email-auth","4.guides/1.email-auth",{"title":127,"path":128,"stem":129,"icon":130},"Custom OAuth2 Flow","/guides/oauth2-flow","4.guides/2.oauth2-flow","i-lucide-workflow",{"title":132,"path":133,"stem":134,"icon":135},"Deep Links & OAuth2 Callbacks","/guides/deep-links","4.guides/3.deep-links","i-lucide-link",{"title":137,"path":138,"stem":139,"icon":140},"Token Refresh","/guides/token-refresh","4.guides/4.token-refresh","i-lucide-refresh-cw",{"title":142,"path":143,"stem":144,"icon":145},"Multi-Account","/guides/multi-account","4.guides/5.multi-account","i-lucide-users",{"title":147,"path":148,"stem":149,"icon":150},"Route Protection","/guides/route-protection","4.guides/6.route-protection","i-lucide-lock",{"title":152,"path":153,"stem":154,"icon":63},"Custom Provider","/guides/custom-provider","4.guides/7.custom-provider",{"title":156,"path":157,"stem":158,"icon":73},"Custom Storage","/guides/custom-storage","4.guides/8.custom-storage",{"title":160,"path":161,"stem":162,"icon":163},"Testing","/guides/testing","4.guides/9.testing","i-lucide-flask-conical",{"title":165,"path":166,"stem":167,"children":168,"page":6},"Flutter","/flutter","5.flutter",[169,173,178,183,188],{"title":170,"path":171,"stem":172},"Flutter Setup","/flutter/setup","5.flutter/1.setup",{"title":174,"path":175,"stem":176,"icon":177},"Secure Storage","/flutter/secure-storage","5.flutter/2.secure-storage","i-lucide-vault",{"title":179,"path":180,"stem":181,"icon":182},"Widgets","/flutter/widgets","5.flutter/3.widgets","i-lucide-layout",{"title":184,"path":185,"stem":186,"icon":187},"Router Guard","/flutter/router-guard","5.flutter/4.router-guard","i-lucide-signpost",{"title":189,"path":190,"stem":191,"icon":192},"App Binding","/flutter/app-binding","5.flutter/5.app-binding","i-lucide-cpu",{"title":194,"path":195,"stem":196,"children":197,"page":6},"API Reference","/api-reference","6.api-reference",[198,202,206,211,216,221,225,230],{"title":199,"path":200,"stem":201},"AuthyraClient","/api-reference/authyra-client","6.api-reference/1.authyra-client",{"title":203,"path":204,"stem":205},"AuthyraInstance","/api-reference/authyra-instance","6.api-reference/2.authyra-instance",{"title":207,"path":208,"stem":209,"icon":210},"AccountManager","/api-reference/account-manager","6.api-reference/3.account-manager","i-lucide-users-round",{"title":212,"path":213,"stem":214,"icon":215},"AuthProvider","/api-reference/auth-provider","6.api-reference/4.auth-provider","i-lucide-plug-zap",{"title":217,"path":218,"stem":219,"icon":220},"AuthStorage","/api-reference/auth-storage","6.api-reference/5.auth-storage","i-lucide-hard-drive",{"title":222,"path":223,"stem":224,"icon":68},"AuthSession","/api-reference/auth-session","6.api-reference/6.auth-session",{"title":226,"path":227,"stem":228,"icon":229},"AuthState","/api-reference/auth-state","6.api-reference/7.auth-state","i-lucide-toggle-right",{"title":231,"path":232,"stem":233,"icon":234},"Exceptions","/api-reference/auth-exceptions","6.api-reference/8.auth-exceptions","i-lucide-triangle-alert",{"title":236,"path":237,"stem":238,"children":239,"page":6},"Examples","/examples","7.examples",[240,244,249],{"title":241,"path":242,"stem":243},"Flutter App Example","/examples/flutter-app","7.examples/1.flutter-app",{"title":245,"path":246,"stem":247,"icon":248},"Dart Backend","/examples/dart-backend","7.examples/2.dart-backend","i-lucide-server",{"title":250,"path":251,"stem":252,"icon":163},"Testing Setup","/examples/testing-setup","7.examples/3.testing-setup",{"title":254,"path":255,"stem":256},"Troubleshooting","/troubleshooting","8.troubleshooting",{"title":258,"path":259,"stem":260},"FAQ","/faq","9.faq",{"title":262,"path":263,"stem":264},"Changelog","/changelog","changelog",{"id":266,"title":16,"body":267,"description":778,"extension":779,"links":780,"meta":781,"navigation":782,"path":17,"seo":783,"stem":18,"__hash__":786},"docs/1.getting-started/3.installation.md",{"type":268,"value":269,"toc":768},"minimark",[270,275,286,289,293,297,368,376,378,384,420,439,442,599,601,607,627,641,654,663,665,669,740,742,746,764],[271,272,274],"h2",{"id":273},"requirements","Requirements",[276,277,278],"ul",{},[279,280,281,282],"li",{},"Dart SDK ",[283,284,285],"strong",{},"≥ 3.5.0",[287,288],"hr",{},[271,290,292],{"id":291},"choose-your-package","Choose your package",[294,295,296],"p",{},"Authyra ships as two packages. Pick the one that matches your target:",[298,299,300,313],"table",{},[301,302,303],"thead",{},[304,305,306,310],"tr",{},[307,308,309],"th",{},"I'm building…",[307,311,312],{},"Add this package",[314,315,316,328,341,350,359],"tbody",{},[304,317,318,322],{},[319,320,321],"td",{},"A Flutter app with OAuth2 (Google, GitHub, Apple…)",[319,323,324],{},[325,326,327],"code",{},"authyra_flutter",[304,329,330,333],{},[319,331,332],{},"A Flutter app with email/password only",[319,334,335,337,338],{},[325,336,327],{}," or ",[325,339,340],{},"authyra",[304,342,343,346],{},[319,344,345],{},"A Dart backend (Shelf, Dart Frog)",[319,347,348],{},[325,349,340],{},[304,351,352,355],{},[319,353,354],{},"A Dart CLI tool",[319,356,357],{},[325,358,340],{},[304,360,361,364],{},[319,362,363],{},"Unit tests for auth logic",[319,365,366],{},[325,367,340],{},[294,369,370,372,373,375],{},[325,371,327],{}," re-exports the entire ",[325,374,340],{}," package, so Flutter apps only need one dependency.",[287,377],{},[271,379,381,382],{"id":380},"flutter-apps-authyra_flutter","Flutter apps — ",[325,383,327],{},[385,386,392],"pre",{"className":387,"code":388,"filename":389,"language":390,"meta":391,"style":391},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","dependencies:\n  authyra_flutter: ^0.1.0\n","pubspec.yaml","yaml","",[325,393,394,407],{"__ignoreMap":391},[395,396,399,403],"span",{"class":397,"line":398},"line",1,[395,400,402],{"class":401},"swJcz","dependencies",[395,404,406],{"class":405},"sMK4o",":\n",[395,408,410,413,416],{"class":397,"line":409},2,[395,411,412],{"class":401},"  authyra_flutter",[395,414,415],{"class":405},":",[395,417,419],{"class":418},"sfazB"," ^0.1.0\n",[385,421,425],{"className":422,"code":423,"language":424,"meta":391,"style":391},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","flutter pub get\n","bash",[325,426,427],{"__ignoreMap":391},[395,428,429,433,436],{"class":397,"line":398},[395,430,432],{"class":431},"sBMFI","flutter",[395,434,435],{"class":418}," pub",[395,437,438],{"class":418}," get\n",[294,440,441],{},"This gives you:",[298,443,444,454],{},[301,445,446],{},[304,447,448,451],{},[307,449,450],{},"What",[307,452,453],{},"Description",[314,455,456,465,478,488,497,507,517,527,537,547,557,570,580,590],{},[304,457,458,462],{},[319,459,460],{},[325,461,199],{},[319,463,464],{},"Stateless orchestrator",[304,466,467,475],{},[319,468,469,471,472],{},[325,470,203],{}," / ",[325,473,474],{},"Authyra",[319,476,477],{},"Singleton with reactive streams and sync state",[304,479,480,485],{},[319,481,482,484],{},[325,483,212],{}," interface",[319,486,487],{},"Implement to add any auth strategy",[304,489,490,494],{},[319,491,492,484],{},[325,493,217],{},[319,495,496],{},"Implement any persistence backend",[304,498,499,504],{},[319,500,501],{},[325,502,503],{},"CredentialsProvider",[319,505,506],{},"Email / password",[304,508,509,514],{},[319,510,511],{},[325,512,513],{},"OAuth2Provider",[319,515,516],{},"Authorization Code + PKCE (any IdP)",[304,518,519,524],{},[319,520,521],{},[325,522,523],{},"GoogleProvider",[319,525,526],{},"Prebuilt Google Sign-In",[304,528,529,534],{},[319,530,531],{},[325,532,533],{},"GitHubOAuth2Provider",[319,535,536],{},"Prebuilt GitHub OAuth",[304,538,539,544],{},[319,540,541],{},[325,542,543],{},"AppleProvider",[319,545,546],{},"Sign in with Apple",[304,548,549,554],{},[319,550,551],{},[325,552,553],{},"ProxyOAuthProvider",[319,555,556],{},"Backend-delegated OAuth (client secret stays server-side)",[304,558,559,564],{},[319,560,561],{},[325,562,563],{},"SecureAuthStorage",[319,565,566,569],{},[325,567,568],{},"flutter_secure_storage"," implementation — ready to use",[304,571,572,577],{},[319,573,574],{},[325,575,576],{},"OAuth2CallbackHandler",[319,578,579],{},"Deep-link router for OAuth redirects",[304,581,582,587],{},[319,583,584],{},[325,585,586],{},"InMemoryStorage",[319,588,589],{},"In-memory store for tests",[304,591,592,596],{},[319,593,594],{},[325,595,207],{},[319,597,598],{},"Multi-account switching and sign-out",[287,600],{},[271,602,604,605],{"id":603},"dart-backend-cli-authyra","Dart backend / CLI — ",[325,606,340],{},[385,608,610],{"className":387,"code":609,"filename":389,"language":390,"meta":391,"style":391},"dependencies:\n  authyra: ^0.1.0\n",[325,611,612,618],{"__ignoreMap":391},[395,613,614,616],{"class":397,"line":398},[395,615,402],{"class":401},[395,617,406],{"class":405},[395,619,620,623,625],{"class":397,"line":409},[395,621,622],{"class":401},"  authyra",[395,624,415],{"class":405},[395,626,419],{"class":418},[385,628,630],{"className":422,"code":629,"language":424,"meta":391,"style":391},"dart pub get\n",[325,631,632],{"__ignoreMap":391},[395,633,634,637,639],{"class":397,"line":398},[395,635,636],{"class":431},"dart",[395,638,435],{"class":418},[395,640,438],{"class":418},[294,642,643,644,647,648,650,651,653],{},"This gives you everything above ",[283,645,646],{},"except"," the OAuth2 providers, ",[325,649,563],{},", and ",[325,652,576],{}," (those depend on Flutter and platform APIs).",[294,655,656,657,659,660,662],{},"For backend auth flows, implement ",[325,658,212],{}," to talk to your identity server and implement ",[325,661,217],{}," with Redis, an encrypted DB column, or any key-value store.",[287,664],{},[271,666,668],{"id":667},"verify-the-install","Verify the install",[385,670,673],{"className":671,"code":672,"language":636,"meta":391,"style":391},"language-dart shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import 'package:authyra/authyra.dart'; // or authyra_flutter\n\nvoid main() {\n  print(AuthyraInstance.isInitialized); // false — not yet initialized\n}\n",[325,674,675,691,697,712,734],{"__ignoreMap":391},[395,676,677,681,684,687],{"class":397,"line":398},[395,678,680],{"class":679},"sbssI","import",[395,682,683],{"class":418}," 'package:authyra/authyra.dart'",[395,685,686],{"class":405},";",[395,688,690],{"class":689},"sHwdD"," // or authyra_flutter\n",[395,692,693],{"class":397,"line":409},[395,694,696],{"emptyLinePlaceholder":695},true,"\n",[395,698,700,704,708],{"class":397,"line":699},3,[395,701,703],{"class":702},"spNyl","void",[395,705,707],{"class":706},"s2Zo4"," main",[395,709,711],{"class":710},"sTEyZ","() {\n",[395,713,715,718,721,723,726,729,731],{"class":397,"line":714},4,[395,716,717],{"class":706},"  print",[395,719,720],{"class":710},"(",[395,722,203],{"class":431},[395,724,725],{"class":405},".",[395,727,728],{"class":710},"isInitialized)",[395,730,686],{"class":405},[395,732,733],{"class":689}," // false — not yet initialized\n",[395,735,737],{"class":397,"line":736},5,[395,738,739],{"class":710},"}\n",[287,741],{},[271,743,745],{"id":744},"next-steps","Next steps",[276,747,748,754,759],{},[279,749,750],{},[751,752,753],"a",{"href":22},"Quick Start →",[279,755,756],{},[751,757,758],{"href":56},"Architecture →",[279,760,761],{},[751,762,763],{"href":171},"Flutter Setup →",[765,766,767],"style",{},"html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}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 .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}",{"title":391,"searchDepth":409,"depth":409,"links":769},[770,771,772,774,776,777],{"id":273,"depth":409,"text":274},{"id":291,"depth":409,"text":292},{"id":380,"depth":409,"text":773},"Flutter apps — authyra_flutter",{"id":603,"depth":409,"text":775},"Dart backend / CLI — authyra",{"id":667,"depth":409,"text":668},{"id":744,"depth":409,"text":745},"Add Authyra to your Dart or Flutter project.","md",null,{},{"icon":19},{"title":784,"description":785},"Installation | Authyra","Install authyra (pure Dart) or authyra_flutter (Flutter + OAuth2 + SecureStorage) in your project.","UfMsZzgF9gCFxMs0s2Yy6_Dx_4oaHce0F-sArbkbWfw",[788,790],{"title":11,"path":12,"stem":13,"description":789,"icon":14,"children":-1},"What Authyra is, how it's structured, and when to use each package.",{"title":21,"path":22,"stem":23,"description":791,"icon":24,"children":-1},"Add authentication to your Dart or Flutter project in under 5 minutes.",1782700505387]