26 lines
		
	
	
		
			682 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			26 lines
		
	
	
		
			682 B
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import { Type } from '@sinclair/typebox'
 | |
| 
 | |
| import { date, id } from './utils'
 | |
| 
 | |
| export const providers = ['Google', 'GitHub', 'Discord'] as const
 | |
| export const strategies = [...providers, 'Local'] as const
 | |
| 
 | |
| export const strategiesTypebox = strategies.map((strategy) =>
 | |
|   Type.Literal(strategy)
 | |
| )
 | |
| export const providersTypebox = providers.map((provider) =>
 | |
|   Type.Literal(provider)
 | |
| )
 | |
| 
 | |
| export type ProviderOAuth = typeof providers[number]
 | |
| export type AuthenticationStrategy = typeof strategies[number]
 | |
| 
 | |
| export const oauthSchema = {
 | |
|   id,
 | |
|   providerId: Type.String(),
 | |
|   provider: Type.Union([...providersTypebox]),
 | |
|   createdAt: date.createdAt,
 | |
|   updatedAt: date.updatedAt,
 | |
|   userId: id
 | |
| }
 |