UNPKG

veffect

Version:

powerful TypeScript validation library built on the robust foundation of Effect combining exceptional type safety, high performance, and developer experience. Taking inspiration from Effect's functional principles, VEffect delivers a balanced approach tha

137 lines (136 loc) 4.95 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.make = exports.MetricRegistryTypeId = void 0; var _Function = /*#__PURE__*/require("../../Function.js"); var MutableHashMap = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("../../MutableHashMap.js")); var Option = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("../../Option.js")); var metricHook = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./hook.js")); var metricKeyType = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./keyType.js")); var metricPair = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("./pair.js")); function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); } function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; } /** @internal */ const MetricRegistrySymbolKey = "effect/MetricRegistry"; /** @internal */ const MetricRegistryTypeId = exports.MetricRegistryTypeId = /*#__PURE__*/Symbol.for(MetricRegistrySymbolKey); /** @internal */ class MetricRegistryImpl { [MetricRegistryTypeId] = MetricRegistryTypeId; map = MutableHashMap.empty(); snapshot() { const result = []; for (const [key, hook] of this.map) { result.push(metricPair.unsafeMake(key, hook.get())); } return result; } get(key) { const hook = (0, _Function.pipe)(this.map, MutableHashMap.get(key), Option.getOrUndefined); if (hook == null) { if (metricKeyType.isCounterKey(key.keyType)) { return this.getCounter(key); } if (metricKeyType.isGaugeKey(key.keyType)) { return this.getGauge(key); } if (metricKeyType.isFrequencyKey(key.keyType)) { return this.getFrequency(key); } if (metricKeyType.isHistogramKey(key.keyType)) { return this.getHistogram(key); } if (metricKeyType.isSummaryKey(key.keyType)) { return this.getSummary(key); } throw new Error("BUG: MetricRegistry.get - unknown MetricKeyType - please report an issue at https://github.com/Effect-TS/effect/issues"); } else { return hook; } } getCounter(key) { let value = (0, _Function.pipe)(this.map, MutableHashMap.get(key), Option.getOrUndefined); if (value == null) { const counter = metricHook.counter(key); if (!(0, _Function.pipe)(this.map, MutableHashMap.has(key))) { (0, _Function.pipe)(this.map, MutableHashMap.set(key, counter)); } value = counter; } return value; } getFrequency(key) { let value = (0, _Function.pipe)(this.map, MutableHashMap.get(key), Option.getOrUndefined); if (value == null) { const frequency = metricHook.frequency(key); if (!(0, _Function.pipe)(this.map, MutableHashMap.has(key))) { (0, _Function.pipe)(this.map, MutableHashMap.set(key, frequency)); } value = frequency; } return value; } getGauge(key) { let value = (0, _Function.pipe)(this.map, MutableHashMap.get(key), Option.getOrUndefined); if (value == null) { const gauge = metricHook.gauge(key, key.keyType.bigint ? BigInt(0) : 0); if (!(0, _Function.pipe)(this.map, MutableHashMap.has(key))) { (0, _Function.pipe)(this.map, MutableHashMap.set(key, gauge)); } value = gauge; } return value; } getHistogram(key) { let value = (0, _Function.pipe)(this.map, MutableHashMap.get(key), Option.getOrUndefined); if (value == null) { const histogram = metricHook.histogram(key); if (!(0, _Function.pipe)(this.map, MutableHashMap.has(key))) { (0, _Function.pipe)(this.map, MutableHashMap.set(key, histogram)); } value = histogram; } return value; } getSummary(key) { let value = (0, _Function.pipe)(this.map, MutableHashMap.get(key), Option.getOrUndefined); if (value == null) { const summary = metricHook.summary(key); if (!(0, _Function.pipe)(this.map, MutableHashMap.has(key))) { (0, _Function.pipe)(this.map, MutableHashMap.set(key, summary)); } value = summary; } return value; } } /** @internal */ const make = () => { return new MetricRegistryImpl(); }; exports.make = make; //# sourceMappingURL=registry.js.map