|
'use strict'; |
|
|
|
const { promisify } = require("util"); |
|
const tmp = require("tmp"); |
|
|
|
|
|
module.exports.fileSync = tmp.fileSync; |
|
const fileWithOptions = promisify((options, cb) => |
|
tmp.file(options, (err, path, fd, cleanup) => |
|
err ? cb(err) : cb(undefined, { path, fd, cleanup: promisify(cleanup) }) |
|
) |
|
); |
|
module.exports.file = async (options) => fileWithOptions(options); |
|
|
|
module.exports.withFile = async function withFile(fn, options) { |
|
const { path, fd, cleanup } = await module.exports.file(options); |
|
try { |
|
return await fn({ path, fd }); |
|
} finally { |
|
await cleanup(); |
|
} |
|
}; |
|
|
|
|
|
|
|
module.exports.dirSync = tmp.dirSync; |
|
const dirWithOptions = promisify((options, cb) => |
|
tmp.dir(options, (err, path, cleanup) => |
|
err ? cb(err) : cb(undefined, { path, cleanup: promisify(cleanup) }) |
|
) |
|
); |
|
module.exports.dir = async (options) => dirWithOptions(options); |
|
|
|
module.exports.withDir = async function withDir(fn, options) { |
|
const { path, cleanup } = await module.exports.dir(options); |
|
try { |
|
return await fn({ path }); |
|
} finally { |
|
await cleanup(); |
|
} |
|
}; |
|
|
|
|
|
|
|
module.exports.tmpNameSync = tmp.tmpNameSync; |
|
module.exports.tmpName = promisify(tmp.tmpName); |
|
|
|
module.exports.tmpdir = tmp.tmpdir; |
|
|
|
module.exports.setGracefulCleanup = tmp.setGracefulCleanup; |
|
|