const Collection = require('./Collection'); const Counter = require('./metrics/Counter'); const Gauge = require('./metrics/Gauge'); const SettableGauge = require('./metrics/SettableGauge'); const CachedGauge = require('./metrics/CachedGauge'); const Histogram = require('./metrics/Histogram'); const Meter = require('./metrics/Meter'); const NoOpMeter = require('./metrics/NoOpMeter'); const Timer = require('./metrics/Timer'); const BinaryHeap = require('./util/BinaryHeap'); const ExponentiallyDecayingSample = require('./util/ExponentiallyDecayingSample'); const ExponentiallyMovingWeightedAverage = require('./util/ExponentiallyMovingWeightedAverage'); const Stopwatch = require('./util/Stopwatch'); const units = require('./util/units'); const { MetricTypes } = require('./metrics/Metric'); const metricValidators = require('./validators/metricValidators'); /** * The main measured-core module that is referenced when require('measured-core') is used. * @module measured-core */ module.exports = { /** * See {@link Collection} * @type {Collection} */ Collection, /** * See {@link Counter} * @type {Counter} */ Counter, /** * See {@link Gauge} * @type {Gauge} */ Gauge, /** * See {@link SettableGauge} * @type {SettableGauge} */ SettableGauge, /** * See {@link CachedGauge} * @type {CachedGauge} */ CachedGauge, /** * See {@link Histogram} * @type {Histogram} */ Histogram, /** * See {@link Meter} * @type {Meter} */ Meter, /** * See {@link NoOpMeter} * @type {NoOpMeter} */ NoOpMeter, /** * See {@link Timer} * @type {Timer} */ Timer, /** * See {@link BinaryHeap} * @type {BinaryHeap} */ BinaryHeap, /** * See {@link ExponentiallyDecayingSample} * @type {ExponentiallyDecayingSample} */ ExponentiallyDecayingSample, /** * See {@link ExponentiallyMovingWeightedAverage} * @type {ExponentiallyMovingWeightedAverage} */ ExponentiallyMovingWeightedAverage, /** * See {@link Stopwatch} * @type {Stopwatch} */ Stopwatch, /** * See {@link MetricTypes} * @type {MetricTypes} */ MetricTypes, /** * See {@link units} * @type {units} */ units, /** * See {@link units} * @type {units} */ TimeUnits: units, /** * See {@link module:metricValidators} * @type {Object.<string, function>} */ metricValidators, /** * Creates a named collection. See {@link Collection} for more details * * @param name The name for the collection * @return {Collection} */ createCollection: name => { return new Collection(name); } };