UNPKG

@prism-engineer/router

Version:

Type-safe Express.js router with automatic client generation

18 lines 970 B
export interface AuthContext { user?: any; client?: any; scopes?: string[]; [key: string]: any; } export type AuthResult<TScheme extends string, TContext> = { name: TScheme; context: TContext; }; export interface BaseAuthScheme<TName extends string = string, TAuthContext = any> { name: TName; validate: (req: any) => Promise<TAuthContext>; } export type ExtractAuthResultFromSchemes<T> = T extends readonly (infer U)[] ? U extends BaseAuthScheme<infer TName, infer TContext> ? AuthResult<TName, TContext> : never : T extends BaseAuthScheme<infer TName, infer TContext> ? AuthResult<TName, TContext> : never; export declare function createAuthScheme<const T extends BaseAuthScheme<string, any>>(config: T): T; export declare function validateAuth<T extends BaseAuthScheme<string, any> | readonly BaseAuthScheme<string, any>[]>(schemes: T, req: any): Promise<ExtractAuthResultFromSchemes<T>>; //# sourceMappingURL=createAuthScheme.d.ts.map