node-microsvc-lib
Version:
NodeJS microservice framework library
129 lines • 4.72 kB
JavaScript
/**
* 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