| 12345678910111213141516171819202122232425262728293031323334 |
- import logger from '@overleaf/logger'
- import metrics from '@overleaf/metrics'
- import { callbackify } from 'node:util'
- import SafeExec from './SafeExec.js'
- export default {
- compressPng: callbackify(compressPng),
- promises: {
- compressPng,
- },
- }
- async function compressPng(localPath, callback) {
- const timer = new metrics.Timer('compressPng')
- const args = ['optipng', localPath]
- const opts = {
- timeout: 30 * 1000,
- killSignal: 'SIGKILL',
- }
- try {
- await SafeExec.promises(args, opts)
- timer.done()
- } catch (err) {
- if (err.code === 'SIGKILL') {
- logger.warn(
- { err, stderr: err.stderr, localPath },
- 'optimiser timeout reached'
- )
- } else {
- throw err
- }
- }
- }
|