29 lines
1.1 KiB
JavaScript
29 lines
1.1 KiB
JavaScript
import path from 'node:path';
|
|
import fs from 'node:fs';
|
|
import { fileURLToPath } from 'node:url';
|
|
|
|
const projectRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..');
|
|
const resolveFromRoot = (value, fallback) => path.resolve(projectRoot, value || fallback);
|
|
|
|
export const config = Object.freeze({
|
|
projectRoot,
|
|
host: process.env.HOST || '127.0.0.1',
|
|
port: Number.parseInt(process.env.PORT || '47145', 10),
|
|
dataDir: resolveFromRoot(process.env.DATA_DIR, 'data'),
|
|
storageDir: resolveFromRoot(process.env.STORAGE_DIR, 'storage'),
|
|
maxUploadBytes: Number.parseInt(process.env.MAX_UPLOAD_MB || '50', 10) * 1024 * 1024,
|
|
defaultRouteRadiusKm: Number.parseFloat(process.env.DEFAULT_ROUTE_RADIUS_KM || '25'),
|
|
defaultPoiTriggerMeters: Number.parseFloat(process.env.DEFAULT_POI_TRIGGER_METERS || '80')
|
|
});
|
|
|
|
export function ensureRuntimeDirectories() {
|
|
for (const directory of [
|
|
config.dataDir,
|
|
path.join(config.storageDir, 'active', 'routes'),
|
|
path.join(config.storageDir, 'trash', 'routes'),
|
|
path.join(config.storageDir, 'uploads')
|
|
]) {
|
|
fs.mkdirSync(directory, { recursive: true });
|
|
}
|
|
}
|