UNPKG

node-microsvc-lib

Version:
129 lines 4.72 kB
/** * Created by pedrosousabarreto@gmail.com on 15/Jan/2019. */ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ServiceSecret = exports.ServiceFeatureFlag = exports.ServiceParam = exports.ServiceParams = exports.ParamTypes = void 0; // import {strEnum} from "./string_utils"; // export const PARAM_TYPES = strEnum([ // 'STRING', // 'BOOL', // 'INT_NUMBER', // 'FLOAT_NUMBER' // ]); var ParamTypes; (function (ParamTypes) { ParamTypes["STRING"] = "STRING"; ParamTypes["BOOL"] = "BOOL"; ParamTypes["INT_NUMBER"] = "INT_NUMBER"; ParamTypes["FLOAT_NUMBER"] = "FLOAT_NUMBER"; })(ParamTypes = exports.ParamTypes || (exports.ParamTypes = {})); /** type from string enum */ // export type ParamType = keyof typeof PARAM_TYPES; /*** * ServiceParams * An instance of this class is required to configure a service. * This will act like the schema of available of parameters, feature flags and secrets for a service. */ class ServiceParams { constructor() { this._uppercase_key_names = []; this._original_key_names = []; this._params = new Map(); this._feature_flags = new Map(); this._secrets = new Map(); } has(name) { return this._uppercase_key_names.indexOf(name.toUpperCase()) != -1; } _register_key_name(name) { this._original_key_names.push(name); this._uppercase_key_names.push(name.toUpperCase()); } all_keys() { return this._original_key_names; } _check_name(name) { if (this.has(name.toUpperCase())) throw new Error(`Duplicate param name detected - name: ${name}`); } // params // add_param(name:string, type:ParamType, default_value:any, description:string){ add_param(name, type, default_value, description) { const param = new ServiceParam(name, type, default_value, description); this._check_name(param.name); this._params.set(param.name, param); this._register_key_name(param.name); } get_param(param_name) { return this._params.get(param_name) || null; } get_all_params() { return Array.from(this._params.values()); } // feature flags add_feature_flag(name, default_value, description) { const feature_flag = new ServiceFeatureFlag(name, default_value, description); this._check_name(feature_flag.name); this._feature_flags.set(feature_flag.name.toUpperCase(), feature_flag); this._register_key_name(feature_flag.name); } get_feature_flag(feature_flag_name) { return this._feature_flags.get(feature_flag_name.toUpperCase()) || null; } get_all_feature_flags() { return Array.from(this._feature_flags.values()); } // secrets add_secret(name, default_value, description) { const secret = new ServiceSecret(name, default_value, description); this._check_name(secret.name); this._secrets.set(secret.name, secret); this._register_key_name(secret.name); } get_secret(secret_name) { return this._secrets.get(secret_name) || null; } get_all_secrets() { return Array.from(this._secrets.values()); } } exports.ServiceParams = ServiceParams; class ServiceParam { // constructor(private _name:string, private _type:ParamType, private _default_value:any, private _description:string){} constructor(_name, _type, _default_value, _description) { this._name = _name; this._type = _type; this._default_value = _default_value; this._description = _description; } get name() { return this._name; } // get type():ParamType{ return this._type;} get type() { return this._type; } get default_value() { return this._default_value; } get description() { return this._description; } } exports.ServiceParam = ServiceParam; class ServiceFeatureFlag { constructor(_name, _default_value, _description) { this._name = _name; this._default_value = _default_value; this._description = _description; } get name() { return this._name; } get default_value() { return this._default_value; } get description() { return this._description; } } exports.ServiceFeatureFlag = ServiceFeatureFlag; class ServiceSecret { constructor(_name, _default_value, _description) { this._name = _name; this._default_value = _default_value; this._description = _description; } get name() { return this._name; } get default_value() { return this._default_value; } get description() { return this._description; } } exports.ServiceSecret = ServiceSecret; //# sourceMappingURL=service_params.js.map