Utils/Config.js

/**Copyright (c) 2009-2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved.**/
"use strict";const InvalidInputError=require("../Errors/InvalidInputError");
/** 
 * Class containing Config utilities.
 * @memberof mdxWebApiCore.Utils
 * */class Config{
/** @private */
#r=null;
/** 
     * Constructor is passed a destructured object as param.
     * @param {Object} [input={}] - Input object.
     * @param {?Object} [input.bootstrap=null] - Bootstrap config of web-api
     */
constructor({bootstrap:r=null}={}){if(null==r)throw new InvalidInputError("bootstrap is a required param.");this.#r=this.#e(r)}
/**
     * Initializes or Overrides Bootstrap Object Map
     * @private
     * @param {Object} bootstrap
     * @returns {Object} Returns an object containing bootstrap config in maps.
     */#e(r){let e=null;if(e=null==this.#r?{server:{port:null,configs:new Map},kafka:{brokers:null},elasticsearch:{node:null,indexPrefix:null,rawIndex:null},milvus:{url:null,collectionName:null,partitioningStrategy:null,nprobeQbe:null,partitionRetentionInDays:null,searchQueryRetryPeriodInSec:null}}:this.#r,r.hasOwnProperty("server")&&(r.server.hasOwnProperty("port")&&(e.server.port=r.server.port),r.server.hasOwnProperty("configs")))for(let t of r.server.configs)e.server.configs.set(t.name,t.value);return r.hasOwnProperty("kafka")&&r.kafka.hasOwnProperty("brokers")&&(e.kafka.brokers=r.kafka.brokers),r.hasOwnProperty("elasticsearch")&&(r.elasticsearch.hasOwnProperty("node")&&(e.elasticsearch.node=r.elasticsearch.node),r.elasticsearch.hasOwnProperty("indexPrefix")&&(e.elasticsearch.indexPrefix=r.elasticsearch.indexPrefix),r.elasticsearch.hasOwnProperty("rawIndex")&&(e.elasticsearch.rawIndex=r.elasticsearch.rawIndex)),r.hasOwnProperty("milvus")&&(r.milvus.hasOwnProperty("url")&&(e.milvus.url=r.milvus.url),r.milvus.hasOwnProperty("collectionName")&&(e.milvus.collectionName=r.milvus.collectionName),r.milvus.hasOwnProperty("partitioningStrategy")&&(e.milvus.partitioningStrategy=r.milvus.partitioningStrategy),r.milvus.hasOwnProperty("nprobeQbe")&&(e.milvus.nprobeQbe=r.milvus.nprobeQbe),r.milvus.hasOwnProperty("partitionRetentionInDays")&&(e.milvus.partitionRetentionInDays=r.milvus.partitionRetentionInDays),r.milvus.hasOwnProperty("searchQueryRetryPeriodInSec")&&(e.milvus.searchQueryRetryPeriodInSec=r.milvus.searchQueryRetryPeriodInSec)),e}
/**
     * Returns Bootstrap Config Object Map
     * @public
     * @returns {Object} Returns an object containing bootstrap config in maps.
     * @example
     * let ConfigObject = new mdx.Utils.Config({bootstrap:defaultBootstrapConfig});
     * let bootstrapObjectMap = ConfigObject.getBootstrapObjectMap();
     */getBootstrapObjectMap(){return this.#r}
/**
     * Overrides current Bootstrap Object Map
     * @public
     * @param {Object} bootstrapConfig
     * @example
     * let ConfigObject = new mdx.Utils.Config({bootstrap:defaultBootstrapConfig});
     * const bootstrapConfig = require(bootstrapConfigPath); // bootstrapConfigPath is the path to file which has the values provided by user.
     * ConfigObject.overrideBootstrapConfig(bootstrapConfig);
     */overrideBootstrapConfig(r){this.#r=this.#e(r)}}module.exports=Config;