aboutsummaryrefslogtreecommitdiff
path: root/src/util/paths.ts
blob: 30a1bbd6c2357d5d8bebf45208d96db3fc6f6b3d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import { randomUUID } from "node:crypto";
import { tmpdir } from "node:os";
import { join } from "node:path";

const NAMESPACE_RE = /^[a-zA-Z0-9_-]+$/;

const requireValidNamespace = (namespace: string): void => {
  if (!NAMESPACE_RE.test(namespace)) {
    throw new Error(`Invalid namespace (must match ${NAMESPACE_RE}): ${JSON.stringify(namespace)}`);
  }
};

export const screenshotPath = (namespace: string, ext: "png" | "jpeg" = "png"): string => {
  requireValidNamespace(namespace);
  return join(tmpdir(), `pi-browser-screenshot-${namespace}-${randomUUID()}.${ext}`);
};

export const pdfPath = (namespace: string): string => {
  requireValidNamespace(namespace);
  return join(tmpdir(), `pi-browser-pdf-${namespace}-${randomUUID()}.pdf`);
};