Files
directus/packages/utils/node/tmp.ts
José Varela f96eda89e1 Import: Do task in a separate worker (#19691)
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
Co-authored-by: ian <licitdev@gmail.com>
2023-10-04 11:39:40 +02:00

42 lines
804 B
TypeScript

import { createHash } from 'node:crypto';
import fs from 'node:fs/promises';
import { tmpdir } from 'node:os';
import { join } from 'node:path';
async function createTmpDirectory() {
const path = await fs.mkdtemp(join(tmpdir(), 'directus-'));
async function cleanup() {
return await fs.rmdir(path);
}
return {
path,
cleanup,
};
}
export async function createTmpFile() {
const dir = await createTmpDirectory();
const filename = createHash('sha1').update(new Date().toString()).digest('hex').substring(0, 8);
const path = join(dir.path, filename);
try {
const fd = await fs.open(path, 'wx');
await fd.close();
} catch (err) {
await dir.cleanup();
throw err;
}
async function cleanup() {
await fs.unlink(path);
await dir.cleanup();
}
return {
path,
cleanup,
};
}