DalTag / frontend / plugins / services.ts
services.ts
Raw
import { Plugin } from '@nuxt/types'
import { TaskStatusApplicationService } from '@/services/application/celery/taskStatusApplicationService'
import { CatalogApplicationService } from '@/services/application/upload/catalogApplicationService'
import { ParseApplicationService } from '@/services/application/upload/parseApplicationService'
import { LabelApplicationService } from '@/services/application/label/labelApplicationService'
import { MemberApplicationService } from '@/services/application/member/memberApplicationService'
import { UserApplicationService } from '@/services/application/user/userApplicationService'
import { RoleApplicationService } from '@/services/application/role/roleApplicationService'
import { ProjectApplicationService } from '@/services/application/project/projectApplicationService'
import { CommentApplicationService } from '@/services/application/comment/commentApplicationService'
import { MetricsApplicationService } from '@/services/application/metrics/metricsApplicationService'
import { ExampleApplicationService } from '@/services/application/example/exampleApplicationService'
import { OptionApplicationService } from '@/services/application/option/optionApplicationService'
import { SequenceLabelingApplicationService } from '@/services/application/tasks/sequenceLabeling/sequenceLabelingApplicationService'
import { Seq2seqApplicationService } from '@/services/application/tasks/seq2seq/seq2seqApplicationService'
import { ConfigApplicationService } from '@/services/application/autoLabeling/configApplicationService'
import { TemplateApplicationService } from '@/services/application/autoLabeling/templateApplicationService'
import { TextClassificationService } from '@/services/application/tasks/textClassification/textClassificationApplicationService'
import { AuthApplicationService } from '@/services/application/auth/authApplicationService'
import { DownloadApplicationService } from '@/services/application/download/downloadApplicationService'
import { DownloadFormatApplicationService } from '@/services/application/download/downloadFormatApplicationService'
import { TagApplicationService } from '@/services/application/tag/tagApplicationService'
import { BoundingBoxApplicationService } from '@/services/application/tasks/boundingBox/boundingBoxApplicationService'
import { SegmentationApplicationService } from '@/services/application/tasks/segmentation/segmentationApplicationService'
import { repositories } from './repositories'

export interface Services {
  categoryType: LabelApplicationService
  spanType: LabelApplicationService
  relationType: LabelApplicationService
  member: MemberApplicationService
  user: UserApplicationService
  role: RoleApplicationService
  project: ProjectApplicationService
  comment: CommentApplicationService
  metrics: MetricsApplicationService
  example: ExampleApplicationService
  textClassification: TextClassificationService
  sequenceLabeling: SequenceLabelingApplicationService
  seq2seq: Seq2seqApplicationService
  option: OptionApplicationService
  config: ConfigApplicationService
  template: TemplateApplicationService
  auth: AuthApplicationService
  catalog: CatalogApplicationService
  parse: ParseApplicationService
  taskStatus: TaskStatusApplicationService
  downloadFormat: DownloadFormatApplicationService
  download: DownloadApplicationService
  tag: TagApplicationService
  bbox: BoundingBoxApplicationService
  segmentation: SegmentationApplicationService
}

declare module 'vue/types/vue' {
  interface Vue {
    readonly $services: Services
  }
}

const plugin: Plugin = (_, inject) => {
  const services: Services = {
    categoryType: new LabelApplicationService(repositories.categoryType),
    spanType: new LabelApplicationService(repositories.spanType),
    relationType: new LabelApplicationService(repositories.relationType),
    member: new MemberApplicationService(repositories.member),
    user: new UserApplicationService(repositories.user),
    role: new RoleApplicationService(repositories.role),
    project: new ProjectApplicationService(repositories.project),
    comment: new CommentApplicationService(repositories.comment),
    metrics: new MetricsApplicationService(repositories.metrics),
    example: new ExampleApplicationService(repositories.example),
    textClassification: new TextClassificationService(repositories.category),
    sequenceLabeling: new SequenceLabelingApplicationService(
      repositories.span,
      repositories.relation
    ),
    seq2seq: new Seq2seqApplicationService(repositories.textLabel),
    option: new OptionApplicationService(repositories.option),
    config: new ConfigApplicationService(repositories.config),
    template: new TemplateApplicationService(repositories.template),
    auth: new AuthApplicationService(repositories.auth),
    catalog: new CatalogApplicationService(repositories.catalog),
    parse: new ParseApplicationService(repositories.parse),
    taskStatus: new TaskStatusApplicationService(repositories.taskStatus),
    downloadFormat: new DownloadFormatApplicationService(repositories.downloadFormat),
    download: new DownloadApplicationService(repositories.download),
    tag: new TagApplicationService(repositories.tag),
    bbox: new BoundingBoxApplicationService(repositories.boundingBox),
    segmentation: new SegmentationApplicationService(repositories.segmentation)
  }
  inject('services', services)
}

export default plugin