import { EntityManager, getManager, Transaction, TransactionManager, } from 'typeorm'; import { AccessTokenManager } from '@/services'; import { TokenPayload } from '../types'; import { GetTokensOptions } from './types'; export default abstract class AbstractStrategy { private readonly accessTokenManager: AccessTokenManager; constructor() { this.accessTokenManager = new AccessTokenManager(); } @Transaction() async getTokens( { user, refreshTokenDurationMs }: GetTokensOptions, @TransactionManager() manager: EntityManager = getManager() ): Promise { return this.accessTokenManager.issueNewTokens( { user, refreshTokenDurationMs }, manager ); } }