]>
Commit | Line | Data |
---|---|---|
c53853ca C |
1 | import { join } from 'path' |
2 | import Piscina from 'piscina' | |
daa0226b | 3 | import { processImage } from '@server/helpers/image-utils' |
c53853ca C |
4 | import { WORKER_THREADS } from '@server/initializers/constants' |
5 | import { downloadImage } from './workers/image-downloader' | |
6 | ||
daa0226b | 7 | let downloadImageWorker: Piscina |
c53853ca C |
8 | |
9 | function downloadImageFromWorker (options: Parameters<typeof downloadImage>[0]): Promise<ReturnType<typeof downloadImage>> { | |
daa0226b C |
10 | if (!downloadImageWorker) { |
11 | downloadImageWorker = new Piscina({ | |
12 | filename: join(__dirname, 'workers', 'image-downloader.js'), | |
13 | concurrentTasksPerWorker: WORKER_THREADS.DOWNLOAD_IMAGE.CONCURRENCY, | |
14 | maxThreads: WORKER_THREADS.DOWNLOAD_IMAGE.MAX_THREADS | |
15 | }) | |
16 | } | |
17 | ||
18 | return downloadImageWorker.run(options) | |
c53853ca C |
19 | } |
20 | ||
3a54605d C |
21 | // --------------------------------------------------------------------------- |
22 | ||
daa0226b | 23 | let processImageWorker: Piscina |
3a54605d C |
24 | |
25 | function processImageFromWorker (options: Parameters<typeof processImage>[0]): Promise<ReturnType<typeof processImage>> { | |
daa0226b C |
26 | if (!processImageWorker) { |
27 | processImageWorker = new Piscina({ | |
28 | filename: join(__dirname, 'workers', 'image-processor.js'), | |
29 | concurrentTasksPerWorker: WORKER_THREADS.PROCESS_IMAGE.CONCURRENCY, | |
30 | maxThreads: WORKER_THREADS.PROCESS_IMAGE.MAX_THREADS | |
31 | }) | |
32 | } | |
33 | ||
3a54605d C |
34 | return processImageWorker.run(options) |
35 | } | |
36 | ||
c53853ca | 37 | export { |
3a54605d C |
38 | downloadImageFromWorker, |
39 | processImageFromWorker | |
c53853ca | 40 | } |