UNPKG

@runejs/core

Version:

Core logging, networking, and buffer functionality for RuneJS applications.

66 lines 2.43 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.parseServerConfig = exports.sanitizeConfigOptions = exports.defaults = void 0; const tslib_1 = require("tslib"); const path_1 = tslib_1.__importDefault(require("path")); const fs = tslib_1.__importStar(require("fs")); const js_yaml_1 = require("js-yaml"); const logger_1 = require("../logger"); exports.defaults = { configDir: path_1.default.join('.', 'config'), cacheDir: path_1.default.join('.', 'cache'), filestoreDir: path_1.default.join('.', 'filestore'), configFileName: 'server-config' }; const sanitizeConfigOptions = (options) => { if (!options) { options = { useDefault: false }; } const keys = Object.keys(exports.defaults); for (const propName of keys) { if (!options[propName]) { options[propName] = exports.defaults[propName]; } } return options; }; exports.sanitizeConfigOptions = sanitizeConfigOptions; function parseServerConfig(options) { options = exports.sanitizeConfigOptions(options); let filePath = path_1.default.join(options.configDir, options.configFileName); if (options.useDefault) { filePath += '.example'; } let fileType; if (fs.existsSync(`${filePath}.json`)) { fileType = 'json'; } else if (fs.existsSync(`${filePath}.yaml`)) { fileType = 'yaml'; } else { if (!options.useDefault) { logger_1.logger.warn(`Server config not provided, using default...`); return parseServerConfig({ useDefault: true }); } else { throw new Error(`Unable to load server configuration: Default (.example) server configuration file not found.`); } } filePath += `.${fileType}`; const configFileContent = fs.readFileSync(filePath, 'utf-8'); if (!configFileContent) { throw new Error(`Syntax error encountered while loading server configuration file.`); } if (fileType === 'json') { options = JSON.parse(configFileContent); } else if (fileType === 'yaml') { options = js_yaml_1.safeLoad(configFileContent, { schema: js_yaml_1.JSON_SCHEMA }); } return exports.sanitizeConfigOptions(options); } exports.parseServerConfig = parseServerConfig; //# sourceMappingURL=server-config.js.map