From ae2ed21f05e8a10b07d8e521d3d92aead0f83b5a Mon Sep 17 00:00:00 2001 From: Jerko Steiner Date: Wed, 11 Sep 2019 12:18:10 +0700 Subject: [PATCH] Remove unused routes TBD: fix comments-server --- packages/common/src/IAPIDef.ts | 102 +------------- packages/common/src/user.ts | 1 + packages/server/src/application/IServices.ts | 5 +- .../server/src/application/configureServer.ts | 14 +- packages/server/src/index.ts | 2 - packages/server/src/role/IRoleService.ts | 5 - packages/server/src/role/RoleService.ts | 12 -- packages/server/src/role/index.ts | 2 - packages/server/src/routes/UserRoutes.test.ts | 51 ------- packages/server/src/routes/UserRoutes.ts | 26 ---- packages/server/src/routes/index.ts | 1 - packages/server/src/rpc/TeamService.test.ts | 6 +- packages/server/src/rpc/TeamService.ts | 2 +- .../{user => services}/IUserPermissions.ts | 0 .../src/{user => services}/UserPermissions.ts | 0 packages/server/src/services/index.ts | 2 + packages/server/src/team/ITeamService.ts | 23 ---- packages/server/src/team/IUserTeamParams.ts | 5 - packages/server/src/team/TeamRoutes.test.ts | 126 ------------------ packages/server/src/team/TeamRoutes.ts | 114 ---------------- packages/server/src/team/TeamService.ts | 121 ----------------- packages/server/src/team/TeamTestUtils.ts | 54 -------- packages/server/src/team/index.ts | 3 - packages/server/src/user/index.ts | 2 - 24 files changed, 12 insertions(+), 667 deletions(-) delete mode 100644 packages/server/src/role/IRoleService.ts delete mode 100644 packages/server/src/role/RoleService.ts delete mode 100644 packages/server/src/role/index.ts delete mode 100644 packages/server/src/routes/UserRoutes.test.ts delete mode 100644 packages/server/src/routes/UserRoutes.ts rename packages/server/src/{user => services}/IUserPermissions.ts (100%) rename packages/server/src/{user => services}/UserPermissions.ts (100%) delete mode 100644 packages/server/src/team/ITeamService.ts delete mode 100644 packages/server/src/team/IUserTeamParams.ts delete mode 100644 packages/server/src/team/TeamRoutes.test.ts delete mode 100644 packages/server/src/team/TeamRoutes.ts delete mode 100644 packages/server/src/team/TeamService.ts delete mode 100644 packages/server/src/team/TeamTestUtils.ts delete mode 100644 packages/server/src/team/index.ts delete mode 100644 packages/server/src/user/index.ts diff --git a/packages/common/src/IAPIDef.ts b/packages/common/src/IAPIDef.ts index 14bd49f..f57a5a3 100644 --- a/packages/common/src/IAPIDef.ts +++ b/packages/common/src/IAPIDef.ts @@ -1,8 +1,6 @@ -import {ICredentials} from './ICredentials' -import {INewUser} from './INewUser' -import {ITeam} from './ITeam' -import {IUser} from './IUser' -import {IUserInTeam} from './IUserInTeam' +import { ICredentials } from './ICredentials' +import { INewUser } from './INewUser' +import { IUser } from './IUser' export interface IAPIDef { '/auth/register': { @@ -28,98 +26,4 @@ export interface IAPIDef { } } } - '/users/profile': { - 'get': { - response: { - id: number - } - } - } - '/users/emails/:email': { - // TODO exposing search by email might be a security concern - 'get': { - params: { - email: string - } - response: IUser | undefined - } - } - - // TEAM - - '/teams': { - post: { - body: { - name: string - } - response: ITeam - } - } - - '/teams/:id': { - get: { - params: { - id: number - } - response: ITeam | undefined - } - put: { - params: { - id: number - } - body: { - name: string - } - response: ITeam - } - delete: { - params: { - id: number - } - response: {id: number} - } - } - - '/teams/:teamId/users': { - get: { - params: { - teamId: number - } - response: IUserInTeam[] // TODO - } - } - - '/teams/:teamId/users/:userId': { - post: { - params: { - teamId: number - userId: number - } - // body: { - // roleId: number - // } - response: IUserInTeam - } - delete: { - params: { - teamId: number - userId: number - } - // body: { - // roleId: number - // } - response: { - teamId: number - userId: number - // roleId: number - } - } - } - - '/my/teams': { - get: { - response: ITeam[] - } - } - } diff --git a/packages/common/src/user.ts b/packages/common/src/user.ts index 8f1cffa..b69ab73 100644 --- a/packages/common/src/user.ts +++ b/packages/common/src/user.ts @@ -15,6 +15,7 @@ export interface ICreateUserParams extends ICredentials { export interface IUserService { getProfile(): Promise + // TODO exposing search by email might be a security concern findUserByEmail(email: string): Promise } diff --git a/packages/server/src/application/IServices.ts b/packages/server/src/application/IServices.ts index a85e4da..c5f1a51 100644 --- a/packages/server/src/application/IServices.ts +++ b/packages/server/src/application/IServices.ts @@ -1,9 +1,6 @@ -import {IAuthService} from '../services' -import {ITeamService} from '../team' -import {IUserPermissions} from '../user' +import { IAuthService, IUserPermissions } from '../services' export interface IServices { authService: IAuthService - teamService: ITeamService userPermissions: IUserPermissions } diff --git a/packages/server/src/application/configureServer.ts b/packages/server/src/application/configureServer.ts index df895a2..3b07a6b 100644 --- a/packages/server/src/application/configureServer.ts +++ b/packages/server/src/application/configureServer.ts @@ -10,8 +10,6 @@ import { TransactionalRouter } from '../router' import * as routes from '../routes' import * as rpc from '../rpc' import * as Services from '../services' -import * as Team from '../team' -import * as User from '../user' import { IConfig } from './IConfig' import { IServerConfig } from './IServerConfig' import { IServices } from './IServices' @@ -29,8 +27,7 @@ export const configureServer: ServerConfigurator = (config, database) => { const services: IServices = { authService: new Services.AuthService(database), - teamService: new Team.TeamService(database), - userPermissions: new User.UserPermissions(database), + userPermissions: new Services.UserPermissions(database), } const rpcServices = { @@ -95,15 +92,6 @@ export const configureServer: ServerConfigurator = (config, database) => { authenticator, createTransactionalRouter(), ).handle, - new routes.UserRoutes( - services.authService, - createTransactionalRouter(), - ).handle, - new Team.TeamRoutes( - services.teamService, - services.userPermissions, - createTransactionalRouter(), - ).handle, ], error: new Middleware.ErrorApiHandler(logger).handle, }, diff --git a/packages/server/src/index.ts b/packages/server/src/index.ts index 85f1d9e..e48ffb5 100644 --- a/packages/server/src/index.ts +++ b/packages/server/src/index.ts @@ -13,8 +13,6 @@ export * from './router' export * from './routes' export * from './services' export * from './session' -export * from './user' -export * from './team' export * from './validator' import * as rpc from './rpc' diff --git a/packages/server/src/role/IRoleService.ts b/packages/server/src/role/IRoleService.ts deleted file mode 100644 index 049bdf9..0000000 --- a/packages/server/src/role/IRoleService.ts +++ /dev/null @@ -1,5 +0,0 @@ -import {IRole} from '@rondo.dev/common' - -export interface IRoleService { - create(name: string): Promise -} diff --git a/packages/server/src/role/RoleService.ts b/packages/server/src/role/RoleService.ts deleted file mode 100644 index 666010b..0000000 --- a/packages/server/src/role/RoleService.ts +++ /dev/null @@ -1,12 +0,0 @@ -import {BaseService} from '../services/BaseService' -import {IRoleService} from './IRoleService' -import {Role} from '../entities/Role' - -export class RoleService extends BaseService implements IRoleService { - create(name: string) { - return this.getRepository(Role) - .save({ - name, - }) - } -} diff --git a/packages/server/src/role/index.ts b/packages/server/src/role/index.ts deleted file mode 100644 index 1930642..0000000 --- a/packages/server/src/role/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './IRoleService' -export * from './RoleService' diff --git a/packages/server/src/routes/UserRoutes.test.ts b/packages/server/src/routes/UserRoutes.test.ts deleted file mode 100644 index 3eab4c2..0000000 --- a/packages/server/src/routes/UserRoutes.test.ts +++ /dev/null @@ -1,51 +0,0 @@ -import {test} from '../test' - -describe('user', () => { - - test.withDatabase() - const t = test.request('/api') - - let cookie!: string - beforeEach(async () => { - await test.registerAccount() - const session = await test.login() - cookie = session.headers.cookie - t.setHeaders(session.headers) - }) - - describe('GET /users/profile', () => { - it('fetches user profile', async () => { - t.setHeaders({ cookie }) - await t - .get('/users/profile') - .expect(200) - }) - }) - - describe('GET /users/emails/:email', () => { - it('fetches user by email', async () => { - t.setHeaders({cookie}) - const response = await t - .get('/users/emails/:email', { - params: { - email: test.username, - }, - }) - .expect(200) - expect(response.body!.firstName).toEqual('test') - }) - it('returns an empty body when email is not found', async () => { - t.setHeaders({cookie}) - await t - .get('/users/emails/:email', { - params: { - email: 'non-existing@address.com', - }, - }) - .expect(200) - .expect(/^$/g) - // TODO use status code 404 when an entity is not found - }) - }) - -}) diff --git a/packages/server/src/routes/UserRoutes.ts b/packages/server/src/routes/UserRoutes.ts deleted file mode 100644 index 215f658..0000000 --- a/packages/server/src/routes/UserRoutes.ts +++ /dev/null @@ -1,26 +0,0 @@ -import {AsyncRouter} from '../router' -import {BaseRoute} from './BaseRoute' -import {IAPIDef} from '@rondo.dev/common' -import {IAuthService} from '../services' -import {ensureLoggedInApi} from '../middleware' - -export class UserRoutes extends BaseRoute { - constructor( - protected readonly userService: IAuthService, - protected readonly t: AsyncRouter, - ) { - super(t) - } - - setup(t: AsyncRouter) { - t.use('/users', ensureLoggedInApi) - - t.get('/users/emails/:email', async req => { - return this.userService.findUserByEmail(req.params.email) - }) - - t.get('/users/profile', async req => { - return (await this.userService.findOne(req.user!.id))! - }) - } -} diff --git a/packages/server/src/routes/index.ts b/packages/server/src/routes/index.ts index ce5e7fc..829d0d1 100644 --- a/packages/server/src/routes/index.ts +++ b/packages/server/src/routes/index.ts @@ -1,4 +1,3 @@ export * from './application' export * from './AuthRoutes' export * from './BaseRoute' -export * from './UserRoutes' diff --git a/packages/server/src/rpc/TeamService.test.ts b/packages/server/src/rpc/TeamService.test.ts index 676de46..8a916ce 100644 --- a/packages/server/src/rpc/TeamService.test.ts +++ b/packages/server/src/rpc/TeamService.test.ts @@ -101,9 +101,9 @@ describe('team', () => { const teamId = team.id const {userId} = await test.registerAccount('test2@user.com') await client.addUser({userId, teamId, roleId: 1}) - const users = await client.findUsers(teamId) - expect(users.length).toBe(2) - expect(users).toEqual([{ + const {usersInTeam} = await client.findUsers(teamId) + expect(usersInTeam.length).toBe(2) + expect(usersInTeam).toEqual([{ teamId, userId: mainUserId, displayName: jasmine.any(String), diff --git a/packages/server/src/rpc/TeamService.ts b/packages/server/src/rpc/TeamService.ts index b48661a..f3068b7 100644 --- a/packages/server/src/rpc/TeamService.ts +++ b/packages/server/src/rpc/TeamService.ts @@ -2,7 +2,7 @@ import {IDatabase} from '../database/IDatabase' import {Validator} from '../validator' import {Team} from '../entities/Team' import {UserTeam} from '../entities/UserTeam' -import {IUserPermissions} from '../user/IUserPermissions' +import {IUserPermissions} from '../services/IUserPermissions' import { trim, entities as e, diff --git a/packages/server/src/user/IUserPermissions.ts b/packages/server/src/services/IUserPermissions.ts similarity index 100% rename from packages/server/src/user/IUserPermissions.ts rename to packages/server/src/services/IUserPermissions.ts diff --git a/packages/server/src/user/UserPermissions.ts b/packages/server/src/services/UserPermissions.ts similarity index 100% rename from packages/server/src/user/UserPermissions.ts rename to packages/server/src/services/UserPermissions.ts diff --git a/packages/server/src/services/index.ts b/packages/server/src/services/index.ts index 7c10df8..606aa05 100644 --- a/packages/server/src/services/index.ts +++ b/packages/server/src/services/index.ts @@ -1,3 +1,5 @@ export * from './BaseService' export * from './IAuthService' export * from './AuthService' +export * from './IUserPermissions' +export * from './UserPermissions' diff --git a/packages/server/src/team/ITeamService.ts b/packages/server/src/team/ITeamService.ts deleted file mode 100644 index 818124c..0000000 --- a/packages/server/src/team/ITeamService.ts +++ /dev/null @@ -1,23 +0,0 @@ -import {Team} from '../entities/Team' -import {IUserTeamParams} from './IUserTeamParams' -import {IUserInTeam} from '@rondo.dev/common' - -export interface ITeamService { - create(params: {name: string, userId: number}): Promise - - remove(params: {id: number, userId: number}): Promise<{id: number}> - - update(params: {id: number, name: string, userId: number}): Promise - - addUser(params: IUserTeamParams): Promise - - removeUser(params: IUserTeamParams): Promise - - findOne(id: number): Promise - - find(userId: number): Promise - - findUsers(teamId: number): Promise - - // TODO add other methods -} diff --git a/packages/server/src/team/IUserTeamParams.ts b/packages/server/src/team/IUserTeamParams.ts deleted file mode 100644 index 7794b73..0000000 --- a/packages/server/src/team/IUserTeamParams.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface IUserTeamParams { - teamId: number - userId: number - roleId: number -} diff --git a/packages/server/src/team/TeamRoutes.test.ts b/packages/server/src/team/TeamRoutes.test.ts deleted file mode 100644 index 218db48..0000000 --- a/packages/server/src/team/TeamRoutes.test.ts +++ /dev/null @@ -1,126 +0,0 @@ -import {test} from '../test' -import {addUser, removeUser, findUsers, createTeam} from './TeamTestUtils' - -describe('team', () => { - - test.withDatabase() - const t = test.request('/api') - - let mainUserId: number - beforeEach(async () => { - const session = await test.registerAccount() - mainUserId = session.userId - t.setHeaders(session.headers) - }) - - describe('POST /teams', () => { - it('creates a new team', async () => { - const team = await createTeam(t, 'test') - expect(team.name).toEqual('test') - }) - }) - - describe('GET /teams/:id', () => { - it('retrieves a team by id', async () => { - const team = await createTeam(t, 'test') - const response = await t - .get('/teams/:id', { - params: { - id: team.id, - }, - }) - .expect(200) - expect(response.body).toEqual(team) - }) - }) - - describe('PUT /teams/:id', () => { - it('updates a team name', async () => { - const team = await createTeam(t, 'test') - const response = await t - .put('/teams/:id', { - params: { - id: team.id, - }, - }) - .send({ - name: team.name + '2', - }) - expect(response.body.name).toEqual(team.name + '2') - }) - }) - - describe('DELETE /teams/:id', () => { - it('removes a team by id', async () => { - const team = await createTeam(t, 'test') - await t - .delete('/teams/:id', { - params: { - id: team.id, - }, - }) - .expect(200) - }) - }) - - describe('GET /my/teams', () => { - it('retrieves all teams belonging to current user', async () => { - const team = await createTeam(t, 'test') - const response = await t - .get('/my/teams') - .expect(200) - expect(response.body.map(myTeam => ({teamId: myTeam.id}))) - .toContainEqual({ - teamId: team.id, - }) - }) - }) - - describe('POST /teams/:teamId/users/:userId', () => { - it('adds a user to the team', async () => { - const team = await createTeam(t, 'test') - const teamId = team.id - const {userId} = await test.registerAccount('test2@user.com') - await addUser(t, {userId, teamId}) - }) - }) - - describe('DELETE /teams/:teamId/users/:userId', () => { - it('removes the user from the team', async () => { - const team = await createTeam(t, 'test') - const teamId = team.id - const {userId} = await test.registerAccount('test2@user.com') - await addUser(t, {userId, teamId}) - await removeUser(t, {userId, teamId}) - }) - }) - - describe('GET /teams/:teamId/users', () => { - it('fetches team members user info', async () => { - const team = await createTeam(t, 'test') - const teamId = team.id - const {userId} = await test.registerAccount('test2@user.com') - await addUser(t, {userId, teamId}) - const users = await findUsers(t, {teamId}) - expect(users.length).toBe(2) - expect(users).toEqual([{ - teamId, - userId: mainUserId, - displayName: jasmine.any(String), - roleId: 1, - roleName: 'ADMIN', - }, { - teamId, - userId, - displayName: jasmine.any(String), - roleId: 1, - roleName: 'ADMIN', - }]) - }) - }) - - // describe('GET /my/teams', () => { - - // }) - -}) diff --git a/packages/server/src/team/TeamRoutes.ts b/packages/server/src/team/TeamRoutes.ts deleted file mode 100644 index 6e7de2e..0000000 --- a/packages/server/src/team/TeamRoutes.ts +++ /dev/null @@ -1,114 +0,0 @@ -import {AsyncRouter} from '../router' -import {BaseRoute} from '../routes/BaseRoute' -import {IAPIDef} from '@rondo.dev/common' -import {ITeamService} from './ITeamService' -import {IUserPermissions} from '../user/IUserPermissions' -import {ensureLoggedInApi} from '../middleware' - -export class TeamRoutes extends BaseRoute { - constructor( - protected readonly teamService: ITeamService, - protected readonly permissions: IUserPermissions, - protected readonly t: AsyncRouter, - ) { - super(t) - } - - setup(t: AsyncRouter) { - - const ensureLoggedIn = [ensureLoggedInApi] - - t.get('/teams/:id', ensureLoggedIn, async req => { - const {id} = req.params - return this.teamService.findOne(id) - }) - - t.get('/my/teams', ensureLoggedIn, async req => { - return this.teamService.find(req.user!.id) - }) - - t.post('/teams', ensureLoggedIn, async req => { - const {name} = req.body - return this.teamService.create({ - name, - userId: req.user!.id, - }) - }) - - t.put('/teams/:id', ensureLoggedIn, async req => { - const id = Number(req.params.id) - - await this.permissions.belongsToTeam({ - teamId: id, - userId: req.user!.id, - }) - - return this.teamService.update({ - id, - name: req.body.name, - userId: req.user!.id, - }) - }) - - t.delete('/teams/:id', ensureLoggedIn, async req => { - const id = Number(req.params.id) - - await this.permissions.belongsToTeam({ - teamId: id, - userId: req.user!.id, - }) - - return this.teamService.remove({ - id, - userId: req.user!.id, - }) - }) - - t.get('/teams/:teamId/users', ensureLoggedIn, async req => { - const teamId = Number(req.params.teamId) - - await this.permissions.belongsToTeam({ - teamId, - userId: req.user!.id, - }) - - return this.teamService.findUsers(teamId) - }) - - t.post('/teams/:teamId/users/:userId', ensureLoggedIn, async req => { - const teamId = Number(req.params.teamId) - const userId = Number(req.params.userId) - - await this.permissions.belongsToTeam({ - teamId, - userId: req.user!.id, - }) - - return this.teamService.addUser({ - userId, - teamId, - roleId: 1, // TODO customize roles - }) - }) - - t.delete('/teams/:teamId/users/:userId', ensureLoggedIn, async req => { - const teamId = Number(req.params.teamId) - const userId = Number(req.params.userId) - - await this.permissions.belongsToTeam({ - teamId, - userId: req.user!.id, - }) - - await this.teamService.removeUser({ - teamId, - userId, - roleId: 1, // TODO customzie roles - }) - - return {teamId, userId} - }) - - } - -} diff --git a/packages/server/src/team/TeamService.ts b/packages/server/src/team/TeamService.ts deleted file mode 100644 index 41c2b72..0000000 --- a/packages/server/src/team/TeamService.ts +++ /dev/null @@ -1,121 +0,0 @@ -import {IDatabase} from '../database/IDatabase' -import {ITeamService} from './ITeamService' -import {IUserInTeam, trim} from '@rondo.dev/common' -import {IUserTeamParams} from './IUserTeamParams' -import {Team} from '../entities/Team' -import {UserTeam} from '../entities/UserTeam' -import {Validator} from '../validator' - -export class TeamService implements ITeamService { - - constructor(protected readonly db: IDatabase) {} - - // TODO check team limit per user - async create({name, userId}: {name: string, userId: number}) { - name = trim(name) - - new Validator({name, userId}) - .ensure('name') - .ensure('userId') - .throw() - - const team = await this.db.getRepository(Team).save({ - name, - userId, - }) - - await this.addUser({ - teamId: team.id, - userId, - // ADMIN role - roleId: 1, - }) - - return (await this.findOne(team.id))! - } - - async remove({id, userId}: {id: number, userId: number}) { - await this.db.getRepository(UserTeam) - .delete({teamId: id, userId}) - - await this.db.getRepository(Team) - .delete(id) - - return {id} - } - - async update({id, name, userId}: {id: number, name: string, userId: number}) { - await this.db.getRepository(Team) - .update({ - id, - }, { - name, - }) - - return (await this.findOne(id))! - } - - async addUser(params: IUserTeamParams) { - const {userId, teamId, roleId} = params - await this.db.getRepository(UserTeam) - .save({userId, teamId, roleId}) - - const userTeam = await this.createFindUserInTeamQuery() - .where({ - userId, - teamId, - roleId, - }) - .getOne() - - return this.mapUserInTeam(userTeam!) - } - - async removeUser({teamId, userId, roleId}: IUserTeamParams) { - // TODO check if this is the last admin team member - await this.db.getRepository(UserTeam) - .delete({userId, teamId, roleId}) - } - - async findUsers(teamId: number) { - const userTeams = await this.createFindUserInTeamQuery() - .where('ut.teamId = :teamId', { - teamId, - }) - .getMany() - - return userTeams.map(this.mapUserInTeam) - } - - async findOne(id: number) { - return this.db.getRepository(Team).findOne(id) - } - - async find(userId: number) { - return this.db.getRepository(Team) - .createQueryBuilder('team') - .select('team') - .innerJoin('team.userTeams', 'ut') - .where('ut.userId = :userId', {userId}) - .getMany() - } - - protected createFindUserInTeamQuery() { - return this.db.getRepository(UserTeam) - .createQueryBuilder('ut') - .select('ut') - .innerJoinAndSelect('ut.user', 'user') - .innerJoinAndSelect('ut.role', 'role') - } - - protected mapUserInTeam(ut: UserTeam): IUserInTeam { - return { - teamId: ut.teamId, - userId: ut.userId, - displayName: `${ut.user.firstName} ${ut.user.lastName}`, - roleId: ut.role!.id, - roleName: ut.role!.name, - } - } - -} diff --git a/packages/server/src/team/TeamTestUtils.ts b/packages/server/src/team/TeamTestUtils.ts deleted file mode 100644 index 5a8a159..0000000 --- a/packages/server/src/team/TeamTestUtils.ts +++ /dev/null @@ -1,54 +0,0 @@ -import {RequestTester} from '../test-utils' -import {IAPIDef} from '@rondo.dev/common' - -export async function createTeam(t: RequestTester, name: string) { - const response = await t - .post('/teams') - .send({ - name: 'test', - }) - .expect(200) - expect(response.body.id).toBeTruthy() - return response.body -} - -export async function addUser(t: RequestTester, params: { - teamId: number, - userId: number, -}) { - await t - .post('/teams/:teamId/users/:userId', { - params: { - teamId: params.teamId, - userId: params.userId, - }, - }) - .expect(200) -} - -export async function removeUser(t: RequestTester, params: { - teamId: number, - userId: number, -}) { - await t - .delete('/teams/:teamId/users/:userId', { - params: { - teamId: params.teamId, - userId: params.userId, - }, - }) - .expect(200) -} - -export async function findUsers(t: RequestTester, params: { - teamId: number, -}) { - const response = await t - .get('/teams/:teamId/users', { - params: { - teamId: params.teamId, - }, - }) - .expect(200) - return response.body -} diff --git a/packages/server/src/team/index.ts b/packages/server/src/team/index.ts deleted file mode 100644 index 2e2b94e..0000000 --- a/packages/server/src/team/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from './ITeamService' -export * from './TeamRoutes' -export * from './TeamService' diff --git a/packages/server/src/user/index.ts b/packages/server/src/user/index.ts deleted file mode 100644 index f323d57..0000000 --- a/packages/server/src/user/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './IUserPermissions' -export * from './UserPermissions'