UNPKG

counterfact

Version:

Generate a TypeScript-based mock server from an OpenAPI spec in seconds — with stateful routes, hot reload, and REPL support.

28 lines (27 loc) 1.3 kB
import { promises as fs } from "node:fs"; import path from "node:path"; /* eslint-disable security/detect-non-literal-fs-filename -- migration paths are derived from a selected project root and walked via fs Dirent entries. */ async function copyAndModifyFiles(sourceDirectory, destinationDirectory) { try { const entries = await fs.readdir(sourceDirectory, { withFileTypes: true }); await fs.mkdir(destinationDirectory, { recursive: true }); for (const entry of entries) { const sourcePath = path.join(sourceDirectory, entry.name); const destinationPath = path.join(destinationDirectory, entry.name); if (entry.isDirectory()) { await copyAndModifyFiles(sourcePath, destinationPath); } else { let fileContent = await fs.readFile(sourcePath, "utf8"); fileContent = fileContent.replaceAll("path-types", "types/paths"); await fs.writeFile(destinationPath, fileContent); } } } catch (error) { console.error("Error copying and modifying files:", error); } } export async function pathsToRoutes(rootDirectory) { await copyAndModifyFiles(path.join(rootDirectory, "paths"), path.join(rootDirectory, "routes")); }