faloker/purify

View on GitHub
web/src/store/types.ts

Summary

Maintainability
B
6 hrs
Test Coverage
A
100%
export interface SystemConfig {
  jira: boolean;
  registration: boolean;
  saml: boolean;
  upstreamAuth: boolean;
}

export interface Message {
  text: string;
  title: string;
  type: string;
  icon: string;
}

export interface APIMessage {
  text: string | string[];
  title: string;
  type: string;
}

export interface Credentials {
  username: string;
  password: string;
}

export interface Project {
  _id: string;
  displayName: string;
  description: string;
  name: string;
  createdAt: Date;
  updatedAt: Date;
  numUnits: number;
  numIssues: number;
  numTickets: number;
}

export interface CreateProjectDto {
  name: string;
  displayName: string;
  description: string;
}

export interface EditProjectDto extends CreateProjectDto {
  name: string;
  change: CreateProjectDto;
}

export interface AddUserDto {
  projectName: string;
  userId: string;
}

export interface FetchMetricsDto {
  days: number;
}

export interface Unit {
  _id: string;
  name: string;
  displayName: string;
  project: string;
  createdAt: Date;
  updatedAt: Date;
  numReports: number;
  numIssues: number;
  numTickets: number;
  numClosedIssues: number;
  progress?: number;
}

export interface CreateUnitDto {
  displayName: string;
  name: string;
}

// eslint-disable-next-line
export interface EditUnitDto extends CreateUnitDto {}

export interface User {
  _id: string;
  name: string;
  email: string;
  image: string;
  role: Role;
  ssoBypass: boolean;
  memberships: string[];
  recentProjects: string[];
}

export enum Role {
  OWNER = 'owner',
  ADMIN = 'admin',
  USER = 'user',
  OBSERVER = 'observer',
}

export interface BodyField {
  key: string;
  type: string;
}

export interface Template {
  _id: string;
  name: string;
  displayName: string;
  pathToIssues: string;
  titleFields: string[];
  bodyFields: BodyField[];
  riskField: string;
  internalComparisonFields: string[];
  externalComparisonFields: string[];
  mergeFields: string[];
  titlePattern: string;
  subtitlePattern: string;
  tags: string[];
  createdAt: Date;
  updatedAt: Date;
}

export interface TemplateWithStats extends Template {
  numIssues: number;
  numReports: number;
}

interface Statistics {
  old: number;
  new: number;
}

export interface Report {
  _id: string;
  content: any;
  statistics: Statistics;
  unit: string;
  type: string;
  template: string;
  createdAt: Date;
  updatedAt: Date;
}

export interface EditTemplateDto {
  name: string;
  change: Template;
}

export interface Ticket {
  _id: string;
  type: string;
  link: string;
  key: string;
}
export interface Issue {
  _id: string;
  fields: string;
  title: string;
  subtitle: string;
  status: string;
  resolution: string;
  risk: string;
  template: Template | string;
  report: Report | string;
  ticket: Ticket | string;
  unit: Unit | string;
  tags: string[];
  comments: Comment[] | string[];
  createdAt: Date;
  updatedAt: Date;
  closedAt: Date;
}

export interface EditIssueDto {
  ids: string[];
  change: any;
  unitId: string;
}

export interface CreateTicketDto {
  issueId: string;
  fields: any;
  unitId: string;
}

export interface PostCommentDto {
  issueId: string;
  comment: Comment;
}

export interface Comment {
  _id: string;
  text: string;
  author: string | User;
  createdAt?: Date;
  updatedAt?: Date;
}

export interface FilterOption {
  name: string;
  value: string;
}

export interface FilterValue {
  title: string;
  total: number;
  value: number;
}

export interface ChangePasswordDto {
  password: string;
  token: string;
}

export interface GetEventsDto {
  days: number;
}

export interface Event {
  readonly _id: string;
  body: any;
  readonly audience: Audience;
  readonly type: EventType;
  readonly byUser: string | User;
  readonly project?: string | Project;
  createdAt?: Date;
  updatedAt?: Date;
}

export enum Audience {
  OWNERS = 'owners',
  ALL = 'all',
}

export enum EventType {
  PROJECT_CREATED = 'project_created',
  PROJECT_DELETED = 'project_deleted',
  USER_CREATED = 'user_created',
  USER_DELETED = 'user_deleted',
  TICKET_CREATED = 'ticket_created',
  ISSUE_RESOLVED = 'issue_resolved',
  COMMENT_CREATED = 'comment_created',
}

export interface GetIssuesQueryDto {
  readonly status?: string;
  readonly ticket?: string;
  readonly risks?: string;
  readonly projectName?: string;
  readonly unitName?: string;
  readonly limit?: string;
  readonly days?: string;
}

export interface UserSelfChange {
  readonly trackMe?: string;
  readonly name?: string;
}

export interface Token {
  _id: string;
  type: string;
  name?: string;
  value: string;
  lastActivity?: Activity;
  user: string | User;
  createdAt?: Date;
  updatedAt?: Date;
}

export enum TokenType {
  REFRESH_TOKEN = 'refresh',
  API_ACCESS_TOKEN = 'api',
  INVITE_TOKEN = 'invite',
}

export interface Activity {
  date: Date;
  fromIP: string;
  userAgent: string;
}

export interface CreateTokenDto {
  name: string;
}
export interface DeleteTokenDto {
  _id: string;
}

export interface UserChangePasswordDto {
  oldPassword: string;
  newPassword: string;
}

export interface ApplyTemplateDto {
  templateName: string;
  reportId: string;
}