diff --git a/packages/client/src/components/Button.tsx b/packages/client/src/components/Button.tsx index 4f8c821..f65b291 100644 --- a/packages/client/src/components/Button.tsx +++ b/packages/client/src/components/Button.tsx @@ -1,10 +1,10 @@ import React from 'react' -export interface IButtonProps { - type: string +export interface ButtonProps { + // type: string } -export class Button extends React.PureComponent { +export class Button extends React.PureComponent { render() { return ( diff --git a/packages/client/src/components/Component.tsx b/packages/client/src/components/Component.tsx index 1971609..01fc872 100644 --- a/packages/client/src/components/Component.tsx +++ b/packages/client/src/components/Component.tsx @@ -1,17 +1,17 @@ import React from 'react' import {connect} from 'react-redux' -interface IComponentProps { +interface ComponentProps { value: string } -interface IStateProps { +interface StateProps { value: string } export class Component -extends React.PureComponent { - constructor(props: IComponentProps) { +extends React.PureComponent { + constructor(props: ComponentProps) { super(props) this.state = { value: props.value, @@ -37,7 +37,7 @@ extends React.PureComponent { } } -function mapStateToProps(state: any) { +function mapStateToProps(state: {value: string}) { return { value: state.value, } diff --git a/packages/client/src/components/Modal.tsx b/packages/client/src/components/Modal.tsx index 2ce3f60..37c8b80 100644 --- a/packages/client/src/components/Modal.tsx +++ b/packages/client/src/components/Modal.tsx @@ -1,11 +1,11 @@ import {Modal as M, ModalBackground, ModalContent, ModalClose} from 'bloomer' import React from 'react' -export interface IModalProps { +export interface ModalProps { isActive?: boolean } -export class Modal extends React.PureComponent { +export class Modal extends React.PureComponent { render() { return ( diff --git a/packages/common/src/IAPIDef.ts b/packages/common/src/APIDef.ts similarity index 54% rename from packages/common/src/IAPIDef.ts rename to packages/common/src/APIDef.ts index 69fb63b..6919bb4 100644 --- a/packages/common/src/IAPIDef.ts +++ b/packages/common/src/APIDef.ts @@ -1,17 +1,17 @@ -import { IUser, INewUser } from './user' -import { ICredentials } from './auth' +import { UserProfile, NewUser } from './user' +import { Credentials } from './auth' -export interface IAPIDef { +export interface APIDef { '/auth/register': { 'post': { - body: INewUser - response: IUser + body: NewUser + response: UserProfile } } '/auth/login': { 'post': { - body: ICredentials - response: IUser + body: Credentials + response: UserProfile } } '/auth/logout': { diff --git a/packages/common/src/IContext.ts b/packages/common/src/Context.ts similarity index 53% rename from packages/common/src/IContext.ts rename to packages/common/src/Context.ts index dd841c5..5b4361e 100644 --- a/packages/common/src/IContext.ts +++ b/packages/common/src/Context.ts @@ -1,4 +1,4 @@ -export interface IContext { +export interface Context { user?: { id: number } diff --git a/packages/common/src/ILogger.ts b/packages/common/src/ILogger.ts deleted file mode 100644 index 132b1a6..0000000 --- a/packages/common/src/ILogger.ts +++ /dev/null @@ -1,9 +0,0 @@ -type ILogFunction = (message: string, ...meta: any[]) => void - -export interface ILogger { - error: ILogFunction - warn: ILogFunction - info: ILogFunction - debug: ILogFunction - verbose: ILogFunction -} diff --git a/packages/common/src/IRole.ts b/packages/common/src/IRole.ts deleted file mode 100644 index 320eb65..0000000 --- a/packages/common/src/IRole.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface IRole { - readonly id: number - readonly name: string -} diff --git a/packages/common/src/auth/ICredentials.ts b/packages/common/src/auth/Credentials.ts similarity index 64% rename from packages/common/src/auth/ICredentials.ts rename to packages/common/src/auth/Credentials.ts index bfeb4be..910655a 100644 --- a/packages/common/src/auth/ICredentials.ts +++ b/packages/common/src/auth/Credentials.ts @@ -1,4 +1,4 @@ -export interface ICredentials { +export interface Credentials { readonly username: string readonly password: string } diff --git a/packages/common/src/auth/index.ts b/packages/common/src/auth/index.ts index e2e597a..7021d94 100644 --- a/packages/common/src/auth/index.ts +++ b/packages/common/src/auth/index.ts @@ -1 +1 @@ -export * from './ICredentials' +export * from './Credentials' diff --git a/packages/common/src/filterProps.test.ts b/packages/common/src/filterProps.test.ts index ac696e5..0efa874 100644 --- a/packages/common/src/filterProps.test.ts +++ b/packages/common/src/filterProps.test.ts @@ -1,25 +1,25 @@ import {createFilterProps} from './filterProps' -interface IEntity { +interface Entity { readonly id: number } -interface IPerson { +interface Person { readonly firstName: string readonly lastName: string } -interface IPersonEntity extends IEntity, IPerson {} +interface PersonEntity extends Entity, Person {} describe('filterProps', () => { - const p: IPersonEntity = { + const p: PersonEntity = { id: 1, firstName: 'John', lastName: 'Smith', } - const filterProps = createFilterProps({ + const filterProps = createFilterProps({ firstName: true, lastName: true, }) diff --git a/packages/common/src/index.ts b/packages/common/src/index.ts index d7a101b..3352e2b 100644 --- a/packages/common/src/index.ts +++ b/packages/common/src/index.ts @@ -1,18 +1,15 @@ -export * from './entities' -export * from './IContext' -export * from './IAPIDef' +export * from './APIDef' export * from './auth' -export * from './ILogger' -export * from './IRole' -export * from './StringUtils' +export * from './Context' +export * from './entities' export * from './filterProps' export * from './guard' export * from './indexBy' +export * from './StringUtils' +export * from './team' export * from './types' +export * from './user' export * from './without' -export * from './team' -export * from './user' - import * as entities from './entities' -export {entities} +export { entities } diff --git a/packages/common/src/rpc.ts b/packages/common/src/rpc.ts index 1d3947a..120038c 100644 --- a/packages/common/src/rpc.ts +++ b/packages/common/src/rpc.ts @@ -1,8 +1,7 @@ -import {IContext} from './IContext' -import {ITeamService} from './team' -import {IUserService} from './user' +import {TeamService} from './team' +import {UserService} from './user' -export interface IRPCServices { - userService: IUserService - teamService: ITeamService +export interface RPCServices { + userService: UserService + teamService: TeamService } diff --git a/packages/common/src/team/ITeamCreateParams.ts b/packages/common/src/team/ITeamCreateParams.ts deleted file mode 100644 index 742287f..0000000 --- a/packages/common/src/team/ITeamCreateParams.ts +++ /dev/null @@ -1,3 +0,0 @@ -export interface ITeamCreateParams { - name: string -} diff --git a/packages/common/src/team/ITeamRemoveParams.ts b/packages/common/src/team/ITeamRemoveParams.ts deleted file mode 100644 index c5ff2a4..0000000 --- a/packages/common/src/team/ITeamRemoveParams.ts +++ /dev/null @@ -1,3 +0,0 @@ -export interface ITeamRemoveParams { - id: number -} diff --git a/packages/common/src/team/ITeamService.ts b/packages/common/src/team/ITeamService.ts deleted file mode 100644 index 95bc332..0000000 --- a/packages/common/src/team/ITeamService.ts +++ /dev/null @@ -1,30 +0,0 @@ -import { RPCActions } from '@rondo.dev/jsonrpc' -import { keys } from 'ts-transformer-keys' -import { Team } from '../entities' -import { ITeamAddUserParams } from './ITeamAddUserParams' -import { ITeamCreateParams } from './ITeamCreateParams' -import { ITeamRemoveParams } from './ITeamRemoveParams' -import { ITeamUpdateParams } from './ITeamUpdateParams' -import { ITeamUsers } from './ITeamUsers' -import { IUserInTeam } from './IUserInTeam' - -export interface ITeamService { - create(params: ITeamCreateParams): Promise - - remove(params: ITeamRemoveParams): Promise<{id: number}> - - update(params: ITeamUpdateParams): Promise - - addUser(params: ITeamAddUserParams): Promise - - removeUser(params: ITeamAddUserParams): Promise - - findOne(id: number): Promise - - find(): Promise - - findUsers(teamId: number): Promise -} - -export const TeamServiceMethods = keys() -export type TeamActions = RPCActions diff --git a/packages/common/src/team/ITeamUpdateParams.ts b/packages/common/src/team/ITeamUpdateParams.ts deleted file mode 100644 index a114b60..0000000 --- a/packages/common/src/team/ITeamUpdateParams.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface ITeamUpdateParams { - id: number - name: string -} diff --git a/packages/common/src/team/ITeamUsers.ts b/packages/common/src/team/ITeamUsers.ts deleted file mode 100644 index 79a451b..0000000 --- a/packages/common/src/team/ITeamUsers.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { IUserInTeam } from './IUserInTeam' - -export interface ITeamUsers { - teamId: number - usersInTeam: IUserInTeam[] -} diff --git a/packages/common/src/team/ITeamAddUserParams.ts b/packages/common/src/team/TeamAddUserParams.ts similarity index 58% rename from packages/common/src/team/ITeamAddUserParams.ts rename to packages/common/src/team/TeamAddUserParams.ts index bdee3ad..f2054a6 100644 --- a/packages/common/src/team/ITeamAddUserParams.ts +++ b/packages/common/src/team/TeamAddUserParams.ts @@ -1,4 +1,4 @@ -export interface ITeamAddUserParams { +export interface TeamAddUserParams { teamId: number userId: number roleId: number diff --git a/packages/common/src/team/TeamCreateParams.ts b/packages/common/src/team/TeamCreateParams.ts new file mode 100644 index 0000000..2764641 --- /dev/null +++ b/packages/common/src/team/TeamCreateParams.ts @@ -0,0 +1,3 @@ +export interface TeamCreateParams { + name: string +} diff --git a/packages/common/src/team/TeamRemoveParams.ts b/packages/common/src/team/TeamRemoveParams.ts new file mode 100644 index 0000000..f312a2a --- /dev/null +++ b/packages/common/src/team/TeamRemoveParams.ts @@ -0,0 +1,3 @@ +export interface TeamRemoveParams { + id: number +} diff --git a/packages/common/src/team/TeamService.ts b/packages/common/src/team/TeamService.ts new file mode 100644 index 0000000..40b7c36 --- /dev/null +++ b/packages/common/src/team/TeamService.ts @@ -0,0 +1,30 @@ +import { RPCActions } from '@rondo.dev/jsonrpc' +import { keys } from 'ts-transformer-keys' +import { Team } from '../entities' +import { TeamAddUserParams } from './TeamAddUserParams' +import { TeamCreateParams } from './TeamCreateParams' +import { TeamRemoveParams } from './TeamRemoveParams' +import { TeamUpdateParams } from './TeamUpdateParams' +import { TeamUsers } from './TeamUsers' +import { UserInTeam } from './UserInTeam' + +export interface TeamService { + create(params: TeamCreateParams): Promise + + remove(params: TeamRemoveParams): Promise<{id: number}> + + update(params: TeamUpdateParams): Promise + + addUser(params: TeamAddUserParams): Promise + + removeUser(params: TeamAddUserParams): Promise + + findOne(id: number): Promise + + find(): Promise + + findUsers(teamId: number): Promise +} + +export const TeamServiceMethods = keys() +export type TeamActions = RPCActions diff --git a/packages/common/src/team/TeamUpdateParams.ts b/packages/common/src/team/TeamUpdateParams.ts new file mode 100644 index 0000000..e929989 --- /dev/null +++ b/packages/common/src/team/TeamUpdateParams.ts @@ -0,0 +1,4 @@ +export interface TeamUpdateParams { + id: number + name: string +} diff --git a/packages/common/src/team/TeamUsers.ts b/packages/common/src/team/TeamUsers.ts new file mode 100644 index 0000000..2136682 --- /dev/null +++ b/packages/common/src/team/TeamUsers.ts @@ -0,0 +1,6 @@ +import { UserInTeam } from './UserInTeam' + +export interface TeamUsers { + teamId: number + usersInTeam: UserInTeam[] +} diff --git a/packages/common/src/team/IUserInTeam.ts b/packages/common/src/team/UserInTeam.ts similarity index 75% rename from packages/common/src/team/IUserInTeam.ts rename to packages/common/src/team/UserInTeam.ts index 6391158..986cf05 100644 --- a/packages/common/src/team/IUserInTeam.ts +++ b/packages/common/src/team/UserInTeam.ts @@ -1,4 +1,4 @@ -export interface IUserInTeam { +export interface UserInTeam { teamId: number userId: number displayName: string diff --git a/packages/common/src/team/index.ts b/packages/common/src/team/index.ts index f29a050..425d5a6 100644 --- a/packages/common/src/team/index.ts +++ b/packages/common/src/team/index.ts @@ -1,7 +1,7 @@ -export * from './ITeamAddUserParams' -export * from './ITeamCreateParams' -export * from './ITeamRemoveParams' -export * from './ITeamService' -export * from './ITeamUpdateParams' -export * from './ITeamUsers' -export * from './IUserInTeam' +export * from './TeamAddUserParams' +export * from './TeamCreateParams' +export * from './TeamRemoveParams' +export * from './TeamService' +export * from './TeamUpdateParams' +export * from './TeamUsers' +export * from './UserInTeam' diff --git a/packages/common/src/types.ts b/packages/common/src/types.ts index ca1b41a..7ae110e 100644 --- a/packages/common/src/types.ts +++ b/packages/common/src/types.ts @@ -1,25 +1,25 @@ /** * transform unknown into undefined */ -export type TOptional = T extends {} ? T : undefined +export type Optional = T extends {} ? T : undefined -export type TNonUndefinedPropertyNames = { +export type NonUndefinedPropertyNames = { [K in keyof T]: T[K] extends undefined ? never: K }[keyof T] -export type TOnlyRequired = Pick> +export type OnlyRequired = Pick> -export type TNonUnknownPropertyNames = { +export type NonUnknownPropertyNames = { [K in keyof T]: T[K] extends {} ? K : never }[keyof T] -export type TOnlyDefined = Pick> +export type OnlyDefined = Pick> /** * Remove types from T that are not assignable to U * https://www.typescriptlang.org/docs/handbook/advanced-types.html */ -export type TFilter = T extends U ? T : never +export type Filter = T extends U ? T : never -export type TReadonlyRecord = +export type ReadonlyRecord = Readonly> diff --git a/packages/common/src/user/INewUser.ts b/packages/common/src/user/INewUser.ts deleted file mode 100644 index 94c15cb..0000000 --- a/packages/common/src/user/INewUser.ts +++ /dev/null @@ -1,6 +0,0 @@ -import {ICredentials} from '../auth/ICredentials' - -export interface INewUser extends ICredentials { - firstName: string - lastName: string -} diff --git a/packages/common/src/user/IUserService.ts b/packages/common/src/user/IUserService.ts deleted file mode 100644 index c7dc31d..0000000 --- a/packages/common/src/user/IUserService.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { RPCActions } from '@rondo.dev/jsonrpc' -import { keys } from 'ts-transformer-keys' -import { IUser } from './IUser' - -export interface IUserService { - getProfile(): Promise - // TODO exposing search by email might be a security concern - findUserByEmail(email: string): Promise -} - -export const UserServiceMethods = keys() -export type UserActions = RPCActions diff --git a/packages/common/src/user/NewUser.ts b/packages/common/src/user/NewUser.ts new file mode 100644 index 0000000..9f967fc --- /dev/null +++ b/packages/common/src/user/NewUser.ts @@ -0,0 +1,6 @@ +import {Credentials} from '../auth' + +export interface NewUser extends Credentials { + firstName: string + lastName: string +} diff --git a/packages/common/src/user/IUser.ts b/packages/common/src/user/UserProfile.ts similarity index 70% rename from packages/common/src/user/IUser.ts rename to packages/common/src/user/UserProfile.ts index 273ab85..145dec1 100644 --- a/packages/common/src/user/IUser.ts +++ b/packages/common/src/user/UserProfile.ts @@ -1,4 +1,4 @@ -export interface IUser { +export interface UserProfile { id: number username: string firstName: string diff --git a/packages/common/src/user/UserService.ts b/packages/common/src/user/UserService.ts new file mode 100644 index 0000000..ccff59c --- /dev/null +++ b/packages/common/src/user/UserService.ts @@ -0,0 +1,12 @@ +import { RPCActions } from '@rondo.dev/jsonrpc' +import { keys } from 'ts-transformer-keys' +import { UserProfile } from './UserProfile' + +export interface UserService { + getProfile(): Promise + // TODO exposing search by email might be a security concern + findUserByEmail(email: string): Promise +} + +export const UserServiceMethods = keys() +export type UserActions = RPCActions diff --git a/packages/common/src/user/index.ts b/packages/common/src/user/index.ts index 5e9ea66..7b36193 100644 --- a/packages/common/src/user/index.ts +++ b/packages/common/src/user/index.ts @@ -1,3 +1,3 @@ -export * from './INewUser' -export * from './IUserService' -export * from './IUser' +export * from './NewUser' +export * from './UserService' +export * from './UserProfile' diff --git a/packages/common/src/without.ts b/packages/common/src/without.ts index da76768..9c9a4a4 100644 --- a/packages/common/src/without.ts +++ b/packages/common/src/without.ts @@ -7,7 +7,7 @@ export function without, K extends keyof R>( if (key == k) { return obj } - (obj as any)[k] = items[k] + (obj as any)[k] = items[k] // eslint-disable-line return obj }, {} as Pick>) }