import { readFileSync } from 'node:fs'; import path from 'node:path'; export interface User { username: string; password: string; role_id: number } export interface Sheet { form_id: number; form_type: string; sheet: string; direction: string | null; year: number; url: string; rows: number; owner: 'rf' | 'ssp'; } export interface ProjectReport { project_id: number; year: number; report_type: string; url: string; rows: number } export interface Page { name: string; url: string } export interface Manifest { scale: number; users: Record; sheets: Sheet[]; project_reports: ProjectReport[]; svods: Page[]; modal_pages: Page[]; } export const PERF_DIR = path.resolve(__dirname, '../..'); export function scale(): number { return Number(process.env.PERF_SCALE ?? 1); } export function loadManifest(sc: number = scale()): Manifest { const p = path.join(PERF_DIR, 'results', `manifest-s${sc}.json`); const d = JSON.parse(readFileSync(p, 'utf-8')); return { scale: d.scale, users: d.users ?? {}, sheets: (d.sheets ?? []).map((s: Sheet) => ({ owner: 'rf', ...s })), project_reports: d.project_reports ?? [], svods: d.svods ?? [], modal_pages: d.modal_pages ?? [], }; }