1- import type { Strategy , ModuleOptions , ProviderNames , SchemeNames , ImportOptions } from './types' ;
1+ import type { StrategyOptions , ModuleOptions , SchemeNames , ImportOptions } from './types' ;
22import type { Nuxt } from '@nuxt/schema' ;
3- import { OAUTH2DEFAULTS , LOCALDEFAULTS , ProviderAliases , BuiltinSchemes } from './runtime/inc/default-properties' ;
4- import { addAuthorize , addLocalAuthorize , assignAbsoluteEndpoints , assignDefaults } from './utils/provider' ;
3+ import { OAUTH2DEFAULTS , LOCALDEFAULTS , ProviderAliases , BuiltinSchemes , LocalSchemes , OAuth2Schemes } from './runtime/inc/default-properties' ;
4+ import { addAuthorize , addLocalAuthorize , assignAbsoluteEndpoints , assignDefaults , } from './utils/provider' ;
5+ import { hasOwn } from './utils' ;
56import * as AUTH_PROVIDERS from './runtime/providers' ;
67import { resolvePath } from '@nuxt/kit' ;
78import { existsSync } from 'fs' ;
89import { hash } from 'ohash' ;
910
1011export async function resolveStrategies ( nuxt : Nuxt , options : ModuleOptions ) {
11- const strategies : Strategy [ ] = [ ] ;
12+ const strategies : StrategyOptions [ ] = [ ] ;
1213 const strategyScheme = { } as Record < string , ImportOptions > ;
1314
1415 for ( const name of Object . keys ( options . strategies ! ) ) {
15- if ( ! options . strategies ! [ name ] || ( options . strategies as Strategy ) [ name ] . enabled === false ) {
16+ if ( ! options . strategies ?. [ name ] || options . strategies ?. [ name ] . enabled === false ) {
1617 continue ;
1718 }
1819
1920 // Clone strategy
20- const strategy = Object . assign ( { } , options . strategies ! [ name ] ) as Strategy ;
21+ const strategy = Object . assign ( { } , options . strategies ! [ name ] ) ;
2122
2223 // Default name
2324 if ( ! strategy . name ) {
@@ -26,14 +27,18 @@ export async function resolveStrategies(nuxt: Nuxt, options: ModuleOptions) {
2627
2728 // Default provider (same as name)
2829 if ( ! strategy . provider ) {
29- strategy . provider = strategy . name as ProviderNames ;
30+ strategy . provider = strategy . name ;
3031 }
3132
3233 // Determine if SSR is enabled
33- strategy . ssr = nuxt . options . ssr
34+ if ( hasOwn ( strategy , 'ssr' ) ) {
35+ strategy . ssr = strategy . ssr ;
36+ } else {
37+ strategy . ssr = nuxt . options . ssr ;
38+ }
3439
3540 // Try to resolve provider
36- const provider = await resolveProvider ( strategy . provider , nuxt , strategy ) ;
41+ const provider = await resolveProvider ( strategy . provider as string , nuxt , strategy ) ;
3742
3843 delete strategy . provider ;
3944
@@ -50,7 +55,7 @@ export async function resolveStrategies(nuxt: Nuxt, options: ModuleOptions) {
5055 // Resolve and keep scheme needed for strategy
5156 const schemeImport = await resolveScheme ( strategy . scheme ) ;
5257 delete strategy . scheme ;
53- strategyScheme [ strategy . name ] = schemeImport as ImportOptions ;
58+ strategyScheme [ strategy . name ] = schemeImport ! ;
5459
5560 // Add strategy to array
5661 strategies . push ( strategy ) ;
@@ -90,7 +95,7 @@ export async function resolveScheme(scheme: string) {
9095 }
9196}
9297
93- export async function resolveProvider ( provider : string | ( ( ...args : any [ ] ) => any ) , nuxt : Nuxt , strategy : Strategy ) {
98+ export async function resolveProvider ( provider : string | ( ( nuxt : Nuxt , strategy : StrategyOptions , ...args : any [ ] ) => void ) , nuxt : Nuxt , strategy : StrategyOptions ) {
9499 provider = ( ProviderAliases [ provider as keyof typeof ProviderAliases ] || provider ) ;
95100
96101 if ( AUTH_PROVIDERS [ provider as keyof typeof AUTH_PROVIDERS ] ) {
@@ -104,20 +109,20 @@ export async function resolveProvider(provider: string | ((...args: any[]) => an
104109
105110 // return an empty function as it doesn't use a provider
106111 if ( typeof provider === 'string' ) {
107- return ( nuxt : Nuxt , strategy : Strategy ) => {
108- if ( [ 'oauth2' , 'openIDConnect' , 'auth0' ] . includes ( strategy . scheme ! ) && strategy . ssr ) {
109- assignDefaults ( strategy as any , OAUTH2DEFAULTS )
110- addAuthorize ( nuxt , strategy as any , true )
112+ return ( nuxt : Nuxt , strategy : StrategyOptions ) => {
113+ if ( OAuth2Schemes . includes ( strategy . scheme ! ) && strategy . ssr ) {
114+ assignDefaults ( strategy , OAUTH2DEFAULTS as typeof strategy )
115+ addAuthorize ( nuxt , strategy , true )
111116 }
112117
113- if ( [ 'refresh' , 'local' , 'cookie' ] . includes ( strategy . scheme ! ) && strategy . ssr ) {
114- assignDefaults ( strategy as any , LOCALDEFAULTS )
118+ if ( LocalSchemes . includes ( strategy . scheme ! ) && strategy . ssr ) {
119+ assignDefaults ( strategy , LOCALDEFAULTS as typeof strategy )
115120
116121 if ( strategy . url ) {
117- assignAbsoluteEndpoints ( strategy as any ) ;
122+ assignAbsoluteEndpoints ( strategy ) ;
118123 }
119124
120- addLocalAuthorize ( nuxt , strategy as any )
125+ addLocalAuthorize ( nuxt , strategy )
121126 }
122127 }
123128 }
0 commit comments