mirror of
https://github.com/overleaf/overleaf.git
synced 2024-12-04 20:04:58 -05:00
7f48c67512
* Add `unicorn/prefer-node-protocol` * Fix `unicorn/prefer-node-protocol` ESLint errors * Run `npm run format:fix` * Add sandboxed-module sourceTransformers in mocha setups Fix `no such file or directory, open 'node:fs'` in `sandboxed-module` * Remove `node:` in the SandboxedModule requires * Fix new linting errors with `node:` GitOrigin-RevId: 68f6e31e2191fcff4cb8058dd0a6914c14f59926
27 lines
738 B
JavaScript
27 lines
738 B
JavaScript
const fs = require('node:fs')
|
|
const fsExtra = require('fs-extra')
|
|
const logger = require('@overleaf/logger')
|
|
const os = require('node:os')
|
|
const path = require('node:path')
|
|
|
|
/**
|
|
* Create a temporary directory before executing a function and cleaning up
|
|
* after.
|
|
*
|
|
* @param {string} prefix - prefix for the temporary directory name
|
|
* @param {Function} fn - async function to call
|
|
*/
|
|
async function withTmpDir(prefix, fn) {
|
|
const tmpDir = await fs.promises.mkdtemp(path.join(os.tmpdir(), prefix))
|
|
try {
|
|
await fn(tmpDir)
|
|
} finally {
|
|
fsExtra.remove(tmpDir).catch(err => {
|
|
if (err.code !== 'ENOENT') {
|
|
logger.error({ err }, 'failed to delete temporary file')
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
module.exports = withTmpDir
|