Complete general functions
This commit is contained in:
94
helper/configUtils.js
Normal file
94
helper/configUtils.js
Normal file
@@ -0,0 +1,94 @@
|
||||
/**
|
||||
* @file configUtils.js
|
||||
*
|
||||
* Permission is hereby granted to any person obtaining a copy of this software
|
||||
* and associated documentation files (the "Software"), to use it for personal
|
||||
* or non-commercial purposes, with the following restrictions:
|
||||
*
|
||||
* 1. **No Copying or Redistribution**: The Software or any of its parts may not
|
||||
* be copied, merged, distributed, sublicensed, or sold without explicit
|
||||
* prior written permission from the author.
|
||||
*
|
||||
* 2. **Commercial Use**: Any use of the Software for commercial purposes requires
|
||||
* a valid license, obtainable only with the explicit consent of the author.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES, OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT, OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF, OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*
|
||||
* Ownership of this code remains solely with the original author. Unauthorized
|
||||
* use of this Software is strictly prohibited.
|
||||
*
|
||||
* @summary Utility for managing and validating configuration values.
|
||||
* @description Utility for managing and validating configuration values.
|
||||
* @module ConfigUtils
|
||||
* @requires ValidationUtils
|
||||
* @requires Logger
|
||||
* @exports ConfigUtils
|
||||
* @version 0.1.0
|
||||
* @since 0.1.0
|
||||
*/
|
||||
|
||||
|
||||
const ValidationUtils = require("./validationUtils");
|
||||
const Logger = require("./logger");
|
||||
|
||||
class ConfigUtils {
|
||||
constructor(defaultConfig, IloggerEnabled , IloggerLevel) {
|
||||
const loggerEnabled = IloggerEnabled || true;
|
||||
const loggerLevel = IloggerLevel || "warn";
|
||||
this.logger = new Logger(loggerEnabled, loggerLevel, 'ConfigUtils');
|
||||
this.defaultConfig = defaultConfig;
|
||||
this.validationUtils = new ValidationUtils(loggerEnabled, loggerLevel);
|
||||
}
|
||||
|
||||
// Initialize configuration
|
||||
initConfig(config) {
|
||||
this.logger.info("Initializing configuration...");
|
||||
|
||||
// Validate the provided configuration
|
||||
const validatedConfig = this.validationUtils.validateSchema(config, this.defaultConfig, this.defaultConfig.functionality.softwareType.default);
|
||||
|
||||
this.logger.info("Configuration initialized successfully.");
|
||||
|
||||
return validatedConfig;
|
||||
}
|
||||
|
||||
|
||||
// Update configuration
|
||||
updateConfig(currentConfig, newConfig) {
|
||||
this.logger.info("Updating configuration...");
|
||||
|
||||
// Merge 2 configs and validate the result
|
||||
const mergedConfig = this.mergeObjects(currentConfig, newConfig);
|
||||
|
||||
// Merge current configuration with new values
|
||||
const updatedConfig = this.validationUtils.validateSchema(mergedConfig, this.defaultConfig, this.defaultConfig.functionality.softwareType.default);
|
||||
|
||||
this.logger.info("Configuration updated successfully.");
|
||||
return updatedConfig;
|
||||
}
|
||||
|
||||
// loop through objects and merge them obj1 will be updated with obj2 values
|
||||
mergeObjects(obj1, obj2) {
|
||||
for (let key in obj2) {
|
||||
if (obj2.hasOwnProperty(key)) {
|
||||
if (typeof obj2[key] === 'object') {
|
||||
if (!obj1[key]) {
|
||||
obj1[key] = {};
|
||||
}
|
||||
this.mergeObjects(obj1[key], obj2[key]);
|
||||
} else {
|
||||
obj1[key] = obj2[key];
|
||||
}
|
||||
}
|
||||
}
|
||||
return obj1;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = ConfigUtils;
|
||||
Reference in New Issue
Block a user