@aimee-blue/ab-service-kit
Version:
Aimee Blue Service Template
18 lines (17 loc) • 1.02 kB
TypeScript
/// <reference types="node" />
import { Observable, ObservedValueOf } from 'rxjs';
import { Auth, Apps } from '@aimee-blue/ab-contracts';
import { IJwt, decodeJwt } from '@aimee-blue/ab-auth';
import { ISocketEpicAttributes, ISocketEpicContext } from '../kit';
import { IAction } from '../action';
export interface IInjectedAuthDetails {
id: string;
auth?: IJwt;
}
export interface ISocketEpicWithAuth<I extends IAction = IAction, O extends IAction | Buffer = IAction | Buffer, D = {}, R extends unknown[] = unknown[]> extends ISocketEpicAttributes<O, D> {
(commands: Observable<IAction | I>, ctx: ISocketEpicContext & IInjectedAuthDetails & D, ...rest: R): Observable<O>;
}
export declare function epicWithAuth<E extends ISocketEpicWithAuth>(allow: Auth.Role[], epic: E, deps?: {
verifyToken: (param: Auth.IVerifyParams) => Observable<Auth.IVerifyResult>;
decodeJwt: typeof decodeJwt;
}): (...[cmd, ctx, ...rest]: Parameters<E>) => Observable<Apps.IErrorAction | ObservedValueOf<ReturnType<E>>>;