src / audit.ts
import { createHash } from "crypto";
import { appendFile, mkdir } from "fs/promises";
import { dirname, isAbsolute, join, resolve } from "path";
import type { PowerShell7Config } from "./config";
export function sha256(text: string | Buffer): string {
return createHash("sha256").update(text).digest("hex");
}
export async function appendAuditLog(
workingDirectory: string,
config: PowerShell7Config,
entry: Record<string, unknown>,
): Promise<void> {
const auditPath = resolveConfiguredPath(workingDirectory, config.auditLogPath);
await mkdir(dirname(auditPath), { recursive: true });
await appendFile(auditPath, `${JSON.stringify(entry)}\n`, "utf8");
}
export function resolveConfiguredPath(workingDirectory: string, configuredPath: string): string {
return isAbsolute(configuredPath) ? resolve(configuredPath) : resolve(join(workingDirectory, configuredPath));
}