mirror of
https://github.com/TheBinaryNinja/tvapp2.git
synced 2026-06-12 08:45:42 -04:00
initial push from external dev branches
This commit is contained in:
40
server/dist/config.js
vendored
Normal file
40
server/dist/config.js
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
import { readFileSync, existsSync } from 'node:fs';
|
||||
import { resolve } from 'node:path';
|
||||
const VALID_SCHEMES = /^mongodb(\+srv)?:\/\//;
|
||||
function resolveConfigPath() {
|
||||
const envPath = process.env.TVAPP2_CONFIG;
|
||||
if (envPath) {
|
||||
if (!existsSync(envPath)) {
|
||||
throw new Error(`TVAPP2_CONFIG points to "${envPath}" but the file does not exist.`);
|
||||
}
|
||||
return envPath;
|
||||
}
|
||||
const localPath = resolve(process.cwd(), 'config.local.json');
|
||||
if (existsSync(localPath))
|
||||
return localPath;
|
||||
throw new Error('No config file found. Set TVAPP2_CONFIG to the mounted config path, ' +
|
||||
'or create ./config.local.json for development.');
|
||||
}
|
||||
export function loadConfig() {
|
||||
const path = resolveConfigPath();
|
||||
const raw = readFileSync(path, 'utf8');
|
||||
let parsed;
|
||||
try {
|
||||
parsed = JSON.parse(raw);
|
||||
}
|
||||
catch (err) {
|
||||
throw new Error(`Config file at "${path}" is not valid JSON: ${err.message}`);
|
||||
}
|
||||
if (!parsed || typeof parsed !== 'object') {
|
||||
throw new Error(`Config file at "${path}" must be a JSON object.`);
|
||||
}
|
||||
const obj = parsed;
|
||||
const mongoUri = obj.mongoUri;
|
||||
if (typeof mongoUri !== 'string' || !VALID_SCHEMES.test(mongoUri)) {
|
||||
throw new Error(`Config "mongoUri" must be a string starting with mongodb:// or mongodb+srv:// (got ${JSON.stringify(mongoUri)}).`);
|
||||
}
|
||||
const port = typeof obj.port === 'number' ? obj.port : 3000;
|
||||
const logLevel = typeof obj.logLevel === 'string' ? obj.logLevel : 'info';
|
||||
return { mongoUri, port, logLevel };
|
||||
}
|
||||
//# sourceMappingURL=config.js.map
|
||||
Reference in New Issue
Block a user