@oneuptime/common 10.0.65 → 10.0.66
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/DockerHostOwnerTeam.ts +464 -0
- package/Models/DatabaseModels/DockerHostOwnerUser.ts +463 -0
- package/Models/DatabaseModels/Index.ts +24 -0
- package/Models/DatabaseModels/KubernetesClusterOwnerTeam.ts +464 -0
- package/Models/DatabaseModels/KubernetesClusterOwnerUser.ts +463 -0
- package/Models/DatabaseModels/KubernetesResource.ts +548 -0
- package/Models/DatabaseModels/MetricPipelineRule.ts +804 -0
- package/Models/DatabaseModels/MetricRecordingRule.ts +470 -0
- package/Models/DatabaseModels/Monitor.ts +2 -0
- package/Models/DatabaseModels/Project.ts +53 -0
- package/Models/DatabaseModels/Service.ts +79 -0
- package/Models/DatabaseModels/TraceDropFilter.ts +508 -0
- package/Models/DatabaseModels/TracePipeline.ts +436 -0
- package/Models/DatabaseModels/TracePipelineProcessor.ts +454 -0
- package/Models/DatabaseModels/TraceRecordingRule.ts +470 -0
- package/Models/DatabaseModels/TraceScrubRule.ts +546 -0
- package/Server/API/KubernetesResourceAPI.ts +129 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1776504277320-MigrationName.ts +399 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1776505976155-AddTracePipelineTables.ts +205 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1776509413763-MigrationName.ts +335 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1776541018853-MigrationName.ts +29 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/1776544084793-MigrationName.ts +53 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +10 -1
- package/Server/Services/DockerHostOwnerTeamService.ts +10 -0
- package/Server/Services/DockerHostOwnerUserService.ts +10 -0
- package/Server/Services/KubernetesClusterOwnerTeamService.ts +10 -0
- package/Server/Services/KubernetesClusterOwnerUserService.ts +10 -0
- package/Server/Services/KubernetesResourceService.ts +351 -0
- package/Server/Services/MetricPipelineRuleService.ts +10 -0
- package/Server/Services/MetricRecordingRuleService.ts +10 -0
- package/Server/Services/TraceDropFilterService.ts +10 -0
- package/Server/Services/TracePipelineProcessorService.ts +10 -0
- package/Server/Services/TracePipelineService.ts +10 -0
- package/Server/Services/TraceRecordingRuleService.ts +10 -0
- package/Server/Services/TraceScrubRuleService.ts +10 -0
- package/Server/Utils/Monitor/Criteria/CompareCriteria.ts +71 -9
- package/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.ts +483 -75
- package/Server/Utils/Monitor/MonitorCriteriaEvaluator.ts +379 -6
- package/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.test.ts +502 -0
- package/Tests/Utils/MetricUnitUtil.test.ts +216 -0
- package/Tests/Utils/Metrics/MetricFormulaEvaluator.test.ts +269 -0
- package/Tests/Utils/Metrics/MetricResultUnitConverter.test.ts +231 -0
- package/Tests/Utils/RecordingRuleExpression.test.ts +177 -0
- package/Types/Kubernetes/KubernetesInventoryExtractor.ts +327 -0
- package/Types/Kubernetes/KubernetesObjectParser.ts +1949 -0
- package/Types/Metrics/MetricDownsamplingRetentionDays.ts +49 -0
- package/Types/Metrics/MetricFormulaConfigData.ts +4 -0
- package/Types/Metrics/MetricPipelineRuleFilterCondition.ts +136 -0
- package/Types/Metrics/MetricPipelineRuleType.ts +27 -0
- package/Types/Metrics/RecordingRuleDefinition.ts +180 -0
- package/Types/Monitor/CriteriaFilter.ts +43 -0
- package/Types/Monitor/MetricMonitor/MetricCriteriaContext.ts +70 -0
- package/Types/Permission.ts +520 -0
- package/Types/Trace/TraceAggregationType.ts +17 -0
- package/Types/Trace/TraceDropFilterAction.ts +6 -0
- package/Types/Trace/TracePipelineProcessorType.ts +56 -0
- package/Types/Trace/TraceRecordingRuleDefinition.ts +218 -0
- package/Types/Trace/TraceScrubAction.ts +7 -0
- package/Types/Trace/TraceScrubField.ts +8 -0
- package/Types/Trace/TraceScrubPatternType.ts +10 -0
- package/UI/Components/CardSelect/CardSelect.tsx +9 -1
- package/UI/Components/Charts/ChartGroup/ChartGroup.tsx +6 -10
- package/UI/Components/Forms/Fields/FormField.tsx +1 -0
- package/UI/Components/Forms/Types/Field.ts +1 -0
- package/UI/Components/Markdown.tsx/MarkdownViewer.tsx +57 -0
- package/UI/Components/Page/Page.tsx +6 -0
- package/Utils/MetricUnitUtil.ts +289 -0
- package/Utils/Metrics/MetricFormulaEvaluator.ts +610 -0
- package/Utils/Metrics/MetricResultUnitConverter.ts +91 -0
- package/Utils/Metrics/RecordingRuleExpression.ts +359 -0
- package/Utils/ValueFormatter.ts +137 -13
- package/build/dist/Models/DatabaseModels/DockerHostOwnerTeam.js +480 -0
- package/build/dist/Models/DatabaseModels/DockerHostOwnerTeam.js.map +1 -0
- package/build/dist/Models/DatabaseModels/DockerHostOwnerUser.js +479 -0
- package/build/dist/Models/DatabaseModels/DockerHostOwnerUser.js.map +1 -0
- package/build/dist/Models/DatabaseModels/Index.js +24 -0
- package/build/dist/Models/DatabaseModels/Index.js.map +1 -1
- package/build/dist/Models/DatabaseModels/KubernetesClusterOwnerTeam.js +480 -0
- package/build/dist/Models/DatabaseModels/KubernetesClusterOwnerTeam.js.map +1 -0
- package/build/dist/Models/DatabaseModels/KubernetesClusterOwnerUser.js +479 -0
- package/build/dist/Models/DatabaseModels/KubernetesClusterOwnerUser.js.map +1 -0
- package/build/dist/Models/DatabaseModels/KubernetesResource.js +590 -0
- package/build/dist/Models/DatabaseModels/KubernetesResource.js.map +1 -0
- package/build/dist/Models/DatabaseModels/MetricPipelineRule.js +836 -0
- package/build/dist/Models/DatabaseModels/MetricPipelineRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/MetricRecordingRule.js +497 -0
- package/build/dist/Models/DatabaseModels/MetricRecordingRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/Monitor.js +2 -0
- package/build/dist/Models/DatabaseModels/Monitor.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Project.js +53 -0
- package/build/dist/Models/DatabaseModels/Project.js.map +1 -1
- package/build/dist/Models/DatabaseModels/Service.js +79 -0
- package/build/dist/Models/DatabaseModels/Service.js.map +1 -1
- package/build/dist/Models/DatabaseModels/TraceDropFilter.js +536 -0
- package/build/dist/Models/DatabaseModels/TraceDropFilter.js.map +1 -0
- package/build/dist/Models/DatabaseModels/TracePipeline.js +462 -0
- package/build/dist/Models/DatabaseModels/TracePipeline.js.map +1 -0
- package/build/dist/Models/DatabaseModels/TracePipelineProcessor.js +476 -0
- package/build/dist/Models/DatabaseModels/TracePipelineProcessor.js.map +1 -0
- package/build/dist/Models/DatabaseModels/TraceRecordingRule.js +497 -0
- package/build/dist/Models/DatabaseModels/TraceRecordingRule.js.map +1 -0
- package/build/dist/Models/DatabaseModels/TraceScrubRule.js +575 -0
- package/build/dist/Models/DatabaseModels/TraceScrubRule.js.map +1 -0
- package/build/dist/Server/API/KubernetesResourceAPI.js +98 -0
- package/build/dist/Server/API/KubernetesResourceAPI.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776504277320-MigrationName.js +144 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776504277320-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776505976155-AddTracePipelineTables.js +82 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776505976155-AddTracePipelineTables.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776509413763-MigrationName.js +118 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776509413763-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776541018853-MigrationName.js +16 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776541018853-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776544084793-MigrationName.js +24 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1776544084793-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +10 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Services/DockerHostOwnerTeamService.js +9 -0
- package/build/dist/Server/Services/DockerHostOwnerTeamService.js.map +1 -0
- package/build/dist/Server/Services/DockerHostOwnerUserService.js +9 -0
- package/build/dist/Server/Services/DockerHostOwnerUserService.js.map +1 -0
- package/build/dist/Server/Services/KubernetesClusterOwnerTeamService.js +9 -0
- package/build/dist/Server/Services/KubernetesClusterOwnerTeamService.js.map +1 -0
- package/build/dist/Server/Services/KubernetesClusterOwnerUserService.js +9 -0
- package/build/dist/Server/Services/KubernetesClusterOwnerUserService.js.map +1 -0
- package/build/dist/Server/Services/KubernetesResourceService.js +237 -0
- package/build/dist/Server/Services/KubernetesResourceService.js.map +1 -0
- package/build/dist/Server/Services/MetricPipelineRuleService.js +9 -0
- package/build/dist/Server/Services/MetricPipelineRuleService.js.map +1 -0
- package/build/dist/Server/Services/MetricRecordingRuleService.js +9 -0
- package/build/dist/Server/Services/MetricRecordingRuleService.js.map +1 -0
- package/build/dist/Server/Services/TraceDropFilterService.js +9 -0
- package/build/dist/Server/Services/TraceDropFilterService.js.map +1 -0
- package/build/dist/Server/Services/TracePipelineProcessorService.js +9 -0
- package/build/dist/Server/Services/TracePipelineProcessorService.js.map +1 -0
- package/build/dist/Server/Services/TracePipelineService.js +9 -0
- package/build/dist/Server/Services/TracePipelineService.js.map +1 -0
- package/build/dist/Server/Services/TraceRecordingRuleService.js +9 -0
- package/build/dist/Server/Services/TraceRecordingRuleService.js.map +1 -0
- package/build/dist/Server/Services/TraceScrubRuleService.js +9 -0
- package/build/dist/Server/Services/TraceScrubRuleService.js.map +1 -0
- package/build/dist/Server/Utils/Monitor/Criteria/CompareCriteria.js +56 -9
- package/build/dist/Server/Utils/Monitor/Criteria/CompareCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.js +335 -53
- package/build/dist/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.js.map +1 -1
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js +277 -5
- package/build/dist/Server/Utils/Monitor/MonitorCriteriaEvaluator.js.map +1 -1
- package/build/dist/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.test.js +407 -0
- package/build/dist/Tests/Server/Utils/Monitor/Criteria/MetricMonitorCriteria.test.js.map +1 -0
- package/build/dist/Tests/Utils/MetricUnitUtil.test.js +159 -0
- package/build/dist/Tests/Utils/MetricUnitUtil.test.js.map +1 -0
- package/build/dist/Tests/Utils/Metrics/MetricFormulaEvaluator.test.js +224 -0
- package/build/dist/Tests/Utils/Metrics/MetricFormulaEvaluator.test.js.map +1 -0
- package/build/dist/Tests/Utils/Metrics/MetricResultUnitConverter.test.js +180 -0
- package/build/dist/Tests/Utils/Metrics/MetricResultUnitConverter.test.js.map +1 -0
- package/build/dist/Tests/Utils/RecordingRuleExpression.test.js +142 -0
- package/build/dist/Tests/Utils/RecordingRuleExpression.test.js.map +1 -0
- package/build/dist/Types/Kubernetes/KubernetesInventoryExtractor.js +200 -0
- package/build/dist/Types/Kubernetes/KubernetesInventoryExtractor.js.map +1 -0
- package/build/dist/Types/Kubernetes/KubernetesObjectParser.js +1205 -0
- package/build/dist/Types/Kubernetes/KubernetesObjectParser.js.map +1 -0
- package/build/dist/Types/Metrics/MetricDownsamplingRetentionDays.js +32 -0
- package/build/dist/Types/Metrics/MetricDownsamplingRetentionDays.js.map +1 -0
- package/build/dist/Types/Metrics/MetricPipelineRuleFilterCondition.js +103 -0
- package/build/dist/Types/Metrics/MetricPipelineRuleFilterCondition.js.map +1 -0
- package/build/dist/Types/Metrics/MetricPipelineRuleType.js +27 -0
- package/build/dist/Types/Metrics/MetricPipelineRuleType.js.map +1 -0
- package/build/dist/Types/Metrics/RecordingRuleDefinition.js +110 -0
- package/build/dist/Types/Metrics/RecordingRuleDefinition.js.map +1 -0
- package/build/dist/Types/Monitor/CriteriaFilter.js +22 -0
- package/build/dist/Types/Monitor/CriteriaFilter.js.map +1 -1
- package/build/dist/Types/Monitor/MetricMonitor/MetricCriteriaContext.js +2 -0
- package/build/dist/Types/Monitor/MetricMonitor/MetricCriteriaContext.js.map +1 -0
- package/build/dist/Types/Permission.js +454 -0
- package/build/dist/Types/Permission.js.map +1 -1
- package/build/dist/Types/Trace/TraceAggregationType.js +18 -0
- package/build/dist/Types/Trace/TraceAggregationType.js.map +1 -0
- package/build/dist/Types/Trace/TraceDropFilterAction.js +7 -0
- package/build/dist/Types/Trace/TraceDropFilterAction.js.map +1 -0
- package/build/dist/Types/Trace/TracePipelineProcessorType.js +10 -0
- package/build/dist/Types/Trace/TracePipelineProcessorType.js.map +1 -0
- package/build/dist/Types/Trace/TraceRecordingRuleDefinition.js +145 -0
- package/build/dist/Types/Trace/TraceRecordingRuleDefinition.js.map +1 -0
- package/build/dist/Types/Trace/TraceScrubAction.js +8 -0
- package/build/dist/Types/Trace/TraceScrubAction.js.map +1 -0
- package/build/dist/Types/Trace/TraceScrubField.js +9 -0
- package/build/dist/Types/Trace/TraceScrubField.js.map +1 -0
- package/build/dist/Types/Trace/TraceScrubPatternType.js +11 -0
- package/build/dist/Types/Trace/TraceScrubPatternType.js.map +1 -0
- package/build/dist/UI/Components/CardSelect/CardSelect.js +3 -1
- package/build/dist/UI/Components/CardSelect/CardSelect.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js +6 -9
- package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js.map +1 -1
- package/build/dist/UI/Components/Forms/Fields/FormField.js +1 -1
- package/build/dist/UI/Components/Forms/Fields/FormField.js.map +1 -1
- package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js +30 -0
- package/build/dist/UI/Components/Markdown.tsx/MarkdownViewer.js.map +1 -1
- package/build/dist/UI/Components/Page/Page.js +1 -0
- package/build/dist/UI/Components/Page/Page.js.map +1 -1
- package/build/dist/Utils/MetricUnitUtil.js +232 -0
- package/build/dist/Utils/MetricUnitUtil.js.map +1 -0
- package/build/dist/Utils/Metrics/MetricFormulaEvaluator.js +453 -0
- package/build/dist/Utils/Metrics/MetricFormulaEvaluator.js.map +1 -0
- package/build/dist/Utils/Metrics/MetricResultUnitConverter.js +61 -0
- package/build/dist/Utils/Metrics/MetricResultUnitConverter.js.map +1 -0
- package/build/dist/Utils/Metrics/RecordingRuleExpression.js +298 -0
- package/build/dist/Utils/Metrics/RecordingRuleExpression.js.map +1 -0
- package/build/dist/Utils/ValueFormatter.js +123 -13
- package/build/dist/Utils/ValueFormatter.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MetricFormulaEvaluator.js","sourceRoot":"","sources":["../../../../Utils/Metrics/MetricFormulaEvaluator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import MetricUnitUtil from "../MetricUnitUtil";
|
|
2
|
+
/**
|
|
3
|
+
* Convert aggregated metric results from each metric's native unit
|
|
4
|
+
* (reported by OpenTelemetry / stored in MetricType) into the unit the
|
|
5
|
+
* user configured in the query's alias ("legendUnit"). This is what
|
|
6
|
+
* makes downstream consumers — charts, formulas, and threshold
|
|
7
|
+
* comparisons — all speak the same unit as the user picked.
|
|
8
|
+
*
|
|
9
|
+
* Called after results are fetched but before formulas are evaluated.
|
|
10
|
+
* When `legendUnit` is empty or matches the native unit (or the two
|
|
11
|
+
* aren't in the same unit family), the raw value is passed through
|
|
12
|
+
* unchanged, so this is always safe to call.
|
|
13
|
+
*/
|
|
14
|
+
export default class MetricResultUnitConverter {
|
|
15
|
+
static convertQueryResultsToDisplayUnit(input) {
|
|
16
|
+
var _a, _b, _c, _d;
|
|
17
|
+
const converted = [];
|
|
18
|
+
for (let index = 0; index < input.results.length; index++) {
|
|
19
|
+
const rawResult = input.results[index];
|
|
20
|
+
if (!rawResult) {
|
|
21
|
+
converted.push({ data: [] });
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
24
|
+
const queryConfig = input.queryConfigs[index];
|
|
25
|
+
if (!queryConfig) {
|
|
26
|
+
converted.push(rawResult);
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
const metricName = (_c = (_b = (_a = queryConfig.metricQueryData) === null || _a === void 0 ? void 0 : _a.filterData) === null || _b === void 0 ? void 0 : _b.metricName) === null || _c === void 0 ? void 0 : _c.toString();
|
|
30
|
+
const nativeUnit = metricName
|
|
31
|
+
? input.nativeUnitByMetricName.get(metricName.toLowerCase())
|
|
32
|
+
: undefined;
|
|
33
|
+
const displayUnit = ((_d = queryConfig.metricAliasData) === null || _d === void 0 ? void 0 : _d.legendUnit) || undefined;
|
|
34
|
+
if (!nativeUnit || !displayUnit || nativeUnit === displayUnit) {
|
|
35
|
+
converted.push(rawResult);
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
converted.push(MetricResultUnitConverter.convertResult({
|
|
39
|
+
result: rawResult,
|
|
40
|
+
fromUnit: nativeUnit,
|
|
41
|
+
toUnit: displayUnit,
|
|
42
|
+
}));
|
|
43
|
+
}
|
|
44
|
+
return converted;
|
|
45
|
+
}
|
|
46
|
+
static convertResult(input) {
|
|
47
|
+
if (input.fromUnit === input.toUnit) {
|
|
48
|
+
return input.result;
|
|
49
|
+
}
|
|
50
|
+
const convertedData = input.result.data.map((row) => {
|
|
51
|
+
const convertedValue = MetricUnitUtil.convertToMetricUnit({
|
|
52
|
+
value: row.value,
|
|
53
|
+
fromUnit: input.fromUnit,
|
|
54
|
+
metricUnit: input.toUnit,
|
|
55
|
+
});
|
|
56
|
+
return Object.assign(Object.assign({}, row), { value: convertedValue });
|
|
57
|
+
});
|
|
58
|
+
return { data: convertedData };
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=MetricResultUnitConverter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MetricResultUnitConverter.js","sourceRoot":"","sources":["../../../../Utils/Metrics/MetricResultUnitConverter.ts"],"names":[],"mappings":"AAGA,OAAO,cAAc,MAAM,mBAAmB,CAAC;AAE/C;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,OAAO,OAAO,yBAAyB;IACrC,MAAM,CAAC,gCAAgC,CAAC,KAI9C;;QACC,MAAM,SAAS,GAA4B,EAAE,CAAC;QAE9C,KAAK,IAAI,KAAK,GAAW,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;YAClE,MAAM,SAAS,GAAiC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACrE,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;gBAC7B,SAAS;YACX,CAAC;YAED,MAAM,WAAW,GACf,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAE5B,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC1B,SAAS;YACX,CAAC;YAED,MAAM,UAAU,GACd,MAAA,MAAA,MAAA,WAAW,CAAC,eAAe,0CAAE,UAAU,0CAAE,UAAU,0CAAE,QAAQ,EAAE,CAAC;YAClE,MAAM,UAAU,GAAuB,UAAU;gBAC/C,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;gBAC5D,CAAC,CAAC,SAAS,CAAC;YACd,MAAM,WAAW,GACf,CAAA,MAAA,WAAW,CAAC,eAAe,0CAAE,UAAU,KAAI,SAAS,CAAC;YAEvD,IAAI,CAAC,UAAU,IAAI,CAAC,WAAW,IAAI,UAAU,KAAK,WAAW,EAAE,CAAC;gBAC9D,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC1B,SAAS;YACX,CAAC;YAED,SAAS,CAAC,IAAI,CACZ,yBAAyB,CAAC,aAAa,CAAC;gBACtC,MAAM,EAAE,SAAS;gBACjB,QAAQ,EAAE,UAAU;gBACpB,MAAM,EAAE,WAAW;aACpB,CAAC,CACH,CAAC;QACJ,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAEM,MAAM,CAAC,aAAa,CAAC,KAI3B;QACC,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,MAAM,EAAE,CAAC;YACpC,OAAO,KAAK,CAAC,MAAM,CAAC;QACtB,CAAC;QAED,MAAM,aAAa,GAA2B,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CACjE,CAAC,GAAoB,EAAE,EAAE;YACvB,MAAM,cAAc,GAAW,cAAc,CAAC,mBAAmB,CAAC;gBAChE,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,UAAU,EAAE,KAAK,CAAC,MAAM;aACzB,CAAC,CAAC;YACH,uCACK,GAAG,KACN,KAAK,EAAE,cAAc,IACrB;QACJ,CAAC,CACF,CAAC;QAEF,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;IACjC,CAAC;CACF"}
|
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Recording-rule expression DSL.
|
|
3
|
+
*
|
|
4
|
+
* Grammar (recursive descent):
|
|
5
|
+
*
|
|
6
|
+
* expr := term (('+' | '-') term)*
|
|
7
|
+
* term := factor (('*' | '/') factor)*
|
|
8
|
+
* factor := number | identifier | '(' expr ')' | '-' factor
|
|
9
|
+
* number := digits ('.' digits)?
|
|
10
|
+
* identifier := [A-Za-z_][A-Za-z0-9_]*
|
|
11
|
+
*
|
|
12
|
+
* Evaluation returns `null` when the result is not a finite real number —
|
|
13
|
+
* division by zero, missing binding, overflow, or NaN. Callers treat `null`
|
|
14
|
+
* as "skip this bucket".
|
|
15
|
+
*
|
|
16
|
+
* Intentionally small: no function calls, no power operator, no comparisons.
|
|
17
|
+
* A future version can grow this DSL without breaking stored rules because
|
|
18
|
+
* the whole expression is one string column on the model.
|
|
19
|
+
*/
|
|
20
|
+
const MAX_DEPTH = 32;
|
|
21
|
+
export function tokenize(input) {
|
|
22
|
+
const tokens = [];
|
|
23
|
+
let i = 0;
|
|
24
|
+
while (i < input.length) {
|
|
25
|
+
const ch = input[i];
|
|
26
|
+
if (ch === " " || ch === "\t" || ch === "\n" || ch === "\r") {
|
|
27
|
+
i++;
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
if (ch === "(") {
|
|
31
|
+
tokens.push({ type: "lparen", value: ch, pos: i });
|
|
32
|
+
i++;
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
if (ch === ")") {
|
|
36
|
+
tokens.push({ type: "rparen", value: ch, pos: i });
|
|
37
|
+
i++;
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
if (ch === "+" || ch === "-" || ch === "*" || ch === "/") {
|
|
41
|
+
tokens.push({ type: "op", value: ch, pos: i });
|
|
42
|
+
i++;
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
if (ch >= "0" && ch <= "9") {
|
|
46
|
+
const start = i;
|
|
47
|
+
while (i < input.length && input[i] >= "0" && input[i] <= "9") {
|
|
48
|
+
i++;
|
|
49
|
+
}
|
|
50
|
+
if (input[i] === ".") {
|
|
51
|
+
i++;
|
|
52
|
+
while (i < input.length && input[i] >= "0" && input[i] <= "9") {
|
|
53
|
+
i++;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
tokens.push({ type: "number", value: input.slice(start, i), pos: start });
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
if (isIdentStart(ch)) {
|
|
60
|
+
const start = i;
|
|
61
|
+
i++;
|
|
62
|
+
while (i < input.length && isIdentPart(input[i])) {
|
|
63
|
+
i++;
|
|
64
|
+
}
|
|
65
|
+
tokens.push({ type: "ident", value: input.slice(start, i), pos: start });
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
return {
|
|
69
|
+
ok: false,
|
|
70
|
+
error: `Unexpected character "${ch}" at position ${i}`,
|
|
71
|
+
position: i,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
return tokens;
|
|
75
|
+
}
|
|
76
|
+
function isIdentStart(ch) {
|
|
77
|
+
return (ch >= "A" && ch <= "Z") || (ch >= "a" && ch <= "z") || ch === "_";
|
|
78
|
+
}
|
|
79
|
+
function isIdentPart(ch) {
|
|
80
|
+
return isIdentStart(ch) || (ch >= "0" && ch <= "9");
|
|
81
|
+
}
|
|
82
|
+
// Recursive-descent parser.
|
|
83
|
+
export function parse(input) {
|
|
84
|
+
var _a, _b;
|
|
85
|
+
const tokenized = tokenize(input);
|
|
86
|
+
if (!Array.isArray(tokenized)) {
|
|
87
|
+
return tokenized;
|
|
88
|
+
}
|
|
89
|
+
const tokens = tokenized;
|
|
90
|
+
const state = { i: 0, depth: 0 };
|
|
91
|
+
const identifiers = new Set();
|
|
92
|
+
function peek() {
|
|
93
|
+
return tokens[state.i];
|
|
94
|
+
}
|
|
95
|
+
function advance() {
|
|
96
|
+
return tokens[state.i++];
|
|
97
|
+
}
|
|
98
|
+
function parseExpr() {
|
|
99
|
+
if (state.depth > MAX_DEPTH) {
|
|
100
|
+
return { ok: false, error: "Expression nesting too deep" };
|
|
101
|
+
}
|
|
102
|
+
state.depth++;
|
|
103
|
+
let left = parseTerm();
|
|
104
|
+
if ("ok" in left && left.ok === false) {
|
|
105
|
+
state.depth--;
|
|
106
|
+
return left;
|
|
107
|
+
}
|
|
108
|
+
while (true) {
|
|
109
|
+
const next = peek();
|
|
110
|
+
if ((next === null || next === void 0 ? void 0 : next.type) === "op" && (next.value === "+" || next.value === "-")) {
|
|
111
|
+
advance();
|
|
112
|
+
const right = parseTerm();
|
|
113
|
+
if ("ok" in right && right.ok === false) {
|
|
114
|
+
state.depth--;
|
|
115
|
+
return right;
|
|
116
|
+
}
|
|
117
|
+
left = {
|
|
118
|
+
type: "binary",
|
|
119
|
+
op: next.value,
|
|
120
|
+
left: left,
|
|
121
|
+
right: right,
|
|
122
|
+
};
|
|
123
|
+
continue;
|
|
124
|
+
}
|
|
125
|
+
break;
|
|
126
|
+
}
|
|
127
|
+
state.depth--;
|
|
128
|
+
return left;
|
|
129
|
+
}
|
|
130
|
+
function parseTerm() {
|
|
131
|
+
let left = parseFactor();
|
|
132
|
+
if ("ok" in left && left.ok === false) {
|
|
133
|
+
return left;
|
|
134
|
+
}
|
|
135
|
+
while (true) {
|
|
136
|
+
const next = peek();
|
|
137
|
+
if ((next === null || next === void 0 ? void 0 : next.type) === "op" && (next.value === "*" || next.value === "/")) {
|
|
138
|
+
advance();
|
|
139
|
+
const right = parseFactor();
|
|
140
|
+
if ("ok" in right && right.ok === false) {
|
|
141
|
+
return right;
|
|
142
|
+
}
|
|
143
|
+
left = {
|
|
144
|
+
type: "binary",
|
|
145
|
+
op: next.value,
|
|
146
|
+
left: left,
|
|
147
|
+
right: right,
|
|
148
|
+
};
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
break;
|
|
152
|
+
}
|
|
153
|
+
return left;
|
|
154
|
+
}
|
|
155
|
+
function parseFactor() {
|
|
156
|
+
const tok = peek();
|
|
157
|
+
if (!tok) {
|
|
158
|
+
return {
|
|
159
|
+
ok: false,
|
|
160
|
+
error: "Unexpected end of expression",
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
if (tok.type === "op" && tok.value === "-") {
|
|
164
|
+
advance();
|
|
165
|
+
const operand = parseFactor();
|
|
166
|
+
if ("ok" in operand && operand.ok === false) {
|
|
167
|
+
return operand;
|
|
168
|
+
}
|
|
169
|
+
return { type: "unary", op: "-", operand: operand };
|
|
170
|
+
}
|
|
171
|
+
if (tok.type === "number") {
|
|
172
|
+
advance();
|
|
173
|
+
const n = Number(tok.value);
|
|
174
|
+
if (!Number.isFinite(n)) {
|
|
175
|
+
return {
|
|
176
|
+
ok: false,
|
|
177
|
+
error: `Invalid number "${tok.value}"`,
|
|
178
|
+
position: tok.pos,
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
return { type: "num", value: n };
|
|
182
|
+
}
|
|
183
|
+
if (tok.type === "ident") {
|
|
184
|
+
advance();
|
|
185
|
+
identifiers.add(tok.value);
|
|
186
|
+
return { type: "ident", name: tok.value };
|
|
187
|
+
}
|
|
188
|
+
if (tok.type === "lparen") {
|
|
189
|
+
advance();
|
|
190
|
+
const inner = parseExpr();
|
|
191
|
+
if ("ok" in inner && inner.ok === false) {
|
|
192
|
+
return inner;
|
|
193
|
+
}
|
|
194
|
+
const close = advance();
|
|
195
|
+
if (!close || close.type !== "rparen") {
|
|
196
|
+
return Object.assign({ ok: false, error: "Expected ')'" }, (close ? { position: close.pos } : {}));
|
|
197
|
+
}
|
|
198
|
+
return inner;
|
|
199
|
+
}
|
|
200
|
+
return {
|
|
201
|
+
ok: false,
|
|
202
|
+
error: `Unexpected token "${tok.value}"`,
|
|
203
|
+
position: tok.pos,
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
const ast = parseExpr();
|
|
207
|
+
if ("ok" in ast && ast.ok === false) {
|
|
208
|
+
return ast;
|
|
209
|
+
}
|
|
210
|
+
if (state.i !== tokens.length) {
|
|
211
|
+
const stray = tokens[state.i];
|
|
212
|
+
return Object.assign({ ok: false, error: `Unexpected token "${(_a = stray === null || stray === void 0 ? void 0 : stray.value) !== null && _a !== void 0 ? _a : ""}" at position ${(_b = stray === null || stray === void 0 ? void 0 : stray.pos) !== null && _b !== void 0 ? _b : -1}` }, (stray ? { position: stray.pos } : {}));
|
|
213
|
+
}
|
|
214
|
+
return {
|
|
215
|
+
ok: true,
|
|
216
|
+
ast: ast,
|
|
217
|
+
identifiers: Array.from(identifiers),
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
/*
|
|
221
|
+
* Evaluate an AST against the given variable bindings. Returns null when
|
|
222
|
+
* the result is not a finite real number (division by zero, missing binding,
|
|
223
|
+
* NaN, Infinity). The caller skips any output row whose result is null.
|
|
224
|
+
*/
|
|
225
|
+
export function evaluate(node, bindings) {
|
|
226
|
+
switch (node.type) {
|
|
227
|
+
case "num":
|
|
228
|
+
return Number.isFinite(node.value) ? node.value : null;
|
|
229
|
+
case "ident": {
|
|
230
|
+
const v = bindings[node.name];
|
|
231
|
+
if (typeof v !== "number" || !Number.isFinite(v)) {
|
|
232
|
+
return null;
|
|
233
|
+
}
|
|
234
|
+
return v;
|
|
235
|
+
}
|
|
236
|
+
case "unary": {
|
|
237
|
+
const inner = evaluate(node.operand, bindings);
|
|
238
|
+
if (inner === null) {
|
|
239
|
+
return null;
|
|
240
|
+
}
|
|
241
|
+
return -inner;
|
|
242
|
+
}
|
|
243
|
+
case "binary": {
|
|
244
|
+
const l = evaluate(node.left, bindings);
|
|
245
|
+
if (l === null) {
|
|
246
|
+
return null;
|
|
247
|
+
}
|
|
248
|
+
const r = evaluate(node.right, bindings);
|
|
249
|
+
if (r === null) {
|
|
250
|
+
return null;
|
|
251
|
+
}
|
|
252
|
+
let out;
|
|
253
|
+
switch (node.op) {
|
|
254
|
+
case "+":
|
|
255
|
+
out = l + r;
|
|
256
|
+
break;
|
|
257
|
+
case "-":
|
|
258
|
+
out = l - r;
|
|
259
|
+
break;
|
|
260
|
+
case "*":
|
|
261
|
+
out = l * r;
|
|
262
|
+
break;
|
|
263
|
+
case "/":
|
|
264
|
+
if (r === 0) {
|
|
265
|
+
return null;
|
|
266
|
+
}
|
|
267
|
+
out = l / r;
|
|
268
|
+
break;
|
|
269
|
+
}
|
|
270
|
+
return Number.isFinite(out) ? out : null;
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
/*
|
|
275
|
+
* Parse + check that every identifier in the expression is in `allowed`.
|
|
276
|
+
* Used at rule-save time so the form can fail fast before the cron runs.
|
|
277
|
+
*/
|
|
278
|
+
export function validate(expression, allowed) {
|
|
279
|
+
const parsed = parse(expression);
|
|
280
|
+
if (!parsed.ok) {
|
|
281
|
+
return Object.assign({ ok: false, error: parsed.error }, (typeof parsed.position === "number"
|
|
282
|
+
? { position: parsed.position }
|
|
283
|
+
: {}));
|
|
284
|
+
}
|
|
285
|
+
const allowedSet = new Set(allowed);
|
|
286
|
+
const unknown = parsed.identifiers.filter((id) => {
|
|
287
|
+
return !allowedSet.has(id);
|
|
288
|
+
});
|
|
289
|
+
if (unknown.length > 0) {
|
|
290
|
+
return {
|
|
291
|
+
ok: false,
|
|
292
|
+
error: `Unknown identifier(s): ${unknown.join(", ")}`,
|
|
293
|
+
unknownIdentifiers: unknown,
|
|
294
|
+
};
|
|
295
|
+
}
|
|
296
|
+
return { ok: true };
|
|
297
|
+
}
|
|
298
|
+
//# sourceMappingURL=RecordingRuleExpression.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RecordingRuleExpression.js","sourceRoot":"","sources":["../../../../Utils/Metrics/RecordingRuleExpression.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,31 +11,31 @@ const byteUnits = [
|
|
|
11
11
|
{ threshold: 0, unit: "B", divisor: 1 },
|
|
12
12
|
];
|
|
13
13
|
const secondUnits = [
|
|
14
|
-
{ threshold: 86400, unit: "
|
|
15
|
-
{ threshold: 3600, unit: "
|
|
14
|
+
{ threshold: 86400, unit: "days", divisor: 86400 },
|
|
15
|
+
{ threshold: 3600, unit: "hours", divisor: 3600 },
|
|
16
16
|
{ threshold: 60, unit: "min", divisor: 60 },
|
|
17
|
-
{ threshold: 1, unit: "
|
|
17
|
+
{ threshold: 1, unit: "sec", divisor: 1 },
|
|
18
18
|
{ threshold: 0.001, unit: "ms", divisor: 0.001 },
|
|
19
19
|
{ threshold: 0.000001, unit: "µs", divisor: 0.000001 },
|
|
20
20
|
{ threshold: 0, unit: "ns", divisor: 0.000000001 },
|
|
21
21
|
];
|
|
22
22
|
const millisecondUnits = [
|
|
23
|
-
{ threshold: 86400000, unit: "
|
|
24
|
-
{ threshold: 3600000, unit: "
|
|
23
|
+
{ threshold: 86400000, unit: "days", divisor: 86400000 },
|
|
24
|
+
{ threshold: 3600000, unit: "hours", divisor: 3600000 },
|
|
25
25
|
{ threshold: 60000, unit: "min", divisor: 60000 },
|
|
26
|
-
{ threshold: 1000, unit: "
|
|
26
|
+
{ threshold: 1000, unit: "sec", divisor: 1000 },
|
|
27
27
|
{ threshold: 1, unit: "ms", divisor: 1 },
|
|
28
28
|
{ threshold: 0.001, unit: "µs", divisor: 0.001 },
|
|
29
29
|
{ threshold: 0, unit: "ns", divisor: 0.000001 },
|
|
30
30
|
];
|
|
31
31
|
const microsecondUnits = [
|
|
32
|
-
{ threshold: 1e6, unit: "
|
|
32
|
+
{ threshold: 1e6, unit: "sec", divisor: 1e6 },
|
|
33
33
|
{ threshold: 1e3, unit: "ms", divisor: 1e3 },
|
|
34
34
|
{ threshold: 1, unit: "µs", divisor: 1 },
|
|
35
35
|
{ threshold: 0, unit: "ns", divisor: 0.001 },
|
|
36
36
|
];
|
|
37
37
|
const nanosecondUnits = [
|
|
38
|
-
{ threshold: 1e9, unit: "
|
|
38
|
+
{ threshold: 1e9, unit: "sec", divisor: 1e9 },
|
|
39
39
|
{ threshold: 1e6, unit: "ms", divisor: 1e6 },
|
|
40
40
|
{ threshold: 1e3, unit: "µs", divisor: 1e3 },
|
|
41
41
|
{ threshold: 0, unit: "ns", divisor: 1 },
|
|
@@ -66,6 +66,89 @@ const unitTableMap = {
|
|
|
66
66
|
nanosecond: nanosecondUnits,
|
|
67
67
|
ns: nanosecondUnits,
|
|
68
68
|
};
|
|
69
|
+
/*
|
|
70
|
+
* Maps UCUM / OpenTelemetry unit codes to human-readable unit names.
|
|
71
|
+
* Used for labelling (e.g. badges) where the raw code "By" is hard to read.
|
|
72
|
+
*/
|
|
73
|
+
const readableUnitMap = {
|
|
74
|
+
// Dimensionless — OpenTelemetry uses "1" for unitless counts
|
|
75
|
+
"1": "",
|
|
76
|
+
// Bytes (decimal)
|
|
77
|
+
by: "Bytes",
|
|
78
|
+
byte: "Bytes",
|
|
79
|
+
bytes: "Bytes",
|
|
80
|
+
b: "Bytes",
|
|
81
|
+
kby: "Kilobytes",
|
|
82
|
+
mby: "Megabytes",
|
|
83
|
+
gby: "Gigabytes",
|
|
84
|
+
tby: "Terabytes",
|
|
85
|
+
pby: "Petabytes",
|
|
86
|
+
// Bytes (binary)
|
|
87
|
+
kiby: "Kibibytes",
|
|
88
|
+
miby: "Mebibytes",
|
|
89
|
+
giby: "Gibibytes",
|
|
90
|
+
tiby: "Tebibytes",
|
|
91
|
+
piby: "Pebibytes",
|
|
92
|
+
// Bits
|
|
93
|
+
bit: "Bits",
|
|
94
|
+
bits: "Bits",
|
|
95
|
+
kbit: "Kilobits",
|
|
96
|
+
mbit: "Megabits",
|
|
97
|
+
gbit: "Gigabits",
|
|
98
|
+
// Time
|
|
99
|
+
ns: "Nanoseconds",
|
|
100
|
+
nanosecond: "Nanoseconds",
|
|
101
|
+
nanoseconds: "Nanoseconds",
|
|
102
|
+
us: "Microseconds",
|
|
103
|
+
µs: "Microseconds",
|
|
104
|
+
microsecond: "Microseconds",
|
|
105
|
+
microseconds: "Microseconds",
|
|
106
|
+
ms: "Milliseconds",
|
|
107
|
+
millisecond: "Milliseconds",
|
|
108
|
+
milliseconds: "Milliseconds",
|
|
109
|
+
s: "Seconds",
|
|
110
|
+
sec: "Seconds",
|
|
111
|
+
second: "Seconds",
|
|
112
|
+
seconds: "Seconds",
|
|
113
|
+
min: "Minutes",
|
|
114
|
+
minute: "Minutes",
|
|
115
|
+
minutes: "Minutes",
|
|
116
|
+
h: "Hours",
|
|
117
|
+
hr: "Hours",
|
|
118
|
+
hour: "Hours",
|
|
119
|
+
hours: "Hours",
|
|
120
|
+
d: "Days",
|
|
121
|
+
day: "Days",
|
|
122
|
+
days: "Days",
|
|
123
|
+
// Percent
|
|
124
|
+
"%": "Percent",
|
|
125
|
+
percent: "Percent",
|
|
126
|
+
// Frequency
|
|
127
|
+
hz: "Hertz",
|
|
128
|
+
khz: "Kilohertz",
|
|
129
|
+
mhz: "Megahertz",
|
|
130
|
+
ghz: "Gigahertz",
|
|
131
|
+
// Temperature
|
|
132
|
+
cel: "Celsius",
|
|
133
|
+
"[degf]": "Fahrenheit",
|
|
134
|
+
k: "Kelvin",
|
|
135
|
+
// Electrical
|
|
136
|
+
v: "Volts",
|
|
137
|
+
a: "Amperes",
|
|
138
|
+
w: "Watts",
|
|
139
|
+
kw: "Kilowatts",
|
|
140
|
+
j: "Joules",
|
|
141
|
+
};
|
|
142
|
+
function normalizeUnit(unit) {
|
|
143
|
+
return unit.trim().toLowerCase();
|
|
144
|
+
}
|
|
145
|
+
function getReadableUnitPart(unit) {
|
|
146
|
+
const normalized = normalizeUnit(unit);
|
|
147
|
+
if (readableUnitMap[normalized] !== undefined) {
|
|
148
|
+
return readableUnitMap[normalized];
|
|
149
|
+
}
|
|
150
|
+
return unit;
|
|
151
|
+
}
|
|
69
152
|
function formatWithThresholds(value, thresholds) {
|
|
70
153
|
const absValue = Math.abs(value);
|
|
71
154
|
for (const t of thresholds) {
|
|
@@ -110,23 +193,50 @@ export default class ValueFormatter {
|
|
|
110
193
|
* e.g. formatValue(42, "%") → "42 %" (passthrough for unknown units)
|
|
111
194
|
*/
|
|
112
195
|
static formatValue(value, unit) {
|
|
113
|
-
|
|
196
|
+
// OpenTelemetry uses "1" as the dimensionless marker — render as a bare number.
|
|
197
|
+
if (!unit || unit.trim() === "" || unit.trim() === "1") {
|
|
114
198
|
return formatNumber(value);
|
|
115
199
|
}
|
|
116
|
-
const normalizedUnit = unit
|
|
200
|
+
const normalizedUnit = normalizeUnit(unit);
|
|
117
201
|
const thresholds = unitTableMap[normalizedUnit];
|
|
118
202
|
if (thresholds) {
|
|
119
203
|
return formatWithThresholds(value, thresholds).formatted;
|
|
120
204
|
}
|
|
121
|
-
// Unknown unit —
|
|
122
|
-
return `${formatNumber(value)} ${unit}`;
|
|
205
|
+
// Unknown unit — format number and show the readable unit name when we have one.
|
|
206
|
+
return `${formatNumber(value)} ${ValueFormatter.getReadableUnit(unit)}`;
|
|
123
207
|
}
|
|
124
208
|
// Check if a unit is one we can auto-scale (bytes, seconds, etc.)
|
|
125
209
|
static isScalableUnit(unit) {
|
|
126
210
|
if (!unit || unit.trim() === "") {
|
|
127
211
|
return false;
|
|
128
212
|
}
|
|
129
|
-
return unitTableMap[unit
|
|
213
|
+
return unitTableMap[normalizeUnit(unit)] !== undefined;
|
|
214
|
+
}
|
|
215
|
+
/*
|
|
216
|
+
* Convert a UCUM / OpenTelemetry unit code into a human-readable name.
|
|
217
|
+
* e.g. "By" → "Bytes", "s" → "Seconds", "By/s" → "Bytes per Second",
|
|
218
|
+
* "1" → "" (dimensionless). Falls back to the original string when unknown.
|
|
219
|
+
*/
|
|
220
|
+
static getReadableUnit(unit) {
|
|
221
|
+
if (!unit || unit.trim() === "" || unit.trim() === "1") {
|
|
222
|
+
return "";
|
|
223
|
+
}
|
|
224
|
+
// Handle compound rate units like "By/s" → "Bytes per Second"
|
|
225
|
+
if (unit.includes("/")) {
|
|
226
|
+
const parts = unit.split("/");
|
|
227
|
+
const readableParts = parts.map((part) => {
|
|
228
|
+
return getReadableUnitPart(part);
|
|
229
|
+
});
|
|
230
|
+
// Singularize the denominator ("Seconds" → "Second") for nicer rate reading.
|
|
231
|
+
const [numerator, ...denominators] = readableParts;
|
|
232
|
+
const denominator = denominators
|
|
233
|
+
.map((d) => {
|
|
234
|
+
return d.endsWith("s") ? d.slice(0, -1) : d;
|
|
235
|
+
})
|
|
236
|
+
.join(" per ");
|
|
237
|
+
return `${numerator} per ${denominator}`;
|
|
238
|
+
}
|
|
239
|
+
return getReadableUnitPart(unit);
|
|
130
240
|
}
|
|
131
241
|
}
|
|
132
242
|
//# sourceMappingURL=ValueFormatter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ValueFormatter.js","sourceRoot":"","sources":["../../../Utils/ValueFormatter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAcH,MAAM,SAAS,GAAyB;IACtC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;IAC9C,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;IAC9C,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE;IAC5C,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE;IAC5C,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE;IAC5C,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE;CACxC,CAAC;AAEF,MAAM,WAAW,GAAyB;IACxC,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"ValueFormatter.js","sourceRoot":"","sources":["../../../Utils/ValueFormatter.ts"],"names":[],"mappings":"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"}
|