@interopio/insights-metrics 0.0.171 → 0.0.173

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.
Files changed (196) hide show
  1. package/dist/constants.d.ts +27 -0
  2. package/dist/constants.js +31 -0
  3. package/dist/constants.js.map +1 -0
  4. package/dist/factory/builder.d.ts +34 -0
  5. package/dist/factory/builder.js +290 -0
  6. package/dist/factory/builder.js.map +1 -0
  7. package/dist/factory/factory.d.ts +10 -0
  8. package/dist/factory/factory.js +71 -0
  9. package/dist/factory/factory.js.map +1 -0
  10. package/dist/index.d.ts +4 -0
  11. package/dist/index.js +41 -6
  12. package/dist/index.js.map +1 -1
  13. package/dist/manager.d.ts +26 -0
  14. package/dist/manager.js +164 -0
  15. package/dist/manager.js.map +1 -0
  16. package/dist/meter/lazyProvider.d.ts +15 -0
  17. package/dist/meter/lazyProvider.js +36 -0
  18. package/dist/meter/lazyProvider.js.map +1 -0
  19. package/dist/meter/providerFactory.d.ts +6 -0
  20. package/dist/meter/providerFactory.js +38 -0
  21. package/dist/meter/providerFactory.js.map +1 -0
  22. package/dist/metrics/application/count.d.ts +19 -0
  23. package/dist/metrics/application/count.js +69 -0
  24. package/dist/metrics/application/count.js.map +1 -0
  25. package/dist/metrics/application/cpu.d.ts +10 -0
  26. package/dist/metrics/application/cpu.js +48 -0
  27. package/dist/metrics/application/cpu.js.map +1 -0
  28. package/dist/metrics/application/crash.d.ts +16 -0
  29. package/dist/metrics/application/crash.js +49 -0
  30. package/dist/metrics/application/crash.js.map +1 -0
  31. package/dist/metrics/application/duration.d.ts +25 -0
  32. package/dist/metrics/application/duration.js +105 -0
  33. package/dist/metrics/application/duration.js.map +1 -0
  34. package/dist/metrics/application/durationSoft.d.ts +4 -0
  35. package/dist/metrics/application/durationSoft.js +34 -0
  36. package/dist/metrics/application/durationSoft.js.map +1 -0
  37. package/dist/metrics/application/error.d.ts +16 -0
  38. package/dist/metrics/application/error.js +49 -0
  39. package/dist/metrics/application/error.js.map +1 -0
  40. package/dist/metrics/application/memory.d.ts +11 -0
  41. package/dist/metrics/application/memory.js +50 -0
  42. package/dist/metrics/application/memory.js.map +1 -0
  43. package/dist/metrics/application/started.d.ts +16 -0
  44. package/dist/metrics/application/started.js +49 -0
  45. package/dist/metrics/application/started.js.map +1 -0
  46. package/dist/metrics/application/startup.d.ts +16 -0
  47. package/dist/metrics/application/startup.js +50 -0
  48. package/dist/metrics/application/startup.js.map +1 -0
  49. package/dist/metrics/application/stopped.d.ts +16 -0
  50. package/dist/metrics/application/stopped.js +49 -0
  51. package/dist/metrics/application/stopped.js.map +1 -0
  52. package/dist/metrics/base/base.d.ts +29 -0
  53. package/dist/metrics/base/base.js +198 -0
  54. package/dist/metrics/base/base.js.map +1 -0
  55. package/dist/metrics/base/observable.d.ts +19 -0
  56. package/dist/metrics/base/observable.js +83 -0
  57. package/dist/metrics/base/observable.js.map +1 -0
  58. package/dist/metrics/base/observableGauge.d.ts +6 -0
  59. package/dist/metrics/base/observableGauge.js +12 -0
  60. package/dist/metrics/base/observableGauge.js.map +1 -0
  61. package/dist/metrics/base/zeroOutClosedAppObservableGaugeMetricBase.d.ts +12 -0
  62. package/dist/metrics/base/zeroOutClosedAppObservableGaugeMetricBase.js +39 -0
  63. package/dist/metrics/base/zeroOutClosedAppObservableGaugeMetricBase.js.map +1 -0
  64. package/dist/metrics/custom/customCounter.d.ts +10 -0
  65. package/dist/metrics/custom/customCounter.js +24 -0
  66. package/dist/metrics/custom/customCounter.js.map +1 -0
  67. package/dist/metrics/custom/customGauge.d.ts +10 -0
  68. package/dist/metrics/custom/customGauge.js +24 -0
  69. package/dist/metrics/custom/customGauge.js.map +1 -0
  70. package/dist/metrics/custom/customHistogram.d.ts +10 -0
  71. package/dist/metrics/custom/customHistogram.js +24 -0
  72. package/dist/metrics/custom/customHistogram.js.map +1 -0
  73. package/dist/metrics/custom/customObservableCounter.d.ts +6 -0
  74. package/dist/metrics/custom/customObservableCounter.js +13 -0
  75. package/dist/metrics/custom/customObservableCounter.js.map +1 -0
  76. package/dist/metrics/custom/customObservableGauge.d.ts +6 -0
  77. package/dist/metrics/custom/customObservableGauge.js +13 -0
  78. package/dist/metrics/custom/customObservableGauge.js.map +1 -0
  79. package/dist/metrics/custom/customObservableUpDownCounter.d.ts +6 -0
  80. package/dist/metrics/custom/customObservableUpDownCounter.js +13 -0
  81. package/dist/metrics/custom/customObservableUpDownCounter.js.map +1 -0
  82. package/dist/metrics/custom/customUpDownCounter.d.ts +10 -0
  83. package/dist/metrics/custom/customUpDownCounter.js +24 -0
  84. package/dist/metrics/custom/customUpDownCounter.js.map +1 -0
  85. package/dist/metrics/layout/startup.d.ts +15 -0
  86. package/dist/metrics/layout/startup.js +47 -0
  87. package/dist/metrics/layout/startup.js.map +1 -0
  88. package/dist/metrics/platform/error.d.ts +15 -0
  89. package/dist/metrics/platform/error.js +47 -0
  90. package/dist/metrics/platform/error.js.map +1 -0
  91. package/dist/metrics/platform/startup.d.ts +16 -0
  92. package/dist/metrics/platform/startup.js +63 -0
  93. package/dist/metrics/platform/startup.js.map +1 -0
  94. package/dist/metrics/system/cpu.d.ts +10 -0
  95. package/dist/metrics/system/cpu.js +50 -0
  96. package/dist/metrics/system/cpu.js.map +1 -0
  97. package/dist/metrics/system/memory.d.ts +10 -0
  98. package/dist/metrics/system/memory.js +51 -0
  99. package/dist/metrics/system/memory.js.map +1 -0
  100. package/dist/metrics/workspace/count.d.ts +23 -0
  101. package/dist/metrics/workspace/count.js +94 -0
  102. package/dist/metrics/workspace/count.js.map +1 -0
  103. package/dist/metrics/workspace/selected.d.ts +14 -0
  104. package/dist/metrics/workspace/selected.js +47 -0
  105. package/dist/metrics/workspace/selected.js.map +1 -0
  106. package/dist/metrics/workspace/started.d.ts +17 -0
  107. package/dist/metrics/workspace/started.js +49 -0
  108. package/dist/metrics/workspace/started.js.map +1 -0
  109. package/dist/metrics/workspace/startupLegacy.d.ts +8 -0
  110. package/dist/metrics/workspace/startupLegacy.js +20 -0
  111. package/dist/metrics/workspace/startupLegacy.js.map +1 -0
  112. package/dist/metrics/workspace/stopped.d.ts +15 -0
  113. package/dist/metrics/workspace/stopped.js +46 -0
  114. package/dist/metrics/workspace/stopped.js.map +1 -0
  115. package/dist/metrics/workspace/timedGauge.d.ts +14 -0
  116. package/dist/metrics/workspace/timedGauge.js +54 -0
  117. package/dist/metrics/workspace/timedGauge.js.map +1 -0
  118. package/dist/settings/builder.d.ts +26 -0
  119. package/dist/settings/builder.js +142 -0
  120. package/dist/settings/builder.js.map +1 -0
  121. package/dist/settings/default.d.ts +40 -0
  122. package/dist/settings/default.js +178 -0
  123. package/dist/settings/default.js.map +1 -0
  124. package/dist/validation/builder.d.ts +4 -0
  125. package/dist/validation/builder.js +12 -0
  126. package/dist/validation/builder.js.map +1 -0
  127. package/dist/validation/container.d.ts +4 -0
  128. package/dist/validation/container.js +14 -0
  129. package/dist/validation/container.js.map +1 -0
  130. package/dist/validation/metrics/application/count.d.ts +7 -0
  131. package/dist/validation/metrics/application/count.js +21 -0
  132. package/dist/validation/metrics/application/count.js.map +1 -0
  133. package/dist/validation/metrics/application/duration.d.ts +6 -0
  134. package/dist/validation/metrics/application/duration.js +17 -0
  135. package/dist/validation/metrics/application/duration.js.map +1 -0
  136. package/dist/validation/metrics/application/error.d.ts +6 -0
  137. package/dist/validation/metrics/application/error.js +16 -0
  138. package/dist/validation/metrics/application/error.js.map +1 -0
  139. package/dist/validation/metrics/application/started.d.ts +6 -0
  140. package/dist/validation/metrics/application/started.js +16 -0
  141. package/dist/validation/metrics/application/started.js.map +1 -0
  142. package/dist/validation/metrics/application/startupHistogram.d.ts +6 -0
  143. package/dist/validation/metrics/application/startupHistogram.js +18 -0
  144. package/dist/validation/metrics/application/startupHistogram.js.map +1 -0
  145. package/dist/validation/metrics/application/stopped.d.ts +6 -0
  146. package/dist/validation/metrics/application/stopped.js +16 -0
  147. package/dist/validation/metrics/application/stopped.js.map +1 -0
  148. package/dist/validation/metrics/base/base.d.ts +5 -0
  149. package/dist/validation/metrics/base/base.js +22 -0
  150. package/dist/validation/metrics/base/base.js.map +1 -0
  151. package/dist/validation/metrics/base/gauge.d.ts +5 -0
  152. package/dist/validation/metrics/base/gauge.js +12 -0
  153. package/dist/validation/metrics/base/gauge.js.map +1 -0
  154. package/dist/validation/metrics/builder.d.ts +2 -0
  155. package/dist/validation/metrics/builder.js +7 -0
  156. package/dist/validation/metrics/builder.js.map +1 -0
  157. package/dist/validation/metrics/factory.d.ts +4 -0
  158. package/dist/validation/metrics/factory.js +13 -0
  159. package/dist/validation/metrics/factory.js.map +1 -0
  160. package/dist/validation/metrics/factoryBuilder.d.ts +5 -0
  161. package/dist/validation/metrics/factoryBuilder.js +23 -0
  162. package/dist/validation/metrics/factoryBuilder.js.map +1 -0
  163. package/dist/validation/metrics/layout/startupHistogram.d.ts +6 -0
  164. package/dist/validation/metrics/layout/startupHistogram.js +18 -0
  165. package/dist/validation/metrics/layout/startupHistogram.js.map +1 -0
  166. package/dist/validation/metrics/manager.d.ts +4 -0
  167. package/dist/validation/metrics/manager.js +15 -0
  168. package/dist/validation/metrics/manager.js.map +1 -0
  169. package/dist/validation/metrics/meterFactory.d.ts +2 -0
  170. package/dist/validation/metrics/meterFactory.js +8 -0
  171. package/dist/validation/metrics/meterFactory.js.map +1 -0
  172. package/dist/validation/metrics/perf.d.ts +8 -0
  173. package/dist/validation/metrics/perf.js +41 -0
  174. package/dist/validation/metrics/perf.js.map +1 -0
  175. package/dist/validation/metrics/platform/crash.d.ts +6 -0
  176. package/dist/validation/metrics/platform/crash.js +16 -0
  177. package/dist/validation/metrics/platform/crash.js.map +1 -0
  178. package/dist/validation/metrics/platform/error.d.ts +6 -0
  179. package/dist/validation/metrics/platform/error.js +15 -0
  180. package/dist/validation/metrics/platform/error.js.map +1 -0
  181. package/dist/validation/metrics/platform/startup.d.ts +6 -0
  182. package/dist/validation/metrics/platform/startup.js +18 -0
  183. package/dist/validation/metrics/platform/startup.js.map +1 -0
  184. package/dist/validation/metrics/settingsBuilder.d.ts +4 -0
  185. package/dist/validation/metrics/settingsBuilder.js +26 -0
  186. package/dist/validation/metrics/settingsBuilder.js.map +1 -0
  187. package/dist/validation/metrics/workspace/count.d.ts +8 -0
  188. package/dist/validation/metrics/workspace/count.js +25 -0
  189. package/dist/validation/metrics/workspace/count.js.map +1 -0
  190. package/dist/validation/metrics/workspace/startedOrStoppedMetric.d.ts +8 -0
  191. package/dist/validation/metrics/workspace/startedOrStoppedMetric.js +19 -0
  192. package/dist/validation/metrics/workspace/startedOrStoppedMetric.js.map +1 -0
  193. package/dist/validation/validator.d.ts +4 -0
  194. package/dist/validation/validator.js +15 -0
  195. package/dist/validation/validator.js.map +1 -0
  196. package/package.json +2 -1
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApplicationDurationMetric = void 0;
4
+ const validator_1 = require("../../validation/validator");
5
+ const duration_1 = require("../../validation/metrics/application/duration");
6
+ const observable_1 = require("../base/observable");
7
+ const otel_1 = require("@interopio/otel");
8
+ class ApplicationDurationMetric extends observable_1.ObservableMetricBase {
9
+ constructor(settings, meter, logger, generalSettings, instanceFocusHandler, defaultFilters) {
10
+ super(settings, meter, logger, generalSettings, defaultFilters);
11
+ this.instanceFocusHandler = instanceFocusHandler;
12
+ // application -> focused times for a given period
13
+ this.focusedTimes = new Map();
14
+ this.validator = new duration_1.ApplicationDurationMetricValidator();
15
+ this.validator.validate(this);
16
+ }
17
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
18
+ createMetricCore(name, baseSettings) {
19
+ this.appDurationMetric = this.createRecordingMetric(name, baseSettings, "gauge");
20
+ return this.meter.createObservableGauge(this.createUniqueName(10));
21
+ }
22
+ sendMetric(focusedPeriods, data) {
23
+ focusedPeriods.forEach((period) => {
24
+ this.appDurationMetric.record(period, this.prePublish(data));
25
+ this.logger.debug(`metric ${this.settings.name} sent focused time ${period} for app ${data.application}`);
26
+ });
27
+ }
28
+ observeCore() {
29
+ this.focusedTimes.forEach((focusedPeriods, application) => {
30
+ var _a;
31
+ const data = this.getApplicationData(application);
32
+ if (((_a = this.getFilter(data)) === null || _a === void 0 ? void 0 : _a.enabled) === false) {
33
+ return;
34
+ }
35
+ this.sendMetric(focusedPeriods, this.prePublish(data));
36
+ focusedPeriods.splice(0);
37
+ });
38
+ return Promise.resolve();
39
+ }
40
+ subscribeCore() {
41
+ this.unInstanceFocusHandler = otel_1.Container.errorless(() => this.instanceFocusHandler(this.handleFocusChanged.bind(this)));
42
+ return Promise.resolve();
43
+ }
44
+ unsubscribeCore() {
45
+ otel_1.Container.errorless(() => { var _a; return (_a = this.unInstanceFocusHandler) === null || _a === void 0 ? void 0 : _a.call(this); });
46
+ return Promise.resolve();
47
+ }
48
+ handleFocusChanged(args) {
49
+ try {
50
+ this.validator.validateFocusChanged(args);
51
+ this.logger.debug(`focused changed is being invoked for metric ${this.settings.name} with ${JSON.stringify(args)}`);
52
+ return this.handleFocusChangedCore(args);
53
+ }
54
+ catch (error) {
55
+ const message = `error while executing handleFocusChanges for metric from type: ${this.settings.type}`;
56
+ this.logger.warn(message, error);
57
+ }
58
+ }
59
+ handleFocusChangedCore(e) {
60
+ const focused = e.focused;
61
+ const application = e.application;
62
+ if (focused) {
63
+ this.handleGotFocus(application);
64
+ }
65
+ else {
66
+ try {
67
+ this.handleLostFocus(application);
68
+ }
69
+ finally {
70
+ this.currentFocusedApp = undefined;
71
+ }
72
+ }
73
+ }
74
+ handleGotFocus(application) {
75
+ const now = new Date().getTime();
76
+ this.currentFocusedApp = { name: application, gotFocusTime: now };
77
+ if (!this.focusedTimes.has(this.currentFocusedApp.name)) {
78
+ this.focusedTimes.set(this.currentFocusedApp.name, []);
79
+ }
80
+ this.logger.debug(`got focus event has been added for metric ${this.settings.name}`);
81
+ }
82
+ handleLostFocus(application) {
83
+ if (validator_1.Validator.isNullOrUndefined(this.currentFocusedApp)) {
84
+ throw new Error(`cannot handle focus lost for application ${application} since there is no previous got focus event`);
85
+ }
86
+ const currentFocusedApp = this.currentFocusedApp.name;
87
+ const gotFocusTime = this.currentFocusedApp.gotFocusTime;
88
+ if (application !== currentFocusedApp) {
89
+ throw new Error(`cannot handle focus lost for application ${application} since the previous got focus event had come from application ${currentFocusedApp}`);
90
+ }
91
+ if (!this.focusedTimes.has(application)) {
92
+ throw new Error(`there is no got focus event for ${application}`);
93
+ }
94
+ this.addFocusLostEventCore(currentFocusedApp, gotFocusTime);
95
+ this.logger.debug(`lost focus event has been added for metric ${this.settings.name}`);
96
+ }
97
+ addFocusLostEventCore(application, gotFocusTime) {
98
+ const now = new Date().getTime();
99
+ const focusedTime = (now - gotFocusTime);
100
+ const focusedTimes = this.focusedTimes.get(application);
101
+ focusedTimes.push(focusedTime);
102
+ }
103
+ }
104
+ exports.ApplicationDurationMetric = ApplicationDurationMetric;
105
+ //# sourceMappingURL=duration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"duration.js","sourceRoot":"","sources":["../../../src/metrics/application/duration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { ApplicationDurationMetric } from "./duration";
2
+ export declare class ApplicationDurationSoftMetric extends ApplicationDurationMetric {
3
+ protected observeCore(): Promise<void>;
4
+ }
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ApplicationDurationSoftMetric = void 0;
13
+ const duration_1 = require("./duration");
14
+ class ApplicationDurationSoftMetric extends duration_1.ApplicationDurationMetric {
15
+ observeCore() {
16
+ const _super = Object.create(null, {
17
+ observeCore: { get: () => super.observeCore }
18
+ });
19
+ return __awaiter(this, void 0, void 0, function* () {
20
+ const hasFocusedApp = this.currentFocusedApp !== undefined;
21
+ const currentFocusedApp = hasFocusedApp ? this.currentFocusedApp.name : undefined;
22
+ if (hasFocusedApp) {
23
+ this.handleFocusChanged({ application: currentFocusedApp, focused: false });
24
+ }
25
+ yield _super.observeCore.call(this);
26
+ if (hasFocusedApp) {
27
+ this.handleFocusChanged({ application: currentFocusedApp, focused: true });
28
+ }
29
+ return Promise.resolve();
30
+ });
31
+ }
32
+ }
33
+ exports.ApplicationDurationSoftMetric = ApplicationDurationSoftMetric;
34
+ //# sourceMappingURL=durationSoft.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"durationSoft.js","sourceRoot":"","sources":["../../../src/metrics/application/durationSoft.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yCAAuD;AAEvD,MAAa,6BAA8B,SAAQ,oCAAyB;IAE/C,WAAW;;;;;YAChC,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,KAAK,SAAS,CAAC;YAC3D,MAAM,iBAAiB,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;YAEnF,IAAI,aAAa,EAAE;gBACf,IAAI,CAAC,kBAAkB,CAAC,EAAE,WAAW,EAAE,iBAAkB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;aAChF;YAED,MAAM,OAAM,WAAW,WAAE,CAAC;YAE1B,IAAI,aAAa,EAAE;gBACf,IAAI,CAAC,kBAAkB,CAAC,EAAE,WAAW,EAAE,iBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;aAC/E;YAED,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC7B,CAAC;KAAA;CACJ;AAlBD,sEAkBC"}
@@ -0,0 +1,16 @@
1
+ import { type Counter, type Meter } from "@opentelemetry/api";
2
+ import { MetricBase } from "../base/base";
3
+ import { IOInsights } from "@interopio/otel/insights";
4
+ export declare class ApplicationErrorMetric extends MetricBase {
5
+ meter: Meter;
6
+ instanceErrorHandler: IOInsights.InstanceErrorHandler;
7
+ private appErrorMetric;
8
+ private appErrorUn?;
9
+ private validator;
10
+ constructor(settings: IOInsights.MetricSettings, meter: Meter, logger: IOInsights.Logger, generalSettings: IOInsights.MetricsSettings, instanceErrorHandler: IOInsights.InstanceErrorHandler, defaultFilters?: IOInsights.MetricDefaultFilter[]);
11
+ protected createMetricCore(name: string, baseSettings: any): Counter<IOInsights.ApplicationMetricData>;
12
+ protected subscribe(): Promise<void>;
13
+ protected destroyMetric(): Promise<void>;
14
+ protected unsubscribe(): Promise<void>;
15
+ private instanceApplicationError;
16
+ }
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApplicationErrorMetric = void 0;
4
+ const base_1 = require("../base/base");
5
+ const error_1 = require("../../validation/metrics/application/error");
6
+ const otel_1 = require("@interopio/otel");
7
+ class ApplicationErrorMetric extends base_1.MetricBase {
8
+ constructor(settings, meter, logger, generalSettings, instanceErrorHandler, defaultFilters) {
9
+ super(settings, meter, logger, generalSettings, defaultFilters);
10
+ this.meter = meter;
11
+ this.instanceErrorHandler = instanceErrorHandler;
12
+ this.validator = new error_1.ApplicationErrorMetricValidator();
13
+ this.validator.validate(this);
14
+ }
15
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
16
+ createMetricCore(name, baseSettings) {
17
+ return this.appErrorMetric = this.meter.createCounter(name, baseSettings);
18
+ }
19
+ subscribe() {
20
+ this.appErrorUn = otel_1.Container.errorless(() => this.instanceErrorHandler(this.instanceApplicationError.bind(this)));
21
+ return Promise.resolve();
22
+ }
23
+ destroyMetric() {
24
+ return Promise.resolve();
25
+ }
26
+ unsubscribe() {
27
+ otel_1.Container.errorless(() => { var _a; return (_a = this.appErrorUn) === null || _a === void 0 ? void 0 : _a.call(this); });
28
+ return Promise.resolve();
29
+ }
30
+ instanceApplicationError(args) {
31
+ var _a;
32
+ try {
33
+ this.validator.validateApplicationError(args);
34
+ this.logger.debug(`app error for application ${args.application} and metric ${this.settings.name} is being invoked`);
35
+ const data = this.getApplicationData(args.application);
36
+ if (((_a = this.getFilter(data)) === null || _a === void 0 ? void 0 : _a.enabled) === false) {
37
+ return;
38
+ }
39
+ this.appErrorMetric.add(1, this.prePublish(data));
40
+ this.logger.debug(`metric ${this.settings.name} sent 1 more for app ${data.application}`);
41
+ }
42
+ catch (error) {
43
+ const message = `error while executing handleAppError for metric from type: ${this.settings.type}`;
44
+ this.logger.warn(message, error);
45
+ }
46
+ }
47
+ }
48
+ exports.ApplicationErrorMetric = ApplicationErrorMetric;
49
+ //# sourceMappingURL=error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.js","sourceRoot":"","sources":["../../../src/metrics/application/error.ts"],"names":[],"mappings":";;;AACA,uCAA0C;AAC1C,sEAA6F;AAC7F,0CAA4C;AAE5C,MAAa,sBAAuB,SAAQ,iBAAU;IAKlD,YACI,QAAmC,EAC5B,KAAY,EACnB,MAAyB,EACzB,eAA2C,EACpC,oBAAqD,EAC5D,cAAiD;QAEjD,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;QANzD,UAAK,GAAL,KAAK,CAAO;QAGZ,yBAAoB,GAApB,oBAAoB,CAAiC;QAI5D,IAAI,CAAC,SAAS,GAAG,IAAI,uCAA+B,EAAE,CAAC;QACvD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,8DAA8D;IAC3C,gBAAgB,CAAC,IAAY,EAAE,YAAiB;QAC/D,OAAO,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAC9E,CAAC;IAEkB,SAAS;QACxB,IAAI,CAAC,UAAU,GAAG,gBAAS,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAEjH,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAEkB,aAAa;QAC5B,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAEkB,WAAW;QAC1B,gBAAS,CAAC,SAAS,CAAC,GAAG,EAAE,WAAC,OAAA,MAAA,IAAI,CAAC,UAAU,oDAAI,CAAA,EAAA,CAAC,CAAC;QAC/C,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAEO,wBAAwB,CAAC,IAAyC;;QACtE,IAAI;YACA,IAAI,CAAC,SAAS,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;YAE9C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,IAAI,CAAC,WAAW,eAAe,IAAI,CAAC,QAAQ,CAAC,IAAI,mBAAmB,CAAC,CAAC;YAErH,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACvD,IAAI,CAAA,MAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,0CAAE,OAAO,MAAK,KAAK,EAAE;gBACzC,OAAO;aACV;YACD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAQ,CAAC,CAAC;YAEzD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,QAAQ,CAAC,IAAI,wBAAwB,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;SAC7F;QAAC,OAAO,KAAK,EAAE;YACZ,MAAM,OAAO,GAAG,8DAA8D,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;SACpC;IACL,CAAC;CACJ;AAxDD,wDAwDC"}
@@ -0,0 +1,11 @@
1
+ import { type Meter, type ObservableResult } from "@opentelemetry/api";
2
+ import { ZeroOutClosedAppObservableGaugeMetricBase } from "../base/zeroOutClosedAppObservableGaugeMetricBase";
3
+ import { IOInsights } from "@interopio/otel/insights";
4
+ export declare class ApplicationMemoryMetric extends ZeroOutClosedAppObservableGaugeMetricBase {
5
+ perfProvider: IOInsights.PerformanceProvider;
6
+ private validator;
7
+ constructor(settings: IOInsights.MetricSettings, meter: Meter, logger: IOInsights.Logger, generalSettings: IOInsights.MetricsSettings, perfProvider: IOInsights.PerformanceProvider, defaultFilters?: IOInsights.MetricDefaultFilter[]);
8
+ protected subscribeCore(): Promise<void>;
9
+ protected observeCoreCore(result: ObservableResult<IOInsights.ApplicationMetricData>): Promise<IOInsights.AppMemory[]>;
10
+ protected unsubscribeCore(): Promise<void>;
11
+ }
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ApplicationMemoryMetric = void 0;
13
+ const perf_1 = require("../../validation/metrics/perf");
14
+ const validator_1 = require("../../validation/validator");
15
+ const zeroOutClosedAppObservableGaugeMetricBase_1 = require("../base/zeroOutClosedAppObservableGaugeMetricBase");
16
+ const otel_1 = require("@interopio/otel");
17
+ class ApplicationMemoryMetric extends zeroOutClosedAppObservableGaugeMetricBase_1.ZeroOutClosedAppObservableGaugeMetricBase {
18
+ constructor(settings, meter, logger, generalSettings, perfProvider, defaultFilters) {
19
+ super(settings, meter, logger, generalSettings, defaultFilters);
20
+ this.perfProvider = perfProvider;
21
+ this.validator = new perf_1.PerformanceProviderValidator();
22
+ this.validator.validate(this.perfProvider);
23
+ }
24
+ subscribeCore() { return Promise.resolve(); }
25
+ observeCoreCore(result) {
26
+ return __awaiter(this, void 0, void 0, function* () {
27
+ const appsMemory = yield otel_1.Container.errorlessAsync(() => this.perfProvider.getAppsMemory());
28
+ if (!validator_1.Validator.isNullOrUndefined(appsMemory)) {
29
+ this.validator.validateAppsMemory(appsMemory);
30
+ appsMemory.forEach((info) => {
31
+ var _a, _b;
32
+ // vnikolov todo: deal with the instance attribute
33
+ const data = Object.assign({ applicationInstance: info.instance }, this.getApplicationData(info.app));
34
+ if (((_a = this.getFilter(data)) === null || _a === void 0 ? void 0 : _a.enabled) === false) {
35
+ return;
36
+ }
37
+ result.observe((_b = info.memory) !== null && _b !== void 0 ? _b : 0, this.prePublish(data));
38
+ this.logger.debug(`metric ${this.settings.name} sent memory ${info.memory} for app ${data.application} and instance ${data.applicationInstance}`);
39
+ });
40
+ return appsMemory;
41
+ }
42
+ else {
43
+ return [];
44
+ }
45
+ });
46
+ }
47
+ unsubscribeCore() { return Promise.resolve(); }
48
+ }
49
+ exports.ApplicationMemoryMetric = ApplicationMemoryMetric;
50
+ //# sourceMappingURL=memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../../src/metrics/application/memory.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,wDAA6E;AAC7E,0DAAuD;AACvD,iHAA8G;AAC9G,0CAA4C;AAE5C,MAAa,uBAAwB,SAAQ,qFAAyC;IAGlF,YACI,QAAmC,EACnC,KAAY,EACZ,MAAyB,EACzB,eAA2C,EACpC,YAA4C,EACnD,cAAiD;QAEjD,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;QAHzD,iBAAY,GAAZ,YAAY,CAAgC;QAP/C,cAAS,GAAG,IAAI,mCAA4B,EAAE,CAAC;QAWnD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC/C,CAAC;IAEkB,aAAa,KAAoB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAEtD,eAAe,CAAC,MAA0D;;YAC/F,MAAM,UAAU,GAAG,MAAM,gBAAS,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC,CAAC;YAE3F,IAAI,CAAC,qBAAS,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE;gBAE1C,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,UAAW,CAAC,CAAC;gBAE9C,UAAsC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;;oBACrD,kDAAkD;oBAClD,MAAM,IAAI,mBAAK,mBAAmB,EAAE,IAAI,CAAC,QAAQ,IAAK,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAE,CAAC;oBAC1F,IAAI,CAAA,MAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,0CAAE,OAAO,MAAK,KAAK,EAAE;wBACzC,OAAO;qBACV;oBACD,MAAM,CAAC,OAAO,CAAC,MAAA,IAAI,CAAC,MAAM,mCAAI,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAQ,CAAC,CAAC;oBAC/D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,QAAQ,CAAC,IAAI,gBAAgB,IAAI,CAAC,MAAM,YAAY,IAAI,CAAC,WAAW,iBAAiB,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;gBACtJ,CAAC,CAAC,CAAC;gBACH,OAAO,UAAW,CAAC;aACtB;iBACI;gBACD,OAAO,EAAE,CAAC;aACb;QACL,CAAC;KAAA;IAEkB,eAAe,KAAoB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;CACpF;AAzCD,0DAyCC"}
@@ -0,0 +1,16 @@
1
+ import { type Counter, type Meter } from "@opentelemetry/api";
2
+ import { MetricBase } from "../base/base";
3
+ import { IOInsights } from "@interopio/otel/insights";
4
+ export declare class ApplicationStartedMetric extends MetricBase {
5
+ meter: Meter;
6
+ instanceStartedHandler: IOInsights.InstanceActionHandler;
7
+ private appStartedMetric;
8
+ private instanceStartedUn?;
9
+ private validator;
10
+ constructor(settings: IOInsights.MetricSettings, meter: Meter, logger: IOInsights.Logger, generalSettings: IOInsights.MetricsSettings, instanceStartedHandler: IOInsights.InstanceActionHandler, defaultFilters?: IOInsights.MetricDefaultFilter[]);
11
+ protected createMetricCore(name: string, baseSettings: any): Counter<IOInsights.ApplicationMetricData>;
12
+ protected subscribe(): Promise<void>;
13
+ protected destroyMetric(): Promise<void>;
14
+ protected unsubscribe(): Promise<void>;
15
+ private handleInstanceStarted;
16
+ }
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApplicationStartedMetric = void 0;
4
+ const base_1 = require("../base/base");
5
+ const started_1 = require("../../validation/metrics/application/started");
6
+ const otel_1 = require("@interopio/otel");
7
+ class ApplicationStartedMetric extends base_1.MetricBase {
8
+ constructor(settings, meter, logger, generalSettings, instanceStartedHandler, defaultFilters) {
9
+ super(settings, meter, logger, generalSettings, defaultFilters);
10
+ this.meter = meter;
11
+ this.instanceStartedHandler = instanceStartedHandler;
12
+ this.validator = new started_1.ApplicationStartedMetricValidator();
13
+ this.validator.validate(this);
14
+ }
15
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
16
+ createMetricCore(name, baseSettings) {
17
+ return this.appStartedMetric = this.meter.createCounter(name, baseSettings);
18
+ }
19
+ subscribe() {
20
+ this.instanceStartedUn = otel_1.Container.errorless(() => this.instanceStartedHandler(this.handleInstanceStarted.bind(this)));
21
+ return Promise.resolve();
22
+ }
23
+ destroyMetric() {
24
+ return Promise.resolve();
25
+ }
26
+ unsubscribe() {
27
+ otel_1.Container.errorless(() => { var _a; return (_a = this.instanceStartedUn) === null || _a === void 0 ? void 0 : _a.call(this); });
28
+ return Promise.resolve();
29
+ }
30
+ handleInstanceStarted(args) {
31
+ var _a;
32
+ try {
33
+ this.validator.validateInstanceStarted(args);
34
+ this.logger.debug(`instance started for application ${args.application} and metric ${this.settings.name} is being invoked`);
35
+ const data = this.getApplicationData(args.application);
36
+ if (((_a = this.getFilter(data)) === null || _a === void 0 ? void 0 : _a.enabled) === false) {
37
+ return;
38
+ }
39
+ this.appStartedMetric.add(1, this.prePublish(data));
40
+ this.logger.debug(`metric ${this.settings.name} sent 1 more for app ${data.application}`);
41
+ }
42
+ catch (error) {
43
+ const message = `error while executing handleInstanceStarted for metric from type: ${this.settings.type}`;
44
+ this.logger.warn(message, error);
45
+ }
46
+ }
47
+ }
48
+ exports.ApplicationStartedMetric = ApplicationStartedMetric;
49
+ //# sourceMappingURL=started.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"started.js","sourceRoot":"","sources":["../../../src/metrics/application/started.ts"],"names":[],"mappings":";;;AACA,uCAA0C;AAC1C,0EAAiG;AACjG,0CAA4C;AAG5C,MAAa,wBAAyB,SAAQ,iBAAU;IAKpD,YACI,QAAmC,EAC5B,KAAY,EACnB,MAAyB,EACzB,eAA2C,EACpC,sBAAwD,EAC/D,cAAiD;QAEjD,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;QANzD,UAAK,GAAL,KAAK,CAAO;QAGZ,2BAAsB,GAAtB,sBAAsB,CAAkC;QAI/D,IAAI,CAAC,SAAS,GAAG,IAAI,2CAAiC,EAAE,CAAC;QACzD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,8DAA8D;IAC3C,gBAAgB,CAAC,IAAY,EAAE,YAAiB;QAC/D,OAAO,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAChF,CAAC;IAEkB,SAAS;QACxB,IAAI,CAAC,iBAAiB,GAAG,gBAAS,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAEvH,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAEkB,aAAa;QAC5B,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAEkB,WAAW;QAC1B,gBAAS,CAAC,SAAS,CAAC,GAAG,EAAE,WAAC,OAAA,MAAA,IAAI,CAAC,iBAAiB,oDAAI,CAAA,EAAA,CAAC,CAAC;QACtD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAEO,qBAAqB,CAAC,IAA0C;;QACpE,IAAI;YACA,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;YAE7C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,IAAI,CAAC,WAAW,eAAe,IAAI,CAAC,QAAQ,CAAC,IAAI,mBAAmB,CAAC,CAAC;YAE5H,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACvD,IAAI,CAAA,MAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,0CAAE,OAAO,MAAK,KAAK,EAAE;gBACzC,OAAO;aACV;YACD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAQ,CAAC,CAAC;YAE3D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,QAAQ,CAAC,IAAI,wBAAwB,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;SAC7F;QAAC,OAAO,KAAK,EAAE;YACZ,MAAM,OAAO,GAAG,qEAAqE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC1G,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;SACpC;IACL,CAAC;CACJ;AAxDD,4DAwDC"}
@@ -0,0 +1,16 @@
1
+ import { type Gauge, type Histogram, type Meter } from "@opentelemetry/api";
2
+ import { MetricBase } from "../base/base";
3
+ import { IOInsights } from "@interopio/otel/insights";
4
+ export declare class ApplicationStartupMetric extends MetricBase {
5
+ meter: Meter;
6
+ instanceReadyHandler: IOInsights.InstanceReadyHandler;
7
+ private instanceReadyUn?;
8
+ private validator;
9
+ private appStartupMetric;
10
+ constructor(settings: IOInsights.MetricSettings, meter: Meter, logger: IOInsights.Logger, generalSettings: IOInsights.MetricsSettings, instanceReadyHandler: IOInsights.InstanceReadyHandler, defaultFilters?: IOInsights.MetricDefaultFilter[]);
11
+ protected createMetricCore(name: string, baseSettings: any): Histogram<IOInsights.ApplicationMetricData> | Gauge<IOInsights.ApplicationMetricData>;
12
+ protected subscribe(): Promise<void>;
13
+ protected unsubscribe(): Promise<void>;
14
+ protected destroyMetric(): Promise<void>;
15
+ private handleInstanceReady;
16
+ }
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApplicationStartupMetric = void 0;
4
+ const startupHistogram_1 = require("../../validation/metrics/application/startupHistogram");
5
+ const base_1 = require("../base/base");
6
+ const otel_1 = require("@interopio/otel");
7
+ class ApplicationStartupMetric extends base_1.MetricBase {
8
+ constructor(settings, meter, logger, generalSettings, instanceReadyHandler, defaultFilters) {
9
+ super(settings, meter, logger, generalSettings, defaultFilters);
10
+ this.meter = meter;
11
+ this.instanceReadyHandler = instanceReadyHandler;
12
+ this.validator = new startupHistogram_1.ApplicationStartupHistogramMetricValidator();
13
+ this.validator.validate(this);
14
+ }
15
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
16
+ createMetricCore(name, baseSettings) {
17
+ return this.appStartupMetric = this.createRecordingMetric(name, baseSettings, "gauge");
18
+ }
19
+ subscribe() {
20
+ this.instanceReadyUn = otel_1.Container.errorless(() => this.instanceReadyHandler(this.handleInstanceReady.bind(this)));
21
+ return Promise.resolve();
22
+ }
23
+ unsubscribe() {
24
+ otel_1.Container.errorless(() => { var _a; return (_a = this.instanceReadyUn) === null || _a === void 0 ? void 0 : _a.call(this); });
25
+ return Promise.resolve();
26
+ }
27
+ destroyMetric() {
28
+ return Promise.resolve();
29
+ }
30
+ handleInstanceReady(args) {
31
+ var _a;
32
+ try {
33
+ this.validator.validateInstanceReady(args);
34
+ this.logger.debug(`instance ready for application ${args.application} and metric ${this.settings.name} is being invoked`);
35
+ const startupTime = args.endTime.getTime() - args.startTime.getTime();
36
+ const data = Object.assign({ api: args.api }, this.getApplicationData(args.application));
37
+ if (((_a = this.getFilter(data)) === null || _a === void 0 ? void 0 : _a.enabled) === false) {
38
+ return;
39
+ }
40
+ this.appStartupMetric.record(startupTime, this.prePublish(data));
41
+ this.logger.debug(`start up time ${startupTime} has been added for metric ${this.settings.name}`);
42
+ }
43
+ catch (error) {
44
+ const message = `error while executing handleInstanceReady for metric from type: ${this.settings.type}`;
45
+ this.logger.warn(message, error);
46
+ }
47
+ }
48
+ }
49
+ exports.ApplicationStartupMetric = ApplicationStartupMetric;
50
+ //# sourceMappingURL=startup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"startup.js","sourceRoot":"","sources":["../../../src/metrics/application/startup.ts"],"names":[],"mappings":";;;AACA,4FAAmH;AACnH,uCAA0C;AAC1C,0CAA4C;AAG5C,MAAa,wBAAyB,SAAQ,iBAAU;IAKpD,YACI,QAAmC,EAC5B,KAAY,EACnB,MAAyB,EACzB,eAA2C,EACpC,oBAAqD,EAC5D,cAAiD;QAEjD,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;QANzD,UAAK,GAAL,KAAK,CAAO;QAGZ,yBAAoB,GAApB,oBAAoB,CAAiC;QAK5D,IAAI,CAAC,SAAS,GAAG,IAAI,6DAA0C,EAAE,CAAC;QAClE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,8DAA8D;IAC3C,gBAAgB,CAAC,IAAY,EAAE,YAAiB;QAC/D,OAAO,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;IAC3F,CAAC;IAEkB,SAAS;QACxB,IAAI,CAAC,eAAe,GAAG,gBAAS,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjH,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAEkB,WAAW;QAC1B,gBAAS,CAAC,SAAS,CAAC,GAAG,EAAE,WAAC,OAAA,MAAA,IAAI,CAAC,eAAe,oDAAI,CAAA,EAAA,CAAC,CAAC;QACpD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAEkB,aAAa;QAC5B,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAEO,mBAAmB,CAAC,IAAyC;;QACjE,IAAI;YACA,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;YAE3C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kCAAkC,IAAI,CAAC,WAAW,eAAe,IAAI,CAAC,QAAQ,CAAC,IAAI,mBAAmB,CAAC,CAAC;YAE1H,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YACtE,MAAM,IAAI,mBAAK,GAAG,EAAE,IAAI,CAAC,GAAG,IAAK,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAE,CAAC;YAC7E,IAAI,CAAA,MAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,0CAAE,OAAO,MAAK,KAAK,EAAE;gBACzC,OAAO;aACV;YACD,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAQ,CAAC,CAAC;YAExE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,WAAW,8BAA8B,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;SACrG;QAAC,OAAO,KAAK,EAAE;YACZ,MAAM,OAAO,GAAG,mEAAmE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACxG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;SACpC;IACL,CAAC;CACJ;AAzDD,4DAyDC"}
@@ -0,0 +1,16 @@
1
+ import { type Counter, type Meter } from "@opentelemetry/api";
2
+ import { MetricBase } from "../base/base";
3
+ import { IOInsights } from "@interopio/otel/insights";
4
+ export declare class ApplicationStoppedMetric extends MetricBase {
5
+ meter: Meter;
6
+ instanceStoppedHandler: IOInsights.InstanceActionHandler;
7
+ private appStoppedMetric;
8
+ private instanceStoppedUn?;
9
+ private validator;
10
+ constructor(settings: IOInsights.MetricSettings, meter: Meter, logger: IOInsights.Logger, generalSettings: IOInsights.MetricsSettings, instanceStoppedHandler: IOInsights.InstanceActionHandler, defaultFilters?: IOInsights.MetricDefaultFilter[]);
11
+ protected createMetricCore(name: string, baseSettings: any): Counter<IOInsights.ApplicationMetricData>;
12
+ protected subscribe(): Promise<void>;
13
+ protected unsubscribe(): Promise<void>;
14
+ protected destroyMetric(): Promise<void>;
15
+ private handleInstanceStopped;
16
+ }
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApplicationStoppedMetric = void 0;
4
+ const base_1 = require("../base/base");
5
+ const stopped_1 = require("../../validation/metrics/application/stopped");
6
+ const otel_1 = require("@interopio/otel");
7
+ class ApplicationStoppedMetric extends base_1.MetricBase {
8
+ constructor(settings, meter, logger, generalSettings, instanceStoppedHandler, defaultFilters) {
9
+ super(settings, meter, logger, generalSettings, defaultFilters);
10
+ this.meter = meter;
11
+ this.instanceStoppedHandler = instanceStoppedHandler;
12
+ this.validator = new stopped_1.ApplicationStoppedMetricValidator();
13
+ this.validator.validate(this);
14
+ }
15
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
16
+ createMetricCore(name, baseSettings) {
17
+ return this.appStoppedMetric = this.meter.createCounter(name, baseSettings);
18
+ }
19
+ subscribe() {
20
+ this.instanceStoppedUn = otel_1.Container.errorless(() => this.instanceStoppedHandler(this.handleInstanceStopped.bind(this)));
21
+ return Promise.resolve();
22
+ }
23
+ unsubscribe() {
24
+ otel_1.Container.errorless(() => { var _a; return (_a = this.instanceStoppedUn) === null || _a === void 0 ? void 0 : _a.call(this); });
25
+ return Promise.resolve();
26
+ }
27
+ destroyMetric() {
28
+ return Promise.resolve();
29
+ }
30
+ handleInstanceStopped(args) {
31
+ var _a;
32
+ try {
33
+ this.validator.validateInstanceStopped(args);
34
+ this.logger.debug(`instance stopped for application ${args.application} and metric ${this.settings.name} is being invoked`);
35
+ const data = this.getApplicationData(args.application);
36
+ if (((_a = this.getFilter(data)) === null || _a === void 0 ? void 0 : _a.enabled) === false) {
37
+ return;
38
+ }
39
+ this.appStoppedMetric.add(1, this.prePublish(data));
40
+ this.logger.debug(`metric ${this.settings.name} sent 1 more for app ${data.application}`);
41
+ }
42
+ catch (error) {
43
+ const message = `error while executing handleInstanceStopped for metric from type: ${this.settings.type}`;
44
+ this.logger.warn(message, error);
45
+ }
46
+ }
47
+ }
48
+ exports.ApplicationStoppedMetric = ApplicationStoppedMetric;
49
+ //# sourceMappingURL=stopped.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stopped.js","sourceRoot":"","sources":["../../../src/metrics/application/stopped.ts"],"names":[],"mappings":";;;AACA,uCAA0C;AAC1C,0EAAiG;AACjG,0CAA4C;AAG5C,MAAa,wBAAyB,SAAQ,iBAAU;IAKpD,YACI,QAAmC,EAC5B,KAAY,EACnB,MAAyB,EACzB,eAA2C,EACpC,sBAAwD,EAC/D,cAAiD;QAEjD,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;QANzD,UAAK,GAAL,KAAK,CAAO;QAGZ,2BAAsB,GAAtB,sBAAsB,CAAkC;QAI/D,IAAI,CAAC,SAAS,GAAG,IAAI,2CAAiC,EAAE,CAAC;QACzD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,8DAA8D;IAC3C,gBAAgB,CAAC,IAAY,EAAE,YAAiB;QAC/D,OAAO,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAChF,CAAC;IAEkB,SAAS;QACxB,IAAI,CAAC,iBAAiB,GAAG,gBAAS,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAEvH,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAEkB,WAAW;QAC1B,gBAAS,CAAC,SAAS,CAAC,GAAG,EAAE,WAAC,OAAA,MAAA,IAAI,CAAC,iBAAiB,oDAAI,CAAA,EAAA,CAAC,CAAC;QAEtD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAEkB,aAAa;QAC5B,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;IAEO,qBAAqB,CAAC,IAA0C;;QACpE,IAAI;YACA,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;YAE7C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,IAAI,CAAC,WAAW,eAAe,IAAI,CAAC,QAAQ,CAAC,IAAI,mBAAmB,CAAC,CAAC;YAE5H,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACvD,IAAI,CAAA,MAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,0CAAE,OAAO,MAAK,KAAK,EAAE;gBACzC,OAAO;aACV;YACD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAQ,CAAC,CAAC;YAE3D,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,QAAQ,CAAC,IAAI,wBAAwB,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;SAC7F;QAAC,OAAO,KAAK,EAAE;YACZ,MAAM,OAAO,GAAG,qEAAqE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC1G,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;SACpC;IACL,CAAC;CACJ;AAzDD,4DAyDC"}
@@ -0,0 +1,29 @@
1
+ import { type Attributes, type Gauge, type Histogram, type Meter } from "@opentelemetry/api";
2
+ import { IOInsights } from "@interopio/otel/insights";
3
+ export declare abstract class MetricBase implements IOInsights.Metric {
4
+ settings: IOInsights.MetricSettings;
5
+ meter: Meter;
6
+ logger: IOInsights.Logger;
7
+ private generalSettings;
8
+ started: boolean;
9
+ protected metricAny: any;
10
+ filters?: IOInsights.MetricFilter[];
11
+ defaultFilters?: IOInsights.MetricDefaultFilter[];
12
+ constructor(settings: IOInsights.MetricSettings, meter: Meter, logger: IOInsights.Logger, generalSettings: IOInsights.MetricsSettings, defaultFilters: IOInsights.MetricDefaultFilter[] | undefined);
13
+ protected getFilter(args: any): IOInsights.MetricFilter;
14
+ start(): Promise<void>;
15
+ stop(): Promise<void>;
16
+ protected createMetric(): Promise<void>;
17
+ protected createRecordingMetric<T extends Attributes>(name: string, baseSettings: any, defaultBaseMetricType: "histogram" | "gauge"): Histogram<T> | Gauge<T>;
18
+ protected abstract createMetricCore(name: string, baseSettings: any): any;
19
+ protected subscribe(): Promise<void>;
20
+ protected unsubscribe(): Promise<void>;
21
+ protected destroyMetric(): Promise<void>;
22
+ protected getData(): IOInsights.MetricData;
23
+ prePublish(data: IOInsights.MetricData): IOInsights.MetricData;
24
+ private static simpleHash;
25
+ protected getApplicationData(application: string): IOInsights.ApplicationMetricData;
26
+ protected getLayoutData(layout: string): IOInsights.LayoutMetricData;
27
+ protected createUniqueName(length: number): string;
28
+ protected matchStringOrRegex(match: string, matchWith: string): boolean;
29
+ }