UNPKG

@chevre/domain

Version:

Chevre Domain Library for Node.js

47 lines (46 loc) 1.49 kB
import * as jwt from 'jsonwebtoken'; import type { RedisClientType } from 'redis'; import * as factory from '../factory'; import { IPassportValidator } from '../factory/transaction'; export type IVerifiedPassport = factory.waiter.passport.IPassport & { /** * 許可証識別子(2024-07-06~) */ identifier: string; }; type ILockKey = IVerifiedPassport; interface IOptions { /** * WAITER許可証発行者 */ issuers: string[]; /** * WAITER許可証トークンシークレット */ secret: string; passportValidator?: IPassportValidator; } type IStartParams = (factory.transaction.placeOrder.IStartParamsWithoutDetail | factory.transaction.moneyTransfer.IStartParamsWithoutDetail) & {}; /** * 取引許可証リポジトリ */ export declare class PassportRepo { private readonly concurrentLockRepo; private readonly options; constructor(redisClient: RedisClientType, options: IOptions); static CREATE_VERIFIED_PASSPORT(params: string | jwt.JwtPayload | undefined): IVerifiedPassport; static CREATE_REDIS_KEY(params: ILockKey): string; lock(params: ILockKey): Promise<void>; /** * 許可証トークンがあれば検証する */ validatePassportTokenIfExist(params: Pick<IStartParams, 'object'>): Promise<{ passport?: IVerifiedPassport; customerType?: string; }>; /** * 暗号化された許可証を検証する */ private verify; } export {};