@chevre/domain
Version:
Chevre Domain Library for Node.js
47 lines (46 loc) • 1.49 kB
TypeScript
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 {};