File size: 1,088 Bytes
2f35054
e7ba29d
 
 
2f35054
e7ba29d
 
 
5541427
2f35054
e7ba29d
5541427
2f35054
 
5541427
2f35054
22f8eb7
5541427
22f8eb7
046ca57
5541427
046ca57
25647ae
 
 
e7ba29d
2f35054
e7ba29d
2f35054
e7ba29d
2f35054
 
e7ba29d
 
2f35054
e7ba29d
2f35054
 
e7ba29d
2f35054
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
const workers: Record<string, Worker | null> = {}

export const getWorker = (pipeline: string) => {
  if (!workers[pipeline]) {
    let workerUrl: string

    switch (pipeline) {
      case 'text-classification':
        workerUrl = `/workers/text-classification.js`
        break
      case 'zero-shot-classification':
        workerUrl = `/workers/zero-shot-classification.js`
        break
      case 'text-generation':
        workerUrl = `/workers/text-generation.js`
        break
      case 'feature-extraction':
        workerUrl = `/workers/feature-extraction.js`
        break
      case 'image-classification':
        workerUrl = `/workers/image-classification.js`
        break
      case 'text-to-speech':
        workerUrl = `/workers/text-to-speech.js`
        break
      default:
        return null
    }
    workers[pipeline] = new Worker(workerUrl, { type: 'module' })
  }
  return workers[pipeline]
}

export const terminateWorker = (pipeline: string) => {
  const worker = workers[pipeline]
  if (worker) {
    worker.terminate()
    delete workers[pipeline]
  }
}