@interopio/otel 0.0.13 → 0.0.16
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/dist/builder.d.ts +1 -2
- package/dist/builder.js +17 -15
- package/dist/builder.js.map +1 -1
- package/dist/container.d.ts +2 -1
- package/dist/container.js +3 -6
- package/dist/container.js.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.js +17 -1
- package/dist/index.js.map +1 -1
- package/dist/logger/log4jsWrapper.d.ts +7 -1
- package/dist/logger/log4jsWrapper.js +7 -1
- package/dist/logger/log4jsWrapper.js.map +1 -1
- package/dist/metrics/builder.js +6 -2
- package/dist/metrics/builder.js.map +1 -1
- package/dist/metrics/factory/builder.d.ts +1 -0
- package/dist/metrics/factory/builder.js +10 -0
- package/dist/metrics/factory/builder.js.map +1 -1
- package/dist/metrics/metrics/application/duration.d.ts +23 -3
- package/dist/metrics/metrics/application/duration.js +83 -2
- package/dist/metrics/metrics/application/duration.js.map +1 -1
- package/dist/metrics/metrics/application/durationSoft.d.ts +4 -0
- package/dist/metrics/metrics/application/durationSoft.js +34 -0
- package/dist/metrics/metrics/application/durationSoft.js.map +1 -0
- package/dist/metrics/metrics/base/types.d.ts +1 -1
- package/dist/traces/builder.d.ts +11 -1
- package/dist/traces/builder.js +27 -6
- package/dist/traces/builder.js.map +1 -1
- package/dist/traces/ioInsightsSampler.d.ts +3 -2
- package/dist/traces/ioInsightsSampler.js +14 -8
- package/dist/traces/ioInsightsSampler.js.map +1 -1
- package/dist/traces/manager.d.ts +9 -7
- package/dist/traces/manager.js +113 -63
- package/dist/traces/manager.js.map +1 -1
- package/dist/traces/nullTracesManager.d.ts +8 -3
- package/dist/traces/nullTracesManager.js +47 -12
- package/dist/traces/nullTracesManager.js.map +1 -1
- package/dist/traces/nullTracingState.d.ts +21 -0
- package/dist/traces/nullTracingState.js +57 -0
- package/dist/traces/nullTracingState.js.map +1 -0
- package/dist/traces/traces.d.ts +21 -0
- package/dist/traces/traces.js +65 -0
- package/dist/traces/traces.js.map +1 -0
- package/dist/traces/tracingState.d.ts +8 -8
- package/dist/traces/tracingState.js +18 -31
- package/dist/traces/tracingState.js.map +1 -1
- package/dist/traces/types.d.ts +238 -26
- package/dist/traces/types.js.map +1 -1
- package/dist/traces/utils/index.d.ts +16 -8
- package/dist/traces/utils/index.js +123 -35
- package/dist/traces/utils/index.js.map +1 -1
- package/dist/types.d.ts +41 -3
- package/dist/validation/metrics/application/duration.d.ts +2 -2
- package/dist/validation/metrics/application/duration.js.map +1 -1
- package/dist/validation/traces/filter.js +5 -3
- package/dist/validation/traces/filter.js.map +1 -1
- package/dist/validation/traces/withSpan.d.ts +1 -1
- package/dist/validation/traces/withSpan.js.map +1 -1
- package/package.json +5 -4
- package/dist/metrics/metrics/application/durationBase.d.ts +0 -22
- package/dist/metrics/metrics/application/durationBase.js +0 -97
- package/dist/metrics/metrics/application/durationBase.js.map +0 -1
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.isFunctionType = exports.replacePlaceHolders = exports.saveDataInAttribute = exports.setTracerProvider = exports.isFilterMatch = exports.isSpanEnabled = void 0;
|
|
3
|
+
exports.extractTracingContextFromArgs = exports.deep_value = exports.isFunctionType = exports.replacePlaceHolders = exports.saveDataInAttribute = exports.setTracerProvider = exports.isFilterMatch = exports.isSpanEnabled = void 0;
|
|
4
4
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
5
5
|
const exporter_trace_otlp_http_1 = require("@opentelemetry/exporter-trace-otlp-http");
|
|
6
6
|
const sdk_trace_base_1 = require("@opentelemetry/sdk-trace-base");
|
|
7
7
|
const resources_1 = require("@opentelemetry/resources");
|
|
8
8
|
const filter_1 = require("../../validation/traces/filter");
|
|
9
9
|
const attributeData_1 = require("../../validation/traces/attributeData");
|
|
10
|
+
const ioInsightsSampler_1 = require("../ioInsightsSampler");
|
|
10
11
|
const isSpanEnabled = (match, defaultMatch) => {
|
|
11
12
|
let enabled;
|
|
12
13
|
if (match) {
|
|
@@ -21,7 +22,7 @@ const isSpanEnabled = (match, defaultMatch) => {
|
|
|
21
22
|
enabled = defaultMatch.enabled;
|
|
22
23
|
}
|
|
23
24
|
else {
|
|
24
|
-
enabled =
|
|
25
|
+
enabled = true;
|
|
25
26
|
}
|
|
26
27
|
return enabled;
|
|
27
28
|
};
|
|
@@ -32,46 +33,78 @@ const isFilterMatch = (filter, context, source) => {
|
|
|
32
33
|
const validator = new filter_1.TracesFilterValidator();
|
|
33
34
|
validator.validate(filter);
|
|
34
35
|
}
|
|
35
|
-
if (filter.source &&
|
|
36
|
+
if (filter.source && filter.source.startsWith("#")) {
|
|
37
|
+
if (!new RegExp(filter.source.substring(1), "i").test(source)) {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
else if (filter.source && !source.startsWith(filter.source + ".") && source !== filter.source) {
|
|
36
42
|
return false;
|
|
37
43
|
}
|
|
38
44
|
if (!filter.context) {
|
|
39
45
|
return true;
|
|
40
46
|
}
|
|
41
47
|
for (const key of Object.keys(filter.context)) {
|
|
42
|
-
|
|
43
|
-
|
|
48
|
+
const required = filter.context[key];
|
|
49
|
+
const provided = (0, exports.deep_value)(context, key);
|
|
50
|
+
if (typeof required === "string" && required[0] === "#") {
|
|
51
|
+
if (provided === null ||
|
|
52
|
+
provided === undefined ||
|
|
53
|
+
!new RegExp(required.substring(1), "i").test(provided + "")) {
|
|
54
|
+
isMatch = false;
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
if (required !== provided) {
|
|
60
|
+
isMatch = false;
|
|
61
|
+
}
|
|
44
62
|
break;
|
|
45
63
|
}
|
|
46
64
|
}
|
|
47
65
|
return isMatch;
|
|
48
66
|
};
|
|
49
67
|
exports.isFilterMatch = isFilterMatch;
|
|
50
|
-
const setTracerProvider = (
|
|
51
|
-
if (!
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
68
|
+
const setTracerProvider = (tracerProvider, sampler, spanProcessors, spanExporters, providerRegistrationSettings, contextGetter, logger, settings) => {
|
|
69
|
+
if (!tracerProvider && !settings) {
|
|
70
|
+
throw new Error("Required arguments not provided");
|
|
71
|
+
}
|
|
72
|
+
if (!tracerProvider) {
|
|
73
|
+
const defaultSampler = new sdk_trace_base_1.ParentBasedSampler({
|
|
74
|
+
root: new ioInsightsSampler_1.ioInsightsSampler((settings === null || settings === void 0 ? void 0 : settings.sampling) || [], settings === null || settings === void 0 ? void 0 : settings.default, contextGetter, logger),
|
|
75
|
+
});
|
|
76
|
+
const btProvider = (tracerProvider = new sdk_trace_base_1.BasicTracerProvider({
|
|
77
|
+
sampler: typeof sampler === "function" ? sampler(defaultSampler) : defaultSampler,
|
|
78
|
+
resource: resources_1.Resource.default().merge(new resources_1.Resource({
|
|
58
79
|
"service.name": `${settings === null || settings === void 0 ? void 0 : settings.serviceName}`,
|
|
59
|
-
|
|
80
|
+
"service.instance.id": `${settings === null || settings === void 0 ? void 0 : settings.serviceId}`,
|
|
81
|
+
"service.version": `${settings === null || settings === void 0 ? void 0 : settings.serviceVersion}`,
|
|
82
|
+
"user.id": `${settings === null || settings === void 0 ? void 0 : settings.userId}`,
|
|
83
|
+
})),
|
|
60
84
|
}));
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
85
|
+
if (spanProcessors) {
|
|
86
|
+
for (const spanProcessor of spanProcessors) {
|
|
87
|
+
btProvider.addSpanProcessor(spanProcessor);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
if (spanExporters) {
|
|
91
|
+
for (const spanExporter of spanExporters) {
|
|
92
|
+
btProvider.addSpanProcessor(new sdk_trace_base_1.BatchSpanProcessor(spanExporter));
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
if (settings === null || settings === void 0 ? void 0 : settings.url) {
|
|
96
|
+
btProvider.addSpanProcessor(new sdk_trace_base_1.BatchSpanProcessor(new exporter_trace_otlp_http_1.OTLPTraceExporter(Object.assign(Object.assign({}, settings.otlpExporterConfig), {
|
|
67
97
|
// url: "https://jaeger-otlp-http.interop.io/v1/traces",
|
|
68
98
|
// url: "http://localhost:4318/v1/traces",
|
|
69
|
-
url: settings
|
|
70
|
-
|
|
71
|
-
|
|
99
|
+
url: settings.url }))));
|
|
100
|
+
}
|
|
101
|
+
if (console) {
|
|
102
|
+
btProvider.addSpanProcessor(new sdk_trace_base_1.BatchSpanProcessor(new sdk_trace_base_1.ConsoleSpanExporter()));
|
|
103
|
+
}
|
|
72
104
|
}
|
|
73
|
-
if
|
|
74
|
-
|
|
105
|
+
// if client has already registered a TracerProvider, this is a no-op
|
|
106
|
+
if (tracerProvider.register && providerRegistrationSettings) {
|
|
107
|
+
tracerProvider.register(providerRegistrationSettings);
|
|
75
108
|
}
|
|
76
109
|
};
|
|
77
110
|
exports.setTracerProvider = setTracerProvider;
|
|
@@ -85,26 +118,54 @@ const isAttributeArray = (value) => {
|
|
|
85
118
|
typeof item === "number" ||
|
|
86
119
|
typeof item === "boolean");
|
|
87
120
|
};
|
|
121
|
+
// TODO vnikolov: test this
|
|
88
122
|
const saveDataInAttribute = (data, otelSpan) => {
|
|
89
123
|
const validator = new attributeData_1.TracesAttributeDataValidator();
|
|
90
124
|
validator.validate(data);
|
|
91
125
|
for (const [key, value] of Object.entries(data)) {
|
|
92
|
-
const
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
otelSpan.setAttribute(key, value);
|
|
96
|
-
}
|
|
97
|
-
else if (isObject) {
|
|
98
|
-
otelSpan.setAttribute(key, JSON.stringify(value));
|
|
126
|
+
const otelValues = getOTELData(key, value, 0);
|
|
127
|
+
for (const [otelKey, otelValue] of otelValues) {
|
|
128
|
+
otelSpan.setAttribute(otelKey, otelValue);
|
|
99
129
|
}
|
|
100
|
-
// vnikolov todo: what about symbol, bigint?
|
|
101
130
|
}
|
|
102
131
|
};
|
|
103
132
|
exports.saveDataInAttribute = saveDataInAttribute;
|
|
133
|
+
const getOTELData = (key, value, depth) => {
|
|
134
|
+
depth += 1;
|
|
135
|
+
if (depth > 10) {
|
|
136
|
+
return [[key, "<depth exceeded>"]];
|
|
137
|
+
}
|
|
138
|
+
const isObject = Boolean(value && typeof value === "object");
|
|
139
|
+
const isValidPrimitiveValue = typeof value === "number" || typeof value === "string" || typeof value === "boolean";
|
|
140
|
+
if (isValidPrimitiveValue) {
|
|
141
|
+
return [[key, value]];
|
|
142
|
+
}
|
|
143
|
+
if (isAttributeArray(value)) {
|
|
144
|
+
return [[key, value]].concat(flatten(key, value, depth));
|
|
145
|
+
}
|
|
146
|
+
else if (isObject) {
|
|
147
|
+
return flatten(key, value, depth);
|
|
148
|
+
}
|
|
149
|
+
else if (value) {
|
|
150
|
+
return [[key, value + ""]];
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
return [];
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
const flatten = (key, obj, depth) => {
|
|
157
|
+
const toReturn = [];
|
|
158
|
+
for (const [key2, val2] of Object.entries(obj)) {
|
|
159
|
+
for (const [key3, val3] of getOTELData(key2, val2, depth)) {
|
|
160
|
+
toReturn.push([key + "." + key3, val3]);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
return toReturn;
|
|
164
|
+
};
|
|
104
165
|
const replacePlaceHolders = (settings, context) => {
|
|
105
|
-
const regex = /
|
|
166
|
+
const regex = /[$][a-zA-Z0-9]+/g;
|
|
106
167
|
const toParse = JSON.stringify(settings).replace(regex, (m) => {
|
|
107
|
-
const key = m.replace(
|
|
168
|
+
const key = m.replace(/^[$]/, "");
|
|
108
169
|
const dollarVar = context[key];
|
|
109
170
|
if (dollarVar !== undefined) {
|
|
110
171
|
return JSON.stringify(dollarVar).replace(/^"/, "").replace(/"$/, "");
|
|
@@ -116,4 +177,31 @@ const replacePlaceHolders = (settings, context) => {
|
|
|
116
177
|
exports.replacePlaceHolders = replacePlaceHolders;
|
|
117
178
|
const isFunctionType = (variable) => typeof variable === "function";
|
|
118
179
|
exports.isFunctionType = isFunctionType;
|
|
180
|
+
const deep_value = function (obj, path) {
|
|
181
|
+
// eslint-disable-next-line no-var
|
|
182
|
+
if (!path) {
|
|
183
|
+
return null;
|
|
184
|
+
}
|
|
185
|
+
;
|
|
186
|
+
for (var i = 0, path = path.split("."), len = path.length; i < len; i++) {
|
|
187
|
+
if (!obj)
|
|
188
|
+
return obj;
|
|
189
|
+
obj = obj[path[i]];
|
|
190
|
+
}
|
|
191
|
+
return obj;
|
|
192
|
+
};
|
|
193
|
+
exports.deep_value = deep_value;
|
|
194
|
+
// https://stackoverflow.com/a/8817473
|
|
195
|
+
const extractTracingContextFromArgs = (template, args) => {
|
|
196
|
+
const tracingContext = {};
|
|
197
|
+
Object.keys(template.argMapping).forEach((keyOrPath) => {
|
|
198
|
+
const tracingContextKey = template.argMapping[keyOrPath];
|
|
199
|
+
tracingContext[tracingContextKey] = (0, exports.deep_value)(args, keyOrPath);
|
|
200
|
+
});
|
|
201
|
+
return tracingContext;
|
|
202
|
+
};
|
|
203
|
+
exports.extractTracingContextFromArgs = extractTracingContextFromArgs;
|
|
204
|
+
// { argMapping: { 0: "method", "1.instance": "instance", "3": "cow" }}
|
|
205
|
+
// raise("TestMethod", {instance: "123"}, "boo", 999)
|
|
206
|
+
// withSpan("...", { method: "TestMethod", "instance": "123", cow: 999 })
|
|
119
207
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/traces/utils/index.ts"],"names":[],"mappings":";;;AAAA,uDAAuD;AACvD,sFAA4E;AAC5E,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/traces/utils/index.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -14,7 +14,45 @@ export interface Manager<TSettings> {
|
|
|
14
14
|
stop(): Promise<void>;
|
|
15
15
|
}
|
|
16
16
|
export interface Settings {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
/**
|
|
18
|
+
* Whether library is enabled.
|
|
19
|
+
* If disabled, API is still usable, but methods are no-ops.
|
|
20
|
+
*/
|
|
21
|
+
enabled: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* If failure to initialize library will throw upstream error.
|
|
24
|
+
*/
|
|
25
|
+
failOnInitError?: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* If provided, this value will be added to the span attributes
|
|
28
|
+
* and to the span filtering context (see 'filters').
|
|
29
|
+
*/
|
|
30
|
+
platformVersion?: string;
|
|
31
|
+
/**
|
|
32
|
+
* If an OTEL service object (e.g. TraceProvider) isn't provided to the library,
|
|
33
|
+
* it will initialize its own, with this provided service.name
|
|
34
|
+
* attribute.
|
|
35
|
+
*/
|
|
36
|
+
serviceName?: string;
|
|
37
|
+
/**
|
|
38
|
+
* If an OTEL service object (e.g. TraceProvider) isn't provided to the library,
|
|
39
|
+
* it will initialize its own, with this provided service.instance.id
|
|
40
|
+
* attribute.
|
|
41
|
+
*/
|
|
42
|
+
serviceId?: string;
|
|
43
|
+
/**
|
|
44
|
+
* If an OTEL service object (e.g. TraceProvider) isn't provided to the library,
|
|
45
|
+
* it will initialize its own, with this provided service.version
|
|
46
|
+
* attribute.
|
|
47
|
+
*/
|
|
48
|
+
serviceVersion?: string;
|
|
49
|
+
/**
|
|
50
|
+
* If an OTEL service object (e.g. TraceProvider) isn't provided to the library,
|
|
51
|
+
* it will initialize its own, with this provided user.id
|
|
52
|
+
* attribute.
|
|
53
|
+
*/
|
|
54
|
+
userId?: string;
|
|
55
|
+
traces?: TracesSettings;
|
|
56
|
+
metrics?: MetricsSettings;
|
|
57
|
+
logs?: LogsSettings;
|
|
20
58
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ApplicationDurationMetric } from "../../../metrics/metrics/application/duration";
|
|
2
2
|
import { InstanceFocusedHandlerArgs } from "../../../metrics/dependencies/types";
|
|
3
3
|
export declare class ApplicationDurationMetricValidator {
|
|
4
|
-
validate(metric:
|
|
4
|
+
validate(metric: ApplicationDurationMetric): void;
|
|
5
5
|
validateFocusChanged(args: InstanceFocusedHandlerArgs): void;
|
|
6
6
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"duration.js","sourceRoot":"","sources":["../../../../src/validation/metrics/application/duration.ts"],"names":[],"mappings":";;;AAEA,+CAA4C;AAE5C,MAAa,kCAAkC;IACpC,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"duration.js","sourceRoot":"","sources":["../../../../src/validation/metrics/application/duration.ts"],"names":[],"mappings":";;;AAEA,+CAA4C;AAE5C,MAAa,kCAAkC;IACpC,QAAQ,CAAC,MAAiC;QAC7C,qBAAS,CAAC,sBAAsB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACnD,qBAAS,CAAC,sBAAsB,CAAC,MAAM,CAAC,oBAAoB,EAAE,sBAAsB,CAAC,CAAC;IAC1F,CAAC;IAEM,oBAAoB,CAAC,IAAgC;QACxD,qBAAS,CAAC,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC/C,qBAAS,CAAC,sBAAsB,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;QAClE,qBAAS,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAC9D,CAAC;CACJ;AAXD,gFAWC"}
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.TracesFilterValidator = void 0;
|
|
4
|
-
const validator_1 = require("../validator");
|
|
5
4
|
class TracesFilterValidator {
|
|
6
5
|
validate(filter) {
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
if (!filter.source && (!filter.context || !Object.keys(filter.context).length)) {
|
|
7
|
+
throw new Error("At least one of source / context need to be specified.");
|
|
8
|
+
}
|
|
9
|
+
// Validator.throwIfNullOrUndefined(filter.source, "source");
|
|
10
|
+
// Validator.throwIfNullOrUndefined(filter.level, "level");
|
|
9
11
|
}
|
|
10
12
|
}
|
|
11
13
|
exports.TracesFilterValidator = TracesFilterValidator;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../src/validation/traces/filter.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"filter.js","sourceRoot":"","sources":["../../../src/validation/traces/filter.ts"],"names":[],"mappings":";;;AAGA,MAAa,qBAAqB;IACzB,QAAQ,CAAC,MAAc;QAC5B,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,EAAE;YAC9E,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;SAC3E;QACD,6DAA6D;QAC7D,2DAA2D;IAC7D,CAAC;CACF;AARD,sDAQC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { PropagationInfo, PropagationInfoCarrier, TracingContext, WithSpanCallback } from "../../traces/types";
|
|
2
2
|
export declare class TracesWithSpanValidator {
|
|
3
|
-
validate(source: string, tracingContextOrCallback: TracingContext | WithSpanCallback
|
|
3
|
+
validate<T>(source: string, tracingContextOrCallback: TracingContext | WithSpanCallback<T>, propagationInfoOrCallback?: PropagationInfo | PropagationInfoCarrier | WithSpanCallback<T>, callback?: WithSpanCallback<T>): void;
|
|
4
4
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withSpan.js","sourceRoot":"","sources":["../../../src/validation/traces/withSpan.ts"],"names":[],"mappings":";;;AAMA,8CAAoD;AAEpD,MAAa,uBAAuB;IAC3B,QAAQ,CACb,MAAc,EACd,
|
|
1
|
+
{"version":3,"file":"withSpan.js","sourceRoot":"","sources":["../../../src/validation/traces/withSpan.ts"],"names":[],"mappings":";;;AAMA,8CAAoD;AAEpD,MAAa,uBAAuB;IAC3B,QAAQ,CACb,MAAc,EACd,wBAA8D,EAC9D,yBAA0F,EAC1F,QAA8B;QAE9B,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;SACzF;QACD,IACE,CAAC,QAAQ;YACT,CAAC,IAAA,sBAAc,EAAC,wBAAwB,CAAC;YACzC,CAAC,IAAA,sBAAc,EAAC,yBAAyB,CAAC,EAC1C;YACA,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;SAC7F;IACH,CAAC;CACF;AAlBD,0DAkBC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@interopio/otel",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.16",
|
|
4
4
|
"description": "otel library",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -28,7 +28,8 @@
|
|
|
28
28
|
"@opentelemetry/api": "^1.7.0",
|
|
29
29
|
"@opentelemetry/exporter-metrics-otlp-http": "^0.48.0",
|
|
30
30
|
"@opentelemetry/exporter-trace-otlp-http": "^0.53.0",
|
|
31
|
-
"@opentelemetry/sdk-metrics": "^1.21.0"
|
|
31
|
+
"@opentelemetry/sdk-metrics": "^1.21.0",
|
|
32
|
+
"@opentelemetry/sdk-trace-base": "^1.26.0"
|
|
32
33
|
},
|
|
33
34
|
"devDependencies": {
|
|
34
35
|
"@types/chai": "^4.2.14",
|
|
@@ -38,9 +39,9 @@
|
|
|
38
39
|
"@typescript-eslint/parser": "^7.3.1",
|
|
39
40
|
"chai": "^4.3.0",
|
|
40
41
|
"eslint": "^8.57.0",
|
|
42
|
+
"log4js": "^6.9.1",
|
|
41
43
|
"mocha": "^10.2.0",
|
|
42
44
|
"rimraf": "^5.0.5",
|
|
43
|
-
"typescript": "^4.2.4"
|
|
44
|
-
"log4js": "^6.9.1"
|
|
45
|
+
"typescript": "^4.2.4"
|
|
45
46
|
}
|
|
46
47
|
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { Meter } from "@opentelemetry/api";
|
|
2
|
-
import { InternalMetricSettings, ApplicationMetricData } from "../base/types";
|
|
3
|
-
import { ObservableMetricBase } from "../base/observable";
|
|
4
|
-
import { Logger } from "../../../logger/types";
|
|
5
|
-
import { InstanceFocusedHandler } from "../../dependencies/types";
|
|
6
|
-
export declare abstract class ApplicationDurationMetricBase extends ObservableMetricBase<ApplicationMetricData> {
|
|
7
|
-
instanceFocusHandler: InstanceFocusedHandler;
|
|
8
|
-
private focusedTimes;
|
|
9
|
-
private currentFocusedApp?;
|
|
10
|
-
private unInstanceFocusHandler;
|
|
11
|
-
private validator;
|
|
12
|
-
constructor(settings: InternalMetricSettings, meter: Meter, logger: Logger, instanceFocusHandler: InstanceFocusedHandler);
|
|
13
|
-
protected subscribeCore(): Promise<void>;
|
|
14
|
-
protected observeCore(): Promise<void>;
|
|
15
|
-
protected unsubscribeCore(): Promise<void>;
|
|
16
|
-
protected abstract sendMetric(focusedPeriods: number[], data: ApplicationMetricData): void;
|
|
17
|
-
private handleFocusChanged;
|
|
18
|
-
private handleFocusChangedCore;
|
|
19
|
-
private handleGotFocus;
|
|
20
|
-
private handleLostFocus;
|
|
21
|
-
private addFocusLostEventCore;
|
|
22
|
-
}
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ApplicationDurationMetricBase = 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
|
-
class ApplicationDurationMetricBase extends observable_1.ObservableMetricBase {
|
|
8
|
-
constructor(settings, meter, logger, instanceFocusHandler) {
|
|
9
|
-
super(settings, meter, logger);
|
|
10
|
-
this.instanceFocusHandler = instanceFocusHandler;
|
|
11
|
-
// application -> focused times for a given period
|
|
12
|
-
this.focusedTimes = new Map();
|
|
13
|
-
this.validator = new duration_1.ApplicationDurationMetricValidator();
|
|
14
|
-
this.validator.validate(this);
|
|
15
|
-
}
|
|
16
|
-
subscribeCore() {
|
|
17
|
-
this.unInstanceFocusHandler = this.instanceFocusHandler(this.handleFocusChanged.bind(this));
|
|
18
|
-
return Promise.resolve();
|
|
19
|
-
}
|
|
20
|
-
observeCore() {
|
|
21
|
-
const hasFocusedApp = this.currentFocusedApp !== undefined;
|
|
22
|
-
const currentFocusedApp = hasFocusedApp ? this.currentFocusedApp.name : undefined;
|
|
23
|
-
if (hasFocusedApp) {
|
|
24
|
-
this.handleFocusChanged({ application: currentFocusedApp, focused: false });
|
|
25
|
-
}
|
|
26
|
-
this.focusedTimes.forEach((focusedPeriods, application) => {
|
|
27
|
-
const data = this.getApplicationData(application);
|
|
28
|
-
this.sendMetric(focusedPeriods, data);
|
|
29
|
-
focusedPeriods.splice(0);
|
|
30
|
-
});
|
|
31
|
-
if (hasFocusedApp) {
|
|
32
|
-
this.handleFocusChanged({ application: currentFocusedApp, focused: true });
|
|
33
|
-
}
|
|
34
|
-
return Promise.resolve();
|
|
35
|
-
}
|
|
36
|
-
unsubscribeCore() {
|
|
37
|
-
this.unInstanceFocusHandler();
|
|
38
|
-
return Promise.resolve();
|
|
39
|
-
}
|
|
40
|
-
handleFocusChanged(args) {
|
|
41
|
-
try {
|
|
42
|
-
this.validator.validateFocusChanged(args);
|
|
43
|
-
this.logger.debug(`focused changed is being invoked for metric ${this.settings.name} with ${JSON.stringify(args)}`);
|
|
44
|
-
return this.handleFocusChangedCore(args);
|
|
45
|
-
}
|
|
46
|
-
catch (error) {
|
|
47
|
-
const message = `error while executing handleFocusChanges for metric from type: ${this.settings.type}`;
|
|
48
|
-
this.logger.warn(message, error);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
handleFocusChangedCore(e) {
|
|
52
|
-
const focused = e.focused;
|
|
53
|
-
const application = e.application;
|
|
54
|
-
if (focused) {
|
|
55
|
-
this.handleGotFocus(application);
|
|
56
|
-
}
|
|
57
|
-
else {
|
|
58
|
-
try {
|
|
59
|
-
this.handleLostFocus(application);
|
|
60
|
-
}
|
|
61
|
-
finally {
|
|
62
|
-
this.currentFocusedApp = undefined;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
handleGotFocus(application) {
|
|
67
|
-
const now = new Date().getTime();
|
|
68
|
-
this.currentFocusedApp = { name: application, gotFocusTime: now };
|
|
69
|
-
if (!this.focusedTimes.has(this.currentFocusedApp.name)) {
|
|
70
|
-
this.focusedTimes.set(this.currentFocusedApp.name, []);
|
|
71
|
-
}
|
|
72
|
-
this.logger.debug(`got focus event has been added for metric ${this.settings.name}`);
|
|
73
|
-
}
|
|
74
|
-
handleLostFocus(application) {
|
|
75
|
-
if (validator_1.Validator.isNullOrUndefined(this.currentFocusedApp)) {
|
|
76
|
-
throw new Error(`cannot handle focus lost for application ${application} since there is no previous got focus event`);
|
|
77
|
-
}
|
|
78
|
-
const currentFocusedApp = this.currentFocusedApp.name;
|
|
79
|
-
const gotFocusTime = this.currentFocusedApp.gotFocusTime;
|
|
80
|
-
if (application !== currentFocusedApp) {
|
|
81
|
-
throw new Error(`cannot handle focus lost for application ${application} since the previous got focus event had come from application ${currentFocusedApp}`);
|
|
82
|
-
}
|
|
83
|
-
if (!this.focusedTimes.has(application)) {
|
|
84
|
-
throw new Error(`there is no got focus event for ${application}`);
|
|
85
|
-
}
|
|
86
|
-
this.addFocusLostEventCore(currentFocusedApp, gotFocusTime);
|
|
87
|
-
this.logger.debug(`lost focus event has been added for metric ${this.settings.name}`);
|
|
88
|
-
}
|
|
89
|
-
addFocusLostEventCore(application, gotFocusTime) {
|
|
90
|
-
const now = new Date().getTime();
|
|
91
|
-
const focusedTime = (now - gotFocusTime);
|
|
92
|
-
const focusedTimes = this.focusedTimes.get(application);
|
|
93
|
-
focusedTimes.push(focusedTime);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
exports.ApplicationDurationMetricBase = ApplicationDurationMetricBase;
|
|
97
|
-
//# sourceMappingURL=durationBase.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"durationBase.js","sourceRoot":"","sources":["../../../../src/metrics/metrics/application/durationBase.ts"],"names":[],"mappings":"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"}
|