1 import { join } from 'path'
2 import Piscina from 'piscina'
3 import { WORKER_THREADS } from '@server/initializers/constants'
4 import { downloadImage } from './workers/image-downloader'
5 import { processImage } from '@server/helpers/image-utils'
7 const downloadImagerWorker = new Piscina({
8 filename: join(__dirname, 'workers', 'image-downloader.js'),
9 concurrentTasksPerWorker: WORKER_THREADS.DOWNLOAD_IMAGE.CONCURRENCY,
10 maxThreads: WORKER_THREADS.DOWNLOAD_IMAGE.MAX_THREADS
13 function downloadImageFromWorker (options: Parameters<typeof downloadImage>[0]): Promise<ReturnType<typeof downloadImage>> {
14 return downloadImagerWorker.run(options)
17 // ---------------------------------------------------------------------------
19 const processImageWorker = new Piscina({
20 filename: join(__dirname, 'workers', 'image-processor.js'),
21 concurrentTasksPerWorker: WORKER_THREADS.DOWNLOAD_IMAGE.CONCURRENCY,
22 maxThreads: WORKER_THREADS.DOWNLOAD_IMAGE.MAX_THREADS
25 function processImageFromWorker (options: Parameters<typeof processImage>[0]): Promise<ReturnType<typeof processImage>> {
26 return processImageWorker.run(options)
30 downloadImageFromWorker,
31 processImageFromWorker