overleaf/services/filestore/app/js/ImageOptimiser.js

44 lines
1.4 KiB
JavaScript

/* eslint-disable
no-unused-vars,
*/
// TODO: This file was created by bulk-decaffeinate.
// Fix any style issues and re-enable lint.
/*
* decaffeinate suggestions:
* DS102: Remove unnecessary code created because of implicit returns
* DS207: Consider shorter variations of null checks
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
*/
const { exec } = require('child_process')
const logger = require('logger-sharelatex')
const Settings = require('settings-sharelatex')
module.exports = {
compressPng(localPath, callback) {
const startTime = new Date()
logger.log({ localPath }, 'optimising png path')
const args = `optipng ${localPath}`
const opts = {
timeout: 30 * 1000,
killSignal: 'SIGKILL'
}
if (!Settings.enableConversions) {
const error = new Error('Image conversions are disabled')
return callback(error)
}
return exec(args, opts, function(err, stdout, stderr) {
if (err != null && err.signal === 'SIGKILL') {
logger.warn({ err, stderr, localPath }, 'optimiser timeout reached')
err = null
} else if (err != null) {
logger.err(
{ err, stderr, localPath },
'something went wrong converting compressPng'
)
} else {
logger.log({ localPath }, 'finished compressPng file')
}
return callback(err)
})
}
}