Files
overleaf-cep/services/filestore/app/js/ImageOptimiser.js
Andrew Rumble 90cf4b6a0a Merge pull request #29841 from overleaf/ar-convert-filestore-to-esm
[filestore] convert to ES modules

GitOrigin-RevId: 404905973548bb6e437fff66b368e87be8249b73
2025-12-05 09:05:35 +00:00

35 lines
732 B
JavaScript

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
}
}
}