[{"data":1,"prerenderedAt":3853},["ShallowReactive",2],{"navigation":3,"\u002Fadvanced\u002Ftypescript-integration":170,"\u002Fadvanced\u002Ftypescript-integration-surround":3848},[4,18,43,75,103,120,134],{"title":5,"path":6,"stem":7,"children":8,"icon":17},"Getting Started","\u002Fgetting-started","1.getting-started\u002F1.index",[9,12],{"title":10,"path":6,"stem":7,"icon":11},"Introduction","i-simple-icons-laravel",{"title":13,"path":14,"stem":15,"icon":16},"Installation","\u002Fgetting-started\u002Finstallation","1.getting-started\u002F2.installation","i-lucide-download",false,{"title":19,"path":20,"stem":21,"children":22,"page":17},"Sanctum","\u002Fsanctum","2.sanctum",[23,28,33,38],{"title":24,"path":25,"stem":26,"icon":27},"Configuration","\u002Fsanctum\u002Fconfiguration","2.sanctum\u002F1.configuration","i-lucide-cog",{"title":29,"path":30,"stem":31,"icon":32},"Cookie Authentication","\u002Fsanctum\u002Fcookie","2.sanctum\u002F2.cookie","i-lucide-cookie",{"title":34,"path":35,"stem":36,"icon":37},"Sanctum 2FA Flow","\u002Fsanctum\u002Ftwo-factor","2.sanctum\u002F3.two-factor","i-lucide-shield-check",{"title":39,"path":40,"stem":41,"icon":42},"Server Proxy","\u002Fsanctum\u002Fproxy","2.sanctum\u002F4.proxy","i-lucide-waypoints",{"title":44,"path":45,"stem":46,"children":47,"page":17},"Passport","\u002Fpassport","3.passport",[48,51,56,61,66,70],{"title":24,"path":49,"stem":50,"icon":27},"\u002Fpassport\u002Fconfiguration","3.passport\u002F1.configuration",{"title":52,"path":53,"stem":54,"icon":55},"Login & Logout","\u002Fpassport\u002Flogin-logout","3.passport\u002F2.login-logout","i-lucide-log-in",{"title":57,"path":58,"stem":59,"icon":60},"Token Management","\u002Fpassport\u002Ftokens","3.passport\u002F3.tokens","i-lucide-key",{"title":62,"path":63,"stem":64,"icon":65},"Two-Factor Authentication","\u002Fpassport\u002Ftwo-factor","3.passport\u002F4.two-factor","i-lucide-shield",{"title":67,"path":68,"stem":69,"icon":37},"Middleware & Route Protection","\u002Fpassport\u002Fmiddleware","3.passport\u002F5.middleware",{"title":71,"path":72,"stem":73,"icon":74},"Examples & Use Cases","\u002Fpassport\u002Fexamples","3.passport\u002F6.examples","i-lucide-code",{"title":76,"path":77,"stem":78,"children":79,"page":17},"Composables","\u002Fcomposables","4.composables",[80,84,89,94,99],{"title":76,"path":81,"stem":82,"icon":83},"\u002Fcomposables\u002Fcomposables","4.composables\u002F1.composables","i-lucide-code-2",{"title":85,"path":86,"stem":87,"icon":88},"$autx","\u002Fcomposables\u002Fautx","4.composables\u002F2.autx","i-lucide-globe",{"title":90,"path":91,"stem":92,"icon":93},"useAuthConfig","\u002Fcomposables\u002Fuse-auth-config","4.composables\u002F3.use-auth-config","i-lucide-settings",{"title":95,"path":96,"stem":97,"icon":98},"useAuthStore","\u002Fcomposables\u002Fuse-auth-store","4.composables\u002F4.use-auth-store","i-lucide-database",{"title":100,"path":101,"stem":102,"icon":37},"useEnsureCsrf","\u002Fcomposables\u002Fuse-ensure-csrf","4.composables\u002F5.use-ensure-csrf",{"title":104,"path":105,"stem":106,"children":107,"page":17},"Middleware","\u002Fmiddleware","5.middleware",[108,111,116],{"title":104,"path":109,"stem":110,"icon":37},"\u002Fmiddleware\u002Fmiddleware","5.middleware\u002F1.middleware",{"title":112,"path":113,"stem":114,"icon":115},"auth","\u002Fmiddleware\u002Fauth","5.middleware\u002F2.auth","i-lucide-lock",{"title":117,"path":118,"stem":119,"icon":65},"two-factor","\u002Fmiddleware\u002Ftwo-factor","5.middleware\u002F3.two-factor",{"title":121,"path":122,"stem":123,"children":124,"page":17},"Hooks","\u002Fhooks","6.hooks",[125,129],{"title":121,"path":126,"stem":127,"icon":128},"\u002Fhooks\u002Fhooks","6.hooks\u002F1.hooks","i-lucide-webhook",{"title":130,"path":131,"stem":132,"icon":133},"prepare:types","\u002Fhooks\u002Fprepare-types","6.hooks\u002F2.prepare-types","i-lucide-file-code",{"title":135,"path":136,"stem":137,"children":138,"page":17},"Advanced","\u002Fadvanced","7.advanced",[139,143,148,152,156,161,165],{"title":135,"path":140,"stem":141,"icon":142},"\u002Fadvanced\u002Fadvanced","7.advanced\u002F1.advanced","i-lucide-settings-2",{"title":144,"path":145,"stem":146,"icon":147},"Custom Configuration","\u002Fadvanced\u002Fcustom-configuration","7.advanced\u002F2.custom-configuration","i-lucide-sliders",{"title":149,"path":150,"stem":151,"icon":32},"Cookie Configuration","\u002Fadvanced\u002Fcookie-configuration","7.advanced\u002F3.cookie-configuration",{"title":153,"path":154,"stem":155,"icon":133},"TypeScript Integration","\u002Fadvanced\u002Ftypescript-integration","7.advanced\u002F4.typescript-integration",{"title":157,"path":158,"stem":159,"icon":160},"Module Aliases","\u002Fadvanced\u002Fmodule-aliases","7.advanced\u002F5.module-aliases","i-lucide-square-library",{"title":162,"path":163,"stem":164,"icon":37},"Security Features","\u002Fadvanced\u002Fsecurity-features","7.advanced\u002F6.security-features",{"title":166,"path":167,"stem":168,"icon":169},"Runtime Configuration","\u002Fadvanced\u002Fruntime-configuration","7.advanced\u002F7.runtime-configuration","i-lucide-server",{"id":171,"title":153,"body":172,"description":3841,"extension":3842,"links":3843,"meta":3844,"navigation":3845,"path":154,"seo":3846,"stem":155,"__hash__":3847},"docs\u002F7.advanced\u002F4.typescript-integration.md",{"type":173,"value":174,"toc":3799},"minimark",[175,179,184,187,191,198,214,219,226,242,246,252,681,685,689,859,863,866,1011,1015,1019,1266,1270,1572,1576,1580,1862,1866,2050,2054,2177,2181,2184,2519,2523,2526,2797,2801,2804,3022,3026,3029,3152,3156,3159,3351,3355,3359,3362,3379,3383,3386,3400,3404,3407,3462,3497,3501,3505,3508,3530,3534,3537,3563,3567,3570,3590,3594,3623,3627,3631,3634,3674,3678,3681,3726,3730,3733,3749,3753,3756,3795],[176,177,178],"p",{},"Learn about TypeScript integration in Nuxt Umbu, including auto-generated types, type-safe composables, and IDE autocomplete support.",[180,181,183],"h2",{"id":182},"overview","Overview",[176,185,186],{},"Nuxt Umbu provides full TypeScript support with automatic type generation, ensuring type safety and excellent IDE autocomplete throughout your application.",[180,188,190],{"id":189},"automatic-type-generation","Automatic Type Generation",[176,192,193,194,197],{},"Nuxt Umbu automatically generates TypeScript types during the build process using the ",[195,196,130],"code",{}," hook. This ensures:",[199,200,201,205,208,211],"ul",{},[202,203,204],"li",{},"Full type safety for auth methods",[202,206,207],{},"IDE autocomplete for all auth functionality",[202,209,210],{},"Type checking at compile time",[202,212,213],{},"Provider-specific type definitions",[215,216,218],"h3",{"id":217},"generated-types-location","Generated Types Location",[176,220,221,222,225],{},"Types are generated in ",[195,223,224],{},".nuxt\u002Ftypes\u002Fumbu.d.ts"," and include:",[199,227,228,234,236,239],{},[202,229,230,233],{},[195,231,232],{},"AuthInstance"," interface with all auth methods",[202,235,213],{},[202,237,238],{},"Configuration option types",[202,240,241],{},"State management types",[180,243,245],{"id":244},"authinstance-interface","AuthInstance Interface",[176,247,248,249,251],{},"The main ",[195,250,232],{}," interface provides type-safe access to authentication functionality:",[253,254,259],"pre",{"className":255,"code":256,"language":257,"meta":258,"style":258},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","export interface AuthInstance {\n  $headers: Headers\n  readonly _prefix: string\n  readonly options: ModuleOptions\n  readonly state: AuthState\n\n  \u002F\u002F Properties\n  get user(): Record\u003Cstring, unknown> | null\n  get strategy(): string | null\n  get loggedIn(): boolean\n  get headers(): Headers\n  get prefix(): string | null\n\n  \u002F\u002F Methods\n  set headers(headers: Headers)\n  getRedirect(strategyName: string): Record\u003Cstring, unknown> | null\n  csrfToken(event?: H3Event): Promise\u003Cboolean>\n  initialize(): Promise\u003Cvoid>\n  loginWith(strategyName: string, value: Record\u003Cstring, unknown>): Promise\u003CRecord\u003Cstring, unknown>>\n  logout(strategyName: string): Promise\u003Cvoid>\n  twoFactor(strategyName: string, code: string): Promise\u003C{ success: boolean }>\n}\n","typescript","",[195,260,261,282,295,309,322,335,342,349,385,402,415,427,443,448,454,477,511,541,558,610,634,675],{"__ignoreMap":258},[262,263,266,270,274,278],"span",{"class":264,"line":265},"line",1,[262,267,269],{"class":268},"s7zQu","export",[262,271,273],{"class":272},"spNyl"," interface",[262,275,277],{"class":276},"sBMFI"," AuthInstance",[262,279,281],{"class":280},"sMK4o"," {\n",[262,283,285,289,292],{"class":264,"line":284},2,[262,286,288],{"class":287},"swJcz","  $headers",[262,290,291],{"class":280},":",[262,293,294],{"class":276}," Headers\n",[262,296,298,301,304,306],{"class":264,"line":297},3,[262,299,300],{"class":272},"  readonly",[262,302,303],{"class":287}," _prefix",[262,305,291],{"class":280},[262,307,308],{"class":276}," string\n",[262,310,312,314,317,319],{"class":264,"line":311},4,[262,313,300],{"class":272},[262,315,316],{"class":287}," options",[262,318,291],{"class":280},[262,320,321],{"class":276}," ModuleOptions\n",[262,323,325,327,330,332],{"class":264,"line":324},5,[262,326,300],{"class":272},[262,328,329],{"class":287}," state",[262,331,291],{"class":280},[262,333,334],{"class":276}," AuthState\n",[262,336,338],{"class":264,"line":337},6,[262,339,341],{"emptyLinePlaceholder":340},true,"\n",[262,343,345],{"class":264,"line":344},7,[262,346,348],{"class":347},"sHwdD","  \u002F\u002F Properties\n",[262,350,352,355,358,361,364,367,370,373,376,379,382],{"class":264,"line":351},8,[262,353,354],{"class":272},"  get",[262,356,357],{"class":287}," user",[262,359,360],{"class":280},"():",[262,362,363],{"class":276}," Record",[262,365,366],{"class":280},"\u003C",[262,368,369],{"class":276},"string",[262,371,372],{"class":280},",",[262,374,375],{"class":276}," unknown",[262,377,378],{"class":280},">",[262,380,381],{"class":280}," |",[262,383,384],{"class":276}," null\n",[262,386,388,390,393,395,398,400],{"class":264,"line":387},9,[262,389,354],{"class":272},[262,391,392],{"class":287}," strategy",[262,394,360],{"class":280},[262,396,397],{"class":276}," string",[262,399,381],{"class":280},[262,401,384],{"class":276},[262,403,405,407,410,412],{"class":264,"line":404},10,[262,406,354],{"class":272},[262,408,409],{"class":287}," loggedIn",[262,411,360],{"class":280},[262,413,414],{"class":276}," boolean\n",[262,416,418,420,423,425],{"class":264,"line":417},11,[262,419,354],{"class":272},[262,421,422],{"class":287}," headers",[262,424,360],{"class":280},[262,426,294],{"class":276},[262,428,430,432,435,437,439,441],{"class":264,"line":429},12,[262,431,354],{"class":272},[262,433,434],{"class":287}," prefix",[262,436,360],{"class":280},[262,438,397],{"class":276},[262,440,381],{"class":280},[262,442,384],{"class":276},[262,444,446],{"class":264,"line":445},13,[262,447,341],{"emptyLinePlaceholder":340},[262,449,451],{"class":264,"line":450},14,[262,452,453],{"class":347},"  \u002F\u002F Methods\n",[262,455,457,460,462,465,469,471,474],{"class":264,"line":456},15,[262,458,459],{"class":272},"  set",[262,461,422],{"class":287},[262,463,464],{"class":280},"(",[262,466,468],{"class":467},"sHdIc","headers",[262,470,291],{"class":280},[262,472,473],{"class":276}," Headers",[262,475,476],{"class":280},")\n",[262,478,480,483,485,488,490,492,495,497,499,501,503,505,507,509],{"class":264,"line":479},16,[262,481,482],{"class":287},"  getRedirect",[262,484,464],{"class":280},[262,486,487],{"class":467},"strategyName",[262,489,291],{"class":280},[262,491,397],{"class":276},[262,493,494],{"class":280},"):",[262,496,363],{"class":276},[262,498,366],{"class":280},[262,500,369],{"class":276},[262,502,372],{"class":280},[262,504,375],{"class":276},[262,506,378],{"class":280},[262,508,381],{"class":280},[262,510,384],{"class":276},[262,512,514,517,519,522,525,528,530,533,535,538],{"class":264,"line":513},17,[262,515,516],{"class":287},"  csrfToken",[262,518,464],{"class":280},[262,520,521],{"class":467},"event",[262,523,524],{"class":280},"?:",[262,526,527],{"class":276}," H3Event",[262,529,494],{"class":280},[262,531,532],{"class":276}," Promise",[262,534,366],{"class":280},[262,536,537],{"class":276},"boolean",[262,539,540],{"class":280},">\n",[262,542,544,547,549,551,553,556],{"class":264,"line":543},18,[262,545,546],{"class":287},"  initialize",[262,548,360],{"class":280},[262,550,532],{"class":276},[262,552,366],{"class":280},[262,554,555],{"class":276},"void",[262,557,540],{"class":280},[262,559,561,564,566,568,570,572,574,577,579,581,583,585,587,589,592,594,596,599,601,603,605,607],{"class":264,"line":560},19,[262,562,563],{"class":287},"  loginWith",[262,565,464],{"class":280},[262,567,487],{"class":467},[262,569,291],{"class":280},[262,571,397],{"class":276},[262,573,372],{"class":280},[262,575,576],{"class":467}," value",[262,578,291],{"class":280},[262,580,363],{"class":276},[262,582,366],{"class":280},[262,584,369],{"class":276},[262,586,372],{"class":280},[262,588,375],{"class":276},[262,590,591],{"class":280},">):",[262,593,532],{"class":276},[262,595,366],{"class":280},[262,597,598],{"class":276},"Record",[262,600,366],{"class":280},[262,602,369],{"class":276},[262,604,372],{"class":280},[262,606,375],{"class":276},[262,608,609],{"class":280},">>\n",[262,611,613,616,618,620,622,624,626,628,630,632],{"class":264,"line":612},20,[262,614,615],{"class":287},"  logout",[262,617,464],{"class":280},[262,619,487],{"class":467},[262,621,291],{"class":280},[262,623,397],{"class":276},[262,625,494],{"class":280},[262,627,532],{"class":276},[262,629,366],{"class":280},[262,631,555],{"class":276},[262,633,540],{"class":280},[262,635,637,640,642,644,646,648,650,653,655,657,659,661,664,667,669,672],{"class":264,"line":636},21,[262,638,639],{"class":287},"  twoFactor",[262,641,464],{"class":280},[262,643,487],{"class":467},[262,645,291],{"class":280},[262,647,397],{"class":276},[262,649,372],{"class":280},[262,651,652],{"class":467}," code",[262,654,291],{"class":280},[262,656,397],{"class":276},[262,658,494],{"class":280},[262,660,532],{"class":276},[262,662,663],{"class":280},"\u003C{",[262,665,666],{"class":287}," success",[262,668,291],{"class":280},[262,670,671],{"class":276}," boolean",[262,673,674],{"class":280}," }>\n",[262,676,678],{"class":264,"line":677},22,[262,679,680],{"class":280},"}\n",[180,682,684],{"id":683},"using-types-in-your-application","Using Types in Your Application",[215,686,688],{"id":687},"accessing-auth-instance-with-types","Accessing Auth Instance with Types",[253,690,692],{"className":255,"code":691,"language":257,"meta":258,"style":258},"const { $auth } = useNuxtApp()\n\n\u002F\u002F Full autocomplete and type checking\nconst user = $auth.user\nconst isLoggedIn = $auth.loggedIn\nconst currentStrategy = $auth.strategy\n\n\u002F\u002F Type-safe method calls\nawait $auth.loginWith('password', { \n  username: 'user@example.com', \n  password: 'secret' \n})\n",[195,693,694,719,723,728,747,763,779,783,788,818,837,853],{"__ignoreMap":258},[262,695,696,699,702,706,709,712,716],{"class":264,"line":265},[262,697,698],{"class":272},"const",[262,700,701],{"class":280}," {",[262,703,705],{"class":704},"sTEyZ"," $auth ",[262,707,708],{"class":280},"}",[262,710,711],{"class":280}," =",[262,713,715],{"class":714},"s2Zo4"," useNuxtApp",[262,717,718],{"class":704},"()\n",[262,720,721],{"class":264,"line":284},[262,722,341],{"emptyLinePlaceholder":340},[262,724,725],{"class":264,"line":297},[262,726,727],{"class":347},"\u002F\u002F Full autocomplete and type checking\n",[262,729,730,732,735,738,741,744],{"class":264,"line":311},[262,731,698],{"class":272},[262,733,734],{"class":704}," user ",[262,736,737],{"class":280},"=",[262,739,740],{"class":704}," $auth",[262,742,743],{"class":280},".",[262,745,746],{"class":704},"user\n",[262,748,749,751,754,756,758,760],{"class":264,"line":324},[262,750,698],{"class":272},[262,752,753],{"class":704}," isLoggedIn ",[262,755,737],{"class":280},[262,757,740],{"class":704},[262,759,743],{"class":280},[262,761,762],{"class":704},"loggedIn\n",[262,764,765,767,770,772,774,776],{"class":264,"line":337},[262,766,698],{"class":272},[262,768,769],{"class":704}," currentStrategy ",[262,771,737],{"class":280},[262,773,740],{"class":704},[262,775,743],{"class":280},[262,777,778],{"class":704},"strategy\n",[262,780,781],{"class":264,"line":344},[262,782,341],{"emptyLinePlaceholder":340},[262,784,785],{"class":264,"line":351},[262,786,787],{"class":347},"\u002F\u002F Type-safe method calls\n",[262,789,790,793,795,797,800,802,805,809,811,813,815],{"class":264,"line":387},[262,791,792],{"class":268},"await",[262,794,740],{"class":704},[262,796,743],{"class":280},[262,798,799],{"class":714},"loginWith",[262,801,464],{"class":704},[262,803,804],{"class":280},"'",[262,806,808],{"class":807},"sfazB","password",[262,810,804],{"class":280},[262,812,372],{"class":280},[262,814,701],{"class":280},[262,816,817],{"class":704}," \n",[262,819,820,823,825,828,831,833,835],{"class":264,"line":404},[262,821,822],{"class":287},"  username",[262,824,291],{"class":280},[262,826,827],{"class":280}," '",[262,829,830],{"class":807},"user@example.com",[262,832,804],{"class":280},[262,834,372],{"class":280},[262,836,817],{"class":704},[262,838,839,842,844,846,849,851],{"class":264,"line":417},[262,840,841],{"class":287},"  password",[262,843,291],{"class":280},[262,845,827],{"class":280},[262,847,848],{"class":807},"secret",[262,850,804],{"class":280},[262,852,817],{"class":704},[262,854,855,857],{"class":264,"line":429},[262,856,708],{"class":280},[262,858,476],{"class":704},[215,860,862],{"id":861},"type-safe-composables","Type-Safe Composables",[176,864,865],{},"Composables are fully typed:",[253,867,869],{"className":255,"code":868,"language":257,"meta":258,"style":258},"import { useAuthStore } from '#auth-utils'\n\nconst authStore = useAuthStore()\n\n\u002F\u002F Type-safe state access\nconst user = authStore.user\nconst token = authStore.token\nconst strategy = authStore.strategy\n\n\u002F\u002F Type-safe methods\nawait authStore.fetchUser()\nawait authStore.setToken('new-token')\n",[195,870,871,895,899,912,916,921,936,952,967,971,976,989],{"__ignoreMap":258},[262,872,873,876,878,881,884,887,889,892],{"class":264,"line":265},[262,874,875],{"class":268},"import",[262,877,701],{"class":280},[262,879,880],{"class":704}," useAuthStore",[262,882,883],{"class":280}," }",[262,885,886],{"class":268}," from",[262,888,827],{"class":280},[262,890,891],{"class":807},"#auth-utils",[262,893,894],{"class":280},"'\n",[262,896,897],{"class":264,"line":284},[262,898,341],{"emptyLinePlaceholder":340},[262,900,901,903,906,908,910],{"class":264,"line":297},[262,902,698],{"class":272},[262,904,905],{"class":704}," authStore ",[262,907,737],{"class":280},[262,909,880],{"class":714},[262,911,718],{"class":704},[262,913,914],{"class":264,"line":311},[262,915,341],{"emptyLinePlaceholder":340},[262,917,918],{"class":264,"line":324},[262,919,920],{"class":347},"\u002F\u002F Type-safe state access\n",[262,922,923,925,927,929,932,934],{"class":264,"line":337},[262,924,698],{"class":272},[262,926,734],{"class":704},[262,928,737],{"class":280},[262,930,931],{"class":704}," authStore",[262,933,743],{"class":280},[262,935,746],{"class":704},[262,937,938,940,943,945,947,949],{"class":264,"line":344},[262,939,698],{"class":272},[262,941,942],{"class":704}," token ",[262,944,737],{"class":280},[262,946,931],{"class":704},[262,948,743],{"class":280},[262,950,951],{"class":704},"token\n",[262,953,954,956,959,961,963,965],{"class":264,"line":351},[262,955,698],{"class":272},[262,957,958],{"class":704}," strategy ",[262,960,737],{"class":280},[262,962,931],{"class":704},[262,964,743],{"class":280},[262,966,778],{"class":704},[262,968,969],{"class":264,"line":387},[262,970,341],{"emptyLinePlaceholder":340},[262,972,973],{"class":264,"line":404},[262,974,975],{"class":347},"\u002F\u002F Type-safe methods\n",[262,977,978,980,982,984,987],{"class":264,"line":417},[262,979,792],{"class":268},[262,981,931],{"class":704},[262,983,743],{"class":280},[262,985,986],{"class":714},"fetchUser",[262,988,718],{"class":704},[262,990,991,993,995,997,1000,1002,1004,1007,1009],{"class":264,"line":429},[262,992,792],{"class":268},[262,994,931],{"class":704},[262,996,743],{"class":280},[262,998,999],{"class":714},"setToken",[262,1001,464],{"class":704},[262,1003,804],{"class":280},[262,1005,1006],{"class":807},"new-token",[262,1008,804],{"class":280},[262,1010,476],{"class":704},[180,1012,1014],{"id":1013},"provider-specific-types","Provider-Specific Types",[215,1016,1018],{"id":1017},"sanctum-types","Sanctum Types",[253,1020,1022],{"className":255,"code":1021,"language":257,"meta":258,"style":258},"import type { SanctumModuleOptions, SanctumStrategiesOptions } from '#auth-types'\n\nconst config: SanctumModuleOptions = {\n  provider: 'sanctum',\n  csrf: '\u002Fsanctum\u002Fcsrf-cookie',\n  strategies: {\n    default: {\n      endpoints: {\n        login: { url: '\u002Flogin', method: 'post' },\n        user: { url: '\u002Fapi\u002Fuser', method: 'get' }\n      },\n      redirect: {\n        login: '\u002Flogin',\n        logout: '\u002F'\n      }\n    }\n  }\n}\n",[195,1023,1024,1052,1056,1071,1088,1104,1113,1122,1131,1169,1205,1210,1219,1233,1247,1252,1257,1262],{"__ignoreMap":258},[262,1025,1026,1028,1031,1033,1036,1038,1041,1043,1045,1047,1050],{"class":264,"line":265},[262,1027,875],{"class":268},[262,1029,1030],{"class":268}," type",[262,1032,701],{"class":280},[262,1034,1035],{"class":704}," SanctumModuleOptions",[262,1037,372],{"class":280},[262,1039,1040],{"class":704}," SanctumStrategiesOptions",[262,1042,883],{"class":280},[262,1044,886],{"class":268},[262,1046,827],{"class":280},[262,1048,1049],{"class":807},"#auth-types",[262,1051,894],{"class":280},[262,1053,1054],{"class":264,"line":284},[262,1055,341],{"emptyLinePlaceholder":340},[262,1057,1058,1060,1063,1065,1067,1069],{"class":264,"line":297},[262,1059,698],{"class":272},[262,1061,1062],{"class":704}," config",[262,1064,291],{"class":280},[262,1066,1035],{"class":276},[262,1068,711],{"class":280},[262,1070,281],{"class":280},[262,1072,1073,1076,1078,1080,1083,1085],{"class":264,"line":311},[262,1074,1075],{"class":287},"  provider",[262,1077,291],{"class":280},[262,1079,827],{"class":280},[262,1081,1082],{"class":807},"sanctum",[262,1084,804],{"class":280},[262,1086,1087],{"class":280},",\n",[262,1089,1090,1093,1095,1097,1100,1102],{"class":264,"line":324},[262,1091,1092],{"class":287},"  csrf",[262,1094,291],{"class":280},[262,1096,827],{"class":280},[262,1098,1099],{"class":807},"\u002Fsanctum\u002Fcsrf-cookie",[262,1101,804],{"class":280},[262,1103,1087],{"class":280},[262,1105,1106,1109,1111],{"class":264,"line":337},[262,1107,1108],{"class":287},"  strategies",[262,1110,291],{"class":280},[262,1112,281],{"class":280},[262,1114,1115,1118,1120],{"class":264,"line":344},[262,1116,1117],{"class":287},"    default",[262,1119,291],{"class":280},[262,1121,281],{"class":280},[262,1123,1124,1127,1129],{"class":264,"line":351},[262,1125,1126],{"class":287},"      endpoints",[262,1128,291],{"class":280},[262,1130,281],{"class":280},[262,1132,1133,1136,1138,1140,1143,1145,1147,1150,1152,1154,1157,1159,1161,1164,1166],{"class":264,"line":387},[262,1134,1135],{"class":287},"        login",[262,1137,291],{"class":280},[262,1139,701],{"class":280},[262,1141,1142],{"class":287}," url",[262,1144,291],{"class":280},[262,1146,827],{"class":280},[262,1148,1149],{"class":807},"\u002Flogin",[262,1151,804],{"class":280},[262,1153,372],{"class":280},[262,1155,1156],{"class":287}," method",[262,1158,291],{"class":280},[262,1160,827],{"class":280},[262,1162,1163],{"class":807},"post",[262,1165,804],{"class":280},[262,1167,1168],{"class":280}," },\n",[262,1170,1171,1174,1176,1178,1180,1182,1184,1187,1189,1191,1193,1195,1197,1200,1202],{"class":264,"line":404},[262,1172,1173],{"class":287},"        user",[262,1175,291],{"class":280},[262,1177,701],{"class":280},[262,1179,1142],{"class":287},[262,1181,291],{"class":280},[262,1183,827],{"class":280},[262,1185,1186],{"class":807},"\u002Fapi\u002Fuser",[262,1188,804],{"class":280},[262,1190,372],{"class":280},[262,1192,1156],{"class":287},[262,1194,291],{"class":280},[262,1196,827],{"class":280},[262,1198,1199],{"class":807},"get",[262,1201,804],{"class":280},[262,1203,1204],{"class":280}," }\n",[262,1206,1207],{"class":264,"line":417},[262,1208,1209],{"class":280},"      },\n",[262,1211,1212,1215,1217],{"class":264,"line":429},[262,1213,1214],{"class":287},"      redirect",[262,1216,291],{"class":280},[262,1218,281],{"class":280},[262,1220,1221,1223,1225,1227,1229,1231],{"class":264,"line":445},[262,1222,1135],{"class":287},[262,1224,291],{"class":280},[262,1226,827],{"class":280},[262,1228,1149],{"class":807},[262,1230,804],{"class":280},[262,1232,1087],{"class":280},[262,1234,1235,1238,1240,1242,1245],{"class":264,"line":450},[262,1236,1237],{"class":287},"        logout",[262,1239,291],{"class":280},[262,1241,827],{"class":280},[262,1243,1244],{"class":807},"\u002F",[262,1246,894],{"class":280},[262,1248,1249],{"class":264,"line":456},[262,1250,1251],{"class":280},"      }\n",[262,1253,1254],{"class":264,"line":479},[262,1255,1256],{"class":280},"    }\n",[262,1258,1259],{"class":264,"line":513},[262,1260,1261],{"class":280},"  }\n",[262,1263,1264],{"class":264,"line":543},[262,1265,680],{"class":280},[215,1267,1269],{"id":1268},"passport-types","Passport Types",[253,1271,1273],{"className":255,"code":1272,"language":257,"meta":258,"style":258},"import type { \n  PassportModuleOptions, \n  PassportStrategiesOptions,\n  AuthSecretConfig \n} from '#auth-types'\n\nconst config: PassportModuleOptions = {\n  provider: 'passport',\n  strategies: {\n    password: {\n      endpoints: {\n        login: { url: '\u002Foauth\u002Ftoken', method: 'post' },\n        user: { url: '\u002Fapi\u002Fuser', method: 'get' }\n      },\n      redirect: {\n        login: '\u002Flogin',\n        logout: '\u002F'\n      }\n    }\n  }\n}\n\nconst secret: AuthSecretConfig = {\n  client_id: 'your-client-id',\n  client_secret: 'your-client-secret',\n  grant_type: 'password'\n}\n",[195,1274,1275,1285,1294,1301,1308,1320,1324,1339,1354,1362,1371,1379,1412,1444,1448,1456,1470,1482,1486,1490,1494,1498,1502,1519,1536,1553,1567],{"__ignoreMap":258},[262,1276,1277,1279,1281,1283],{"class":264,"line":265},[262,1278,875],{"class":268},[262,1280,1030],{"class":268},[262,1282,701],{"class":280},[262,1284,817],{"class":287},[262,1286,1287,1290,1292],{"class":264,"line":284},[262,1288,1289],{"class":704},"  PassportModuleOptions",[262,1291,372],{"class":280},[262,1293,817],{"class":287},[262,1295,1296,1299],{"class":264,"line":297},[262,1297,1298],{"class":704},"  PassportStrategiesOptions",[262,1300,1087],{"class":280},[262,1302,1303,1306],{"class":264,"line":311},[262,1304,1305],{"class":704},"  AuthSecretConfig",[262,1307,817],{"class":287},[262,1309,1310,1312,1314,1316,1318],{"class":264,"line":324},[262,1311,708],{"class":280},[262,1313,886],{"class":268},[262,1315,827],{"class":280},[262,1317,1049],{"class":807},[262,1319,894],{"class":280},[262,1321,1322],{"class":264,"line":337},[262,1323,341],{"emptyLinePlaceholder":340},[262,1325,1326,1328,1330,1332,1335,1337],{"class":264,"line":344},[262,1327,698],{"class":272},[262,1329,1062],{"class":704},[262,1331,291],{"class":280},[262,1333,1334],{"class":276}," PassportModuleOptions",[262,1336,711],{"class":280},[262,1338,281],{"class":280},[262,1340,1341,1343,1345,1347,1350,1352],{"class":264,"line":351},[262,1342,1075],{"class":287},[262,1344,291],{"class":280},[262,1346,827],{"class":280},[262,1348,1349],{"class":807},"passport",[262,1351,804],{"class":280},[262,1353,1087],{"class":280},[262,1355,1356,1358,1360],{"class":264,"line":387},[262,1357,1108],{"class":287},[262,1359,291],{"class":280},[262,1361,281],{"class":280},[262,1363,1364,1367,1369],{"class":264,"line":404},[262,1365,1366],{"class":287},"    password",[262,1368,291],{"class":280},[262,1370,281],{"class":280},[262,1372,1373,1375,1377],{"class":264,"line":417},[262,1374,1126],{"class":287},[262,1376,291],{"class":280},[262,1378,281],{"class":280},[262,1380,1381,1383,1385,1387,1389,1391,1393,1396,1398,1400,1402,1404,1406,1408,1410],{"class":264,"line":429},[262,1382,1135],{"class":287},[262,1384,291],{"class":280},[262,1386,701],{"class":280},[262,1388,1142],{"class":287},[262,1390,291],{"class":280},[262,1392,827],{"class":280},[262,1394,1395],{"class":807},"\u002Foauth\u002Ftoken",[262,1397,804],{"class":280},[262,1399,372],{"class":280},[262,1401,1156],{"class":287},[262,1403,291],{"class":280},[262,1405,827],{"class":280},[262,1407,1163],{"class":807},[262,1409,804],{"class":280},[262,1411,1168],{"class":280},[262,1413,1414,1416,1418,1420,1422,1424,1426,1428,1430,1432,1434,1436,1438,1440,1442],{"class":264,"line":445},[262,1415,1173],{"class":287},[262,1417,291],{"class":280},[262,1419,701],{"class":280},[262,1421,1142],{"class":287},[262,1423,291],{"class":280},[262,1425,827],{"class":280},[262,1427,1186],{"class":807},[262,1429,804],{"class":280},[262,1431,372],{"class":280},[262,1433,1156],{"class":287},[262,1435,291],{"class":280},[262,1437,827],{"class":280},[262,1439,1199],{"class":807},[262,1441,804],{"class":280},[262,1443,1204],{"class":280},[262,1445,1446],{"class":264,"line":450},[262,1447,1209],{"class":280},[262,1449,1450,1452,1454],{"class":264,"line":456},[262,1451,1214],{"class":287},[262,1453,291],{"class":280},[262,1455,281],{"class":280},[262,1457,1458,1460,1462,1464,1466,1468],{"class":264,"line":479},[262,1459,1135],{"class":287},[262,1461,291],{"class":280},[262,1463,827],{"class":280},[262,1465,1149],{"class":807},[262,1467,804],{"class":280},[262,1469,1087],{"class":280},[262,1471,1472,1474,1476,1478,1480],{"class":264,"line":513},[262,1473,1237],{"class":287},[262,1475,291],{"class":280},[262,1477,827],{"class":280},[262,1479,1244],{"class":807},[262,1481,894],{"class":280},[262,1483,1484],{"class":264,"line":543},[262,1485,1251],{"class":280},[262,1487,1488],{"class":264,"line":560},[262,1489,1256],{"class":280},[262,1491,1492],{"class":264,"line":612},[262,1493,1261],{"class":280},[262,1495,1496],{"class":264,"line":636},[262,1497,680],{"class":280},[262,1499,1500],{"class":264,"line":677},[262,1501,341],{"emptyLinePlaceholder":340},[262,1503,1505,1507,1510,1512,1515,1517],{"class":264,"line":1504},23,[262,1506,698],{"class":272},[262,1508,1509],{"class":704}," secret",[262,1511,291],{"class":280},[262,1513,1514],{"class":276}," AuthSecretConfig",[262,1516,711],{"class":280},[262,1518,281],{"class":280},[262,1520,1522,1525,1527,1529,1532,1534],{"class":264,"line":1521},24,[262,1523,1524],{"class":287},"  client_id",[262,1526,291],{"class":280},[262,1528,827],{"class":280},[262,1530,1531],{"class":807},"your-client-id",[262,1533,804],{"class":280},[262,1535,1087],{"class":280},[262,1537,1539,1542,1544,1546,1549,1551],{"class":264,"line":1538},25,[262,1540,1541],{"class":287},"  client_secret",[262,1543,291],{"class":280},[262,1545,827],{"class":280},[262,1547,1548],{"class":807},"your-client-secret",[262,1550,804],{"class":280},[262,1552,1087],{"class":280},[262,1554,1556,1559,1561,1563,1565],{"class":264,"line":1555},26,[262,1557,1558],{"class":287},"  grant_type",[262,1560,291],{"class":280},[262,1562,827],{"class":280},[262,1564,808],{"class":807},[262,1566,894],{"class":280},[262,1568,1570],{"class":264,"line":1569},27,[262,1571,680],{"class":280},[180,1573,1575],{"id":1574},"configuration-types","Configuration Types",[215,1577,1579],{"id":1578},"module-options","Module Options",[253,1581,1583],{"className":255,"code":1582,"language":257,"meta":258,"style":258},"import type { ModuleOptions } from '#auth-types'\n\nconst authConfig: ModuleOptions = {\n  provider: 'sanctum',\n  cookie: {\n    prefix: 'auth.',\n    options: {\n      httpOnly: false,\n      secure: false,\n      sameSite: 'Lax'\n    }\n  },\n  strategies: {\n    default: {\n      endpoints: {\n        login: { url: '\u002Flogin', method: 'post' },\n        user: { url: '\u002Fapi\u002Fuser', method: 'get' }\n      },\n      redirect: {\n        login: '\u002Flogin',\n        logout: '\u002F'\n      }\n    }\n  }\n}\n",[195,1584,1585,1606,1610,1625,1639,1648,1664,1673,1686,1697,1711,1715,1720,1728,1736,1744,1776,1808,1812,1820,1834,1846,1850,1854,1858],{"__ignoreMap":258},[262,1586,1587,1589,1591,1593,1596,1598,1600,1602,1604],{"class":264,"line":265},[262,1588,875],{"class":268},[262,1590,1030],{"class":268},[262,1592,701],{"class":280},[262,1594,1595],{"class":704}," ModuleOptions",[262,1597,883],{"class":280},[262,1599,886],{"class":268},[262,1601,827],{"class":280},[262,1603,1049],{"class":807},[262,1605,894],{"class":280},[262,1607,1608],{"class":264,"line":284},[262,1609,341],{"emptyLinePlaceholder":340},[262,1611,1612,1614,1617,1619,1621,1623],{"class":264,"line":297},[262,1613,698],{"class":272},[262,1615,1616],{"class":704}," authConfig",[262,1618,291],{"class":280},[262,1620,1595],{"class":276},[262,1622,711],{"class":280},[262,1624,281],{"class":280},[262,1626,1627,1629,1631,1633,1635,1637],{"class":264,"line":311},[262,1628,1075],{"class":287},[262,1630,291],{"class":280},[262,1632,827],{"class":280},[262,1634,1082],{"class":807},[262,1636,804],{"class":280},[262,1638,1087],{"class":280},[262,1640,1641,1644,1646],{"class":264,"line":324},[262,1642,1643],{"class":287},"  cookie",[262,1645,291],{"class":280},[262,1647,281],{"class":280},[262,1649,1650,1653,1655,1657,1660,1662],{"class":264,"line":337},[262,1651,1652],{"class":287},"    prefix",[262,1654,291],{"class":280},[262,1656,827],{"class":280},[262,1658,1659],{"class":807},"auth.",[262,1661,804],{"class":280},[262,1663,1087],{"class":280},[262,1665,1666,1669,1671],{"class":264,"line":344},[262,1667,1668],{"class":287},"    options",[262,1670,291],{"class":280},[262,1672,281],{"class":280},[262,1674,1675,1678,1680,1684],{"class":264,"line":351},[262,1676,1677],{"class":287},"      httpOnly",[262,1679,291],{"class":280},[262,1681,1683],{"class":1682},"sfNiH"," false",[262,1685,1087],{"class":280},[262,1687,1688,1691,1693,1695],{"class":264,"line":387},[262,1689,1690],{"class":287},"      secure",[262,1692,291],{"class":280},[262,1694,1683],{"class":1682},[262,1696,1087],{"class":280},[262,1698,1699,1702,1704,1706,1709],{"class":264,"line":404},[262,1700,1701],{"class":287},"      sameSite",[262,1703,291],{"class":280},[262,1705,827],{"class":280},[262,1707,1708],{"class":807},"Lax",[262,1710,894],{"class":280},[262,1712,1713],{"class":264,"line":417},[262,1714,1256],{"class":280},[262,1716,1717],{"class":264,"line":429},[262,1718,1719],{"class":280},"  },\n",[262,1721,1722,1724,1726],{"class":264,"line":445},[262,1723,1108],{"class":287},[262,1725,291],{"class":280},[262,1727,281],{"class":280},[262,1729,1730,1732,1734],{"class":264,"line":450},[262,1731,1117],{"class":287},[262,1733,291],{"class":280},[262,1735,281],{"class":280},[262,1737,1738,1740,1742],{"class":264,"line":456},[262,1739,1126],{"class":287},[262,1741,291],{"class":280},[262,1743,281],{"class":280},[262,1745,1746,1748,1750,1752,1754,1756,1758,1760,1762,1764,1766,1768,1770,1772,1774],{"class":264,"line":479},[262,1747,1135],{"class":287},[262,1749,291],{"class":280},[262,1751,701],{"class":280},[262,1753,1142],{"class":287},[262,1755,291],{"class":280},[262,1757,827],{"class":280},[262,1759,1149],{"class":807},[262,1761,804],{"class":280},[262,1763,372],{"class":280},[262,1765,1156],{"class":287},[262,1767,291],{"class":280},[262,1769,827],{"class":280},[262,1771,1163],{"class":807},[262,1773,804],{"class":280},[262,1775,1168],{"class":280},[262,1777,1778,1780,1782,1784,1786,1788,1790,1792,1794,1796,1798,1800,1802,1804,1806],{"class":264,"line":513},[262,1779,1173],{"class":287},[262,1781,291],{"class":280},[262,1783,701],{"class":280},[262,1785,1142],{"class":287},[262,1787,291],{"class":280},[262,1789,827],{"class":280},[262,1791,1186],{"class":807},[262,1793,804],{"class":280},[262,1795,372],{"class":280},[262,1797,1156],{"class":287},[262,1799,291],{"class":280},[262,1801,827],{"class":280},[262,1803,1199],{"class":807},[262,1805,804],{"class":280},[262,1807,1204],{"class":280},[262,1809,1810],{"class":264,"line":543},[262,1811,1209],{"class":280},[262,1813,1814,1816,1818],{"class":264,"line":560},[262,1815,1214],{"class":287},[262,1817,291],{"class":280},[262,1819,281],{"class":280},[262,1821,1822,1824,1826,1828,1830,1832],{"class":264,"line":612},[262,1823,1135],{"class":287},[262,1825,291],{"class":280},[262,1827,827],{"class":280},[262,1829,1149],{"class":807},[262,1831,804],{"class":280},[262,1833,1087],{"class":280},[262,1835,1836,1838,1840,1842,1844],{"class":264,"line":636},[262,1837,1237],{"class":287},[262,1839,291],{"class":280},[262,1841,827],{"class":280},[262,1843,1244],{"class":807},[262,1845,894],{"class":280},[262,1847,1848],{"class":264,"line":677},[262,1849,1251],{"class":280},[262,1851,1852],{"class":264,"line":1504},[262,1853,1256],{"class":280},[262,1855,1856],{"class":264,"line":1521},[262,1857,1261],{"class":280},[262,1859,1860],{"class":264,"line":1538},[262,1861,680],{"class":280},[215,1863,1865],{"id":1864},"cookie-options","Cookie Options",[253,1867,1869],{"className":255,"code":1868,"language":257,"meta":258,"style":258},"import type { CookieOption, AuthOptionsCookie } from '#auth-types'\n\nconst cookieOptions: CookieOption = {\n  httpOnly: true,\n  secure: true,\n  sameSite: 'Strict',\n  priority: 'high',\n  maxAge: 60 * 60 * 24 * 7\n}\n\nconst authCookie: AuthOptionsCookie = {\n  prefix: '__Secure-',\n  options: cookieOptions\n}\n",[195,1870,1871,1897,1901,1916,1928,1939,1955,1971,1997,2001,2005,2020,2036,2046],{"__ignoreMap":258},[262,1872,1873,1875,1877,1879,1882,1884,1887,1889,1891,1893,1895],{"class":264,"line":265},[262,1874,875],{"class":268},[262,1876,1030],{"class":268},[262,1878,701],{"class":280},[262,1880,1881],{"class":704}," CookieOption",[262,1883,372],{"class":280},[262,1885,1886],{"class":704}," AuthOptionsCookie",[262,1888,883],{"class":280},[262,1890,886],{"class":268},[262,1892,827],{"class":280},[262,1894,1049],{"class":807},[262,1896,894],{"class":280},[262,1898,1899],{"class":264,"line":284},[262,1900,341],{"emptyLinePlaceholder":340},[262,1902,1903,1905,1908,1910,1912,1914],{"class":264,"line":297},[262,1904,698],{"class":272},[262,1906,1907],{"class":704}," cookieOptions",[262,1909,291],{"class":280},[262,1911,1881],{"class":276},[262,1913,711],{"class":280},[262,1915,281],{"class":280},[262,1917,1918,1921,1923,1926],{"class":264,"line":311},[262,1919,1920],{"class":287},"  httpOnly",[262,1922,291],{"class":280},[262,1924,1925],{"class":1682}," true",[262,1927,1087],{"class":280},[262,1929,1930,1933,1935,1937],{"class":264,"line":324},[262,1931,1932],{"class":287},"  secure",[262,1934,291],{"class":280},[262,1936,1925],{"class":1682},[262,1938,1087],{"class":280},[262,1940,1941,1944,1946,1948,1951,1953],{"class":264,"line":337},[262,1942,1943],{"class":287},"  sameSite",[262,1945,291],{"class":280},[262,1947,827],{"class":280},[262,1949,1950],{"class":807},"Strict",[262,1952,804],{"class":280},[262,1954,1087],{"class":280},[262,1956,1957,1960,1962,1964,1967,1969],{"class":264,"line":344},[262,1958,1959],{"class":287},"  priority",[262,1961,291],{"class":280},[262,1963,827],{"class":280},[262,1965,1966],{"class":807},"high",[262,1968,804],{"class":280},[262,1970,1087],{"class":280},[262,1972,1973,1976,1978,1982,1985,1987,1989,1992,1994],{"class":264,"line":351},[262,1974,1975],{"class":287},"  maxAge",[262,1977,291],{"class":280},[262,1979,1981],{"class":1980},"sbssI"," 60",[262,1983,1984],{"class":280}," *",[262,1986,1981],{"class":1980},[262,1988,1984],{"class":280},[262,1990,1991],{"class":1980}," 24",[262,1993,1984],{"class":280},[262,1995,1996],{"class":1980}," 7\n",[262,1998,1999],{"class":264,"line":387},[262,2000,680],{"class":280},[262,2002,2003],{"class":264,"line":404},[262,2004,341],{"emptyLinePlaceholder":340},[262,2006,2007,2009,2012,2014,2016,2018],{"class":264,"line":417},[262,2008,698],{"class":272},[262,2010,2011],{"class":704}," authCookie",[262,2013,291],{"class":280},[262,2015,1886],{"class":276},[262,2017,711],{"class":280},[262,2019,281],{"class":280},[262,2021,2022,2025,2027,2029,2032,2034],{"class":264,"line":429},[262,2023,2024],{"class":287},"  prefix",[262,2026,291],{"class":280},[262,2028,827],{"class":280},[262,2030,2031],{"class":807},"__Secure-",[262,2033,804],{"class":280},[262,2035,1087],{"class":280},[262,2037,2038,2041,2043],{"class":264,"line":445},[262,2039,2040],{"class":287},"  options",[262,2042,291],{"class":280},[262,2044,2045],{"class":704}," cookieOptions\n",[262,2047,2048],{"class":264,"line":450},[262,2049,680],{"class":280},[215,2051,2053],{"id":2052},"redirect-options","Redirect Options",[253,2055,2057],{"className":255,"code":2056,"language":257,"meta":258,"style":258},"import type { RedirectOptions } from '#auth-types'\n\nconst redirectOptions: RedirectOptions = {\n  login: '\u002Flogin',\n  logout: '\u002F',\n  home: '\u002Fdashboard',\n  twoFactor: '\u002F2fa',\n  callback: '\u002Fauth\u002Fcallback'\n}\n",[195,2058,2059,2080,2084,2099,2114,2128,2144,2159,2173],{"__ignoreMap":258},[262,2060,2061,2063,2065,2067,2070,2072,2074,2076,2078],{"class":264,"line":265},[262,2062,875],{"class":268},[262,2064,1030],{"class":268},[262,2066,701],{"class":280},[262,2068,2069],{"class":704}," RedirectOptions",[262,2071,883],{"class":280},[262,2073,886],{"class":268},[262,2075,827],{"class":280},[262,2077,1049],{"class":807},[262,2079,894],{"class":280},[262,2081,2082],{"class":264,"line":284},[262,2083,341],{"emptyLinePlaceholder":340},[262,2085,2086,2088,2091,2093,2095,2097],{"class":264,"line":297},[262,2087,698],{"class":272},[262,2089,2090],{"class":704}," redirectOptions",[262,2092,291],{"class":280},[262,2094,2069],{"class":276},[262,2096,711],{"class":280},[262,2098,281],{"class":280},[262,2100,2101,2104,2106,2108,2110,2112],{"class":264,"line":311},[262,2102,2103],{"class":287},"  login",[262,2105,291],{"class":280},[262,2107,827],{"class":280},[262,2109,1149],{"class":807},[262,2111,804],{"class":280},[262,2113,1087],{"class":280},[262,2115,2116,2118,2120,2122,2124,2126],{"class":264,"line":324},[262,2117,615],{"class":287},[262,2119,291],{"class":280},[262,2121,827],{"class":280},[262,2123,1244],{"class":807},[262,2125,804],{"class":280},[262,2127,1087],{"class":280},[262,2129,2130,2133,2135,2137,2140,2142],{"class":264,"line":337},[262,2131,2132],{"class":287},"  home",[262,2134,291],{"class":280},[262,2136,827],{"class":280},[262,2138,2139],{"class":807},"\u002Fdashboard",[262,2141,804],{"class":280},[262,2143,1087],{"class":280},[262,2145,2146,2148,2150,2152,2155,2157],{"class":264,"line":344},[262,2147,639],{"class":287},[262,2149,291],{"class":280},[262,2151,827],{"class":280},[262,2153,2154],{"class":807},"\u002F2fa",[262,2156,804],{"class":280},[262,2158,1087],{"class":280},[262,2160,2161,2164,2166,2168,2171],{"class":264,"line":351},[262,2162,2163],{"class":287},"  callback",[262,2165,291],{"class":280},[262,2167,827],{"class":280},[262,2169,2170],{"class":807},"\u002Fauth\u002Fcallback",[262,2172,894],{"class":280},[262,2174,2175],{"class":264,"line":387},[262,2176,680],{"class":280},[180,2178,2180],{"id":2179},"type-safe-custom-hooks","Type-Safe Custom Hooks",[176,2182,2183],{},"Create type-safe custom hooks using Nuxt Umbu types:",[253,2185,2187],{"className":255,"code":2186,"language":257,"meta":258,"style":258},"import type { AuthInstance } from '#auth-types'\n\nexport function useCustomAuth() {\n  const { $auth } = useNuxtApp()\n  const auth = $auth as AuthInstance\n\n  const login = async (credentials: { email: string; password: string }) => {\n    return await auth.loginWith('password', credentials)\n  }\n\n  const logout = async () => {\n    await auth.logout('password')\n  }\n\n  const checkAuth = () => {\n    return auth.loggedIn\n  }\n\n  return {\n    login,\n    logout,\n    checkAuth,\n    user: computed(() => auth.user),\n    isLoggedIn: computed(() => auth.loggedIn)\n  }\n}\n",[195,2188,2189,2209,2213,2228,2245,2262,2266,2313,2342,2346,2350,2368,2390,2394,2398,2413,2423,2427,2431,2438,2445,2452,2459,2487,2511,2515],{"__ignoreMap":258},[262,2190,2191,2193,2195,2197,2199,2201,2203,2205,2207],{"class":264,"line":265},[262,2192,875],{"class":268},[262,2194,1030],{"class":268},[262,2196,701],{"class":280},[262,2198,277],{"class":704},[262,2200,883],{"class":280},[262,2202,886],{"class":268},[262,2204,827],{"class":280},[262,2206,1049],{"class":807},[262,2208,894],{"class":280},[262,2210,2211],{"class":264,"line":284},[262,2212,341],{"emptyLinePlaceholder":340},[262,2214,2215,2217,2220,2223,2226],{"class":264,"line":297},[262,2216,269],{"class":268},[262,2218,2219],{"class":272}," function",[262,2221,2222],{"class":714}," useCustomAuth",[262,2224,2225],{"class":280},"()",[262,2227,281],{"class":280},[262,2229,2230,2233,2235,2237,2239,2241,2243],{"class":264,"line":311},[262,2231,2232],{"class":272},"  const",[262,2234,701],{"class":280},[262,2236,740],{"class":704},[262,2238,883],{"class":280},[262,2240,711],{"class":280},[262,2242,715],{"class":714},[262,2244,718],{"class":287},[262,2246,2247,2249,2252,2254,2256,2259],{"class":264,"line":324},[262,2248,2232],{"class":272},[262,2250,2251],{"class":704}," auth",[262,2253,711],{"class":280},[262,2255,740],{"class":704},[262,2257,2258],{"class":268}," as",[262,2260,2261],{"class":276}," AuthInstance\n",[262,2263,2264],{"class":264,"line":337},[262,2265,341],{"emptyLinePlaceholder":340},[262,2267,2268,2270,2273,2275,2278,2281,2284,2286,2288,2291,2293,2295,2298,2301,2303,2305,2308,2311],{"class":264,"line":344},[262,2269,2232],{"class":272},[262,2271,2272],{"class":704}," login",[262,2274,711],{"class":280},[262,2276,2277],{"class":272}," async",[262,2279,2280],{"class":280}," (",[262,2282,2283],{"class":467},"credentials",[262,2285,291],{"class":280},[262,2287,701],{"class":280},[262,2289,2290],{"class":287}," email",[262,2292,291],{"class":280},[262,2294,397],{"class":276},[262,2296,2297],{"class":280},";",[262,2299,2300],{"class":287}," password",[262,2302,291],{"class":280},[262,2304,397],{"class":276},[262,2306,2307],{"class":280}," })",[262,2309,2310],{"class":272}," =>",[262,2312,281],{"class":280},[262,2314,2315,2318,2321,2323,2325,2327,2329,2331,2333,2335,2337,2340],{"class":264,"line":351},[262,2316,2317],{"class":268},"    return",[262,2319,2320],{"class":268}," await",[262,2322,2251],{"class":704},[262,2324,743],{"class":280},[262,2326,799],{"class":714},[262,2328,464],{"class":287},[262,2330,804],{"class":280},[262,2332,808],{"class":807},[262,2334,804],{"class":280},[262,2336,372],{"class":280},[262,2338,2339],{"class":704}," credentials",[262,2341,476],{"class":287},[262,2343,2344],{"class":264,"line":387},[262,2345,1261],{"class":280},[262,2347,2348],{"class":264,"line":404},[262,2349,341],{"emptyLinePlaceholder":340},[262,2351,2352,2354,2357,2359,2361,2364,2366],{"class":264,"line":417},[262,2353,2232],{"class":272},[262,2355,2356],{"class":704}," logout",[262,2358,711],{"class":280},[262,2360,2277],{"class":272},[262,2362,2363],{"class":280}," ()",[262,2365,2310],{"class":272},[262,2367,281],{"class":280},[262,2369,2370,2373,2375,2377,2380,2382,2384,2386,2388],{"class":264,"line":429},[262,2371,2372],{"class":268},"    await",[262,2374,2251],{"class":704},[262,2376,743],{"class":280},[262,2378,2379],{"class":714},"logout",[262,2381,464],{"class":287},[262,2383,804],{"class":280},[262,2385,808],{"class":807},[262,2387,804],{"class":280},[262,2389,476],{"class":287},[262,2391,2392],{"class":264,"line":445},[262,2393,1261],{"class":280},[262,2395,2396],{"class":264,"line":450},[262,2397,341],{"emptyLinePlaceholder":340},[262,2399,2400,2402,2405,2407,2409,2411],{"class":264,"line":456},[262,2401,2232],{"class":272},[262,2403,2404],{"class":704}," checkAuth",[262,2406,711],{"class":280},[262,2408,2363],{"class":280},[262,2410,2310],{"class":272},[262,2412,281],{"class":280},[262,2414,2415,2417,2419,2421],{"class":264,"line":479},[262,2416,2317],{"class":268},[262,2418,2251],{"class":704},[262,2420,743],{"class":280},[262,2422,762],{"class":704},[262,2424,2425],{"class":264,"line":513},[262,2426,1261],{"class":280},[262,2428,2429],{"class":264,"line":543},[262,2430,341],{"emptyLinePlaceholder":340},[262,2432,2433,2436],{"class":264,"line":560},[262,2434,2435],{"class":268},"  return",[262,2437,281],{"class":280},[262,2439,2440,2443],{"class":264,"line":612},[262,2441,2442],{"class":704},"    login",[262,2444,1087],{"class":280},[262,2446,2447,2450],{"class":264,"line":636},[262,2448,2449],{"class":704},"    logout",[262,2451,1087],{"class":280},[262,2453,2454,2457],{"class":264,"line":677},[262,2455,2456],{"class":704},"    checkAuth",[262,2458,1087],{"class":280},[262,2460,2461,2464,2466,2469,2471,2473,2475,2477,2479,2482,2485],{"class":264,"line":1504},[262,2462,2463],{"class":287},"    user",[262,2465,291],{"class":280},[262,2467,2468],{"class":714}," computed",[262,2470,464],{"class":287},[262,2472,2225],{"class":280},[262,2474,2310],{"class":272},[262,2476,2251],{"class":704},[262,2478,743],{"class":280},[262,2480,2481],{"class":704},"user",[262,2483,2484],{"class":287},")",[262,2486,1087],{"class":280},[262,2488,2489,2492,2494,2496,2498,2500,2502,2504,2506,2509],{"class":264,"line":1521},[262,2490,2491],{"class":287},"    isLoggedIn",[262,2493,291],{"class":280},[262,2495,2468],{"class":714},[262,2497,464],{"class":287},[262,2499,2225],{"class":280},[262,2501,2310],{"class":272},[262,2503,2251],{"class":704},[262,2505,743],{"class":280},[262,2507,2508],{"class":704},"loggedIn",[262,2510,476],{"class":287},[262,2512,2513],{"class":264,"line":1538},[262,2514,1261],{"class":280},[262,2516,2517],{"class":264,"line":1555},[262,2518,680],{"class":280},[180,2520,2522],{"id":2521},"type-guards","Type Guards",[176,2524,2525],{},"Use type guards for runtime type checking:",[253,2527,2529],{"className":255,"code":2528,"language":257,"meta":258,"style":258},"import type { ModuleOptions, PassportModuleOptions, SanctumModuleOptions } from '#auth-types'\n\nfunction isPassportConfig(config: ModuleOptions): config is PassportModuleOptions {\n  return config.provider === 'passport'\n}\n\nfunction isSanctumConfig(config: ModuleOptions): config is SanctumModuleOptions {\n  return config.provider === 'sanctum'\n}\n\n\u002F\u002F Usage\nconst config = useRuntimeConfig().public.auth as ModuleOptions\n\nif (isPassportConfig(config)) {\n  \u002F\u002F TypeScript knows this is PassportModuleOptions\n  console.log('Using Passport provider')\n} else if (isSanctumConfig(config)) {\n  \u002F\u002F TypeScript knows this is SanctumModuleOptions\n  console.log('Using Sanctum provider')\n}\n",[195,2530,2531,2559,2563,2591,2611,2615,2619,2644,2662,2666,2670,2675,2704,2708,2724,2729,2750,2769,2774,2793],{"__ignoreMap":258},[262,2532,2533,2535,2537,2539,2541,2543,2545,2547,2549,2551,2553,2555,2557],{"class":264,"line":265},[262,2534,875],{"class":268},[262,2536,1030],{"class":268},[262,2538,701],{"class":280},[262,2540,1595],{"class":704},[262,2542,372],{"class":280},[262,2544,1334],{"class":704},[262,2546,372],{"class":280},[262,2548,1035],{"class":704},[262,2550,883],{"class":280},[262,2552,886],{"class":268},[262,2554,827],{"class":280},[262,2556,1049],{"class":807},[262,2558,894],{"class":280},[262,2560,2561],{"class":264,"line":284},[262,2562,341],{"emptyLinePlaceholder":340},[262,2564,2565,2568,2571,2573,2576,2578,2580,2582,2584,2587,2589],{"class":264,"line":297},[262,2566,2567],{"class":272},"function",[262,2569,2570],{"class":714}," isPassportConfig",[262,2572,464],{"class":280},[262,2574,2575],{"class":467},"config",[262,2577,291],{"class":280},[262,2579,1595],{"class":276},[262,2581,494],{"class":280},[262,2583,1062],{"class":467},[262,2585,2586],{"class":280}," is",[262,2588,1334],{"class":276},[262,2590,281],{"class":280},[262,2592,2593,2595,2597,2599,2602,2605,2607,2609],{"class":264,"line":311},[262,2594,2435],{"class":268},[262,2596,1062],{"class":704},[262,2598,743],{"class":280},[262,2600,2601],{"class":704},"provider",[262,2603,2604],{"class":280}," ===",[262,2606,827],{"class":280},[262,2608,1349],{"class":807},[262,2610,894],{"class":280},[262,2612,2613],{"class":264,"line":324},[262,2614,680],{"class":280},[262,2616,2617],{"class":264,"line":337},[262,2618,341],{"emptyLinePlaceholder":340},[262,2620,2621,2623,2626,2628,2630,2632,2634,2636,2638,2640,2642],{"class":264,"line":344},[262,2622,2567],{"class":272},[262,2624,2625],{"class":714}," isSanctumConfig",[262,2627,464],{"class":280},[262,2629,2575],{"class":467},[262,2631,291],{"class":280},[262,2633,1595],{"class":276},[262,2635,494],{"class":280},[262,2637,1062],{"class":467},[262,2639,2586],{"class":280},[262,2641,1035],{"class":276},[262,2643,281],{"class":280},[262,2645,2646,2648,2650,2652,2654,2656,2658,2660],{"class":264,"line":351},[262,2647,2435],{"class":268},[262,2649,1062],{"class":704},[262,2651,743],{"class":280},[262,2653,2601],{"class":704},[262,2655,2604],{"class":280},[262,2657,827],{"class":280},[262,2659,1082],{"class":807},[262,2661,894],{"class":280},[262,2663,2664],{"class":264,"line":387},[262,2665,680],{"class":280},[262,2667,2668],{"class":264,"line":404},[262,2669,341],{"emptyLinePlaceholder":340},[262,2671,2672],{"class":264,"line":417},[262,2673,2674],{"class":347},"\u002F\u002F Usage\n",[262,2676,2677,2679,2682,2684,2687,2689,2691,2694,2696,2699,2702],{"class":264,"line":429},[262,2678,698],{"class":272},[262,2680,2681],{"class":704}," config ",[262,2683,737],{"class":280},[262,2685,2686],{"class":714}," useRuntimeConfig",[262,2688,2225],{"class":704},[262,2690,743],{"class":280},[262,2692,2693],{"class":704},"public",[262,2695,743],{"class":280},[262,2697,2698],{"class":704},"auth ",[262,2700,2701],{"class":268},"as",[262,2703,321],{"class":276},[262,2705,2706],{"class":264,"line":445},[262,2707,341],{"emptyLinePlaceholder":340},[262,2709,2710,2713,2715,2718,2721],{"class":264,"line":450},[262,2711,2712],{"class":268},"if",[262,2714,2280],{"class":704},[262,2716,2717],{"class":714},"isPassportConfig",[262,2719,2720],{"class":704},"(config)) ",[262,2722,2723],{"class":280},"{\n",[262,2725,2726],{"class":264,"line":456},[262,2727,2728],{"class":347},"  \u002F\u002F TypeScript knows this is PassportModuleOptions\n",[262,2730,2731,2734,2736,2739,2741,2743,2746,2748],{"class":264,"line":479},[262,2732,2733],{"class":704},"  console",[262,2735,743],{"class":280},[262,2737,2738],{"class":714},"log",[262,2740,464],{"class":287},[262,2742,804],{"class":280},[262,2744,2745],{"class":807},"Using Passport provider",[262,2747,804],{"class":280},[262,2749,476],{"class":287},[262,2751,2752,2754,2757,2760,2762,2765,2767],{"class":264,"line":513},[262,2753,708],{"class":280},[262,2755,2756],{"class":268}," else",[262,2758,2759],{"class":268}," if",[262,2761,2280],{"class":704},[262,2763,2764],{"class":714},"isSanctumConfig",[262,2766,2720],{"class":704},[262,2768,2723],{"class":280},[262,2770,2771],{"class":264,"line":543},[262,2772,2773],{"class":347},"  \u002F\u002F TypeScript knows this is SanctumModuleOptions\n",[262,2775,2776,2778,2780,2782,2784,2786,2789,2791],{"class":264,"line":560},[262,2777,2733],{"class":704},[262,2779,743],{"class":280},[262,2781,2738],{"class":714},[262,2783,464],{"class":287},[262,2785,804],{"class":280},[262,2787,2788],{"class":807},"Using Sanctum provider",[262,2790,804],{"class":280},[262,2792,476],{"class":287},[262,2794,2795],{"class":264,"line":612},[262,2796,680],{"class":280},[180,2798,2800],{"id":2799},"generic-types","Generic Types",[176,2802,2803],{},"Create generic functions with auth types:",[253,2805,2807],{"className":255,"code":2806,"language":257,"meta":258,"style":258},"import type { AuthInstance, ModuleOptions } from '#auth-types'\n\nasync function loginWithStrategy\u003CT extends keyof ModuleOptions['strategies']>(\n  auth: AuthInstance,\n  strategy: T,\n  credentials: Record\u003Cstring, unknown>\n) {\n  return await auth.loginWith(strategy as string, credentials)\n}\n\n\u002F\u002F Usage\nawait loginWithStrategy($auth, 'password', { \n  username: 'user@example.com', \n  password: 'secret' \n})\n",[195,2808,2809,2833,2837,2876,2887,2899,2918,2924,2951,2955,2959,2963,2986,3002,3016],{"__ignoreMap":258},[262,2810,2811,2813,2815,2817,2819,2821,2823,2825,2827,2829,2831],{"class":264,"line":265},[262,2812,875],{"class":268},[262,2814,1030],{"class":268},[262,2816,701],{"class":280},[262,2818,277],{"class":704},[262,2820,372],{"class":280},[262,2822,1595],{"class":704},[262,2824,883],{"class":280},[262,2826,886],{"class":268},[262,2828,827],{"class":280},[262,2830,1049],{"class":807},[262,2832,894],{"class":280},[262,2834,2835],{"class":264,"line":284},[262,2836,341],{"emptyLinePlaceholder":340},[262,2838,2839,2842,2844,2847,2849,2852,2855,2858,2860,2863,2865,2868,2870,2873],{"class":264,"line":297},[262,2840,2841],{"class":272},"async",[262,2843,2219],{"class":272},[262,2845,2846],{"class":714}," loginWithStrategy",[262,2848,366],{"class":280},[262,2850,2851],{"class":276},"T",[262,2853,2854],{"class":272}," extends",[262,2856,2857],{"class":280}," keyof",[262,2859,1595],{"class":276},[262,2861,2862],{"class":704},"[",[262,2864,804],{"class":280},[262,2866,2867],{"class":807},"strategies",[262,2869,804],{"class":280},[262,2871,2872],{"class":704},"]",[262,2874,2875],{"class":280},">(\n",[262,2877,2878,2881,2883,2885],{"class":264,"line":311},[262,2879,2880],{"class":467},"  auth",[262,2882,291],{"class":280},[262,2884,277],{"class":276},[262,2886,1087],{"class":280},[262,2888,2889,2892,2894,2897],{"class":264,"line":324},[262,2890,2891],{"class":467},"  strategy",[262,2893,291],{"class":280},[262,2895,2896],{"class":276}," T",[262,2898,1087],{"class":280},[262,2900,2901,2904,2906,2908,2910,2912,2914,2916],{"class":264,"line":337},[262,2902,2903],{"class":467},"  credentials",[262,2905,291],{"class":280},[262,2907,363],{"class":276},[262,2909,366],{"class":280},[262,2911,369],{"class":276},[262,2913,372],{"class":280},[262,2915,375],{"class":276},[262,2917,540],{"class":280},[262,2919,2920,2922],{"class":264,"line":344},[262,2921,2484],{"class":280},[262,2923,281],{"class":280},[262,2925,2926,2928,2930,2932,2934,2936,2938,2941,2943,2945,2947,2949],{"class":264,"line":351},[262,2927,2435],{"class":268},[262,2929,2320],{"class":268},[262,2931,2251],{"class":704},[262,2933,743],{"class":280},[262,2935,799],{"class":714},[262,2937,464],{"class":287},[262,2939,2940],{"class":704},"strategy",[262,2942,2258],{"class":268},[262,2944,397],{"class":276},[262,2946,372],{"class":280},[262,2948,2339],{"class":704},[262,2950,476],{"class":287},[262,2952,2953],{"class":264,"line":387},[262,2954,680],{"class":280},[262,2956,2957],{"class":264,"line":404},[262,2958,341],{"emptyLinePlaceholder":340},[262,2960,2961],{"class":264,"line":417},[262,2962,2674],{"class":347},[262,2964,2965,2967,2969,2972,2974,2976,2978,2980,2982,2984],{"class":264,"line":429},[262,2966,792],{"class":268},[262,2968,2846],{"class":714},[262,2970,2971],{"class":704},"($auth",[262,2973,372],{"class":280},[262,2975,827],{"class":280},[262,2977,808],{"class":807},[262,2979,804],{"class":280},[262,2981,372],{"class":280},[262,2983,701],{"class":280},[262,2985,817],{"class":704},[262,2987,2988,2990,2992,2994,2996,2998,3000],{"class":264,"line":445},[262,2989,822],{"class":287},[262,2991,291],{"class":280},[262,2993,827],{"class":280},[262,2995,830],{"class":807},[262,2997,804],{"class":280},[262,2999,372],{"class":280},[262,3001,817],{"class":704},[262,3003,3004,3006,3008,3010,3012,3014],{"class":264,"line":450},[262,3005,841],{"class":287},[262,3007,291],{"class":280},[262,3009,827],{"class":280},[262,3011,848],{"class":807},[262,3013,804],{"class":280},[262,3015,817],{"class":704},[262,3017,3018,3020],{"class":264,"line":456},[262,3019,708],{"class":280},[262,3021,476],{"class":704},[180,3023,3025],{"id":3024},"extending-types","Extending Types",[176,3027,3028],{},"You can extend Nuxt Umbu types for your application:",[253,3030,3032],{"className":255,"code":3031,"language":257,"meta":258,"style":258},"\u002F\u002F types\u002Fauth.d.ts\nimport type { AuthInstance } from '#auth-types'\n\ndeclare module '#auth-types' {\n  interface AuthInstance {\n    customMethod(): Promise\u003Cvoid>\n  }\n}\n\n\u002F\u002F Implementation\nconst { $auth } = useNuxtApp()\n$auth.customMethod() \u002F\u002F Now typed\n",[195,3033,3034,3039,3059,3063,3079,3088,3103,3107,3111,3115,3120,3136],{"__ignoreMap":258},[262,3035,3036],{"class":264,"line":265},[262,3037,3038],{"class":347},"\u002F\u002F types\u002Fauth.d.ts\n",[262,3040,3041,3043,3045,3047,3049,3051,3053,3055,3057],{"class":264,"line":284},[262,3042,875],{"class":268},[262,3044,1030],{"class":268},[262,3046,701],{"class":280},[262,3048,277],{"class":704},[262,3050,883],{"class":280},[262,3052,886],{"class":268},[262,3054,827],{"class":280},[262,3056,1049],{"class":807},[262,3058,894],{"class":280},[262,3060,3061],{"class":264,"line":297},[262,3062,341],{"emptyLinePlaceholder":340},[262,3064,3065,3068,3071,3073,3075,3077],{"class":264,"line":311},[262,3066,3067],{"class":272},"declare",[262,3069,3070],{"class":272}," module",[262,3072,827],{"class":280},[262,3074,1049],{"class":807},[262,3076,804],{"class":280},[262,3078,281],{"class":280},[262,3080,3081,3084,3086],{"class":264,"line":324},[262,3082,3083],{"class":272},"  interface",[262,3085,277],{"class":276},[262,3087,281],{"class":280},[262,3089,3090,3093,3095,3097,3099,3101],{"class":264,"line":337},[262,3091,3092],{"class":287},"    customMethod",[262,3094,360],{"class":280},[262,3096,532],{"class":276},[262,3098,366],{"class":280},[262,3100,555],{"class":276},[262,3102,540],{"class":280},[262,3104,3105],{"class":264,"line":344},[262,3106,1261],{"class":280},[262,3108,3109],{"class":264,"line":351},[262,3110,680],{"class":280},[262,3112,3113],{"class":264,"line":387},[262,3114,341],{"emptyLinePlaceholder":340},[262,3116,3117],{"class":264,"line":404},[262,3118,3119],{"class":347},"\u002F\u002F Implementation\n",[262,3121,3122,3124,3126,3128,3130,3132,3134],{"class":264,"line":417},[262,3123,698],{"class":272},[262,3125,701],{"class":280},[262,3127,705],{"class":704},[262,3129,708],{"class":280},[262,3131,711],{"class":280},[262,3133,715],{"class":714},[262,3135,718],{"class":704},[262,3137,3138,3141,3143,3146,3149],{"class":264,"line":429},[262,3139,3140],{"class":704},"$auth",[262,3142,743],{"class":280},[262,3144,3145],{"class":714},"customMethod",[262,3147,3148],{"class":704},"() ",[262,3150,3151],{"class":347},"\u002F\u002F Now typed\n",[180,3153,3155],{"id":3154},"type-safe-api-calls","Type-Safe API Calls",[176,3157,3158],{},"Combine auth types with API calls:",[253,3160,3162],{"className":255,"code":3161,"language":257,"meta":258,"style":258},"import type { AuthInstance } from '#auth-types'\n\nasync function fetchProtectedData(auth: AuthInstance) {\n  if (!auth.loggedIn) {\n    throw new Error('Not authenticated')\n  }\n\n  const headers = auth.headers\n  const response = await $fetch('\u002Fapi\u002Fprotected', {\n    headers: Object.fromEntries(headers.entries())\n  })\n\n  return response\n}\n",[195,3163,3164,3184,3188,3209,3230,3252,3256,3260,3275,3302,3329,3336,3340,3347],{"__ignoreMap":258},[262,3165,3166,3168,3170,3172,3174,3176,3178,3180,3182],{"class":264,"line":265},[262,3167,875],{"class":268},[262,3169,1030],{"class":268},[262,3171,701],{"class":280},[262,3173,277],{"class":704},[262,3175,883],{"class":280},[262,3177,886],{"class":268},[262,3179,827],{"class":280},[262,3181,1049],{"class":807},[262,3183,894],{"class":280},[262,3185,3186],{"class":264,"line":284},[262,3187,341],{"emptyLinePlaceholder":340},[262,3189,3190,3192,3194,3197,3199,3201,3203,3205,3207],{"class":264,"line":297},[262,3191,2841],{"class":272},[262,3193,2219],{"class":272},[262,3195,3196],{"class":714}," fetchProtectedData",[262,3198,464],{"class":280},[262,3200,112],{"class":467},[262,3202,291],{"class":280},[262,3204,277],{"class":276},[262,3206,2484],{"class":280},[262,3208,281],{"class":280},[262,3210,3211,3214,3216,3219,3221,3223,3225,3228],{"class":264,"line":311},[262,3212,3213],{"class":268},"  if",[262,3215,2280],{"class":287},[262,3217,3218],{"class":280},"!",[262,3220,112],{"class":704},[262,3222,743],{"class":280},[262,3224,2508],{"class":704},[262,3226,3227],{"class":287},") ",[262,3229,2723],{"class":280},[262,3231,3232,3235,3238,3241,3243,3245,3248,3250],{"class":264,"line":324},[262,3233,3234],{"class":268},"    throw",[262,3236,3237],{"class":280}," new",[262,3239,3240],{"class":714}," Error",[262,3242,464],{"class":287},[262,3244,804],{"class":280},[262,3246,3247],{"class":807},"Not authenticated",[262,3249,804],{"class":280},[262,3251,476],{"class":287},[262,3253,3254],{"class":264,"line":337},[262,3255,1261],{"class":280},[262,3257,3258],{"class":264,"line":344},[262,3259,341],{"emptyLinePlaceholder":340},[262,3261,3262,3264,3266,3268,3270,3272],{"class":264,"line":351},[262,3263,2232],{"class":272},[262,3265,422],{"class":704},[262,3267,711],{"class":280},[262,3269,2251],{"class":704},[262,3271,743],{"class":280},[262,3273,3274],{"class":704},"headers\n",[262,3276,3277,3279,3282,3284,3286,3289,3291,3293,3296,3298,3300],{"class":264,"line":387},[262,3278,2232],{"class":272},[262,3280,3281],{"class":704}," response",[262,3283,711],{"class":280},[262,3285,2320],{"class":268},[262,3287,3288],{"class":714}," $fetch",[262,3290,464],{"class":287},[262,3292,804],{"class":280},[262,3294,3295],{"class":807},"\u002Fapi\u002Fprotected",[262,3297,804],{"class":280},[262,3299,372],{"class":280},[262,3301,281],{"class":280},[262,3303,3304,3307,3309,3312,3314,3317,3319,3321,3323,3326],{"class":264,"line":404},[262,3305,3306],{"class":287},"    headers",[262,3308,291],{"class":280},[262,3310,3311],{"class":704}," Object",[262,3313,743],{"class":280},[262,3315,3316],{"class":714},"fromEntries",[262,3318,464],{"class":287},[262,3320,468],{"class":704},[262,3322,743],{"class":280},[262,3324,3325],{"class":714},"entries",[262,3327,3328],{"class":287},"())\n",[262,3330,3331,3334],{"class":264,"line":417},[262,3332,3333],{"class":280},"  }",[262,3335,476],{"class":287},[262,3337,3338],{"class":264,"line":429},[262,3339,341],{"emptyLinePlaceholder":340},[262,3341,3342,3344],{"class":264,"line":445},[262,3343,2435],{"class":268},[262,3345,3346],{"class":704}," response\n",[262,3348,3349],{"class":264,"line":450},[262,3350,680],{"class":280},[180,3352,3354],{"id":3353},"ide-autocomplete","IDE Autocomplete",[215,3356,3358],{"id":3357},"vs-code","VS Code",[176,3360,3361],{},"VS Code provides full autocomplete for Nuxt Umbu:",[3363,3364,3365,3368,3371,3374],"ol",{},[202,3366,3367],{},"Install the official Vue extension",[202,3369,3370],{},"Ensure TypeScript is enabled",[202,3372,3373],{},"Restart VS Code after configuration changes",[202,3375,3376,3377],{},"Types are automatically loaded from ",[195,3378,224],{},[215,3380,3382],{"id":3381},"webstorm","WebStorm",[176,3384,3385],{},"WebStorm also supports Nuxt Umbu types:",[3363,3387,3388,3391,3394,3397],{},[202,3389,3390],{},"Enable TypeScript in project settings",[202,3392,3393],{},"Ensure node_modules are properly indexed",[202,3395,3396],{},"Use \"Invalidate Caches\" if types don't appear",[202,3398,3399],{},"Types are automatically recognized",[180,3401,3403],{"id":3402},"type-checking-in-ci","Type Checking in CI",[176,3405,3406],{},"Add type checking to your CI pipeline:",[253,3408,3412],{"className":3409,"code":3410,"language":3411,"meta":258,"style":258},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"scripts\": {\n    \"typecheck\": \"nuxt typecheck\"\n  }\n}\n","json",[195,3413,3414,3418,3433,3454,3458],{"__ignoreMap":258},[262,3415,3416],{"class":264,"line":265},[262,3417,2723],{"class":280},[262,3419,3420,3423,3426,3429,3431],{"class":264,"line":284},[262,3421,3422],{"class":280},"  \"",[262,3424,3425],{"class":272},"scripts",[262,3427,3428],{"class":280},"\"",[262,3430,291],{"class":280},[262,3432,281],{"class":280},[262,3434,3435,3438,3441,3443,3445,3448,3451],{"class":264,"line":297},[262,3436,3437],{"class":280},"    \"",[262,3439,3440],{"class":276},"typecheck",[262,3442,3428],{"class":280},[262,3444,291],{"class":280},[262,3446,3447],{"class":280}," \"",[262,3449,3450],{"class":807},"nuxt typecheck",[262,3452,3453],{"class":280},"\"\n",[262,3455,3456],{"class":264,"line":311},[262,3457,1261],{"class":280},[262,3459,3460],{"class":264,"line":324},[262,3461,680],{"class":280},[253,3463,3467],{"className":3464,"code":3465,"language":3466,"meta":258,"style":258},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# .github\u002Fworkflows\u002Fci.yml\n- name: Type check\n  run: pnpm typecheck\n","yaml",[195,3468,3469,3474,3487],{"__ignoreMap":258},[262,3470,3471],{"class":264,"line":265},[262,3472,3473],{"class":347},"# .github\u002Fworkflows\u002Fci.yml\n",[262,3475,3476,3479,3482,3484],{"class":264,"line":284},[262,3477,3478],{"class":280},"-",[262,3480,3481],{"class":287}," name",[262,3483,291],{"class":280},[262,3485,3486],{"class":807}," Type check\n",[262,3488,3489,3492,3494],{"class":264,"line":297},[262,3490,3491],{"class":287},"  run",[262,3493,291],{"class":280},[262,3495,3496],{"class":807}," pnpm typecheck\n",[180,3498,3500],{"id":3499},"common-type-issues","Common Type Issues",[215,3502,3504],{"id":3503},"types-not-recognized","Types Not Recognized",[176,3506,3507],{},"If types aren't recognized:",[3363,3509,3510,3513,3520,3523],{},[202,3511,3512],{},"Restart your IDE",[202,3514,3515,3516,3519],{},"Delete ",[195,3517,3518],{},".nuxt"," folder and rebuild",[202,3521,3522],{},"Ensure TypeScript is enabled in your project",[202,3524,3525,3526,3529],{},"Check that ",[195,3527,3528],{},"@nuxt\u002Fkit"," is properly installed",[215,3531,3533],{"id":3532},"type-errors-after-updates","Type Errors After Updates",[176,3535,3536],{},"If you get type errors after updates:",[3363,3538,3539,3548,3554,3560],{},[202,3540,3541,3542,3544,3545],{},"Clear ",[195,3543,3518],{}," folder: ",[195,3546,3547],{},"rm -rf .nuxt",[202,3549,3550,3551],{},"Reinstall dependencies: ",[195,3552,3553],{},"pnpm install",[202,3555,3556,3557],{},"Restart dev server: ",[195,3558,3559],{},"pnpm dev",[202,3561,3562],{},"Check for breaking changes in changelog",[215,3564,3566],{"id":3565},"missing-autocomplete","Missing Autocomplete",[176,3568,3569],{},"If autocomplete doesn't work:",[3363,3571,3572,3575,3584,3587],{},[202,3573,3574],{},"Verify TypeScript language service is running",[202,3576,3525,3577,3580,3581],{},[195,3578,3579],{},"umbu.d.ts"," exists in ",[195,3582,3583],{},".nuxt\u002Ftypes\u002F",[202,3585,3586],{},"Ensure your IDE supports TypeScript",[202,3588,3589],{},"Try restarting the TypeScript server",[180,3591,3593],{"id":3592},"best-practices","Best Practices",[199,3595,3596,3602,3605,3608,3611,3614,3617,3620],{},[202,3597,3598,3599,3601],{},"Always use types from ",[195,3600,1049],{}," for type safety",[202,3603,3604],{},"Leverage IDE autocomplete for faster development",[202,3606,3607],{},"Add type checking to your CI pipeline",[202,3609,3610],{},"Use type guards for runtime type checking",[202,3612,3613],{},"Extend types when adding custom auth methods",[202,3615,3616],{},"Keep type definitions updated with configuration changes",[202,3618,3619],{},"Use generic types for reusable auth functions",[202,3621,3622],{},"Document custom type extensions for your team",[180,3624,3626],{"id":3625},"troubleshooting","Troubleshooting",[215,3628,3630],{"id":3629},"generated-types-outdated","Generated Types Outdated",[176,3632,3633],{},"If generated types seem outdated:",[253,3635,3639],{"className":3636,"code":3637,"language":3638,"meta":258,"style":258},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Clear Nuxt cache\nrm -rf .nuxt\n\n# Restart dev server\npnpm dev\n","bash",[195,3640,3641,3646,3657,3661,3666],{"__ignoreMap":258},[262,3642,3643],{"class":264,"line":265},[262,3644,3645],{"class":347},"# Clear Nuxt cache\n",[262,3647,3648,3651,3654],{"class":264,"line":284},[262,3649,3650],{"class":276},"rm",[262,3652,3653],{"class":807}," -rf",[262,3655,3656],{"class":807}," .nuxt\n",[262,3658,3659],{"class":264,"line":297},[262,3660,341],{"emptyLinePlaceholder":340},[262,3662,3663],{"class":264,"line":311},[262,3664,3665],{"class":347},"# Restart dev server\n",[262,3667,3668,3671],{"class":264,"line":324},[262,3669,3670],{"class":276},"pnpm",[262,3672,3673],{"class":807}," dev\n",[215,3675,3677],{"id":3676},"type-conflicts","Type Conflicts",[176,3679,3680],{},"If you have type conflicts:",[253,3682,3684],{"className":255,"code":3683,"language":257,"meta":258,"style":258},"\u002F\u002F Use type assertions carefully\nimport type { AuthInstance } from '#auth-types'\nconst auth = $auth as AuthInstance\n",[195,3685,3686,3691,3711],{"__ignoreMap":258},[262,3687,3688],{"class":264,"line":265},[262,3689,3690],{"class":347},"\u002F\u002F Use type assertions carefully\n",[262,3692,3693,3695,3697,3699,3701,3703,3705,3707,3709],{"class":264,"line":284},[262,3694,875],{"class":268},[262,3696,1030],{"class":268},[262,3698,701],{"class":280},[262,3700,277],{"class":704},[262,3702,883],{"class":280},[262,3704,886],{"class":268},[262,3706,827],{"class":280},[262,3708,1049],{"class":807},[262,3710,894],{"class":280},[262,3712,3713,3715,3718,3720,3722,3724],{"class":264,"line":297},[262,3714,698],{"class":272},[262,3716,3717],{"class":704}," auth ",[262,3719,737],{"class":280},[262,3721,705],{"class":704},[262,3723,2701],{"class":268},[262,3725,2261],{"class":276},[215,3727,3729],{"id":3728},"missing-provider-types","Missing Provider Types",[176,3731,3732],{},"If provider-specific types are missing:",[3363,3734,3735,3738,3743,3746],{},[202,3736,3737],{},"Verify provider is correctly configured",[202,3739,3525,3740,3742],{},[195,3741,130],{}," hook ran successfully",[202,3744,3745],{},"Ensure provider templates are available",[202,3747,3748],{},"Rebuild the project",[180,3750,3752],{"id":3751},"type-safety-benefits","Type Safety Benefits",[176,3754,3755],{},"Using TypeScript with Nuxt Umbu provides:",[199,3757,3758,3765,3771,3777,3783,3789],{},[202,3759,3760,3764],{},[3761,3762,3763],"strong",{},"Compile-time error detection",": Catch errors before runtime",[202,3766,3767,3770],{},[3761,3768,3769],{},"Better IDE support",": Full autocomplete and documentation",[202,3772,3773,3776],{},[3761,3774,3775],{},"Refactoring confidence",": Safe code changes",[202,3778,3779,3782],{},[3761,3780,3781],{},"Self-documenting code",": Types serve as documentation",[202,3784,3785,3788],{},[3761,3786,3787],{},"Team collaboration",": Clear contracts between components",[202,3790,3791,3794],{},[3761,3792,3793],{},"Reduced testing",": Type system catches many bugs",[3796,3797,3798],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--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 .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}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 .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}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 .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":258,"searchDepth":265,"depth":284,"links":3800},[3801,3802,3805,3806,3810,3814,3819,3820,3821,3822,3823,3824,3828,3829,3834,3835,3840],{"id":182,"depth":284,"text":183},{"id":189,"depth":284,"text":190,"children":3803},[3804],{"id":217,"depth":297,"text":218},{"id":244,"depth":284,"text":245},{"id":683,"depth":284,"text":684,"children":3807},[3808,3809],{"id":687,"depth":297,"text":688},{"id":861,"depth":297,"text":862},{"id":1013,"depth":284,"text":1014,"children":3811},[3812,3813],{"id":1017,"depth":297,"text":1018},{"id":1268,"depth":297,"text":1269},{"id":1574,"depth":284,"text":1575,"children":3815},[3816,3817,3818],{"id":1578,"depth":297,"text":1579},{"id":1864,"depth":297,"text":1865},{"id":2052,"depth":297,"text":2053},{"id":2179,"depth":284,"text":2180},{"id":2521,"depth":284,"text":2522},{"id":2799,"depth":284,"text":2800},{"id":3024,"depth":284,"text":3025},{"id":3154,"depth":284,"text":3155},{"id":3353,"depth":284,"text":3354,"children":3825},[3826,3827],{"id":3357,"depth":297,"text":3358},{"id":3381,"depth":297,"text":3382},{"id":3402,"depth":284,"text":3403},{"id":3499,"depth":284,"text":3500,"children":3830},[3831,3832,3833],{"id":3503,"depth":297,"text":3504},{"id":3532,"depth":297,"text":3533},{"id":3565,"depth":297,"text":3566},{"id":3592,"depth":284,"text":3593},{"id":3625,"depth":284,"text":3626,"children":3836},[3837,3838,3839],{"id":3629,"depth":297,"text":3630},{"id":3676,"depth":297,"text":3677},{"id":3728,"depth":297,"text":3729},{"id":3751,"depth":284,"text":3752},"TypeScript types and IDE support for Nuxt Umbu","md",null,{},{"icon":133},{"title":153,"description":3841},"wCNf5ZmHzbp16CBxeiZcFiJYt7ewZ0icyzZPAa2pOlY",[3849,3851],{"title":149,"path":150,"stem":151,"description":3850,"icon":32,"children":-1},"Advanced cookie settings and security configuration",{"title":157,"path":158,"stem":159,"description":3852,"icon":160,"children":-1},"Using",1785126615689]