@prism-engineer/router
Version:
Type-safe Express.js router with automatic client generation
18 lines • 970 B
TypeScript
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