import ms from 'ms'; import { EntityManager, getManager, Transaction, TransactionManager, } from 'typeorm'; import { UserRepository } from '@/repositories'; import AbstractStrategy from '../AbstractStrategy'; import { SignUp, SignUpOptions } from './types'; export default class AnonymousStrategy extends AbstractStrategy { @Transaction() async signUp( options?: SignUpOptions, @TransactionManager() manager: EntityManager = getManager() ): Promise { const user = await manager .getCustomRepository(UserRepository) .createWithAnonymous( { ...options, }, manager ); return { ...(await this.getTokens( { user, refreshTokenDurationMs: ms('1y') }, manager )), user, }; } }