UNPKG

@fdm-monster/server

Version:

FDM Monster is a bulk OctoPrint, Klipper, PrusaLink and BambuLab manager to set up, configure and monitor 3D printers. Our aim is to provide neat overview over your farm.

41 lines (40 loc) 1.46 kB
import { AppConstants } from "../server.constants.js"; import { getEnvOrDefault } from "./env.utils.js"; import { dirname, join } from "node:path"; import { existsSync, mkdirSync } from "node:fs"; import { fileURLToPath } from "node:url"; //#region src/utils/fs.utils.ts /** * Get __dirname equivalent in ESM * @param importMetaUrl - Pass import.meta.url from the calling module */ function getDirname(importMetaUrl) { return dirname(fileURLToPath(importMetaUrl)); } function getDatabaseFilePath() { const dbFile = getEnvOrDefault(AppConstants.DATABASE_FILE, AppConstants.defaultDatabaseFile); if (dbFile === ":memory:") return dbFile; return join(getDatabaseFolder(), dbFile); } function getDatabaseFolder() { return getEnvOrDefault(AppConstants.DATABASE_PATH, join(superRootPath(), AppConstants.defaultDatabasePath)); } function getMediaPath() { return getEnvOrDefault(AppConstants.MEDIA_PATH, join(superRootPath(), AppConstants.defaultBaseMediaPath)); } function packageJsonPath() { return join(superRootPath(), "./package.json"); } function ensureDirExists(dir) { if (existsSync(dir)) return; mkdirSync(dir, { recursive: true }); } /** * Root where code is hosted, avoid using excessively */ function superRootPath() { return join(getDirname(import.meta.url), "../.."); } //#endregion export { ensureDirExists, getDatabaseFilePath, getDatabaseFolder, getDirname, getMediaPath, packageJsonPath, superRootPath }; //# sourceMappingURL=fs.utils.js.map