@biorate/prometheus 0.17.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md ADDED
@@ -0,0 +1,20 @@
1
+ # Change Log
2
+
3
+ All notable changes to this project will be documented in this file.
4
+ See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
+
6
+ ## [0.17.1](https://github.com/biorate/core/compare/v0.17.0...v0.17.1) (2022-02-04)
7
+
8
+ **Note:** Version bump only for package @biorate/prometheus
9
+
10
+
11
+
12
+
13
+
14
+ # [0.17.0](https://github.com/biorate/core/compare/v0.16.3...v0.17.0) (2022-02-04)
15
+
16
+
17
+ ### Features
18
+
19
+ * **config:** remove constructor logic, add injectable ([69391d9](https://github.com/biorate/core/commit/69391d9aa250dd87b734df6e3d0a6b7937a2e69b))
20
+ * **prometheus:** add prometheus module ([2a46062](https://github.com/biorate/core/commit/2a460629c5c5fea582e78542189fe5d8fafa9d00))
package/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2021-present Leonid Levkin (llevkin)
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,40 @@
1
+ # Prometheus
2
+
3
+ Allows you to create prometheus metrics easily using dependency injection mechanism
4
+
5
+ #### Example:
6
+
7
+ ```ts
8
+ import { counter, Counter } from '@biorate/prometheus';
9
+
10
+ class Test {
11
+ @counter({
12
+ name: 'test_counter',
13
+ help: 'Test counter',
14
+ labelNames: ['label1', 'label2'],
15
+ })
16
+ protected counter: Counter;
17
+
18
+ public metric() {
19
+ this.counter.labels({ label1: 1, label2: 2 }).inc();
20
+ }
21
+ }
22
+
23
+ const test = new Test();
24
+
25
+ test.metric();
26
+ ```
27
+
28
+ ### Learn
29
+
30
+ - Documentation can be found here - [docs](https://biorate.github.io/core/modules/prometheus.html).
31
+
32
+ ### Release History
33
+
34
+ See the [CHANGELOG](https://github.com/biorate/core/blob/master/packages/%40biorate/prometheus/CHANGELOG.md)
35
+
36
+ ### License
37
+
38
+ [MIT](https://github.com/biorate/core/blob/master/packages/%40biorate/prometheus/LICENSE)
39
+
40
+ Copyright (c) 2021-present [Leonid Levkin (llevkin)](mailto:llevkin@yandex.ru)
package/dist/index.js ADDED
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
+ };
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ __exportStar(require("./src"), exports);
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,wCAAsB"}
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
10
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
11
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
12
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
13
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
14
+ };
15
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
17
+ };
18
+ var __metadata = (this && this.__metadata) || function (k, v) {
19
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
20
+ };
21
+ var Prometheus_1;
22
+ Object.defineProperty(exports, "__esModule", { value: true });
23
+ exports.summary = exports.histogram = exports.gauge = exports.counter = exports.Prometheus = void 0;
24
+ const inversion_1 = require("@biorate/inversion");
25
+ const prom_client_1 = require("prom-client");
26
+ __exportStar(require("./interfaces"), exports);
27
+ let Prometheus = Prometheus_1 = class Prometheus {
28
+ static findOrCreate(settings, repository, Class) {
29
+ let metric = repository.get(settings.name);
30
+ if (!metric) {
31
+ metric = new Class(Object.assign(Object.assign({}, settings), { registers: [this.registry] }));
32
+ repository.set(settings.name, metric);
33
+ }
34
+ return (proto, key) => Object.defineProperty(proto, key, {
35
+ get: () => metric,
36
+ configurable: true,
37
+ });
38
+ }
39
+ static counter(settings) {
40
+ return this.findOrCreate(settings, this.counters, prom_client_1.Counter);
41
+ }
42
+ static gauge(settings) {
43
+ return this.findOrCreate(settings, this.gauges, prom_client_1.Gauge);
44
+ }
45
+ static histogram(settings) {
46
+ return this.findOrCreate(settings, this.histograms, prom_client_1.Histogram);
47
+ }
48
+ static summary(settings) {
49
+ return this.findOrCreate(settings, this.summaries, prom_client_1.Summary);
50
+ }
51
+ get registry() {
52
+ return Prometheus_1.registry;
53
+ }
54
+ async initialize() {
55
+ if (this.config.get('prometheus.collectDefaultMetrics', true))
56
+ (0, prom_client_1.collectDefaultMetrics)(Object.assign(Object.assign({}, this.config.get('prometheus.defaultMetrics', {})), { register: this.registry }));
57
+ }
58
+ };
59
+ Prometheus.registry = new prom_client_1.Registry();
60
+ Prometheus.counters = new Map();
61
+ Prometheus.gauges = new Map();
62
+ Prometheus.histograms = new Map();
63
+ Prometheus.summaries = new Map();
64
+ __decorate([
65
+ (0, inversion_1.inject)(inversion_1.Types.Config),
66
+ __metadata("design:type", Object)
67
+ ], Prometheus.prototype, "config", void 0);
68
+ __decorate([
69
+ (0, inversion_1.init)(),
70
+ __metadata("design:type", Function),
71
+ __metadata("design:paramtypes", []),
72
+ __metadata("design:returntype", Promise)
73
+ ], Prometheus.prototype, "initialize", null);
74
+ Prometheus = Prometheus_1 = __decorate([
75
+ (0, inversion_1.injectable)()
76
+ ], Prometheus);
77
+ exports.Prometheus = Prometheus;
78
+ exports.counter = Prometheus.counter.bind(Prometheus);
79
+ exports.gauge = Prometheus.gauge.bind(Prometheus);
80
+ exports.histogram = Prometheus.histogram.bind(Prometheus);
81
+ exports.summary = Prometheus.summary.bind(Prometheus);
82
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAAqE;AAGrE,6CAYqB;AAErB,+CAA6B;AAG7B,IAAa,UAAU,kBAAvB,MAAa,UAAU;IAWX,MAAM,CAAC,YAAY,CAC3B,QAA8B,EAC9B,UAA0B,EAC1B,KAA4B;QAE5B,IAAI,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,GAAG,IAAI,KAAK,iCAAM,QAAQ,KAAE,SAAS,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAG,CAAC;YAChE,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;SACvC;QACD,OAAO,CAAC,KAAU,EAAE,GAAW,EAAE,EAAE,CACjC,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE;YAChC,GAAG,EAAE,GAAG,EAAE,CAAC,MAAM;YACjB,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;IACP,CAAC;IAyBM,MAAM,CAAC,OAAO,CAAC,QAAsC;QAC1D,OAAO,IAAI,CAAC,YAAY,CACtB,QAAQ,EACR,IAAI,CAAC,QAAQ,EACb,qBAAO,CACR,CAAC;IACJ,CAAC;IAyBM,MAAM,CAAC,KAAK,CAAC,QAAoC;QACtD,OAAO,IAAI,CAAC,YAAY,CACtB,QAAQ,EACR,IAAI,CAAC,MAAM,EACX,mBAAK,CACN,CAAC;IACJ,CAAC;IAyBM,MAAM,CAAC,SAAS,CAAC,QAAwC;QAC9D,OAAO,IAAI,CAAC,YAAY,CACtB,QAAQ,EACR,IAAI,CAAC,UAAU,EACf,uBAAS,CACV,CAAC;IACJ,CAAC;IAyBM,MAAM,CAAC,OAAO,CAAC,QAAsC;QAC1D,OAAO,IAAI,CAAC,YAAY,CACtB,QAAQ,EACR,IAAI,CAAC,SAAS,EACd,qBAAO,CACR,CAAC;IACJ,CAAC;IAKD,IAAW,QAAQ;QACjB,OAAO,YAAU,CAAC,QAAQ,CAAC;IAC7B,CAAC;IAEiB,KAAK,CAAC,UAAU;QAChC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAU,kCAAkC,EAAE,IAAI,CAAC;YACpE,IAAA,mCAAqB,kCAChB,IAAI,CAAC,MAAM,CAAC,GAAG,CAChB,2BAA2B,EAC3B,EAAE,CACH,KACD,QAAQ,EAAE,IAAI,CAAC,QAAQ,IACvB,CAAC;IACP,CAAC;CACF,CAAA;AAxKwB,mBAAQ,GAAG,IAAI,sBAAQ,EAAG,CAAA;AACvB,mBAAQ,GAAG,IAAI,GAAG,EAA4B,CAAA;AAC9C,iBAAM,GAAG,IAAI,GAAG,EAA0B,CAAA;AAC1C,qBAAU,GAAG,IAAI,GAAG,EAA8B,CAAA;AAClD,oBAAS,GAAG,IAAI,GAAG,EAA4B,CAAA;AACnD;IAArB,IAAA,kBAAM,EAAC,iBAAK,CAAC,MAAM,CAAC;;0CAAoC;AAyJjD;IAAP,IAAA,gBAAI,GAAE;;;;4CASN;AAxKU,UAAU;IADtB,IAAA,sBAAU,GAAE;GACA,UAAU,CAyKtB;AAzKY,gCAAU;AA2KV,QAAA,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC9C,QAAA,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC1C,QAAA,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAClD,QAAA,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":""}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.Root = void 0;
13
+ const chai_1 = require("chai");
14
+ const mocha_chai_jest_snapshot_1 = require("mocha-chai-jest-snapshot");
15
+ const inversion_1 = require("@biorate/inversion");
16
+ const config_1 = require("@biorate/config");
17
+ const src_1 = require("../../src");
18
+ (0, chai_1.use)((0, mocha_chai_jest_snapshot_1.jestSnapshotPlugin)());
19
+ inversion_1.Core.log = null;
20
+ class Root extends (0, inversion_1.Core)() {
21
+ }
22
+ __decorate([
23
+ (0, inversion_1.inject)(inversion_1.Types.Config),
24
+ __metadata("design:type", Object)
25
+ ], Root.prototype, "config", void 0);
26
+ __decorate([
27
+ (0, inversion_1.inject)(inversion_1.Types.Prometheus),
28
+ __metadata("design:type", Object)
29
+ ], Root.prototype, "prometheus", void 0);
30
+ __decorate([
31
+ (0, src_1.counter)({ name: 'counter', help: 'counter' }),
32
+ __metadata("design:type", Object)
33
+ ], Root.prototype, "counter", void 0);
34
+ __decorate([
35
+ (0, src_1.gauge)({ name: 'gauge', help: 'gauge' }),
36
+ __metadata("design:type", Object)
37
+ ], Root.prototype, "gauge", void 0);
38
+ __decorate([
39
+ (0, src_1.summary)({ name: 'summary', help: 'summary' }),
40
+ __metadata("design:type", Object)
41
+ ], Root.prototype, "summary", void 0);
42
+ __decorate([
43
+ (0, src_1.histogram)({ name: 'histogram', help: 'histogram' }),
44
+ __metadata("design:type", Object)
45
+ ], Root.prototype, "histogram", void 0);
46
+ exports.Root = Root;
47
+ inversion_1.container.bind(inversion_1.Types.Config).to(config_1.Config).inSingletonScope();
48
+ inversion_1.container.bind(inversion_1.Types.Prometheus).to(src_1.Prometheus).inSingletonScope();
49
+ inversion_1.container.bind(Root).toSelf().inSingletonScope();
50
+ inversion_1.container.get(inversion_1.Types.Config).merge({
51
+ prometheus: {
52
+ collectDefaultMetrics: false,
53
+ },
54
+ });
55
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../tests/__mocks__/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+BAA2B;AAC3B,uEAA8D;AAC9D,kDAAoE;AACpE,4CAAkD;AAClD,mCAWmB;AAEnB,IAAA,UAAG,EAAC,IAAA,6CAAkB,GAAE,CAAC,CAAC;AAE1B,gBAAI,CAAC,GAAG,GAAG,IAAI,CAAC;AAEhB,MAAa,IAAK,SAAQ,IAAA,gBAAI,GAAE;CAS/B;AARuB;IAArB,IAAA,kBAAM,EAAC,iBAAK,CAAC,MAAM,CAAC;;oCAAwB;AACnB;IAAzB,IAAA,kBAAM,EAAC,iBAAK,CAAC,UAAU,CAAC;;wCAAgC;AAEV;IAA9C,IAAA,aAAO,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;qCAAyB;AAC9B;IAAxC,IAAA,WAAK,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;;mCAAqB;AACd;IAA9C,IAAA,aAAO,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;;qCAAyB;AAEvE;IADC,IAAA,eAAS,EAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;;uCACxB;AAR9B,oBASC;AACD,qBAAS,CAAC,IAAI,CAAC,iBAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,eAAM,CAAC,CAAC,gBAAgB,EAAE,CAAC;AAC3D,qBAAS,CAAC,IAAI,CAAC,iBAAK,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,gBAAU,CAAC,CAAC,gBAAgB,EAAE,CAAC;AACnE,qBAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;AAEhD,qBAAS,CAAC,GAAG,CAAC,iBAAK,CAAC,MAAM,CAAa,CAAC,KAAK,CAAC;IAC7C,UAAU,EAAE;QACV,qBAAqB,EAAE,KAAK;KAC7B;CACF,CAAC,CAAC"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const chai_1 = require("chai");
4
+ const inversion_1 = require("@biorate/inversion");
5
+ const __mocks__1 = require("./__mocks__");
6
+ describe('Prometheus', function () {
7
+ let root;
8
+ this.timeout(3e4);
9
+ before(async () => {
10
+ root = inversion_1.container.get(__mocks__1.Root);
11
+ await root.$run();
12
+ });
13
+ it('counter', async () => {
14
+ root.counter.inc();
15
+ (0, chai_1.expect)(await root.prometheus.registry.metrics()).toMatchSnapshot();
16
+ });
17
+ it('gauge', async () => {
18
+ root.gauge.inc();
19
+ (0, chai_1.expect)(await root.prometheus.registry.metrics()).toMatchSnapshot();
20
+ });
21
+ it('summary', async () => {
22
+ root.summary.observe(1);
23
+ (0, chai_1.expect)(await root.prometheus.registry.metrics()).toMatchSnapshot();
24
+ });
25
+ it('histogram', async () => {
26
+ root.histogram.observe(1);
27
+ (0, chai_1.expect)(await root.prometheus.registry.metrics()).toMatchSnapshot();
28
+ });
29
+ });
30
+ //# sourceMappingURL=prometheus.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prometheus.spec.js","sourceRoot":"","sources":["../../tests/prometheus.spec.ts"],"names":[],"mappings":";;AAAA,+BAA8B;AAC9B,kDAA+C;AAC/C,0CAAmC;AAEnC,QAAQ,CAAC,YAAY,EAAE;IACrB,IAAI,IAAU,CAAC;IACf,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAElB,MAAM,CAAC,KAAK,IAAI,EAAE;QAChB,IAAI,GAAG,qBAAS,CAAC,GAAG,CAAO,eAAI,CAAC,CAAC;QACjC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;QACvB,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QACnB,IAAA,aAAM,EAAC,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;QACrB,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QACjB,IAAA,aAAM,EAAC,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;QACvB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACxB,IAAA,aAAM,EAAC,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE;QACzB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAA,aAAM,EAAC,MAAM,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC;IACrE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ {"program":{"fileNames":["../../../../node_modules/typescript/lib/lib.es5.d.ts","../../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../../node_modules/typescript/lib/lib.dom.d.ts","../../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../../../node_modules/typescript/lib/lib.scripthost.d.ts","../../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2017.full.d.ts","../../inversion/node_modules/reflect-metadata/index.d.ts","../../inversion/node_modules/inversify/lib/constants/metadata_keys.d.ts","../../inversion/node_modules/inversify/lib/interfaces/interfaces.d.ts","../../inversion/node_modules/inversify/lib/container/container.d.ts","../../inversion/node_modules/inversify/lib/constants/literal_types.d.ts","../../inversion/node_modules/inversify/lib/container/container_module.d.ts","../../inversion/node_modules/inversify/lib/annotation/injectable.d.ts","../../inversion/node_modules/inversify/lib/annotation/tagged.d.ts","../../inversion/node_modules/inversify/lib/annotation/named.d.ts","../../inversion/node_modules/inversify/lib/annotation/inject.d.ts","../../inversion/node_modules/inversify/lib/annotation/optional.d.ts","../../inversion/node_modules/inversify/lib/annotation/unmanaged.d.ts","../../inversion/node_modules/inversify/lib/annotation/multi_inject.d.ts","../../inversion/node_modules/inversify/lib/annotation/target_name.d.ts","../../inversion/node_modules/inversify/lib/annotation/post_construct.d.ts","../../inversion/node_modules/inversify/lib/planning/metadata_reader.d.ts","../../inversion/node_modules/inversify/lib/utils/id.d.ts","../../inversion/node_modules/inversify/lib/annotation/decorator_utils.d.ts","../../inversion/node_modules/inversify/lib/syntax/constraint_helpers.d.ts","../../inversion/node_modules/inversify/lib/utils/serialization.d.ts","../../inversion/node_modules/inversify/lib/utils/binding_utils.d.ts","../../inversion/node_modules/inversify/lib/inversify.d.ts","../../inversion/node_modules/inversify-inject-decorators/dts/index.d.ts","../../inversion/interfaces.ts","../../symbolic/src/index.ts","../../symbolic/index.ts","../../inversion/src/labels.ts","../../inversion/src/inversify.ts","../../../../node_modules/reflect-metadata/index.d.ts","../../../../node_modules/@types/lodash/common/common.d.ts","../../../../node_modules/@types/lodash/common/array.d.ts","../../../../node_modules/@types/lodash/common/collection.d.ts","../../../../node_modules/@types/lodash/common/date.d.ts","../../../../node_modules/@types/lodash/common/function.d.ts","../../../../node_modules/@types/lodash/common/lang.d.ts","../../../../node_modules/@types/lodash/common/math.d.ts","../../../../node_modules/@types/lodash/common/number.d.ts","../../../../node_modules/@types/lodash/common/object.d.ts","../../../../node_modules/@types/lodash/common/seq.d.ts","../../../../node_modules/@types/lodash/common/string.d.ts","../../../../node_modules/@types/lodash/common/util.d.ts","../../../../node_modules/@types/lodash/index.d.ts","../../tools/src/env.ts","../../tools/src/path.ts","../../tools/src/object.ts","../../tools/interfaces.ts","../../tools/src/define.ts","../../tools/src/timer.ts","../../tools/src/events.ts","../../tools/src/index.ts","../../tools/index.ts","../../lifecycled/src/index.ts","../../lifecycled/index.ts","../../inversion/src/index.ts","../../inversion/index.ts","../../errors/index.ts","../../config/src/errors.ts","../../config/src/interfaces.ts","../../config/src/index.ts","../../config/index.ts","../node_modules/prom-client/index.d.ts","../src/interfaces.ts","../src/index.ts","../index.ts","../../../../node_modules/@types/chai/index.d.ts","../../../../node_modules/@types/node/assert.d.ts","../../../../node_modules/@types/node/assert/strict.d.ts","../../../../node_modules/@types/node/globals.d.ts","../../../../node_modules/@types/node/async_hooks.d.ts","../../../../node_modules/@types/node/buffer.d.ts","../../../../node_modules/@types/node/child_process.d.ts","../../../../node_modules/@types/node/cluster.d.ts","../../../../node_modules/@types/node/console.d.ts","../../../../node_modules/@types/node/constants.d.ts","../../../../node_modules/@types/node/crypto.d.ts","../../../../node_modules/@types/node/dgram.d.ts","../../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../../node_modules/@types/node/dns.d.ts","../../../../node_modules/@types/node/dns/promises.d.ts","../../../../node_modules/@types/node/domain.d.ts","../../../../node_modules/@types/node/events.d.ts","../../../../node_modules/@types/node/fs.d.ts","../../../../node_modules/@types/node/fs/promises.d.ts","../../../../node_modules/@types/node/http.d.ts","../../../../node_modules/@types/node/http2.d.ts","../../../../node_modules/@types/node/https.d.ts","../../../../node_modules/@types/node/inspector.d.ts","../../../../node_modules/@types/node/module.d.ts","../../../../node_modules/@types/node/net.d.ts","../../../../node_modules/@types/node/os.d.ts","../../../../node_modules/@types/node/path.d.ts","../../../../node_modules/@types/node/perf_hooks.d.ts","../../../../node_modules/@types/node/process.d.ts","../../../../node_modules/@types/node/punycode.d.ts","../../../../node_modules/@types/node/querystring.d.ts","../../../../node_modules/@types/node/readline.d.ts","../../../../node_modules/@types/node/repl.d.ts","../../../../node_modules/@types/node/stream.d.ts","../../../../node_modules/@types/node/stream/promises.d.ts","../../../../node_modules/@types/node/stream/consumers.d.ts","../../../../node_modules/@types/node/stream/web.d.ts","../../../../node_modules/@types/node/string_decoder.d.ts","../../../../node_modules/@types/node/timers.d.ts","../../../../node_modules/@types/node/timers/promises.d.ts","../../../../node_modules/@types/node/tls.d.ts","../../../../node_modules/@types/node/trace_events.d.ts","../../../../node_modules/@types/node/tty.d.ts","../../../../node_modules/@types/node/url.d.ts","../../../../node_modules/@types/node/util.d.ts","../../../../node_modules/@types/node/v8.d.ts","../../../../node_modules/@types/node/vm.d.ts","../../../../node_modules/@types/node/wasi.d.ts","../../../../node_modules/@types/node/worker_threads.d.ts","../../../../node_modules/@types/node/zlib.d.ts","../../../../node_modules/@types/node/globals.global.d.ts","../../../../node_modules/@types/node/index.d.ts","../../../../node_modules/@types/istanbul-lib-coverage/index.d.ts","../../../../node_modules/@jest/types/build/Global.d.ts","../../../../node_modules/@jest/types/build/Circus.d.ts","../../../../node_modules/chalk/index.d.ts","../../../../node_modules/@types/istanbul-lib-report/index.d.ts","../../../../node_modules/@types/istanbul-reports/index.d.ts","../../../../node_modules/@types/yargs-parser/index.d.ts","../../../../node_modules/@types/yargs/index.d.ts","../../../../node_modules/@jest/types/build/Config.d.ts","../../../../node_modules/@jest/types/build/TestResult.d.ts","../../../../node_modules/@jest/types/build/Transform.d.ts","../../../../node_modules/@jest/types/build/index.d.ts","../../../../node_modules/@types/graceful-fs/index.d.ts","../../../../node_modules/jest-haste-map/build/HasteFS.d.ts","../../../../node_modules/jest-haste-map/build/types.d.ts","../../../../node_modules/jest-haste-map/build/ModuleMap.d.ts","../../../../node_modules/jest-haste-map/build/index.d.ts","../../../../node_modules/jest-snapshot/build/SnapshotResolver.d.ts","../../../../node_modules/pretty-format/build/types.d.ts","../../../../node_modules/pretty-format/build/index.d.ts","../../../../node_modules/jest-snapshot/build/State.d.ts","../../../../node_modules/jest-diff/build/cleanupSemantic.d.ts","../../../../node_modules/jest-diff/build/types.d.ts","../../../../node_modules/jest-diff/build/diffLines.d.ts","../../../../node_modules/jest-diff/build/printDiffs.d.ts","../../../../node_modules/jest-diff/build/index.d.ts","../../../../node_modules/jest-matcher-utils/build/index.d.ts","../../../../node_modules/expect/build/jestMatchersObject.d.ts","../../../../node_modules/expect/build/types.d.ts","../../../../node_modules/expect/build/index.d.ts","../../../../node_modules/jest-snapshot/build/types.d.ts","../../../../node_modules/jest-snapshot/build/utils.d.ts","../../../../node_modules/jest-snapshot/build/index.d.ts","../../../../node_modules/@types/mocha/index.d.ts","../../../../node_modules/collect-v8-coverage/index.d.ts","../../../../node_modules/@jest/console/build/types.d.ts","../../../../node_modules/@jest/console/build/BufferedConsole.d.ts","../../../../node_modules/@jest/console/build/CustomConsole.d.ts","../../../../node_modules/@jest/console/build/NullConsole.d.ts","../../../../node_modules/@types/stack-utils/index.d.ts","../../../../node_modules/jest-message-util/build/types.d.ts","../../../../node_modules/jest-message-util/build/index.d.ts","../../../../node_modules/@jest/console/build/getConsoleOutput.d.ts","../../../../node_modules/@jest/console/build/index.d.ts","../../../../node_modules/jest-resolve/build/ModuleNotFoundError.d.ts","../../../../node_modules/jest-resolve/build/shouldLoadAsEsm.d.ts","../../../../node_modules/jest-resolve/build/types.d.ts","../../../../node_modules/jest-resolve/build/resolver.d.ts","../../../../node_modules/jest-resolve/build/utils.d.ts","../../../../node_modules/jest-resolve/build/index.d.ts","../../../../node_modules/@jest/test-result/build/types.d.ts","../../../../node_modules/@jest/test-result/build/formatTestResults.d.ts","../../../../node_modules/@jest/test-result/build/helpers.d.ts","../../../../node_modules/@jest/test-result/build/index.d.ts","../../../../node_modules/mocha-chai-jest-snapshot/dist/utils/jest-test-result-helper.d.ts","../../../../node_modules/mocha-chai-jest-snapshot/dist/manager.d.ts","../../../../node_modules/mocha-chai-jest-snapshot/dist/index.d.ts","../tests/__mocks__/index.ts","../tests/prometheus.spec.ts","../../../../node_modules/@types/babel-types/index.d.ts","../../../../node_modules/@babel/types/lib/index.d.ts","../../../../node_modules/@types/babel__traverse/index.d.ts","../../../../node_modules/@types/babylon/index.d.ts","../../../../node_modules/@types/eslint/helpers.d.ts","../../../../node_modules/@types/json-schema/index.d.ts","../../../../node_modules/@types/estree/index.d.ts","../../../../node_modules/@types/eslint/index.d.ts","../../../../node_modules/@types/eslint-scope/index.d.ts","../../../../node_modules/@types/minimatch/index.d.ts","../../../../node_modules/@types/glob/index.d.ts","../../../../node_modules/@types/minimist/index.d.ts","../../../../node_modules/@types/normalize-package-data/index.d.ts","../../../../node_modules/@types/parse-json/index.d.ts","../../../../node_modules/@types/prettier/index.d.ts"],"fileInfos":[{"version":"89f78430e422a0f06d13019d60d5a45b37ec2d28e67eb647f73b1b0d19a46b72","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","e21c071ca3e1b4a815d5f04a7475adcaeea5d64367e840dd0154096d705c3940",{"version":"abba1071bfd89e55e88a054b0c851ea3e8a494c340d0f3fab19eb18f6afb0c9e","affectsGlobalScope":true},{"version":"927cb2b60048e1395b183bf74b2b80a75bdb1dbe384e1d9fac654313ea2fb136","affectsGlobalScope":true},{"version":"7fac8cb5fc820bc2a59ae11ef1c5b38d3832c6d0dfaec5acdb5569137d09a481","affectsGlobalScope":true},{"version":"097a57355ded99c68e6df1b738990448e0bf170e606707df5a7c0481ff2427cd","affectsGlobalScope":true},{"version":"d8996609230d17e90484a2dd58f22668f9a05a3bfe00bfb1d6271171e54a31fb","affectsGlobalScope":true},{"version":"43fb1d932e4966a39a41b464a12a81899d9ae5f2c829063f5571b6b87e6d2f9c","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"4378fc8122ec9d1a685b01eb66c46f62aba6b239ca7228bb6483bcf8259ee493","affectsGlobalScope":true},{"version":"0d5f52b3174bee6edb81260ebcd792692c32c81fd55499d69531496f3f2b25e7","affectsGlobalScope":true},{"version":"810627a82ac06fb5166da5ada4159c4ec11978dfbb0805fe804c86406dab8357","affectsGlobalScope":true},{"version":"62d80405c46c3f4c527ee657ae9d43fda65a0bf582292429aea1e69144a522a6","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"12a310447c5d23c7d0d5ca2af606e3bd08afda69100166730ab92c62999ebb9d","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"1b3fe904465430e030c93239a348f05e1be80640d91f2f004c3512c2c2c89f34","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"d071129cba6a5f2700be09c86c07ad2791ab67d4e5ed1eb301d6746c62745ea4","affectsGlobalScope":true},{"version":"10bbdc1981b8d9310ee75bfac28ee0477bb2353e8529da8cff7cb26c409cb5e8","affectsGlobalScope":true},"d2f31f19e1ba6ed59be9259d660a239d9a3fcbbc8e038c6b2009bde34b175fed",{"version":"8d6d51a5118d000ed3bfe6e1dd1335bebfff3fef23cd2af2f84a24d30f90cc90","affectsGlobalScope":true},"e72fe8c20f176ecfbb89b47e0956ad5af5c79d00a813db6adf32d7a323827bde","234ded1b44862f6c114c060f11e4cfd2fbace2a0988b886c4d2273da64721ca3","15c78ee71828fbcff296ef228440f459fefa3d7afaa4ed5dcf473ef67729ce28","223c30250c2d0774405136fe412f0c654acbd1f5ebc80d711d0a4413ced11520","d21addb8e9f07e85fe34b65dd38d156b2d29491585eb3a2d3754c85ff024dc78","45f14437278936644e7aa944a9d7b3213cc74173a9d0a6e78994de43caccb6d7","43769897ae7ca754acaffec5dfb909d10510fb2be0d0afa5cb4eec91b4c9805a","188fd1724740c445a782b9e953879097edef90434ff76fdc420acfbd58b1bcf6","3bdef47778e6ef0896e60bc227562685efedb3aee3fb132b5a968e892b0bff0b","f81c99df7c78e3ad3b6eacbaa5d5a2d36bcab1ea029b1998ede9151861502a9d","9fd895b4e65cc84529969de404b2221a95a955a57544febdc76189689696b040","c656a8d0be8f60c6818d5c60ec56fbe61de252cffb98b760dc0ba5518e85b86a","1f0a68bc4e44a72d2e3ce81967f6001df5d29428549b310054df0fa1bf588203","d9df733eeb4fc5ca64d6dfcaa3efc429a9fa7d183ce796df0e5049c1acd1eaa7","617d9598bd1dbc6b4e19ebabc5564b3fb9a95589f52eefb4c04396f292f7d1ef","c624c0d0d777a670e2b2d8003ec91519e93048963a3236aeab1ec55a8529c382","5436e41fb86218a81a15f6517dc47736924b4a31d1b04a2ca4405556a7bdd303","388e00b3c8426cf875a3b764a1d2f4d1669f05e587ad511fb7d61684e3fc5352","21a9fdf5ec213b187243a4fee33cce7055a0e25dd2ab6fd5eb53d9063bda1297","8ea54168630a0cbd9127985d4190ad962ad55123d78e855d7e505a7bf042bc2d","f15dd6db666e773db7ae7eba550607eeede04d16819dc7a5abf546f15a4b989a","961700b34af98c4b8049a6a8580195d3c5d07b7d82d3944587b8cabc70a00129","ae11ffbbb53d65a0b217333581526d5d280398df5c212d511f22ab2f5c6991f1","92e9e32485f6fea2ca0e00d30d7f66ce47402bfe0c6db4273e380daf6c0e63c8","80a3bbe0e4fdfaac2c0a8b92a3ed66d3ded5e8f454c5790c8d593872fc1197f1","665e3f8e4b15f4fa90b182edd6de96ce49676325024b12b29950bbc91827063b","4ed8ccafa3a843a420555d0a7d94751b235854f63cd0eb20b8b4f235bffa26e9",{"version":"8d6d51a5118d000ed3bfe6e1dd1335bebfff3fef23cd2af2f84a24d30f90cc90","affectsGlobalScope":true},"675e702f2032766a91eeadee64f51014c64688525da99dccd8178f0c599f13a8","fe4a2042d087990ebfc7dc0142d5aaf5a152e4baea86b45f283f103ec1e871ea","d88a479cccf787b4aa82362150fbeba5211a32dbfafa7b92ba6995ecaf9a1a89","187119ff4f9553676a884e296089e131e8cc01691c546273b1d0089c3533ce42","c24ad9be9adf28f0927e3d9d9e9cec1c677022356f241ccbbfb97bfe8fb3d1a1","0ec0998e2d085e8ea54266f547976ae152c9dd6cdb9ac4d8a520a230f5ebae84","9364c7566b0be2f7b70ff5285eb34686f83ccb01bda529b82d23b2a844653bfb","00baffbe8a2f2e4875367479489b5d43b5fc1429ecb4a4cc98cfc3009095f52a","ae9930989ed57478eb03b9b80ad3efa7a3eacdfeff0f78ecf7894c4963a64f93","3c92b6dfd43cc1c2485d9eba5ff0b74a19bb8725b692773ef1d66dac48cda4bd","3e59f00ab03c33717b3130066d4debb272da90eeded4935ff0604c2bc25a5cae","6ac6f24aff52e62c3950461aa17eab26e3a156927858e6b654baef0058b4cd1e",{"version":"0714e2046df66c0e93c3330d30dbc0565b3e8cd3ee302cf99e4ede6220e5fec8","affectsGlobalScope":true},"4eb9bbb381dd5cfbd9f21408444c38ad579cba4de3e1c857019091dbf7c9a031","e76aaff856531ff082869f9a820bb1a0b2d0713365396b3997c5fe9b457bb73c","bd642322f25c6eaccb1049adda0086b486da4084a3c112fa9499c66fc2873d3f","8498554c116ec8289c7fe33ed67e36ba801a7e8acdd04ce32c9e864448738bc0","135facafb712b318733713fafdb7e2768e459f96e4971908c75d52956ac645c4","dfd544a9e06dbdb0c7c0a52d5ae5f7ca980fe04c65cd0ee9de4860ac2d38374b","da53b3f81accffc2e119cf2b1e4a5da3bad86042fe9ce4169166750644de5c0c","629af5011267bde14d12c53db982af7392ae37957398227d64ec7281cfa032fa","e0538e0a052324c35c22e22f61f1fe733eed97e68cb6e00aeac901f5e6e4e95c","54c2d7502e8ca2cf2b568e395874d810a76c649ffa9e1939e85fb5b775e89404","80a3bbe0e4fdfaac2c0a8b92a3ed66d3ded5e8f454c5790c8d593872fc1197f1","c4b26d58e06671d2c62928ee929e0f862bd6b4404199bd3a1fd87cea6cf8f3b5","80a3bbe0e4fdfaac2c0a8b92a3ed66d3ded5e8f454c5790c8d593872fc1197f1","d47a7e17d32b099d75e6288b67324de01a0587e5b8f2ed5c6289a8a7567e1be0","0e2becb7a24e44ae138fe34d93c7a6583d738cd3347720b725e986e9c59a6d19","bdfe71979c31b7fd6391fe3882cab028d3ee39fe751218580af0e056fb6734aa","59cbe8a6f12f3526c804d9560d40e3d089bb7ad021ae950a480c357c1f79cab7","80a3bbe0e4fdfaac2c0a8b92a3ed66d3ded5e8f454c5790c8d593872fc1197f1","e433367226f3ecdef6a0a237042f84ba5a357d033173c5cae2b588b6e7cd284a","de87424bd3b4cd764fd3a72c836cf86e570afac1f5759c70fc3062a71bf96f02","7ae8dcbf6b1df08a19859c08ab8c1a6267237fca12393a886ea710522008a39f","80a3bbe0e4fdfaac2c0a8b92a3ed66d3ded5e8f454c5790c8d593872fc1197f1",{"version":"c8747693e5872ad5ef3aa016731a06915e1c34dae987829d9aa5bd40c7a2c54b","affectsGlobalScope":true},"0d5a2ee1fdfa82740e0103389b9efd6bfe145a20018a2da3c02b89666181f4d9","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"92d63add669d18ebc349efbacd88966d6f2ccdddfb1b880b2db98ae3aa7bf7c4","affectsGlobalScope":true},"ccc94049a9841fe47abe5baef6be9a38fc6228807974ae675fb15dc22531b4be",{"version":"9acfe4d1ff027015151ce81d60797b04b52bffe97ad8310bb0ec2e8fd61e1303","affectsGlobalScope":true},"95843d5cfafced8f3f8a5ce57d2335f0bcd361b9483587d12a25e4bd403b8216","afc6e96061af46bcff47246158caee7e056f5288783f2d83d6858cd25be1c565",{"version":"34f5bcac12b36d70304b73de5f5aab3bb91bd9919f984be80579ebcad03a624e","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","2f520601649a893e6a49a8851ebfcf4be8ce090dc1281c2a08a871cb04e8251f","f50c975ab7b50e25a69e3d8a3773894125b44e9698924105f23b812bf7488baf","2b8c764f856a1dd0a9a2bf23e5efddbff157de8138b0754010be561ae5fcaa90","76650408392bf49a8fbf3e2b6b302712a92d76af77b06e2da1cc8077359c4409","0af3121e68297b2247dd331c0d24dba599e50736a7517a5622d5591aae4a3122","6972fca26f6e9bd56197568d4379f99071a90766e06b4fcb5920a0130a9202be",{"version":"4a2628e95962c8ab756121faa3ac2ed348112ff7a87b5c286dd2cc3326546b4c","affectsGlobalScope":true},"80793b2277f31baa199234daed806fff0fb11491d1ebd3357e520c3558063f00","a049a59a02009fc023684fcfaf0ac526fe36c35dcc5d2b7d620c1750ba11b083","196fee5541bfd59699dab615fee2ae7a6f5fe0a6337bcbbfd656ebf1ae329a63","160cc6e3d06938535bc887754afe5798c22d81ce83a9792ebfe2371a70f2ffc2","4b9a003b5c556c96784132945bb41c655ea11273b1917f5c8d0c154dd5fd20dd","a458dc78104cc80048ac24fdc02fe6dce254838094c2f25641b3f954d9721241",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"eecd493fc62c4dba3d988e2d7dff63299bf12ab49f5c9021dfef8dcc1ff2089e","abc1c425b2ad6720433f40f1877abfa4223f0f3dd486c9c28c492179ca183cb6","945a841f9a591197154c85386bc5a1467d42d325104bb36db51bc566bbb240be","10c39ce1df102994b47d4bc0c71aa9a6aea76f4651a5ec51914431f50bc883a1",{"version":"8207e7e6db9aa5fc7e61c8f17ba74cf9c115d26f51f91ee93f790815a7ea9dfb","affectsGlobalScope":true},"9f1069b9e2c051737b1f9b4f1baf50e4a63385a6a89c32235549ae87fc3d5492","ee18f2da7a037c6ceeb112a084e485aead9ea166980bf433474559eac1b46553","29c2706fa0cc49a2bd90c83234da33d08bb9554ecec675e91c1f85087f5a5324","0acbf26bf958f9e80c1ffa587b74749d2697b75b484062d36e103c137c562bc3","d7838022c7dab596357a9604b9c6adffe37dc34085ce0779c958ce9545bd7139","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff",{"version":"806ef4cac3b3d9fa4a48d849c8e084d7c72fcd7b16d76e06049a9ed742ff79c0","affectsGlobalScope":true},"a7971f9fb2a32ec7788ec6cda9d7a33c02023dfe9a62db2030ad1359649d8050","c33a6ea7147af60d8e98f1ac127047f4b0d4e2ce28b8f08ff3de07ca7cc00637",{"version":"b42b47e17b8ece2424ae8039feb944c2e3ba4b262986aebd582e51efbdca93dc","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","2408611d9b4146e35d1dbd1f443ccd8e187c74614a54b80300728277529dbf11","998a3de5237518c0b3ac00a11b3b4417affb008aa20aedee52f3fdae3cb86151","ad41008ffe077206e1811fc873f4d9005b5fd7f6ab52bb6118fef600815a5cb4","d88ecca73348e7c337541c4b8b60a50aca5e87384f6b8a422fc6603c637e4c21","badae0df9a8016ac36994b0a0e7b82ba6aaa3528e175a8c3cb161e4683eec03e","c3db860bcaaaeb3bbc23f353bbda1f8ab82756c8d5e973bebb3953cb09ea68f2","235a53595bd20b0b0eeb1a29cb2887c67c48375e92f03749b2488fbd46d0b1a0","bc09393cd4cd13f69cf1366d4236fbae5359bb550f0de4e15767e9a91d63dfb1","9c266243b01545e11d2733a55ad02b4c00ecdbda99c561cd1674f96e89cdc958","c71155c05fc76ff948a4759abc1cb9feec036509f500174bc18dad4c7827a60c",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"1503a452a67127e5c2da794d1c7c44344d5038373aae16c9b03ac964db159edd","8b06ac3faeacb8484d84ddb44571d8f410697f98d7bfa86c0fda60373a9f5215","b35c484129671a62dbffdd0716d787923ef43f2f93b7e55528f94cef7e131d74","95b6c669e7ed7c5358c03f8aa24986640f6125ee81bb99e70e9155974f7fd253","0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee","f5638f7c2f12a9a1a57b5c41b3c1ea7db3876c003bab68e6a57afd6bcc169af0","f7e133b20ee2669b6c0e5d7f0cd510868c57cd64b283e68c7f598e30ce9d76d2","6ba73232c9d3267ca36ddb83e335d474d2c0e167481e3dec416c782894e11438","f7dd7280ee4f0420865e6423fe199aeac63d1d66203a8b631077cdc15501ef1f","ef62b4aa372f77458d84c26614b44129f929e263c81b5cd1034f5828a5530412","8610558ae88a43ad794c4ab1da4f0e8e174e0357c88f6cbb21f523e67414e9a9","0b0feb9837c561c0a67b61024328045bb16bac6e4b10f7b0b217d3b8b43b0b12","3ebae8c00411116a66fca65b08228ea0cf0b72724701f9b854442100aab55aba","e641fd321ca5fe17b532bd3b5a6e85a8741bbde7a9d7110d8ed272605c1c4a25","9d63720cd09e8b0ae76e0ade1993b7ec600e6729e453f459d4039d6914914c1a","8b324c8813c2bee210a7a79eede7abc4b5c60132fd497e140ce312a856af22a4","ff2d2f19561cd3a594d7cfeeb29797e62c8d9ef62df65916e6be9bdcfbaf8f7d","ceff4f4f4fec374abaad286b33f38a842cbb2ac3cbe3e3b4ce788d0b45c67ab9","462bccdf75fcafc1ae8c30400c9425e1a4681db5d605d1a0edb4f990a54d8094","5923d8facbac6ecf7c84739a5c701a57af94a6f6648d6229a6c768cf28f0f8cb","9823e1aa0ee156c1d73e700a258bb4964c68b9aaa071c25c2132465c911a1a4a","d8aab31ba8e618cc3eea10b0945de81cb93b7e8150a013a482332263b9305322","7adecb2c3238794c378d336a8182d4c3dd2c4fa6fa1785e2797a3db550edea62","dc12dc0e5aa06f4e1a7692149b78f89116af823b9e1f1e4eae140cd3e0e674e6","1bfc6565b90c8771615cd8cfcf9b36efc0275e5e83ac7d9181307e96eb495161","8a8a96898906f065f296665e411f51010b51372fa260d5373bf9f64356703190","7f82ef88bdb67d9a850dd1c7cd2d690f33e0f0acd208e3c9eba086f3670d4f73","67c51fa68aadbb50e4ffc650b704620e0393bddb3d3eac3a6195bf1956562fe4","2687a060a38b7cf926f4f1616554437b337ce161282bb3ad9784d7d9e24c38b9","d851073758ff1ce39bb428d8a3b3385ca26da1745ca742789e876d67dc0aae43","b5840e247b90d1fe32f2420f25a3713f44827da9a7a8d3374ab50c24c668a91a","68a0abfe7fd1c4192e55e97e1037b4a15033647aa7b0c4921043c5b30a5bd8d5","8079f0a9b882288773842f8ae4de494524ae78142ad7d1448b4650ddf801817c",{"version":"5f186a758a616c107c70e8918db4630d063bd782f22e6e0b17573b125765b40b","affectsGlobalScope":true},"0fd641a3b3e3ec89058051a284135a3f30b94a325fb809c4e4159ec5495b5cdc","e66eb237e7629bdc09f5f99fd69b73a0511fafb799783496a37432dde5ce0bf0","fdec06934bf00cb7c1187b7f2f1ac6bf2f327ab5af71a543c48d919baa194f1a","9c8f99dfcd80875222e3a4923525595503174088a6eedce78ae3ea81fd650323","652c8e676e1b94c7829671c0eb237528f76a0ba67ac846c065bceb4088ebddd7","b0d10e46cfe3f6c476b69af02eaa38e4ccc7430221ce3109ae84bb9fb8282298","d1c6c35d174dbe63a76ed8ac6621cca8dbe8794961a2121feb5f0239747d1b7e","051c1bc0efd3690031a97ac49133c9486c22bd07852e75a11ed4b40ceb722569","32ceb626c2cb39f3075dfbbf3528dd3b59a813f574084ce88422cc324e9e5760","447b9b631351b40faa0e961e6cbb5e269bc1fa61f7a615b8077b31a94aaefae3","d59191f0bb663800c0856116d69ae11125eeae891d0a46c0be52f3c78ed4890e","d8360fe15a60f549584a9ff7d0e6129ed77abdbcf062b4da1a10a78175d34f71","a57b37eae916e680e5e15b36d17b22bb05834115041fe940f11d9e714501ff84","e53086c8f861bee1717e3e001498d2a493f786c6fcbb0027fc4352f00fcaa3cd","446242adee16900500f9d9dba2678258641f7e8f692f43c18dde8872167107bb","6ef7ba3b3d2514336c59d1af84e2d7550a886a5be193d9cb980cc6d16698236f","185e38aa301aaaaf3870183acd48f9b4da7baa5282cb9ed102a10004b0751cc2","1f0c7b51e98442f125414c1d43c6a04abc8ee800066834d742eb99b0e542d327","131c58b9b527fa99139dabaaf585ed52e9f5c450c1347c87bcb9af9b884e63ea","2642f053f18152ed5ba6403217f932e4fa0be0077f38734b168ab92da948b3c4","8f584101784f02eaccec6109354fdbd1737c0aa551be2d974d48ef3e32118755","3d2f5f956b8cf5abfd396123b4919041565ec9dc5bc78d2b81dd6404518dfbc8",{"version":"c2e56dec8bcea58fc7de9449766812def5942ce5920426a36b4ef16394f969e8","affectsGlobalScope":true},"7a177412b0d874b6f3b2602ac83a37d43331bdeaa1063c81de9295f9c2a65999","c577f953af525fa962386c710ee72be3b29096d6707409b9327cad29faad4089","75925c52e539a150d822acf3d43f41075d6c371215be27e0c81215a79a802fb4","d5d7b68f5369a210c235cd65458369888f8b839192d088c964f21cab3ac954db","3b043cf9a81854a72963fdb57d1884fc4da1cf5be69b5e0a4c5b751e58cb6d88","b76275b4a94b85da9e4b6b1f8c2b619b996560f9e6030a454260240210a39dd8",{"version":"64d4b35c5456adf258d2cf56c341e203a073253f229ef3208fc0d5020253b241","affectsGlobalScope":true},"0359682c54e487c4cab2b53b2b4d35cc8dea4d9914bc6abcdb5701f8b8e745a4","7d7c8ef7d48a035142c07dae60545ecc0e4af4c337742760cb09726f2f8e31db","8566fa84085caa46340393b1704ecd368491918fb45bd688d6e89736aec73a2f","dc33ce27fbeaf0ea3da556c80a6cc8af9d13eb443088c8f25cdc39fca8e756f6","8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","fd326577c62145816fe1acc306c734c2396487f76719d3785d4e825b34540b33","209e814e8e71aec74f69686a9506dd7610b97ab59dcee9446266446f72a76d05","6fa0008bf91a4cc9c8963bace4bba0bd6865cbfa29c3e3ccc461155660fb113a","2b8264b2fefd7367e0f20e2c04eed5d3038831fe00f5efbc110ff0131aab899b","501260c8b07a6e423fb6ebdea704e732ad529208e4fbbc517836fac8f8ae8895"],"options":{"allowSyntheticDefaultImports":true,"declaration":false,"emitDecoratorMetadata":true,"experimentalDecorators":true,"jsx":2,"module":1,"outDir":"./","removeComments":true,"sourceMap":true,"target":4},"fileIdsList":[[152],[116,152,159,195],[152,197],[152,171,195,201],[152,195,196,197,198,202],[152,210],[152,171,210],[152,210,211,212],[152,160,171,176,194,203,209],[152,159,161],[152,163,165,167],[152,160],[152,161,162,168,169,170],[152,220],[152,219],[152,225,226],[152,223,224,225],[124,125,152,159,228],[125,152,159],[152,164],[73,75,76,77,78,79,80,81,82,83,84,85,152],[73,74,76,77,78,79,80,81,82,83,84,85,152],[74,75,76,77,78,79,80,81,82,83,84,85,152],[73,74,75,77,78,79,80,81,82,83,84,85,152],[73,74,75,76,78,79,80,81,82,83,84,85,152],[73,74,75,76,77,79,80,81,82,83,84,85,152],[73,74,75,76,77,78,80,81,82,83,84,85,152],[73,74,75,76,77,78,79,81,82,83,84,85,152],[73,74,75,76,77,78,79,80,82,83,84,85,152],[73,74,75,76,77,78,79,80,81,83,84,85,152],[73,74,75,76,77,78,79,80,81,82,84,85,152],[73,74,75,76,77,78,79,80,81,82,83,85,152],[73,74,75,76,77,78,79,80,81,82,83,84,152],[109,152],[112,152],[113,118,152],[114,124,125,132,141,151,152],[114,115,124,132,152],[116,152],[117,118,125,133,152],[118,141,148,152],[119,121,124,132,152],[120,152],[121,122,152],[123,124,152],[124,152],[124,125,126,141,151,152],[124,125,126,141,152],[127,132,141,151,152],[124,125,127,128,132,141,148,151,152],[127,129,141,148,151,152],[109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158],[124,130,152],[131,151,152],[121,124,132,141,152],[133,152],[134,152],[112,135,152],[136,150,152,156],[137,152],[138,152],[124,139,152],[139,140,152,154],[124,141,142,143,152],[141,143,152],[141,142,152],[144,152],[145,152],[124,146,147,152],[146,147,152],[118,132,148,152],[149,152],[132,150,152],[113,127,138,151,152],[118,152],[141,152,153],[152,154],[152,155],[113,118,124,126,135,141,151,152,154,156],[141,152,157],[152,166],[130,152,159],[152,188],[152,171,186,187],[152,181,182],[152,181,182,183,184],[152,179],[152,171,174],[124,152,159,171,173,174,175],[152,159,171,172,173,175],[152,163,185],[152,171,200],[152,199],[152,171],[152,207,208],[152,171,176,204,205,206],[152,171,179],[152,171,176,177,179,180,190,191],[152,180,189],[152,171,179,190],[108,152,171,179,192,215],[152,171,192,193,214],[152,180,192,213],[152,178],[102,152],[85,99,152],[85,98,100,101,152],[85,152],[97,152],[65,152],[46,152],[45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,152],[44,70,71,96,152],[65,66,67,70,152],[69,152],[95,152],[44,85,94,152],[106,152],[98,103,104,105,152],[104,152],[98,103,106,108,152,216],[98,108,152,217],[68,152],[89,93,152],[89,152],[86,87,88,90,91,92,152]],"referencedMap":[[220,1],[196,2],[197,2],[198,3],[202,4],[203,5],[195,1],[211,6],[212,7],[213,8],[210,9],[162,10],[168,11],[161,12],[169,1],[170,1],[171,13],[219,1],[221,14],[222,15],[108,1],[227,16],[223,1],[226,17],[225,1],[229,18],[172,19],[160,1],[164,12],[165,20],[224,1],[74,21],[75,22],[73,23],[76,24],[77,25],[78,26],[79,27],[80,28],[81,29],[82,30],[83,31],[84,32],[85,33],[228,1],[230,1],[193,1],[109,34],[110,34],[112,35],[113,36],[114,37],[115,38],[116,39],[117,40],[118,41],[119,42],[120,43],[121,44],[122,44],[123,45],[124,46],[125,47],[126,48],[111,1],[158,1],[127,49],[128,50],[129,51],[159,52],[130,53],[131,54],[132,55],[133,56],[134,57],[135,58],[136,59],[137,60],[138,61],[139,62],[140,63],[141,64],[143,65],[142,66],[144,67],[145,68],[146,69],[147,70],[148,71],[149,72],[150,73],[151,74],[152,75],[153,76],[154,77],[155,78],[156,79],[157,80],[231,1],[232,1],[233,1],[199,1],[166,1],[167,81],[163,1],[194,82],[189,83],[187,83],[188,84],[181,1],[183,85],[185,86],[184,85],[182,87],[173,88],[175,88],[176,89],[174,90],[186,91],[201,92],[200,93],[204,94],[209,95],[207,96],[205,94],[206,94],[208,94],[177,94],[180,97],[192,98],[190,99],[191,100],[216,101],[215,102],[214,103],[179,104],[178,1],[72,1],[8,1],[9,1],[13,1],[12,1],[2,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[3,1],[4,1],[43,1],[25,1],[22,1],[23,1],[24,1],[26,1],[27,1],[28,1],[5,1],[29,1],[30,1],[31,1],[32,1],[6,1],[33,1],[34,1],[35,1],[36,1],[7,1],[41,1],[37,1],[38,1],[39,1],[40,1],[1,1],[42,1],[11,1],[10,1],[103,105],[100,106],[102,107],[101,108],[99,1],[98,109],[67,1],[66,110],[61,111],[53,111],[50,1],[56,111],[52,1],[54,1],[58,1],[51,1],[57,1],[55,1],[48,111],[45,1],[47,111],[49,111],[46,1],[65,112],[59,111],[62,111],[64,110],[60,1],[63,111],[44,1],[97,113],[71,114],[70,115],[96,116],[95,117],[107,118],[104,1],[106,119],[105,120],[217,121],[218,122],[69,123],[68,1],[94,124],[89,1],[90,125],[86,1],[92,1],[93,126],[88,1],[87,57],[91,1]],"exportedModulesMap":[[220,1],[196,2],[197,2],[198,3],[202,4],[203,5],[195,1],[211,6],[212,7],[213,8],[210,9],[162,10],[168,11],[161,12],[169,1],[170,1],[171,13],[219,1],[221,14],[222,15],[108,1],[227,16],[223,1],[226,17],[225,1],[229,18],[172,19],[160,1],[164,12],[165,20],[224,1],[74,21],[75,22],[73,23],[76,24],[77,25],[78,26],[79,27],[80,28],[81,29],[82,30],[83,31],[84,32],[85,33],[228,1],[230,1],[193,1],[109,34],[110,34],[112,35],[113,36],[114,37],[115,38],[116,39],[117,40],[118,41],[119,42],[120,43],[121,44],[122,44],[123,45],[124,46],[125,47],[126,48],[111,1],[158,1],[127,49],[128,50],[129,51],[159,52],[130,53],[131,54],[132,55],[133,56],[134,57],[135,58],[136,59],[137,60],[138,61],[139,62],[140,63],[141,64],[143,65],[142,66],[144,67],[145,68],[146,69],[147,70],[148,71],[149,72],[150,73],[151,74],[152,75],[153,76],[154,77],[155,78],[156,79],[157,80],[231,1],[232,1],[233,1],[199,1],[166,1],[167,81],[163,1],[194,82],[189,83],[187,83],[188,84],[181,1],[183,85],[185,86],[184,85],[182,87],[173,88],[175,88],[176,89],[174,90],[186,91],[201,92],[200,93],[204,94],[209,95],[207,96],[205,94],[206,94],[208,94],[177,94],[180,97],[192,98],[190,99],[191,100],[216,101],[215,102],[214,103],[179,104],[178,1],[72,1],[8,1],[9,1],[13,1],[12,1],[2,1],[14,1],[15,1],[16,1],[17,1],[18,1],[19,1],[20,1],[21,1],[3,1],[4,1],[43,1],[25,1],[22,1],[23,1],[24,1],[26,1],[27,1],[28,1],[5,1],[29,1],[30,1],[31,1],[32,1],[6,1],[33,1],[34,1],[35,1],[36,1],[7,1],[41,1],[37,1],[38,1],[39,1],[40,1],[1,1],[42,1],[11,1],[10,1],[103,105],[100,106],[102,107],[101,108],[99,1],[98,109],[67,1],[66,110],[61,111],[53,111],[50,1],[56,111],[52,1],[54,1],[58,1],[51,1],[57,1],[55,1],[48,111],[45,1],[47,111],[49,111],[46,1],[65,112],[59,111],[62,111],[64,110],[60,1],[63,111],[44,1],[97,113],[71,114],[70,115],[96,116],[95,117],[107,118],[104,1],[106,119],[105,120],[217,121],[218,122],[69,123],[68,1],[94,124],[89,1],[90,125],[86,1],[92,1],[93,126],[88,1],[87,57],[91,1]],"semanticDiagnosticsPerFile":[220,196,197,198,202,203,195,211,212,213,210,162,168,161,169,170,171,219,221,222,108,227,223,226,225,229,172,160,164,165,224,74,75,73,76,77,78,79,80,81,82,83,84,85,228,230,193,109,110,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,111,158,127,128,129,159,130,131,132,133,134,135,136,137,138,139,140,141,143,142,144,145,146,147,148,149,150,151,152,153,154,155,156,157,231,232,233,199,166,167,163,194,189,187,188,181,183,185,184,182,173,175,176,174,186,201,200,204,209,207,205,206,208,177,180,192,190,191,216,215,214,179,178,72,8,9,13,12,2,14,15,16,17,18,19,20,21,3,4,43,25,22,23,24,26,27,28,5,29,30,31,32,6,33,34,35,36,7,41,37,38,39,40,1,42,11,10,103,100,102,101,99,98,67,66,61,53,50,56,52,54,58,51,57,55,48,45,47,49,46,65,59,62,64,60,63,44,97,71,70,96,95,107,104,106,105,217,218,69,68,94,89,90,86,92,93,88,87,91]},"version":"4.5.5"}
package/index.ts ADDED
@@ -0,0 +1 @@
1
+ export * from './src';
package/package.json ADDED
@@ -0,0 +1,29 @@
1
+ {
2
+ "name": "@biorate/prometheus",
3
+ "version": "0.17.1",
4
+ "description": "Prometheus DI module",
5
+ "main": "dist",
6
+ "scripts": {
7
+ "build": "npx tsc --outDir ./dist",
8
+ "test": "npx nyc --reporter=lcov --reporter=text-summary -- npx mocha -r ts-node/register tests/**/*.spec.ts",
9
+ "prepublishOnly": "npm run build"
10
+ },
11
+ "repository": {
12
+ "type": "git",
13
+ "url": "git+https://github.com/biorate/core.git",
14
+ "directory": "packages/@biorate/prometheus"
15
+ },
16
+ "publishConfig": {
17
+ "access": "public"
18
+ },
19
+ "homepage": "https://biorate.github.io/core",
20
+ "keywords": [],
21
+ "author": "llevkin",
22
+ "license": "MIT",
23
+ "dependencies": {
24
+ "@biorate/config": "0.17.1",
25
+ "@biorate/inversion": "0.17.0",
26
+ "prom-client": "^14.0.1"
27
+ },
28
+ "gitHead": "9d297f4487a7935a0069cb64d48387b2d9febe32"
29
+ }
package/src/index.ts ADDED
@@ -0,0 +1,195 @@
1
+ import { injectable, init, inject, Types } from '@biorate/inversion';
2
+ import { IConfig } from '@biorate/config';
3
+ import { IPrometheus } from './interfaces';
4
+ import {
5
+ collectDefaultMetrics,
6
+ Registry,
7
+ DefaultMetricsCollectorConfiguration,
8
+ Counter,
9
+ CounterConfiguration,
10
+ Gauge,
11
+ GaugeConfiguration,
12
+ Histogram,
13
+ HistogramConfiguration,
14
+ Summary,
15
+ SummaryConfiguration,
16
+ } from 'prom-client';
17
+
18
+ export * from './interfaces';
19
+
20
+ @injectable()
21
+ export class Prometheus implements IPrometheus {
22
+ public static readonly registry = new Registry();
23
+ protected static readonly counters = new Map<string, Counter<string>>();
24
+ protected static readonly gauges = new Map<string, Gauge<string>>();
25
+ protected static readonly histograms = new Map<string, Histogram<string>>();
26
+ protected static readonly summaries = new Map<string, Summary<string>>();
27
+ @inject(Types.Config) protected readonly config: IConfig;
28
+
29
+ /**
30
+ * @description Find or create metrics factory
31
+ */
32
+ protected static findOrCreate<T, S>(
33
+ settings: S & { name: string },
34
+ repository: Map<string, T>,
35
+ Class: new (options: S) => T,
36
+ ) {
37
+ let metric = repository.get(settings.name);
38
+ if (!metric) {
39
+ metric = new Class({ ...settings, registers: [this.registry] });
40
+ repository.set(settings.name, metric);
41
+ }
42
+ return (proto: any, key: string) =>
43
+ Object.defineProperty(proto, key, {
44
+ get: () => metric,
45
+ configurable: true,
46
+ });
47
+ }
48
+
49
+ /**
50
+ * @example
51
+ * ```ts
52
+ * import { counter, Counter } from '@biorate/prometheus';
53
+ *
54
+ * class Test {
55
+ * @counter({
56
+ * name: 'test_counter',
57
+ * help: 'Test counter',
58
+ * labelNames: ['label1', 'label2'],
59
+ * })
60
+ * protected counter: Counter;
61
+ *
62
+ * public metric() {
63
+ * this.counter.labels({ label1: 1, label2: 2 }).inc();
64
+ * }
65
+ * }
66
+ *
67
+ * const test = new Test();
68
+ *
69
+ * test.metric();
70
+ * ```
71
+ */
72
+ public static counter(settings: CounterConfiguration<string>) {
73
+ return this.findOrCreate<Counter<string>, CounterConfiguration<string>>(
74
+ settings,
75
+ this.counters,
76
+ Counter,
77
+ );
78
+ }
79
+
80
+ /**
81
+ * @example
82
+ * ```ts
83
+ * import { gauge, Gauge } from '@biorate/prometheus';
84
+ *
85
+ * class Test {
86
+ * @gauge({
87
+ * name: 'test_gauge',
88
+ * help: 'Test gauge',
89
+ * labelNames: ['label1', 'label2'],
90
+ * })
91
+ * protected gauge: Gauge;
92
+ *
93
+ * public metric() {
94
+ * this.gauge.labels({ label1: 1, label2: 2 }).set(10);
95
+ * }
96
+ * }
97
+ *
98
+ * const test = new Test();
99
+ *
100
+ * test.metric();
101
+ * ```
102
+ */
103
+ public static gauge(settings: GaugeConfiguration<string>) {
104
+ return this.findOrCreate<Gauge<string>, GaugeConfiguration<string>>(
105
+ settings,
106
+ this.gauges,
107
+ Gauge,
108
+ );
109
+ }
110
+
111
+ /**
112
+ * @example
113
+ * ```ts
114
+ * import { histogram, Histogram } from '@biorate/prometheus';
115
+ *
116
+ * class Test {
117
+ * @histogram({
118
+ * name: 'test_histogram',
119
+ * help: 'Test histogram',
120
+ * labelNames: ['label1', 'label2'],
121
+ * })
122
+ * protected histogram: Histogram;
123
+ *
124
+ * public metric() {
125
+ * this.histogram.labels({ label1: 1, label2: 2 }).observe(10);
126
+ * }
127
+ * }
128
+ *
129
+ * const test = new Test();
130
+ *
131
+ * test.metric();
132
+ * ```
133
+ */
134
+ public static histogram(settings: HistogramConfiguration<string>) {
135
+ return this.findOrCreate<Histogram<string>, HistogramConfiguration<string>>(
136
+ settings,
137
+ this.histograms,
138
+ Histogram,
139
+ );
140
+ }
141
+
142
+ /**
143
+ * @example
144
+ * ```ts
145
+ * import { summary, Summary } from '@biorate/prometheus';
146
+ *
147
+ * class Test {
148
+ * @histogram({
149
+ * name: 'test_summary',
150
+ * help: 'Test summary',
151
+ * labelNames: ['label1', 'label2'],
152
+ * })
153
+ * protected summary: Summary;
154
+ *
155
+ * public metric() {
156
+ * this.summary.labels({ label1: 1, label2: 2 }).observe(10);
157
+ * }
158
+ * }
159
+ *
160
+ * const test = new Test();
161
+ *
162
+ * test.metric();
163
+ * ```
164
+ */
165
+ public static summary(settings: SummaryConfiguration<string>) {
166
+ return this.findOrCreate<Summary<string>, SummaryConfiguration<string>>(
167
+ settings,
168
+ this.summaries,
169
+ Summary,
170
+ );
171
+ }
172
+
173
+ /**
174
+ * @description Registry link getter
175
+ */
176
+ public get registry() {
177
+ return Prometheus.registry;
178
+ }
179
+
180
+ @init() protected async initialize() {
181
+ if (this.config.get<boolean>('prometheus.collectDefaultMetrics', true))
182
+ collectDefaultMetrics({
183
+ ...this.config.get<DefaultMetricsCollectorConfiguration>(
184
+ 'prometheus.defaultMetrics',
185
+ {},
186
+ ),
187
+ register: this.registry,
188
+ });
189
+ }
190
+ }
191
+
192
+ export const counter = Prometheus.counter.bind(Prometheus);
193
+ export const gauge = Prometheus.gauge.bind(Prometheus);
194
+ export const histogram = Prometheus.histogram.bind(Prometheus);
195
+ export const summary = Prometheus.summary.bind(Prometheus);
@@ -0,0 +1,16 @@
1
+ import {
2
+ Registry,
3
+ Counter as PCounter,
4
+ Gauge as PGauge,
5
+ Histogram as PHistogram,
6
+ Summary as PSummary,
7
+ } from 'prom-client';
8
+
9
+ export interface IPrometheus {
10
+ readonly registry: Registry;
11
+ }
12
+
13
+ export type Counter = PCounter<string>;
14
+ export type Gauge = PGauge<string>;
15
+ export type Histogram = PHistogram<string>;
16
+ export type Summary = PSummary<string>;
@@ -0,0 +1,40 @@
1
+ import { use } from 'chai';
2
+ import { jestSnapshotPlugin } from 'mocha-chai-jest-snapshot';
3
+ import { inject, container, Types, Core } from '@biorate/inversion';
4
+ import { IConfig, Config } from '@biorate/config';
5
+ import {
6
+ Prometheus,
7
+ IPrometheus,
8
+ counter,
9
+ gauge,
10
+ summary,
11
+ histogram,
12
+ Counter,
13
+ Gauge,
14
+ Summary,
15
+ Histogram,
16
+ } from '../../src';
17
+
18
+ use(jestSnapshotPlugin());
19
+
20
+ Core.log = null;
21
+
22
+ export class Root extends Core() {
23
+ @inject(Types.Config) public config: IConfig;
24
+ @inject(Types.Prometheus) public prometheus: IPrometheus;
25
+
26
+ @counter({ name: 'counter', help: 'counter' }) public counter: Counter;
27
+ @gauge({ name: 'gauge', help: 'gauge' }) public gauge: Gauge;
28
+ @summary({ name: 'summary', help: 'summary' }) public summary: Summary;
29
+ @histogram({ name: 'histogram', help: 'histogram' })
30
+ public histogram: Histogram;
31
+ }
32
+ container.bind(Types.Config).to(Config).inSingletonScope();
33
+ container.bind(Types.Prometheus).to(Prometheus).inSingletonScope();
34
+ container.bind(Root).toSelf().inSingletonScope();
35
+
36
+ (container.get(Types.Config) as IConfig).merge({
37
+ prometheus: {
38
+ collectDefaultMetrics: false,
39
+ },
40
+ });
@@ -0,0 +1,161 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`Prometheus counter 1`] = `
4
+ "# HELP counter counter
5
+ # TYPE counter counter
6
+ counter 1
7
+
8
+ # HELP gauge gauge
9
+ # TYPE gauge gauge
10
+ gauge 0
11
+
12
+ # HELP summary summary
13
+ # TYPE summary summary
14
+ summary{quantile=\\"0.01\\"} 0
15
+ summary{quantile=\\"0.05\\"} 0
16
+ summary{quantile=\\"0.5\\"} 0
17
+ summary{quantile=\\"0.9\\"} 0
18
+ summary{quantile=\\"0.95\\"} 0
19
+ summary{quantile=\\"0.99\\"} 0
20
+ summary{quantile=\\"0.999\\"} 0
21
+ summary_sum 0
22
+ summary_count 0
23
+
24
+ # HELP histogram histogram
25
+ # TYPE histogram histogram
26
+ histogram_bucket{le=\\"0.005\\"} 0
27
+ histogram_bucket{le=\\"0.01\\"} 0
28
+ histogram_bucket{le=\\"0.025\\"} 0
29
+ histogram_bucket{le=\\"0.05\\"} 0
30
+ histogram_bucket{le=\\"0.1\\"} 0
31
+ histogram_bucket{le=\\"0.25\\"} 0
32
+ histogram_bucket{le=\\"0.5\\"} 0
33
+ histogram_bucket{le=\\"1\\"} 0
34
+ histogram_bucket{le=\\"2.5\\"} 0
35
+ histogram_bucket{le=\\"5\\"} 0
36
+ histogram_bucket{le=\\"10\\"} 0
37
+ histogram_bucket{le=\\"+Inf\\"} 0
38
+ histogram_sum 0
39
+ histogram_count 0
40
+ "
41
+ `;
42
+
43
+ exports[`Prometheus gauge 1`] = `
44
+ "# HELP counter counter
45
+ # TYPE counter counter
46
+ counter 1
47
+
48
+ # HELP gauge gauge
49
+ # TYPE gauge gauge
50
+ gauge 1
51
+
52
+ # HELP summary summary
53
+ # TYPE summary summary
54
+ summary{quantile=\\"0.01\\"} 0
55
+ summary{quantile=\\"0.05\\"} 0
56
+ summary{quantile=\\"0.5\\"} 0
57
+ summary{quantile=\\"0.9\\"} 0
58
+ summary{quantile=\\"0.95\\"} 0
59
+ summary{quantile=\\"0.99\\"} 0
60
+ summary{quantile=\\"0.999\\"} 0
61
+ summary_sum 0
62
+ summary_count 0
63
+
64
+ # HELP histogram histogram
65
+ # TYPE histogram histogram
66
+ histogram_bucket{le=\\"0.005\\"} 0
67
+ histogram_bucket{le=\\"0.01\\"} 0
68
+ histogram_bucket{le=\\"0.025\\"} 0
69
+ histogram_bucket{le=\\"0.05\\"} 0
70
+ histogram_bucket{le=\\"0.1\\"} 0
71
+ histogram_bucket{le=\\"0.25\\"} 0
72
+ histogram_bucket{le=\\"0.5\\"} 0
73
+ histogram_bucket{le=\\"1\\"} 0
74
+ histogram_bucket{le=\\"2.5\\"} 0
75
+ histogram_bucket{le=\\"5\\"} 0
76
+ histogram_bucket{le=\\"10\\"} 0
77
+ histogram_bucket{le=\\"+Inf\\"} 0
78
+ histogram_sum 0
79
+ histogram_count 0
80
+ "
81
+ `;
82
+
83
+ exports[`Prometheus histogram 1`] = `
84
+ "# HELP counter counter
85
+ # TYPE counter counter
86
+ counter 1
87
+
88
+ # HELP gauge gauge
89
+ # TYPE gauge gauge
90
+ gauge 1
91
+
92
+ # HELP summary summary
93
+ # TYPE summary summary
94
+ summary{quantile=\\"0.01\\"} 1
95
+ summary{quantile=\\"0.05\\"} 1
96
+ summary{quantile=\\"0.5\\"} 1
97
+ summary{quantile=\\"0.9\\"} 1
98
+ summary{quantile=\\"0.95\\"} 1
99
+ summary{quantile=\\"0.99\\"} 1
100
+ summary{quantile=\\"0.999\\"} 1
101
+ summary_sum 1
102
+ summary_count 1
103
+
104
+ # HELP histogram histogram
105
+ # TYPE histogram histogram
106
+ histogram_bucket{le=\\"0.005\\"} 0
107
+ histogram_bucket{le=\\"0.01\\"} 0
108
+ histogram_bucket{le=\\"0.025\\"} 0
109
+ histogram_bucket{le=\\"0.05\\"} 0
110
+ histogram_bucket{le=\\"0.1\\"} 0
111
+ histogram_bucket{le=\\"0.25\\"} 0
112
+ histogram_bucket{le=\\"0.5\\"} 0
113
+ histogram_bucket{le=\\"1\\"} 1
114
+ histogram_bucket{le=\\"2.5\\"} 1
115
+ histogram_bucket{le=\\"5\\"} 1
116
+ histogram_bucket{le=\\"10\\"} 1
117
+ histogram_bucket{le=\\"+Inf\\"} 1
118
+ histogram_sum 1
119
+ histogram_count 1
120
+ "
121
+ `;
122
+
123
+ exports[`Prometheus summary 1`] = `
124
+ "# HELP counter counter
125
+ # TYPE counter counter
126
+ counter 1
127
+
128
+ # HELP gauge gauge
129
+ # TYPE gauge gauge
130
+ gauge 1
131
+
132
+ # HELP summary summary
133
+ # TYPE summary summary
134
+ summary{quantile=\\"0.01\\"} 1
135
+ summary{quantile=\\"0.05\\"} 1
136
+ summary{quantile=\\"0.5\\"} 1
137
+ summary{quantile=\\"0.9\\"} 1
138
+ summary{quantile=\\"0.95\\"} 1
139
+ summary{quantile=\\"0.99\\"} 1
140
+ summary{quantile=\\"0.999\\"} 1
141
+ summary_sum 1
142
+ summary_count 1
143
+
144
+ # HELP histogram histogram
145
+ # TYPE histogram histogram
146
+ histogram_bucket{le=\\"0.005\\"} 0
147
+ histogram_bucket{le=\\"0.01\\"} 0
148
+ histogram_bucket{le=\\"0.025\\"} 0
149
+ histogram_bucket{le=\\"0.05\\"} 0
150
+ histogram_bucket{le=\\"0.1\\"} 0
151
+ histogram_bucket{le=\\"0.25\\"} 0
152
+ histogram_bucket{le=\\"0.5\\"} 0
153
+ histogram_bucket{le=\\"1\\"} 0
154
+ histogram_bucket{le=\\"2.5\\"} 0
155
+ histogram_bucket{le=\\"5\\"} 0
156
+ histogram_bucket{le=\\"10\\"} 0
157
+ histogram_bucket{le=\\"+Inf\\"} 0
158
+ histogram_sum 0
159
+ histogram_count 0
160
+ "
161
+ `;
@@ -0,0 +1,33 @@
1
+ import { expect } from 'chai';
2
+ import { container } from '@biorate/inversion';
3
+ import { Root } from './__mocks__';
4
+
5
+ describe('Prometheus', function () {
6
+ let root: Root;
7
+ this.timeout(3e4);
8
+
9
+ before(async () => {
10
+ root = container.get<Root>(Root);
11
+ await root.$run();
12
+ });
13
+
14
+ it('counter', async () => {
15
+ root.counter.inc();
16
+ expect(await root.prometheus.registry.metrics()).toMatchSnapshot();
17
+ });
18
+
19
+ it('gauge', async () => {
20
+ root.gauge.inc();
21
+ expect(await root.prometheus.registry.metrics()).toMatchSnapshot();
22
+ });
23
+
24
+ it('summary', async () => {
25
+ root.summary.observe(1);
26
+ expect(await root.prometheus.registry.metrics()).toMatchSnapshot();
27
+ });
28
+
29
+ it('histogram', async () => {
30
+ root.histogram.observe(1);
31
+ expect(await root.prometheus.registry.metrics()).toMatchSnapshot();
32
+ });
33
+ });
@@ -0,0 +1,5 @@
1
+ {
2
+ "extends": "./tsconfig.json",
3
+ "include": ["index.ts", "src/**/*"],
4
+ "exclude": ["node_modules", "dist", "tests", "**/*spec.ts"]
5
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,6 @@
1
+ {
2
+ "extends": "../../../tsconfig.json",
3
+ "compilerOptions": {},
4
+ "include": ["index.ts", "src/**/*", "tests/**/*"],
5
+ "exclude": ["node_modules", "dist"]
6
+ }