import { fileURLToPath } from "node:url" import fs from "node:fs" import crypto from "node:crypto" import { docker } from "./Docker.js" export class TemporaryFolder { public readonly id: string public readonly path: string public constructor() { this.id = crypto.randomUUID() this.path = fileURLToPath(new URL(`../../temp/${this.id}`, import.meta.url)) } public async create(): Promise { await fs.promises.mkdir(this.path, { recursive: true }) } public async delete(): Promise { await fs.promises.rm(this.path, { recursive: true, force: true }) } public static async cleanAll(): Promise { try { const temporaryPath = fileURLToPath( new URL("../../temp", import.meta.url), ) await fs.promises.rm(temporaryPath, { recursive: true, force: true }) await docker.removeImages() } catch {} } }