import { randomBytes } from 'node:crypto'; import fs = require('node:fs/promises'); import path = require('node:path'); const IS_CI = !!process.env.CI; const ARTIFACT_DIR = path.join(__dirname, '..', 'artifacts'); async function ensureArtifactDir (): Promise { if (!IS_CI) { return; } await fs.mkdir(ARTIFACT_DIR, { recursive: true }); } export async function createArtifact ( fileName: string, data: Buffer ): Promise { if (!IS_CI) { return; } await ensureArtifactDir(); await fs.writeFile(path.join(ARTIFACT_DIR, fileName), data); } export async function createArtifactWithRandomId ( makeFileName: (id: string) => string, data: Buffer ): Promise { const randomId = randomBytes(12).toString('hex'); const fileName = makeFileName(randomId); await createArtifact(fileName, data); return fileName; }