@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
JavaScript
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