[{"data":1,"prerenderedAt":791},["ShallowReactive",2],{"navigation":3,"\u002Fhooks\u002Fprepare-types":170,"\u002Fhooks\u002Fprepare-types-surround":786},[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":130,"body":172,"description":779,"extension":780,"links":781,"meta":782,"navigation":783,"path":131,"seo":784,"stem":132,"__hash__":785},"docs\u002F6.hooks\u002F2.prepare-types.md",{"type":173,"value":174,"toc":764},"minimark",[175,183,188,191,207,211,216,223,330,333,337,340,402,405,457,461,464,477,481,487,504,508,511,515,604,608,658,661,664,736,739,743,760],[176,177,178,179,182],"p",{},"The ",[180,181,130],"code",{}," hook is used by Nuxt Umbu to configure TypeScript types and module references, ensuring full IDE support and type safety.",[184,185,187],"h2",{"id":186},"overview","Overview",[176,189,190],{},"This hook runs during Nuxt's TypeScript preparation phase and is responsible for:",[192,193,194,198,201,204],"ul",{},[195,196,197],"li",{},"Generating type definitions for the auth instance",[195,199,200],{},"Adding type references to the TypeScript project",[195,202,203],{},"Configuring path aliases for module imports",[195,205,206],{},"Ensuring IDE autocomplete works correctly",[184,208,210],{"id":209},"what-it-does","What It Does",[212,213,215],"h3",{"id":214},"_1-type-reference-registration","1. Type Reference Registration",[176,217,218,219,222],{},"The hook adds the generated ",[180,220,221],{},"umbu.d.ts"," file to TypeScript references:",[224,225,230],"pre",{"className":226,"code":227,"language":228,"meta":229,"style":229},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","nuxt.hook('prepare:types', ({ references, tsConfig }) => {\n  references.push({ path: umbuTypes.dst })\n})\n","typescript","",[180,231,232,285,322],{"__ignoreMap":229},[233,234,237,241,245,249,252,255,258,260,263,266,270,272,275,278,282],"span",{"class":235,"line":236},"line",1,[233,238,240],{"class":239},"sTEyZ","nuxt",[233,242,244],{"class":243},"sMK4o",".",[233,246,248],{"class":247},"s2Zo4","hook",[233,250,251],{"class":239},"(",[233,253,254],{"class":243},"'",[233,256,130],{"class":257},"sfazB",[233,259,254],{"class":243},[233,261,262],{"class":243},",",[233,264,265],{"class":243}," ({",[233,267,269],{"class":268},"sHdIc"," references",[233,271,262],{"class":243},[233,273,274],{"class":268}," tsConfig",[233,276,277],{"class":243}," })",[233,279,281],{"class":280},"spNyl"," =>",[233,283,284],{"class":243}," {\n",[233,286,288,291,293,296,299,302,305,308,311,313,316,319],{"class":235,"line":287},2,[233,289,290],{"class":239},"  references",[233,292,244],{"class":243},[233,294,295],{"class":247},"push",[233,297,251],{"class":298},"swJcz",[233,300,301],{"class":243},"{",[233,303,304],{"class":298}," path",[233,306,307],{"class":243},":",[233,309,310],{"class":239}," umbuTypes",[233,312,244],{"class":243},[233,314,315],{"class":239},"dst",[233,317,318],{"class":243}," }",[233,320,321],{"class":298},")\n",[233,323,325,328],{"class":235,"line":324},3,[233,326,327],{"class":243},"}",[233,329,321],{"class":239},[176,331,332],{},"This ensures TypeScript includes the generated types in your project.",[212,334,336],{"id":335},"_2-path-alias-configuration","2. Path Alias Configuration",[176,338,339],{},"The hook configures TypeScript compiler options to recognize module aliases:",[224,341,343],{"className":226,"code":342,"language":228,"meta":229,"style":229},"tsConfig.compilerOptions.paths['#auth-utils'] = [runtimeUtilsPath]\ntsConfig.compilerOptions.paths['#auth-types'] = [runtimeTypesPath]\n",[180,344,345,376],{"__ignoreMap":229},[233,346,347,350,352,355,357,360,362,365,367,370,373],{"class":235,"line":236},[233,348,349],{"class":239},"tsConfig",[233,351,244],{"class":243},[233,353,354],{"class":239},"compilerOptions",[233,356,244],{"class":243},[233,358,359],{"class":239},"paths[",[233,361,254],{"class":243},[233,363,364],{"class":257},"#auth-utils",[233,366,254],{"class":243},[233,368,369],{"class":239},"] ",[233,371,372],{"class":243},"=",[233,374,375],{"class":239}," [runtimeUtilsPath]\n",[233,377,378,380,382,384,386,388,390,393,395,397,399],{"class":235,"line":287},[233,379,349],{"class":239},[233,381,244],{"class":243},[233,383,354],{"class":239},[233,385,244],{"class":243},[233,387,359],{"class":239},[233,389,254],{"class":243},[233,391,392],{"class":257},"#auth-types",[233,394,254],{"class":243},[233,396,369],{"class":239},[233,398,372],{"class":243},[233,400,401],{"class":239}," [runtimeTypesPath]\n",[176,403,404],{},"This allows you to import from these aliases with full type support:",[224,406,408],{"className":226,"code":407,"language":228,"meta":229,"style":229},"import { someHelper } from '#auth-utils'\nimport type { AuthInstance } from '#auth-types'\n",[180,409,410,435],{"__ignoreMap":229},[233,411,412,416,419,422,424,427,430,432],{"class":235,"line":236},[233,413,415],{"class":414},"s7zQu","import",[233,417,418],{"class":243}," {",[233,420,421],{"class":239}," someHelper",[233,423,318],{"class":243},[233,425,426],{"class":414}," from",[233,428,429],{"class":243}," '",[233,431,364],{"class":257},[233,433,434],{"class":243},"'\n",[233,436,437,439,442,444,447,449,451,453,455],{"class":235,"line":287},[233,438,415],{"class":414},[233,440,441],{"class":414}," type",[233,443,418],{"class":243},[233,445,446],{"class":239}," AuthInstance",[233,448,318],{"class":243},[233,450,426],{"class":414},[233,452,429],{"class":243},[233,454,392],{"class":257},[233,456,434],{"class":243},[212,458,460],{"id":459},"_3-provider-specific-types","3. Provider-Specific Types",[176,462,463],{},"The hook ensures the correct type definitions are loaded based on your configured provider:",[192,465,466,472],{},[195,467,468,471],{},[469,470,19],"strong",{},": Cookie-based authentication types",[195,473,474,476],{},[469,475,44],{},": Token-based authentication types",[184,478,480],{"id":479},"generated-types","Generated Types",[176,482,483,484,486],{},"The hook triggers the generation of ",[180,485,221],{}," which includes:",[192,488,489,495,498,501],{},[195,490,491,494],{},[180,492,493],{},"AuthInstance"," interface with all auth methods",[195,496,497],{},"Provider-specific type definitions",[195,499,500],{},"Configuration option types",[195,502,503],{},"State management types",[184,505,507],{"id":506},"usage","Usage",[176,509,510],{},"No manual usage is required - the hook runs automatically during the build process. However, you can benefit from its effects:",[212,512,514],{"id":513},"ide-autocomplete","IDE Autocomplete",[224,516,518],{"className":226,"code":517,"language":228,"meta":229,"style":229},"const { $auth } = useNuxtApp()\n\n\u002F\u002F Full autocomplete available\n$auth.loginWith('passport', { \u002F* ... *\u002F })\n$auth.logout('passport')\n",[180,519,520,541,547,553,584],{"__ignoreMap":229},[233,521,522,525,527,530,532,535,538],{"class":235,"line":236},[233,523,524],{"class":280},"const",[233,526,418],{"class":243},[233,528,529],{"class":239}," $auth ",[233,531,327],{"class":243},[233,533,534],{"class":243}," =",[233,536,537],{"class":247}," useNuxtApp",[233,539,540],{"class":239},"()\n",[233,542,543],{"class":235,"line":287},[233,544,546],{"emptyLinePlaceholder":545},true,"\n",[233,548,549],{"class":235,"line":324},[233,550,552],{"class":551},"sHwdD","\u002F\u002F Full autocomplete available\n",[233,554,556,559,561,564,566,568,571,573,575,577,580,582],{"class":235,"line":555},4,[233,557,558],{"class":239},"$auth",[233,560,244],{"class":243},[233,562,563],{"class":247},"loginWith",[233,565,251],{"class":239},[233,567,254],{"class":243},[233,569,570],{"class":257},"passport",[233,572,254],{"class":243},[233,574,262],{"class":243},[233,576,418],{"class":243},[233,578,579],{"class":551}," \u002F* ... *\u002F",[233,581,318],{"class":243},[233,583,321],{"class":239},[233,585,587,589,591,594,596,598,600,602],{"class":235,"line":586},5,[233,588,558],{"class":239},[233,590,244],{"class":243},[233,592,593],{"class":247},"logout",[233,595,251],{"class":239},[233,597,254],{"class":243},[233,599,570],{"class":257},[233,601,254],{"class":243},[233,603,321],{"class":239},[212,605,607],{"id":606},"type-safe-imports","Type-Safe Imports",[224,609,611],{"className":226,"code":610,"language":228,"meta":229,"style":229},"\u002F\u002F Type-safe imports with aliases\nimport { useAuthStore } from '#auth-utils'\nimport type { ModuleOptions } from '#auth-types'\n",[180,612,613,618,637],{"__ignoreMap":229},[233,614,615],{"class":235,"line":236},[233,616,617],{"class":551},"\u002F\u002F Type-safe imports with aliases\n",[233,619,620,622,624,627,629,631,633,635],{"class":235,"line":287},[233,621,415],{"class":414},[233,623,418],{"class":243},[233,625,626],{"class":239}," useAuthStore",[233,628,318],{"class":243},[233,630,426],{"class":414},[233,632,429],{"class":243},[233,634,364],{"class":257},[233,636,434],{"class":243},[233,638,639,641,643,645,648,650,652,654,656],{"class":235,"line":324},[233,640,415],{"class":414},[233,642,441],{"class":414},[233,644,418],{"class":243},[233,646,647],{"class":239}," ModuleOptions",[233,649,318],{"class":243},[233,651,426],{"class":414},[233,653,429],{"class":243},[233,655,392],{"class":257},[233,657,434],{"class":243},[184,659,24],{"id":660},"configuration",[176,662,663],{},"The hook behavior is controlled by your module configuration:",[224,665,667],{"className":226,"code":666,"language":228,"meta":229,"style":229},"\u002F\u002F nuxt.config.ts\nexport default defineNuxtConfig({\n  auth: {\n    provider: 'sanctum', \u002F\u002F or 'passport'\n    \u002F\u002F ... other options\n  }\n})\n",[180,668,669,674,690,699,718,723,729],{"__ignoreMap":229},[233,670,671],{"class":235,"line":236},[233,672,673],{"class":551},"\u002F\u002F nuxt.config.ts\n",[233,675,676,679,682,685,687],{"class":235,"line":287},[233,677,678],{"class":414},"export",[233,680,681],{"class":414}," default",[233,683,684],{"class":247}," defineNuxtConfig",[233,686,251],{"class":239},[233,688,689],{"class":243},"{\n",[233,691,692,695,697],{"class":235,"line":324},[233,693,694],{"class":298},"  auth",[233,696,307],{"class":243},[233,698,284],{"class":243},[233,700,701,704,706,708,711,713,715],{"class":235,"line":555},[233,702,703],{"class":298},"    provider",[233,705,307],{"class":243},[233,707,429],{"class":243},[233,709,710],{"class":257},"sanctum",[233,712,254],{"class":243},[233,714,262],{"class":243},[233,716,717],{"class":551}," \u002F\u002F or 'passport'\n",[233,719,720],{"class":235,"line":586},[233,721,722],{"class":551},"    \u002F\u002F ... other options\n",[233,724,726],{"class":235,"line":725},6,[233,727,728],{"class":243},"  }\n",[233,730,732,734],{"class":235,"line":731},7,[233,733,327],{"class":243},[233,735,321],{"class":239},[176,737,738],{},"The hook automatically adapts to your provider choice.",[184,740,742],{"id":741},"notes","Notes",[192,744,745,748,754,757],{},[195,746,747],{},"The hook runs during Nuxt's build process",[195,749,750,751],{},"Generated types are located in ",[180,752,753],{},".nuxt\u002Ftypes\u002Fumbu.d.ts",[195,755,756],{},"Changes to module configuration require a rebuild to update types",[195,758,759],{},"The hook is essential for TypeScript support in Nuxt Umbu",[761,762,763],"style",{},"html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}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 .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 pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}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 .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 .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}",{"title":229,"searchDepth":236,"depth":287,"links":765},[766,767,772,773,777,778],{"id":186,"depth":287,"text":187},{"id":209,"depth":287,"text":210,"children":768},[769,770,771],{"id":214,"depth":324,"text":215},{"id":335,"depth":324,"text":336},{"id":459,"depth":324,"text":460},{"id":479,"depth":287,"text":480},{"id":506,"depth":287,"text":507,"children":774},[775,776],{"id":513,"depth":324,"text":514},{"id":606,"depth":324,"text":607},{"id":660,"depth":287,"text":24},{"id":741,"depth":287,"text":742},"Nuxt hook for TypeScript type configuration","md",null,{},{"icon":133},{"title":130,"description":779},"zznggpEknLC_k4PoQddU5VEeQSeaN9UA_wKhIOeKOX8",[787,789],{"title":121,"path":126,"stem":127,"description":788,"icon":128,"children":-1},"Nuxt hooks used by Nuxt Umbu for module integration",{"title":135,"path":140,"stem":141,"description":790,"icon":142,"children":-1},"Advanced configuration and customization options for Nuxt Umbu",1785126615145]