@stoplight/moleculer
Version:
Fast & powerful microservices framework for Node.JS
52 lines (42 loc) • 1.03 kB
JavaScript
/*
* moleculer
* Copyright (c) 2019 MoleculerJS (https://github.com/moleculerjs/moleculer)
* MIT Licensed
*/
;
const { BrokerOptionsError } = require("../../errors");
const Types = {
Base: require("./base"),
Counter: require("./counter"),
Gauge: require("./gauge"),
Histogram: require("./histogram"),
Info: require("./info")
};
/**
* Get MetricType class by name.
*
* @param {String} name
* @returns
*/
function getByName(name) {
/* istanbul ignore next */
if (!name) return null;
let n = Object.keys(Types).find(n => n.toLowerCase() == name.toLowerCase());
if (n) return Types[n];
}
/**
* Resolve metric type by name
*
* @param {string} type
* @returns {BaseMetric}
* @memberof ServiceBroker
*/
function resolve(type) {
const TypeClass = getByName(type);
if (!TypeClass) throw new BrokerOptionsError(`Invalid metric type '${type}'.`, { type });
return TypeClass;
}
function register(name, value) {
Types[name] = value;
}
module.exports = Object.assign(Types, { resolve, register });