@did-connect/handler
Version:
Abstract handler for did-connect relay server
51 lines (50 loc) • 1.94 kB
TypeScript
import { SessionStorage } from '@did-connect/storage';
import { Authenticator } from '@did-connect/authenticator';
import type { Promisable } from 'type-fest';
import type { TAppResponseSigned, TWalletResponseSigned } from '@did-connect/authenticator';
import type { TSession, TAuthContext, TWalletInfo, TLocaleCode } from '@did-connect/types';
export type TLogger = {
debug(...args: any[]): void;
info(...args: any[]): void;
error(...args: any[]): void;
warn(...args: any[]): void;
};
export type TSessionCreateContext = TAuthContext & {
body: TSession;
headers: {
[key: string]: string;
};
};
export type TSessionUpdateResult = TSession | {
code: string;
error?: string;
};
export type TSessionUpdateContext = TAuthContext & {
session: TSession;
body: TSession & {
status?: 'error' | 'canceled';
error?: string;
};
};
export type TWalletHandlerContext = TAuthContext & {
session: TSession;
body: TWalletResponseSigned;
locale: TLocaleCode;
};
export interface THandlers {
handleSessionCreate(context: TSessionCreateContext): Promisable<TSessionUpdateResult>;
handleSessionRead(sessionId: string): Promisable<TSession>;
handleSessionUpdate(context: TSessionUpdateContext): Promisable<TSessionUpdateResult>;
handleSessionDelete(context: TSessionUpdateContext): Promisable<TSessionUpdateResult>;
handleClaimRequest(context: TWalletHandlerContext): Promisable<TAppResponseSigned>;
handleClaimResponse(context: TWalletHandlerContext): Promisable<TAppResponseSigned>;
parseWalletUA(ua: string): TWalletInfo;
wsServer: any;
}
export declare function createSocketServer(logger: TLogger, pathname: string): any;
export declare function createHandlers({ storage, authenticator, logger, socketPathname, }: {
storage: SessionStorage;
authenticator: Authenticator;
logger?: TLogger;
socketPathname?: string;
}): THandlers;