@oneuptime/common 10.4.4 → 10.4.6
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/Models/DatabaseModels/Project.ts +25 -0
- package/Models/DatabaseModels/Service.ts +42 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1779199346010-AddTelemetryRetentionConfig.ts +25 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +2 -0
- package/Server/Services/OpenTelemetryIngestService.ts +50 -46
- package/Server/Services/UserCallService.ts +20 -0
- package/Server/Services/UserIncomingCallNumberService.ts +22 -0
- package/Server/Services/UserSmsService.ts +20 -0
- package/Types/Telemetry/TelemetryRetentionConfig.ts +105 -0
- package/UI/Components/Telemetry/TelemetryRetentionConfigForm.tsx +308 -0
- package/UI/Components/Telemetry/TelemetryRetentionConfigSummary.tsx +105 -0
- package/build/dist/Models/DatabaseModels/Project.js +25 -0
- package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Service.js +42 -0
- package/build/dist/Models/DatabaseModels/Service.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1779199346010-AddTelemetryRetentionConfig.js +14 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1779199346010-AddTelemetryRetentionConfig.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +2 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Services/OpenTelemetryIngestService.js +27 -23
- package/build/dist/Server/Services/OpenTelemetryIngestService.js.map +1 -1
- package/build/dist/Server/Services/UserCallService.js +14 -2
- package/build/dist/Server/Services/UserCallService.js.map +1 -1
- package/build/dist/Server/Services/UserIncomingCallNumberService.js +15 -2
- package/build/dist/Server/Services/UserIncomingCallNumberService.js.map +1 -1
- package/build/dist/Server/Services/UserSmsService.js +14 -2
- package/build/dist/Server/Services/UserSmsService.js.map +1 -1
- package/build/dist/Types/Telemetry/TelemetryRetentionConfig.js +44 -0
- package/build/dist/Types/Telemetry/TelemetryRetentionConfig.js.map +1 -0
- package/build/dist/UI/Components/Telemetry/TelemetryRetentionConfigForm.js +159 -0
- package/build/dist/UI/Components/Telemetry/TelemetryRetentionConfigForm.js.map +1 -0
- package/build/dist/UI/Components/Telemetry/TelemetryRetentionConfigSummary.js +53 -0
- package/build/dist/UI/Components/Telemetry/TelemetryRetentionConfigSummary.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export const HARDCODED_DEFAULT_TELEMETRY_RETENTION_IN_DAYS = 15;
|
|
2
|
+
function pickPositive(value) {
|
|
3
|
+
return typeof value === "number" && value > 0 ? value : null;
|
|
4
|
+
}
|
|
5
|
+
function getBucketValue(config, pillar, bucketKey) {
|
|
6
|
+
var _a, _b;
|
|
7
|
+
if (!config || bucketKey === undefined || bucketKey === null) {
|
|
8
|
+
return null;
|
|
9
|
+
}
|
|
10
|
+
if (pillar === "logs") {
|
|
11
|
+
const bySeverity = (_a = config.logs) === null || _a === void 0 ? void 0 : _a.bySeverity;
|
|
12
|
+
return pickPositive(bySeverity === null || bySeverity === void 0 ? void 0 : bySeverity[bucketKey]);
|
|
13
|
+
}
|
|
14
|
+
if (pillar === "traces") {
|
|
15
|
+
const byStatus = (_b = config.traces) === null || _b === void 0 ? void 0 : _b.byStatus;
|
|
16
|
+
return pickPositive(byStatus === null || byStatus === void 0 ? void 0 : byStatus[bucketKey]);
|
|
17
|
+
}
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
function getPillarDefault(config, pillar) {
|
|
21
|
+
var _a;
|
|
22
|
+
if (!config) {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
return pickPositive((_a = config[pillar]) === null || _a === void 0 ? void 0 : _a.default);
|
|
26
|
+
}
|
|
27
|
+
export function resolveTelemetryRetentionInDays(input) {
|
|
28
|
+
const { pillar, bucketKey, serviceConfig, serviceUmbrellaInDays, projectConfig, projectUmbrellaInDays, } = input;
|
|
29
|
+
const candidates = [
|
|
30
|
+
getBucketValue(serviceConfig, pillar, bucketKey),
|
|
31
|
+
getPillarDefault(serviceConfig, pillar),
|
|
32
|
+
pickPositive(serviceUmbrellaInDays),
|
|
33
|
+
getBucketValue(projectConfig, pillar, bucketKey),
|
|
34
|
+
getPillarDefault(projectConfig, pillar),
|
|
35
|
+
pickPositive(projectUmbrellaInDays),
|
|
36
|
+
];
|
|
37
|
+
for (const value of candidates) {
|
|
38
|
+
if (value !== null) {
|
|
39
|
+
return value;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return HARDCODED_DEFAULT_TELEMETRY_RETENTION_IN_DAYS;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=TelemetryRetentionConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TelemetryRetentionConfig.js","sourceRoot":"","sources":["../../../../Types/Telemetry/TelemetryRetentionConfig.ts"],"names":[],"mappings":"AAmCA,MAAM,CAAC,MAAM,6CAA6C,GAAW,EAAE,CAAC;AAExE,SAAS,YAAY,CAAC,KAAgC;IACpD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/D,CAAC;AAED,SAAS,cAAc,CACrB,MAAmD,EACnD,MAAuB,EACvB,SAAsD;;IAEtD,IAAI,CAAC,MAAM,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QAC7D,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,MAAM,UAAU,GACd,MAAA,MAAM,CAAC,IAAI,0CAAE,UAAU,CAAC;QAC1B,OAAO,YAAY,CAAC,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAG,SAAwB,CAAC,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,MAAM,QAAQ,GACZ,MAAA,MAAM,CAAC,MAAM,0CAAE,QAAQ,CAAC;QAC1B,OAAO,YAAY,CAAC,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,SAAuB,CAAC,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,gBAAgB,CACvB,MAAmD,EACnD,MAAuB;;IAEvB,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,YAAY,CAAC,MAAA,MAAM,CAAC,MAAM,CAAC,0CAAE,OAAO,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,KAO/C;IACC,MAAM,EACJ,MAAM,EACN,SAAS,EACT,aAAa,EACb,qBAAqB,EACrB,aAAa,EACb,qBAAqB,GACtB,GAAG,KAAK,CAAC;IAEV,MAAM,UAAU,GAAyB;QACvC,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,CAAC;QAChD,gBAAgB,CAAC,aAAa,EAAE,MAAM,CAAC;QACvC,YAAY,CAAC,qBAAqB,CAAC;QACnC,cAAc,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,CAAC;QAChD,gBAAgB,CAAC,aAAa,EAAE,MAAM,CAAC;QACvC,YAAY,CAAC,qBAAqB,CAAC;KACpC,CAAC;IAEF,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAC/B,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IACD,OAAO,6CAA6C,CAAC;AACvD,CAAC"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import React, { useEffect, useState, } from "react";
|
|
2
|
+
import { SpanStatus } from "../../../Models/AnalyticsModels/Span";
|
|
3
|
+
import LogSeverity from "../../../Types/Log/LogSeverity";
|
|
4
|
+
import FieldLabelElement from "../Detail/FieldLabel";
|
|
5
|
+
import Input, { InputType } from "../Input/Input";
|
|
6
|
+
const LOG_SEVERITIES = [
|
|
7
|
+
LogSeverity.Fatal,
|
|
8
|
+
LogSeverity.Error,
|
|
9
|
+
LogSeverity.Warning,
|
|
10
|
+
LogSeverity.Information,
|
|
11
|
+
LogSeverity.Debug,
|
|
12
|
+
LogSeverity.Trace,
|
|
13
|
+
LogSeverity.Unspecified,
|
|
14
|
+
];
|
|
15
|
+
const SPAN_STATUSES = [
|
|
16
|
+
{ status: SpanStatus.Error, label: "Error" },
|
|
17
|
+
{ status: SpanStatus.Ok, label: "Ok" },
|
|
18
|
+
{ status: SpanStatus.Unset, label: "Unset" },
|
|
19
|
+
];
|
|
20
|
+
const TelemetryRetentionConfigForm = (props) => {
|
|
21
|
+
const [config, setConfig] = useState(props.value || props.initialValue || {});
|
|
22
|
+
useEffect(() => {
|
|
23
|
+
if (props.value) {
|
|
24
|
+
setConfig(props.value);
|
|
25
|
+
}
|
|
26
|
+
}, [props.value]);
|
|
27
|
+
const emit = (next) => {
|
|
28
|
+
setConfig(next);
|
|
29
|
+
if (props.onChange) {
|
|
30
|
+
const isEmpty = !next.logs && !next.traces && !next.metrics && !next.profiles;
|
|
31
|
+
props.onChange(isEmpty ? null : next);
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
const parsePositiveOrNull = (raw) => {
|
|
35
|
+
if (!raw || raw.trim() === "") {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
const parsed = Number(raw);
|
|
39
|
+
if (!Number.isFinite(parsed) || parsed <= 0) {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
return Math.trunc(parsed);
|
|
43
|
+
};
|
|
44
|
+
const setPillarDefault = (pillar, value) => {
|
|
45
|
+
const next = Object.assign({}, config);
|
|
46
|
+
const existing = next[pillar];
|
|
47
|
+
const merged = Object.assign(Object.assign({}, (existing || {})), { default: value });
|
|
48
|
+
// If the only key is `default` and it's null, drop the pillar entirely.
|
|
49
|
+
const keys = Object.keys(merged).filter((k) => {
|
|
50
|
+
return (merged[k] !== null &&
|
|
51
|
+
merged[k] !== undefined);
|
|
52
|
+
});
|
|
53
|
+
if (keys.length === 0) {
|
|
54
|
+
delete next[pillar];
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
next[pillar] = merged;
|
|
58
|
+
}
|
|
59
|
+
emit(next);
|
|
60
|
+
};
|
|
61
|
+
const setLogSeverityValue = (severity, value) => {
|
|
62
|
+
const next = Object.assign({}, config);
|
|
63
|
+
const logs = Object.assign({}, (next.logs || {}));
|
|
64
|
+
const bySeverity = Object.assign({}, (logs.bySeverity || {}));
|
|
65
|
+
if (value === null) {
|
|
66
|
+
delete bySeverity[severity];
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
bySeverity[severity] = value;
|
|
70
|
+
}
|
|
71
|
+
if (Object.keys(bySeverity).length === 0) {
|
|
72
|
+
delete logs.bySeverity;
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
logs.bySeverity = bySeverity;
|
|
76
|
+
}
|
|
77
|
+
if (Object.keys(logs).length === 0) {
|
|
78
|
+
delete next.logs;
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
next.logs = logs;
|
|
82
|
+
}
|
|
83
|
+
emit(next);
|
|
84
|
+
};
|
|
85
|
+
const setSpanStatusValue = (status, value) => {
|
|
86
|
+
const next = Object.assign({}, config);
|
|
87
|
+
const traces = Object.assign({}, (next.traces || {}));
|
|
88
|
+
const byStatus = Object.assign({}, (traces.byStatus || {}));
|
|
89
|
+
if (value === null) {
|
|
90
|
+
delete byStatus[status];
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
byStatus[status] = value;
|
|
94
|
+
}
|
|
95
|
+
if (Object.keys(byStatus).length === 0) {
|
|
96
|
+
delete traces.byStatus;
|
|
97
|
+
}
|
|
98
|
+
else {
|
|
99
|
+
traces.byStatus = byStatus;
|
|
100
|
+
}
|
|
101
|
+
if (Object.keys(traces).length === 0) {
|
|
102
|
+
delete next.traces;
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
next.traces = traces;
|
|
106
|
+
}
|
|
107
|
+
emit(next);
|
|
108
|
+
};
|
|
109
|
+
const numberToString = (value) => {
|
|
110
|
+
return typeof value === "number" && value > 0 ? String(value) : "";
|
|
111
|
+
};
|
|
112
|
+
const renderPillarDefault = (pillar, label, description) => {
|
|
113
|
+
var _a;
|
|
114
|
+
return (React.createElement("div", { className: "mb-4" },
|
|
115
|
+
React.createElement(FieldLabelElement, { title: label, description: description }),
|
|
116
|
+
React.createElement(Input, { type: InputType.NUMBER, placeholder: "Inherit umbrella default", value: numberToString((_a = config[pillar]) === null || _a === void 0 ? void 0 : _a.default), onChange: (raw) => {
|
|
117
|
+
setPillarDefault(pillar, parsePositiveOrNull(raw));
|
|
118
|
+
} })));
|
|
119
|
+
};
|
|
120
|
+
return (React.createElement("div", { className: "space-y-6" },
|
|
121
|
+
React.createElement("div", { className: "rounded-md border border-gray-200 dark:border-slate-700 p-4" },
|
|
122
|
+
React.createElement("h3", { className: "text-sm font-semibold text-gray-900 dark:text-slate-100 mb-1" }, "Logs"),
|
|
123
|
+
React.createElement("p", { className: "text-xs text-gray-500 dark:text-slate-400 mb-3" }, "Retention in days for log records. Per-severity values override the logs default; leave blank to inherit."),
|
|
124
|
+
renderPillarDefault("logs", "Logs default (days)", "Applies to log records whose severity has no specific override."),
|
|
125
|
+
React.createElement("div", { className: "border-t border-gray-100 dark:border-slate-800 pt-3 mt-2" },
|
|
126
|
+
React.createElement("p", { className: "text-xs font-medium text-gray-700 dark:text-slate-300 mb-2" }, "Per-severity overrides"),
|
|
127
|
+
React.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-2 gap-3" }, LOG_SEVERITIES.map((severity) => {
|
|
128
|
+
var _a, _b;
|
|
129
|
+
return (React.createElement("div", { key: severity },
|
|
130
|
+
React.createElement(FieldLabelElement, { title: severity }),
|
|
131
|
+
React.createElement(Input, { type: InputType.NUMBER, placeholder: "Inherit logs default", value: numberToString((_b = (_a = config.logs) === null || _a === void 0 ? void 0 : _a.bySeverity) === null || _b === void 0 ? void 0 : _b[severity]), onChange: (raw) => {
|
|
132
|
+
setLogSeverityValue(severity, parsePositiveOrNull(raw));
|
|
133
|
+
} })));
|
|
134
|
+
})))),
|
|
135
|
+
React.createElement("div", { className: "rounded-md border border-gray-200 dark:border-slate-700 p-4" },
|
|
136
|
+
React.createElement("h3", { className: "text-sm font-semibold text-gray-900 dark:text-slate-100 mb-1" }, "Traces"),
|
|
137
|
+
React.createElement("p", { className: "text-xs text-gray-500 dark:text-slate-400 mb-3" }, "Retention in days for spans (and the exceptions captured on them). Per-status values override the traces default."),
|
|
138
|
+
renderPillarDefault("traces", "Traces default (days)", "Applies to spans whose status has no specific override."),
|
|
139
|
+
React.createElement("div", { className: "border-t border-gray-100 dark:border-slate-800 pt-3 mt-2" },
|
|
140
|
+
React.createElement("p", { className: "text-xs font-medium text-gray-700 dark:text-slate-300 mb-2" }, "Per-status overrides"),
|
|
141
|
+
React.createElement("div", { className: "grid grid-cols-1 sm:grid-cols-3 gap-3" }, SPAN_STATUSES.map((entry) => {
|
|
142
|
+
var _a, _b;
|
|
143
|
+
return (React.createElement("div", { key: entry.label },
|
|
144
|
+
React.createElement(FieldLabelElement, { title: entry.label }),
|
|
145
|
+
React.createElement(Input, { type: InputType.NUMBER, placeholder: "Inherit traces default", value: numberToString((_b = (_a = config.traces) === null || _a === void 0 ? void 0 : _a.byStatus) === null || _b === void 0 ? void 0 : _b[entry.status]), onChange: (raw) => {
|
|
146
|
+
setSpanStatusValue(entry.status, parsePositiveOrNull(raw));
|
|
147
|
+
} })));
|
|
148
|
+
})))),
|
|
149
|
+
React.createElement("div", { className: "rounded-md border border-gray-200 dark:border-slate-700 p-4" },
|
|
150
|
+
React.createElement("h3", { className: "text-sm font-semibold text-gray-900 dark:text-slate-100 mb-1" }, "Metrics"),
|
|
151
|
+
React.createElement("p", { className: "text-xs text-gray-500 dark:text-slate-400 mb-3" }, "Retention in days for metric data points."),
|
|
152
|
+
renderPillarDefault("metrics", "Metrics default (days)", "Applies to all metric points. Leave blank to inherit the umbrella default.")),
|
|
153
|
+
React.createElement("div", { className: "rounded-md border border-gray-200 dark:border-slate-700 p-4" },
|
|
154
|
+
React.createElement("h3", { className: "text-sm font-semibold text-gray-900 dark:text-slate-100 mb-1" }, "Profiles"),
|
|
155
|
+
React.createElement("p", { className: "text-xs text-gray-500 dark:text-slate-400 mb-3" }, "Retention in days for profile samples."),
|
|
156
|
+
renderPillarDefault("profiles", "Profiles default (days)", "Applies to all profile samples. Leave blank to inherit the umbrella default."))));
|
|
157
|
+
};
|
|
158
|
+
export default TelemetryRetentionConfigForm;
|
|
159
|
+
//# sourceMappingURL=TelemetryRetentionConfigForm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TelemetryRetentionConfigForm.js","sourceRoot":"","sources":["../../../../../UI/Components/Telemetry/TelemetryRetentionConfigForm.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { SpanStatus } from "../../../Models/AnalyticsModels/Span";
|
|
3
|
+
const SPAN_STATUS_LABEL = {
|
|
4
|
+
[SpanStatus.Unset]: "Unset",
|
|
5
|
+
[SpanStatus.Ok]: "Ok",
|
|
6
|
+
[SpanStatus.Error]: "Error",
|
|
7
|
+
};
|
|
8
|
+
const TelemetryRetentionConfigSummary = (props) => {
|
|
9
|
+
var _a, _b, _c, _d, _e, _f;
|
|
10
|
+
const config = props.config;
|
|
11
|
+
if (!config ||
|
|
12
|
+
(!config.logs && !config.traces && !config.metrics && !config.profiles)) {
|
|
13
|
+
return (React.createElement("span", { className: "text-sm text-gray-500 dark:text-slate-400" }, "Using umbrella default for all pillars."));
|
|
14
|
+
}
|
|
15
|
+
const renderPillar = (title, defaultDays, overrides) => {
|
|
16
|
+
const hasDefault = typeof defaultDays === "number" && defaultDays > 0;
|
|
17
|
+
const visibleOverrides = overrides
|
|
18
|
+
.filter((o) => {
|
|
19
|
+
return typeof o.days === "number" && o.days > 0;
|
|
20
|
+
})
|
|
21
|
+
.map((o) => {
|
|
22
|
+
return { label: o.label, days: o.days };
|
|
23
|
+
});
|
|
24
|
+
if (!hasDefault && visibleOverrides.length === 0) {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
return (React.createElement("div", { key: title, className: "mb-2" },
|
|
28
|
+
React.createElement("span", { className: "text-sm font-medium text-gray-900 dark:text-slate-100" },
|
|
29
|
+
title,
|
|
30
|
+
":"),
|
|
31
|
+
" ",
|
|
32
|
+
React.createElement("span", { className: "text-sm text-gray-700 dark:text-slate-300" }, hasDefault ? `${defaultDays} day(s)` : "inherits umbrella default"),
|
|
33
|
+
visibleOverrides.length > 0 ? (React.createElement("ul", { className: "ml-4 text-xs text-gray-600 dark:text-slate-400 list-disc" }, visibleOverrides.map((o) => {
|
|
34
|
+
return (React.createElement("li", { key: o.label },
|
|
35
|
+
o.label,
|
|
36
|
+
": ",
|
|
37
|
+
o.days,
|
|
38
|
+
" day(s)"));
|
|
39
|
+
}))) : null));
|
|
40
|
+
};
|
|
41
|
+
return (React.createElement("div", null,
|
|
42
|
+
renderPillar("Logs", (_a = config.logs) === null || _a === void 0 ? void 0 : _a.default, Object.entries(((_b = config.logs) === null || _b === void 0 ? void 0 : _b.bySeverity) || {}).map(([severity, days]) => {
|
|
43
|
+
return { label: severity, days: days };
|
|
44
|
+
})),
|
|
45
|
+
renderPillar("Traces", (_c = config.traces) === null || _c === void 0 ? void 0 : _c.default, Object.entries(((_d = config.traces) === null || _d === void 0 ? void 0 : _d.byStatus) || {}).map(([statusKey, days]) => {
|
|
46
|
+
const status = Number(statusKey);
|
|
47
|
+
return { label: SPAN_STATUS_LABEL[status] || statusKey, days };
|
|
48
|
+
})),
|
|
49
|
+
renderPillar("Metrics", (_e = config.metrics) === null || _e === void 0 ? void 0 : _e.default, []),
|
|
50
|
+
renderPillar("Profiles", (_f = config.profiles) === null || _f === void 0 ? void 0 : _f.default, [])));
|
|
51
|
+
};
|
|
52
|
+
export default TelemetryRetentionConfigSummary;
|
|
53
|
+
//# sourceMappingURL=TelemetryRetentionConfigSummary.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TelemetryRetentionConfigSummary.js","sourceRoot":"","sources":["../../../../../UI/Components/Telemetry/TelemetryRetentionConfigSummary.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAE/D,OAAO,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AAOlE,MAAM,iBAAiB,GAA+B;IACpD,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,OAAO;IAC3B,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,IAAI;IACrB,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,OAAO;CAC5B,CAAC;AAEF,MAAM,+BAA+B,GAAsC,CACzE,KAAqB,EACP,EAAE;;IAChB,MAAM,MAAM,GAAgD,KAAK,CAAC,MAAM,CAAC;IAEzE,IACE,CAAC,MAAM;QACP,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EACvE,CAAC;QACD,OAAO,CACL,8BAAM,SAAS,EAAC,2CAA2C,8CAEpD,CACR,CAAC;IACJ,CAAC;IAED,MAAM,YAAY,GAIS,CACzB,KAAa,EACb,WAAsC,EACtC,SAAoE,EAC/C,EAAE;QACvB,MAAM,UAAU,GACd,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,GAAG,CAAC,CAAC;QACrD,MAAM,gBAAgB,GAA2C,SAAS;aACvE,MAAM,CAAC,CAAC,CAAqD,EAAE,EAAE;YAChE,OAAO,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;QAClD,CAAC,CAAC;aACD,GAAG,CAAC,CAAC,CAAqD,EAAE,EAAE;YAC7D,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAc,EAAE,CAAC;QACpD,CAAC,CAAC,CAAC;QAEL,IAAI,CAAC,UAAU,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACjD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,CACL,6BAAK,GAAG,EAAE,KAAK,EAAE,SAAS,EAAC,MAAM;YAC/B,8BAAM,SAAS,EAAC,uDAAuD;gBACpE,KAAK;oBACD;YAAC,GAAG;YACX,8BAAM,SAAS,EAAC,2CAA2C,IACxD,UAAU,CAAC,CAAC,CAAC,GAAG,WAAW,SAAS,CAAC,CAAC,CAAC,2BAA2B,CAC9D;YACN,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAC7B,4BAAI,SAAS,EAAC,0DAA0D,IACrE,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAkC,EAAE,EAAE;gBAC3D,OAAO,CACL,4BAAI,GAAG,EAAE,CAAC,CAAC,KAAK;oBACb,CAAC,CAAC,KAAK;;oBAAI,CAAC,CAAC,IAAI;8BACf,CACN,CAAC;YACJ,CAAC,CAAC,CACC,CACN,CAAC,CAAC,CAAC,IAAI,CACJ,CACP,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,CACL;QACG,YAAY,CACX,MAAM,EACN,MAAA,MAAM,CAAC,IAAI,0CAAE,OAAO,EACpB,MAAM,CAAC,OAAO,CAAC,CAAA,MAAA,MAAM,CAAC,IAAI,0CAAE,UAAU,KAAI,EAAE,CAAC,CAAC,GAAG,CAC/C,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAsC,EAAE,EAAE;YACxD,OAAO,EAAE,KAAK,EAAE,QAAuB,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACxD,CAAC,CACF,CACF;QACA,YAAY,CACX,QAAQ,EACR,MAAA,MAAM,CAAC,MAAM,0CAAE,OAAO,EACtB,MAAM,CAAC,OAAO,CAAC,CAAA,MAAA,MAAM,CAAC,MAAM,0CAAE,QAAQ,KAAI,EAAE,CAAC,CAAC,GAAG,CAC/C,CAAC,CAAC,SAAS,EAAE,IAAI,CAAsC,EAAE,EAAE;YACzD,MAAM,MAAM,GAAe,MAAM,CAAC,SAAS,CAAe,CAAC;YAC3D,OAAO,EAAE,KAAK,EAAE,iBAAiB,CAAC,MAAM,CAAC,IAAI,SAAS,EAAE,IAAI,EAAE,CAAC;QACjE,CAAC,CACF,CACF;QACA,YAAY,CAAC,SAAS,EAAE,MAAA,MAAM,CAAC,OAAO,0CAAE,OAAO,EAAE,EAAE,CAAC;QACpD,YAAY,CAAC,UAAU,EAAE,MAAA,MAAM,CAAC,QAAQ,0CAAE,OAAO,EAAE,EAAE,CAAC,CACnD,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,+BAA+B,CAAC"}
|