flecks/packages/core/build/testing.js

26 lines
710 B
JavaScript
Raw Normal View History

2024-02-09 23:59:11 -06:00
import {randomBytes} from 'crypto';
import {mkdir} from 'fs/promises';
import {tmpdir} from 'os';
import {join} from 'path';
import {rimraf} from 'rimraf';
export function id() {
return new Promise((resolve, reject) => {
randomBytes(16, (error, bytes) => (error ? reject(error) : resolve(bytes.toString('hex'))));
});
}
export async function createWorkspace() {
const workspace = join(tmpdir(), '@flecks', 'core', 'testing', await id());
await rimraf(workspace);
await mkdir(workspace, {recursive: true});
// sheeeeesh
process.prependListener('message', async (message) => {
if ('__workerpool-terminate__' === message) {
rimraf.sync(workspace);
}
});
return workspace;
}