@oneuptime/common 10.0.20 → 10.0.21

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 (89) hide show
  1. package/Server/API/TelemetryAPI.ts +208 -0
  2. package/Server/API/UserCallAPI.ts +29 -0
  3. package/Server/API/UserEmailAPI.ts +29 -0
  4. package/Server/API/UserSmsAPI.ts +29 -0
  5. package/Server/API/UserWhatsAppAPI.ts +29 -0
  6. package/Server/Services/LogAggregationService.ts +251 -0
  7. package/Server/Utils/VM/VMRunner.ts +10 -0
  8. package/Types/Log/LogQueryParser.ts +252 -0
  9. package/Types/Log/LogQueryToFilter.ts +131 -0
  10. package/UI/Components/CopyTextButton/CopyTextButton.tsx +3 -3
  11. package/UI/Components/LogsViewer/LogsViewer.tsx +166 -93
  12. package/UI/Components/LogsViewer/components/ActiveFilterChips.tsx +58 -0
  13. package/UI/Components/LogsViewer/components/FacetSection.tsx +119 -0
  14. package/UI/Components/LogsViewer/components/FacetValueRow.tsx +102 -0
  15. package/UI/Components/LogsViewer/components/HistogramTooltip.tsx +122 -0
  16. package/UI/Components/LogsViewer/components/LiveLogsToggle.tsx +4 -4
  17. package/UI/Components/LogsViewer/components/LogDetailsPanel.tsx +22 -26
  18. package/UI/Components/LogsViewer/components/LogSearchBar.tsx +360 -0
  19. package/UI/Components/LogsViewer/components/LogSearchHelp.tsx +128 -0
  20. package/UI/Components/LogsViewer/components/LogSearchSuggestions.tsx +64 -0
  21. package/UI/Components/LogsViewer/components/LogTimeRangePicker.tsx +199 -0
  22. package/UI/Components/LogsViewer/components/LogsFacetSidebar.tsx +172 -0
  23. package/UI/Components/LogsViewer/components/LogsFilterCard.tsx +27 -57
  24. package/UI/Components/LogsViewer/components/LogsHistogram.tsx +268 -0
  25. package/UI/Components/LogsViewer/components/LogsPagination.tsx +12 -10
  26. package/UI/Components/LogsViewer/components/LogsTable.tsx +33 -32
  27. package/UI/Components/LogsViewer/components/LogsViewerToolbar.tsx +16 -18
  28. package/UI/Components/LogsViewer/components/severityColors.ts +31 -0
  29. package/UI/Components/LogsViewer/components/severityTheme.ts +25 -25
  30. package/UI/Components/LogsViewer/types.ts +20 -0
  31. package/build/dist/Server/API/TelemetryAPI.js +136 -0
  32. package/build/dist/Server/API/TelemetryAPI.js.map +1 -1
  33. package/build/dist/Server/API/UserCallAPI.js +17 -0
  34. package/build/dist/Server/API/UserCallAPI.js.map +1 -1
  35. package/build/dist/Server/API/UserEmailAPI.js +17 -0
  36. package/build/dist/Server/API/UserEmailAPI.js.map +1 -1
  37. package/build/dist/Server/API/UserSmsAPI.js +17 -0
  38. package/build/dist/Server/API/UserSmsAPI.js.map +1 -1
  39. package/build/dist/Server/API/UserWhatsAppAPI.js +17 -0
  40. package/build/dist/Server/API/UserWhatsAppAPI.js.map +1 -1
  41. package/build/dist/Server/Services/LogAggregationService.js +163 -0
  42. package/build/dist/Server/Services/LogAggregationService.js.map +1 -0
  43. package/build/dist/Server/Utils/VM/VMRunner.js +10 -0
  44. package/build/dist/Server/Utils/VM/VMRunner.js.map +1 -1
  45. package/build/dist/Types/Log/LogQueryParser.js +200 -0
  46. package/build/dist/Types/Log/LogQueryParser.js.map +1 -0
  47. package/build/dist/Types/Log/LogQueryToFilter.js +96 -0
  48. package/build/dist/Types/Log/LogQueryToFilter.js.map +1 -0
  49. package/build/dist/UI/Components/CopyTextButton/CopyTextButton.js +3 -3
  50. package/build/dist/UI/Components/CopyTextButton/CopyTextButton.js.map +1 -1
  51. package/build/dist/UI/Components/LogsViewer/LogsViewer.js +64 -42
  52. package/build/dist/UI/Components/LogsViewer/LogsViewer.js.map +1 -1
  53. package/build/dist/UI/Components/LogsViewer/components/ActiveFilterChips.js +24 -0
  54. package/build/dist/UI/Components/LogsViewer/components/ActiveFilterChips.js.map +1 -0
  55. package/build/dist/UI/Components/LogsViewer/components/FacetSection.js +46 -0
  56. package/build/dist/UI/Components/LogsViewer/components/FacetSection.js.map +1 -0
  57. package/build/dist/UI/Components/LogsViewer/components/FacetValueRow.js +35 -0
  58. package/build/dist/UI/Components/LogsViewer/components/FacetValueRow.js.map +1 -0
  59. package/build/dist/UI/Components/LogsViewer/components/HistogramTooltip.js +64 -0
  60. package/build/dist/UI/Components/LogsViewer/components/HistogramTooltip.js.map +1 -0
  61. package/build/dist/UI/Components/LogsViewer/components/LiveLogsToggle.js +4 -4
  62. package/build/dist/UI/Components/LogsViewer/components/LiveLogsToggle.js.map +1 -1
  63. package/build/dist/UI/Components/LogsViewer/components/LogDetailsPanel.js +19 -21
  64. package/build/dist/UI/Components/LogsViewer/components/LogDetailsPanel.js.map +1 -1
  65. package/build/dist/UI/Components/LogsViewer/components/LogSearchBar.js +230 -0
  66. package/build/dist/UI/Components/LogsViewer/components/LogSearchBar.js.map +1 -0
  67. package/build/dist/UI/Components/LogsViewer/components/LogSearchHelp.js +84 -0
  68. package/build/dist/UI/Components/LogsViewer/components/LogSearchHelp.js.map +1 -0
  69. package/build/dist/UI/Components/LogsViewer/components/LogSearchSuggestions.js +27 -0
  70. package/build/dist/UI/Components/LogsViewer/components/LogSearchSuggestions.js.map +1 -0
  71. package/build/dist/UI/Components/LogsViewer/components/LogTimeRangePicker.js +100 -0
  72. package/build/dist/UI/Components/LogsViewer/components/LogTimeRangePicker.js.map +1 -0
  73. package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js +104 -0
  74. package/build/dist/UI/Components/LogsViewer/components/LogsFacetSidebar.js.map +1 -0
  75. package/build/dist/UI/Components/LogsViewer/components/LogsFilterCard.js +14 -35
  76. package/build/dist/UI/Components/LogsViewer/components/LogsFilterCard.js.map +1 -1
  77. package/build/dist/UI/Components/LogsViewer/components/LogsHistogram.js +127 -0
  78. package/build/dist/UI/Components/LogsViewer/components/LogsHistogram.js.map +1 -0
  79. package/build/dist/UI/Components/LogsViewer/components/LogsPagination.js +9 -9
  80. package/build/dist/UI/Components/LogsViewer/components/LogsPagination.js.map +1 -1
  81. package/build/dist/UI/Components/LogsViewer/components/LogsTable.js +31 -30
  82. package/build/dist/UI/Components/LogsViewer/components/LogsTable.js.map +1 -1
  83. package/build/dist/UI/Components/LogsViewer/components/LogsViewerToolbar.js +7 -8
  84. package/build/dist/UI/Components/LogsViewer/components/LogsViewerToolbar.js.map +1 -1
  85. package/build/dist/UI/Components/LogsViewer/components/severityColors.js +22 -0
  86. package/build/dist/UI/Components/LogsViewer/components/severityColors.js.map +1 -0
  87. package/build/dist/UI/Components/LogsViewer/components/severityTheme.js +25 -25
  88. package/build/dist/UI/Components/LogsViewer/components/severityTheme.js.map +1 -1
  89. package/package.json +1 -1
@@ -0,0 +1,230 @@
1
+ import React, { useState, useCallback, useRef, useEffect, } from "react";
2
+ import Icon from "../../Icon/Icon";
3
+ import IconProp from "../../../../Types/Icon/IconProp";
4
+ import LogSearchSuggestions from "./LogSearchSuggestions";
5
+ import LogSearchHelp from "./LogSearchHelp";
6
+ const LogSearchBar = (props) => {
7
+ const [isFocused, setIsFocused] = useState(false);
8
+ const [showSuggestions, setShowSuggestions] = useState(false);
9
+ const [showHelp, setShowHelp] = useState(false);
10
+ const [selectedSuggestionIndex, setSelectedSuggestionIndex] = useState(-1);
11
+ const inputRef = useRef(null);
12
+ const containerRef = useRef(null);
13
+ const currentWord = extractCurrentWord(props.value);
14
+ // Strip leading "@" — treat it as a trigger character for suggestions
15
+ const hasAtPrefix = currentWord.startsWith("@");
16
+ const normalizedWord = hasAtPrefix
17
+ ? currentWord.substring(1)
18
+ : currentWord;
19
+ // Determine if we're in "field:value" mode or "field name" mode
20
+ const colonIndex = normalizedWord.indexOf(":");
21
+ const isValueMode = colonIndex > 0;
22
+ const fieldPrefix = isValueMode
23
+ ? normalizedWord.substring(0, colonIndex).toLowerCase()
24
+ : "";
25
+ const partialValue = isValueMode
26
+ ? normalizedWord.substring(colonIndex + 1)
27
+ : "";
28
+ const filteredSuggestions = isValueMode
29
+ ? getValueSuggestions(fieldPrefix, partialValue, props.valueSuggestions || {})
30
+ : (props.suggestions || []).filter((s) => {
31
+ if (!normalizedWord && !hasAtPrefix) {
32
+ return false;
33
+ }
34
+ // When just "@" is typed, show all suggestions
35
+ if (hasAtPrefix && normalizedWord.length === 0) {
36
+ return true;
37
+ }
38
+ // Match against the suggestion name, stripping any leading "@" from the suggestion too
39
+ const normalizedSuggestion = s.startsWith("@")
40
+ ? s.substring(1).toLowerCase()
41
+ : s.toLowerCase();
42
+ return normalizedSuggestion.startsWith(normalizedWord.toLowerCase());
43
+ });
44
+ const shouldShowSuggestions = showSuggestions &&
45
+ isFocused &&
46
+ filteredSuggestions.length > 0 &&
47
+ (isValueMode ? true : currentWord.length > 0);
48
+ // Show help when focused, input is empty, and no suggestions visible
49
+ const shouldShowHelp = showHelp && isFocused && props.value.length === 0 && !shouldShowSuggestions;
50
+ useEffect(() => {
51
+ setSelectedSuggestionIndex(-1);
52
+ }, [currentWord]);
53
+ const handleKeyDown = useCallback((e) => {
54
+ if (e.key === "Enter") {
55
+ if (shouldShowSuggestions &&
56
+ selectedSuggestionIndex >= 0 &&
57
+ selectedSuggestionIndex < filteredSuggestions.length) {
58
+ applySuggestion(filteredSuggestions[selectedSuggestionIndex]);
59
+ e.preventDefault();
60
+ return;
61
+ }
62
+ // If in value mode with a typed value, try to match and apply as chip
63
+ if (isValueMode &&
64
+ partialValue.length > 0 &&
65
+ props.onFieldValueSelect) {
66
+ // First try exact case-insensitive match from the available values
67
+ const resolvedField = FIELD_ALIAS_MAP[fieldPrefix] || fieldPrefix;
68
+ const availableValues = (props.valueSuggestions || {})[resolvedField] || [];
69
+ const lowerPartial = partialValue.toLowerCase();
70
+ const exactMatch = availableValues.find((v) => {
71
+ return v.toLowerCase() === lowerPartial;
72
+ });
73
+ // Use exact match, or if there's exactly one prefix match, use that
74
+ const resolvedMatch = exactMatch ||
75
+ (filteredSuggestions.length === 1
76
+ ? filteredSuggestions[0]
77
+ : undefined);
78
+ if (resolvedMatch) {
79
+ props.onFieldValueSelect(fieldPrefix, resolvedMatch);
80
+ // Remove the field:value term from text
81
+ const parts = props.value.split(/\s+/);
82
+ parts.pop();
83
+ const remaining = parts.join(" ");
84
+ props.onChange(remaining ? remaining + " " : "");
85
+ setShowSuggestions(false);
86
+ setShowHelp(false);
87
+ e.preventDefault();
88
+ return;
89
+ }
90
+ }
91
+ props.onSubmit();
92
+ setShowSuggestions(false);
93
+ setShowHelp(false);
94
+ return;
95
+ }
96
+ if (e.key === "Escape") {
97
+ setShowSuggestions(false);
98
+ setShowHelp(false);
99
+ return;
100
+ }
101
+ if (!shouldShowSuggestions) {
102
+ return;
103
+ }
104
+ if (e.key === "ArrowDown") {
105
+ e.preventDefault();
106
+ setSelectedSuggestionIndex((prev) => {
107
+ return Math.min(prev + 1, filteredSuggestions.length - 1);
108
+ });
109
+ return;
110
+ }
111
+ if (e.key === "ArrowUp") {
112
+ e.preventDefault();
113
+ setSelectedSuggestionIndex((prev) => {
114
+ return Math.max(prev - 1, 0);
115
+ });
116
+ }
117
+ }, [
118
+ shouldShowSuggestions,
119
+ selectedSuggestionIndex,
120
+ filteredSuggestions,
121
+ isValueMode,
122
+ fieldPrefix,
123
+ partialValue,
124
+ props,
125
+ ]);
126
+ const applySuggestion = useCallback((suggestion) => {
127
+ var _a, _b;
128
+ if (isValueMode) {
129
+ // Value mode: apply as a chip via onFieldValueSelect
130
+ if (props.onFieldValueSelect) {
131
+ props.onFieldValueSelect(fieldPrefix, suggestion);
132
+ }
133
+ // Remove the current field:value term from the search text
134
+ const parts = props.value.split(/\s+/);
135
+ parts.pop(); // remove the field:partialValue
136
+ const remaining = parts.join(" ");
137
+ props.onChange(remaining ? remaining + " " : "");
138
+ setShowSuggestions(false);
139
+ setShowHelp(false);
140
+ (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
141
+ return;
142
+ }
143
+ // Field name mode: append colon
144
+ const parts = props.value.split(/\s+/);
145
+ if (parts.length > 0) {
146
+ parts[parts.length - 1] = suggestion + ":";
147
+ }
148
+ props.onChange(parts.join(" "));
149
+ setShowSuggestions(false);
150
+ setShowHelp(false);
151
+ (_b = inputRef.current) === null || _b === void 0 ? void 0 : _b.focus();
152
+ }, [props, isValueMode, fieldPrefix]);
153
+ const handleExampleClick = useCallback((example) => {
154
+ var _a;
155
+ props.onChange(example);
156
+ setShowHelp(false);
157
+ (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
158
+ }, [props]);
159
+ useEffect(() => {
160
+ const handleClickOutside = (e) => {
161
+ if (containerRef.current &&
162
+ !containerRef.current.contains(e.target)) {
163
+ setShowSuggestions(false);
164
+ setShowHelp(false);
165
+ }
166
+ };
167
+ document.addEventListener("mousedown", handleClickOutside);
168
+ return () => {
169
+ document.removeEventListener("mousedown", handleClickOutside);
170
+ };
171
+ }, []);
172
+ return (React.createElement("div", { ref: containerRef, className: "relative" },
173
+ React.createElement("div", { className: `flex items-center gap-2 rounded-lg border bg-white px-3 py-2 transition-colors ${isFocused
174
+ ? "border-indigo-400 ring-2 ring-indigo-100"
175
+ : "border-gray-200 hover:border-gray-300"}` },
176
+ React.createElement(Icon, { icon: IconProp.Search, className: "h-4 w-4 flex-none text-gray-400" }),
177
+ React.createElement("input", { ref: inputRef, type: "text", value: props.value, onChange: (e) => {
178
+ props.onChange(e.target.value);
179
+ setShowSuggestions(true);
180
+ setShowHelp(false);
181
+ }, onFocus: () => {
182
+ setIsFocused(true);
183
+ setShowSuggestions(true);
184
+ if (props.value.length === 0) {
185
+ setShowHelp(true);
186
+ }
187
+ }, onBlur: () => {
188
+ setIsFocused(false);
189
+ }, onKeyDown: handleKeyDown, placeholder: props.placeholder ||
190
+ 'Search logs... (e.g. severity:error service:api "connection refused")', className: "flex-1 bg-transparent font-mono text-sm text-gray-900 placeholder-gray-400 outline-none", spellCheck: false, autoComplete: "off" }),
191
+ props.value.length > 0 && (React.createElement("button", { type: "button", className: "flex-none rounded-full p-1 text-gray-400 hover:bg-gray-100", onClick: () => {
192
+ var _a;
193
+ props.onChange("");
194
+ setShowHelp(true);
195
+ setShowSuggestions(false);
196
+ (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
197
+ }, title: "Clear search" },
198
+ React.createElement(Icon, { icon: IconProp.Close, className: "h-3.5 w-3.5" })))),
199
+ shouldShowSuggestions && (React.createElement(LogSearchSuggestions, { suggestions: filteredSuggestions, selectedIndex: selectedSuggestionIndex, onSelect: applySuggestion, fieldContext: isValueMode ? fieldPrefix : undefined })),
200
+ shouldShowHelp && React.createElement(LogSearchHelp, { onExampleClick: handleExampleClick })));
201
+ };
202
+ function extractCurrentWord(value) {
203
+ const parts = value.split(/\s+/);
204
+ return parts[parts.length - 1] || "";
205
+ }
206
+ // Field alias mapping (user-facing name → internal key used in valueSuggestions)
207
+ const FIELD_ALIAS_MAP = {
208
+ severity: "severityText",
209
+ level: "severityText",
210
+ service: "serviceId",
211
+ trace: "traceId",
212
+ span: "spanId",
213
+ };
214
+ function getValueSuggestions(fieldName, partialValue, valueSuggestions) {
215
+ // Resolve field name alias
216
+ const resolvedField = FIELD_ALIAS_MAP[fieldName] || fieldName;
217
+ const values = valueSuggestions[resolvedField];
218
+ if (!values || values.length === 0) {
219
+ return [];
220
+ }
221
+ if (!partialValue || partialValue.length === 0) {
222
+ return values;
223
+ }
224
+ const lowerPartial = partialValue.toLowerCase();
225
+ return values.filter((v) => {
226
+ return v.toLowerCase().startsWith(lowerPartial);
227
+ });
228
+ }
229
+ export default LogSearchBar;
230
+ //# sourceMappingURL=LogSearchBar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LogSearchBar.js","sourceRoot":"","sources":["../../../../../../UI/Components/LogsViewer/components/LogSearchBar.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ import React from "react";
2
+ const HELP_ROWS = [
3
+ {
4
+ syntax: "free text",
5
+ description: "Search log messages",
6
+ example: "connection refused",
7
+ },
8
+ {
9
+ syntax: '"quoted phrase"',
10
+ description: "Exact phrase match",
11
+ example: '"out of memory"',
12
+ },
13
+ {
14
+ syntax: "severity:<level>",
15
+ description: "Filter by log level",
16
+ example: "severity:error",
17
+ },
18
+ {
19
+ syntax: "service:<name>",
20
+ description: "Filter by service",
21
+ example: "service:api",
22
+ },
23
+ {
24
+ syntax: "trace:<id>",
25
+ description: "Filter by trace ID",
26
+ example: "trace:abc123def456",
27
+ },
28
+ {
29
+ syntax: "span:<id>",
30
+ description: "Filter by span ID",
31
+ example: "span:e1f7f671fe78",
32
+ },
33
+ {
34
+ syntax: "@<attr>:<value>",
35
+ description: "Filter by attribute",
36
+ example: "@http.status_code:500",
37
+ },
38
+ {
39
+ syntax: "-field:value",
40
+ description: "Exclude matching logs",
41
+ example: "-severity:debug",
42
+ },
43
+ {
44
+ syntax: "field:value*",
45
+ description: "Wildcard match",
46
+ example: "service:api-*",
47
+ },
48
+ {
49
+ syntax: "@attr:>N",
50
+ description: "Numeric comparison",
51
+ example: "@duration:>1000",
52
+ },
53
+ ];
54
+ const LogSearchHelp = (props) => {
55
+ return (React.createElement("div", { className: "absolute left-0 top-full z-50 mt-1 w-[36rem] overflow-hidden rounded-lg border border-gray-200 bg-white shadow-lg" },
56
+ React.createElement("div", { className: "border-b border-gray-100 px-3 py-2" },
57
+ React.createElement("span", { className: "text-[11px] font-semibold uppercase tracking-wider text-gray-400" }, "Search syntax")),
58
+ React.createElement("table", { className: "w-full" },
59
+ React.createElement("tbody", null, HELP_ROWS.map((row) => {
60
+ return (React.createElement("tr", { key: row.syntax, className: "cursor-pointer transition-colors hover:bg-gray-50", onMouseDown: (e) => {
61
+ e.preventDefault();
62
+ if (props.onExampleClick) {
63
+ props.onExampleClick(row.example);
64
+ }
65
+ } },
66
+ React.createElement("td", { className: "whitespace-nowrap py-1.5 pl-3 pr-2" },
67
+ React.createElement("code", { className: "font-mono text-xs text-indigo-600" }, row.syntax)),
68
+ React.createElement("td", { className: "py-1.5 px-2" },
69
+ React.createElement("span", { className: "text-xs text-gray-500" }, row.description)),
70
+ React.createElement("td", { className: "whitespace-nowrap py-1.5 pl-2 pr-3 text-right" },
71
+ React.createElement("code", { className: "font-mono text-[11px] text-gray-400" }, row.example))));
72
+ }))),
73
+ React.createElement("div", { className: "border-t border-gray-100 px-3 py-1.5" },
74
+ React.createElement("span", { className: "text-[10px] text-gray-400" },
75
+ "Press",
76
+ " ",
77
+ React.createElement("kbd", { className: "rounded border border-gray-200 bg-gray-50 px-1 py-0.5 font-mono text-[10px]" }, "Enter"),
78
+ " ",
79
+ "to search \u00B7 Combine filters:",
80
+ " ",
81
+ React.createElement("code", { className: "font-mono text-[10px] text-gray-500" }, "severity:error service:api \"timeout\"")))));
82
+ };
83
+ export default LogSearchHelp;
84
+ //# sourceMappingURL=LogSearchHelp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LogSearchHelp.js","sourceRoot":"","sources":["../../../../../../UI/Components/LogsViewer/components/LogSearchHelp.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAY/D,MAAM,SAAS,GAAmB;IAChC;QACE,MAAM,EAAE,WAAW;QACnB,WAAW,EAAE,qBAAqB;QAClC,OAAO,EAAE,oBAAoB;KAC9B;IACD;QACE,MAAM,EAAE,iBAAiB;QACzB,WAAW,EAAE,oBAAoB;QACjC,OAAO,EAAE,iBAAiB;KAC3B;IACD;QACE,MAAM,EAAE,kBAAkB;QAC1B,WAAW,EAAE,qBAAqB;QAClC,OAAO,EAAE,gBAAgB;KAC1B;IACD;QACE,MAAM,EAAE,gBAAgB;QACxB,WAAW,EAAE,mBAAmB;QAChC,OAAO,EAAE,aAAa;KACvB;IACD;QACE,MAAM,EAAE,YAAY;QACpB,WAAW,EAAE,oBAAoB;QACjC,OAAO,EAAE,oBAAoB;KAC9B;IACD;QACE,MAAM,EAAE,WAAW;QACnB,WAAW,EAAE,mBAAmB;QAChC,OAAO,EAAE,mBAAmB;KAC7B;IACD;QACE,MAAM,EAAE,iBAAiB;QACzB,WAAW,EAAE,qBAAqB;QAClC,OAAO,EAAE,uBAAuB;KACjC;IACD;QACE,MAAM,EAAE,cAAc;QACtB,WAAW,EAAE,uBAAuB;QACpC,OAAO,EAAE,iBAAiB;KAC3B;IACD;QACE,MAAM,EAAE,cAAc;QACtB,WAAW,EAAE,gBAAgB;QAC7B,OAAO,EAAE,eAAe;KACzB;IACD;QACE,MAAM,EAAE,UAAU;QAClB,WAAW,EAAE,oBAAoB;QACjC,OAAO,EAAE,iBAAiB;KAC3B;CACF,CAAC;AAEF,MAAM,aAAa,GAA0C,CAC3D,KAAyB,EACX,EAAE;IAChB,OAAO,CACL,6BAAK,SAAS,EAAC,mHAAmH;QAChI,6BAAK,SAAS,EAAC,oCAAoC;YACjD,8BAAM,SAAS,EAAC,kEAAkE,oBAE3E,CACH;QAEN,+BAAO,SAAS,EAAC,QAAQ;YACvB,mCACG,SAAS,CAAC,GAAG,CAAC,CAAC,GAAY,EAAE,EAAE;gBAC9B,OAAO,CACL,4BACE,GAAG,EAAE,GAAG,CAAC,MAAM,EACf,SAAS,EAAC,mDAAmD,EAC7D,WAAW,EAAE,CAAC,CAAmB,EAAE,EAAE;wBACnC,CAAC,CAAC,cAAc,EAAE,CAAC;wBACnB,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;4BACzB,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;wBACpC,CAAC;oBACH,CAAC;oBAED,4BAAI,SAAS,EAAC,oCAAoC;wBAChD,8BAAM,SAAS,EAAC,mCAAmC,IAChD,GAAG,CAAC,MAAM,CACN,CACJ;oBACL,4BAAI,SAAS,EAAC,aAAa;wBACzB,8BAAM,SAAS,EAAC,uBAAuB,IACpC,GAAG,CAAC,WAAW,CACX,CACJ;oBACL,4BAAI,SAAS,EAAC,+CAA+C;wBAC3D,8BAAM,SAAS,EAAC,qCAAqC,IAClD,GAAG,CAAC,OAAO,CACP,CACJ,CACF,CACN,CAAC;YACJ,CAAC,CAAC,CACI,CACF;QAER,6BAAK,SAAS,EAAC,sCAAsC;YACnD,8BAAM,SAAS,EAAC,2BAA2B;;gBACnC,GAAG;gBACT,6BAAK,SAAS,EAAC,6EAA6E,YAEtF;gBAAC,GAAG;;gBACmB,GAAG;gBAChC,8BAAM,SAAS,EAAC,qCAAqC,6CAE9C,CACF,CACH,CACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -0,0 +1,27 @@
1
+ import React from "react";
2
+ const MAX_VISIBLE_SUGGESTIONS = 8;
3
+ const LogSearchSuggestions = (props) => {
4
+ const visible = props.suggestions.slice(0, MAX_VISIBLE_SUGGESTIONS);
5
+ return (React.createElement("div", { className: "absolute left-0 right-0 top-full z-50 mt-1 max-h-56 overflow-y-auto rounded-lg border border-gray-200 bg-white py-1 shadow-lg" },
6
+ visible.map((suggestion, index) => {
7
+ const isSelected = index === props.selectedIndex;
8
+ return (React.createElement("button", { key: suggestion, type: "button", className: `flex w-full items-center gap-2 px-3 py-1.5 text-left text-sm transition-colors ${isSelected
9
+ ? "bg-indigo-50 text-indigo-700"
10
+ : "text-gray-700 hover:bg-gray-50"}`, onMouseDown: (e) => {
11
+ e.preventDefault();
12
+ props.onSelect(suggestion);
13
+ } }, props.fieldContext ? (React.createElement(React.Fragment, null,
14
+ React.createElement("span", { className: "font-mono text-xs text-gray-400" },
15
+ props.fieldContext,
16
+ ":"),
17
+ React.createElement("span", { className: "font-mono" }, suggestion))) : (React.createElement(React.Fragment, null,
18
+ React.createElement("span", { className: "font-mono text-xs text-indigo-400" }, "@"),
19
+ React.createElement("span", { className: "font-mono" }, suggestion)))));
20
+ }),
21
+ props.suggestions.length > MAX_VISIBLE_SUGGESTIONS && (React.createElement("div", { className: "px-3 py-1 text-[11px] text-gray-400" },
22
+ "+",
23
+ props.suggestions.length - MAX_VISIBLE_SUGGESTIONS,
24
+ " more..."))));
25
+ };
26
+ export default LogSearchSuggestions;
27
+ //# sourceMappingURL=LogSearchSuggestions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LogSearchSuggestions.js","sourceRoot":"","sources":["../../../../../../UI/Components/LogsViewer/components/LogSearchSuggestions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAS/D,MAAM,uBAAuB,GAAW,CAAC,CAAC;AAE1C,MAAM,oBAAoB,GAAiD,CACzE,KAAgC,EAClB,EAAE;IAChB,MAAM,OAAO,GAAkB,KAAK,CAAC,WAAW,CAAC,KAAK,CACpD,CAAC,EACD,uBAAuB,CACxB,CAAC;IAEF,OAAO,CACL,6BAAK,SAAS,EAAC,+HAA+H;QAC3I,OAAO,CAAC,GAAG,CAAC,CAAC,UAAkB,EAAE,KAAa,EAAE,EAAE;YACjD,MAAM,UAAU,GAAY,KAAK,KAAK,KAAK,CAAC,aAAa,CAAC;YAE1D,OAAO,CACL,gCACE,GAAG,EAAE,UAAU,EACf,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,kFACT,UAAU;oBACR,CAAC,CAAC,8BAA8B;oBAChC,CAAC,CAAC,gCACN,EAAE,EACF,WAAW,EAAE,CAAC,CAAmB,EAAE,EAAE;oBACnC,CAAC,CAAC,cAAc,EAAE,CAAC;oBACnB,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;gBAC7B,CAAC,IAEA,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CACpB;gBACE,8BAAM,SAAS,EAAC,iCAAiC;oBAC9C,KAAK,CAAC,YAAY;wBACd;gBACP,8BAAM,SAAS,EAAC,WAAW,IAAE,UAAU,CAAQ,CAC9C,CACJ,CAAC,CAAC,CAAC,CACF;gBACE,8BAAM,SAAS,EAAC,mCAAmC,QAAS;gBAC5D,8BAAM,SAAS,EAAC,WAAW,IAAE,UAAU,CAAQ,CAC9C,CACJ,CACM,CACV,CAAC;QACJ,CAAC,CAAC;QACD,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,uBAAuB,IAAI,CACrD,6BAAK,SAAS,EAAC,qCAAqC;;YAChD,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,uBAAuB;uBAChD,CACP,CACG,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,oBAAoB,CAAC"}
@@ -0,0 +1,100 @@
1
+ import React, { useState, useRef, useEffect, useCallback, } from "react";
2
+ import Icon from "../../Icon/Icon";
3
+ import IconProp from "../../../../Types/Icon/IconProp";
4
+ import TimeRange from "../../../../Types/Time/TimeRange";
5
+ import StartAndEndDate, { StartAndEndDateType, } from "../../Date/StartAndEndDate";
6
+ // Preset options to show in the dropdown (ordered for log investigation use)
7
+ const PRESET_OPTIONS = [
8
+ { range: TimeRange.PAST_THIRTY_MINS, label: "Past 30 Minutes" },
9
+ { range: TimeRange.PAST_ONE_HOUR, label: "Past 1 Hour" },
10
+ { range: TimeRange.PAST_TWO_HOURS, label: "Past 2 Hours" },
11
+ { range: TimeRange.PAST_THREE_HOURS, label: "Past 3 Hours" },
12
+ { range: TimeRange.PAST_ONE_DAY, label: "Past 1 Day" },
13
+ { range: TimeRange.PAST_TWO_DAYS, label: "Past 2 Days" },
14
+ { range: TimeRange.PAST_ONE_WEEK, label: "Past 1 Week" },
15
+ { range: TimeRange.PAST_TWO_WEEKS, label: "Past 2 Weeks" },
16
+ { range: TimeRange.PAST_ONE_MONTH, label: "Past 1 Month" },
17
+ { range: TimeRange.PAST_THREE_MONTHS, label: "Past 3 Months" },
18
+ ];
19
+ function formatDateShort(date) {
20
+ const month = date.toLocaleString("en-US", { month: "short" });
21
+ const day = date.getDate();
22
+ const hours = date.getHours().toString().padStart(2, "0");
23
+ const minutes = date.getMinutes().toString().padStart(2, "0");
24
+ return `${month} ${day}, ${hours}:${minutes}`;
25
+ }
26
+ function getButtonLabel(value) {
27
+ if (value.range === TimeRange.CUSTOM && value.startAndEndDate) {
28
+ const start = formatDateShort(value.startAndEndDate.startValue);
29
+ const end = formatDateShort(value.startAndEndDate.endValue);
30
+ return `${start} – ${end}`;
31
+ }
32
+ const preset = PRESET_OPTIONS.find((opt) => {
33
+ return opt.range === value.range;
34
+ });
35
+ return preset ? preset.label : value.range;
36
+ }
37
+ const LogTimeRangePicker = (props) => {
38
+ const [isOpen, setIsOpen] = useState(false);
39
+ const [showCustom, setShowCustom] = useState(props.value.range === TimeRange.CUSTOM);
40
+ const containerRef = useRef(null);
41
+ // Close on click outside
42
+ useEffect(() => {
43
+ const handleClickOutside = (e) => {
44
+ if (containerRef.current &&
45
+ !containerRef.current.contains(e.target)) {
46
+ setIsOpen(false);
47
+ }
48
+ };
49
+ document.addEventListener("mousedown", handleClickOutside);
50
+ return () => {
51
+ document.removeEventListener("mousedown", handleClickOutside);
52
+ };
53
+ }, []);
54
+ // Sync showCustom when value changes externally (e.g., histogram drag)
55
+ useEffect(() => {
56
+ setShowCustom(props.value.range === TimeRange.CUSTOM);
57
+ }, [props.value.range]);
58
+ const handlePresetSelect = useCallback((range) => {
59
+ props.onChange({ range });
60
+ setShowCustom(false);
61
+ setIsOpen(false);
62
+ }, [props]);
63
+ const handleCustomDateChange = useCallback((dateRange) => {
64
+ if (dateRange) {
65
+ props.onChange({
66
+ range: TimeRange.CUSTOM,
67
+ startAndEndDate: dateRange,
68
+ });
69
+ }
70
+ }, [props]);
71
+ const buttonLabel = getButtonLabel(props.value);
72
+ return (React.createElement("div", { ref: containerRef, className: "relative" },
73
+ React.createElement("button", { type: "button", className: `flex items-center gap-1.5 rounded-md border px-2.5 py-1.5 text-xs font-medium transition-colors ${isOpen
74
+ ? "border-indigo-300 bg-indigo-50 text-indigo-700"
75
+ : "border-gray-200 bg-white text-gray-600 hover:border-gray-300 hover:bg-gray-50"}`, onClick: () => {
76
+ setIsOpen(!isOpen);
77
+ } },
78
+ React.createElement(Icon, { icon: IconProp.Clock, className: "h-3.5 w-3.5" }),
79
+ React.createElement("span", null, buttonLabel),
80
+ React.createElement(Icon, { icon: IconProp.ChevronDown, className: `h-3 w-3 transition-transform ${isOpen ? "rotate-180" : ""}` })),
81
+ isOpen && (React.createElement("div", { className: "absolute right-0 top-full z-50 mt-1 w-72 rounded-lg border border-gray-200 bg-white shadow-lg" },
82
+ React.createElement("div", { className: "max-h-64 overflow-y-auto py-1" },
83
+ PRESET_OPTIONS.map((option) => {
84
+ const isActive = props.value.range === option.range;
85
+ return (React.createElement("button", { key: option.range, type: "button", className: `flex w-full items-center px-3 py-1.5 text-left text-sm transition-colors ${isActive
86
+ ? "bg-indigo-50 font-medium text-indigo-700"
87
+ : "text-gray-700 hover:bg-gray-50"}`, onClick: () => {
88
+ handlePresetSelect(option.range);
89
+ } }, option.label));
90
+ }),
91
+ React.createElement("button", { type: "button", className: `flex w-full items-center px-3 py-1.5 text-left text-sm transition-colors ${props.value.range === TimeRange.CUSTOM
92
+ ? "bg-indigo-50 font-medium text-indigo-700"
93
+ : "text-gray-700 hover:bg-gray-50"}`, onClick: () => {
94
+ setShowCustom(true);
95
+ } }, "Custom Range...")),
96
+ showCustom && (React.createElement("div", { className: "border-t border-gray-100 p-3" },
97
+ React.createElement(StartAndEndDate, { type: StartAndEndDateType.DateTime, value: props.value.startAndEndDate, hideTimeButtons: true, onValueChanged: handleCustomDateChange })))))));
98
+ };
99
+ export default LogTimeRangePicker;
100
+ //# sourceMappingURL=LogTimeRangePicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LogTimeRangePicker.js","sourceRoot":"","sources":["../../../../../../UI/Components/LogsViewer/components/LogTimeRangePicker.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,104 @@
1
+ import React, { useMemo } from "react";
2
+ import FacetSection from "./FacetSection";
3
+ import ComponentLoader from "../../ComponentLoader/ComponentLoader";
4
+ import { getSeverityColor } from "./severityColors";
5
+ import LogSeverity from "../../../../Types/Log/LogSeverity";
6
+ const SEVERITY_ORDER = [
7
+ LogSeverity.Fatal,
8
+ LogSeverity.Error,
9
+ LogSeverity.Warning,
10
+ LogSeverity.Information,
11
+ LogSeverity.Debug,
12
+ LogSeverity.Trace,
13
+ LogSeverity.Unspecified,
14
+ ];
15
+ function buildSeverityColorMap() {
16
+ const map = {};
17
+ for (const severity of SEVERITY_ORDER) {
18
+ map[severity] = getSeverityColor(severity).fill;
19
+ }
20
+ return map;
21
+ }
22
+ function buildServiceDisplayMap(serviceMap) {
23
+ const map = {};
24
+ for (const [id, service] of Object.entries(serviceMap)) {
25
+ if (service === null || service === void 0 ? void 0 : service.name) {
26
+ map[id] = service.name;
27
+ }
28
+ }
29
+ return map;
30
+ }
31
+ function buildServiceColorMap(serviceMap) {
32
+ const map = {};
33
+ for (const [id, service] of Object.entries(serviceMap)) {
34
+ if (service === null || service === void 0 ? void 0 : service.serviceColor) {
35
+ map[id] = service.serviceColor.toString();
36
+ }
37
+ }
38
+ return map;
39
+ }
40
+ function getFacetTitle(key) {
41
+ const titleMap = {
42
+ severityText: "Severity",
43
+ serviceId: "Service",
44
+ traceId: "Trace ID",
45
+ spanId: "Span ID",
46
+ };
47
+ return titleMap[key] || key;
48
+ }
49
+ const LogsFacetSidebar = (props) => {
50
+ const severityColorMap = useMemo(() => {
51
+ return buildSeverityColorMap();
52
+ }, []);
53
+ const serviceDisplayMap = useMemo(() => {
54
+ return buildServiceDisplayMap(props.serviceMap);
55
+ }, [props.serviceMap]);
56
+ const serviceColorMap = useMemo(() => {
57
+ return buildServiceColorMap(props.serviceMap);
58
+ }, [props.serviceMap]);
59
+ const facetKeys = useMemo(() => {
60
+ const priorityKeys = ["severityText", "serviceId"];
61
+ const otherKeys = Object.keys(props.facetData).filter((key) => {
62
+ return !priorityKeys.includes(key);
63
+ });
64
+ return [
65
+ ...priorityKeys.filter((key) => {
66
+ return props.facetData[key] !== undefined;
67
+ }),
68
+ ...otherKeys.sort(),
69
+ ];
70
+ }, [props.facetData]);
71
+ // Build a map of facetKey -> Set<activeValue>
72
+ const activeValuesByKey = useMemo(() => {
73
+ const map = {};
74
+ if (props.activeFilters) {
75
+ for (const filter of props.activeFilters) {
76
+ if (!map[filter.facetKey]) {
77
+ map[filter.facetKey] = new Set();
78
+ }
79
+ map[filter.facetKey].add(filter.value);
80
+ }
81
+ }
82
+ return map;
83
+ }, [props.activeFilters]);
84
+ return (React.createElement("div", { className: "flex h-full w-56 flex-none flex-col overflow-y-auto rounded-lg border border-gray-200 bg-white" },
85
+ React.createElement("div", { className: "border-b border-gray-100 px-3 py-2.5" },
86
+ React.createElement("h3", { className: "text-[11px] font-semibold uppercase tracking-widest text-gray-400" }, "Filters")),
87
+ props.isLoading && Object.keys(props.facetData).length === 0 && (React.createElement("div", { className: "flex flex-1 items-center justify-center py-8" },
88
+ React.createElement(ComponentLoader, null))),
89
+ React.createElement("div", { className: "flex-1 overflow-y-auto" }, facetKeys.map((key) => {
90
+ const values = props.facetData[key] || [];
91
+ let valueDisplayMap;
92
+ let valueColorMap;
93
+ if (key === "serviceId") {
94
+ valueDisplayMap = serviceDisplayMap;
95
+ valueColorMap = serviceColorMap;
96
+ }
97
+ else if (key === "severityText") {
98
+ valueColorMap = severityColorMap;
99
+ }
100
+ return (React.createElement(FacetSection, { key: key, facetKey: key, title: getFacetTitle(key), values: values, onIncludeValue: props.onIncludeFilter, onExcludeValue: props.onExcludeFilter, valueDisplayMap: valueDisplayMap, valueColorMap: valueColorMap, activeValues: activeValuesByKey[key] }));
101
+ }))));
102
+ };
103
+ export default LogsFacetSidebar;
104
+ //# sourceMappingURL=LogsFacetSidebar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LogsFacetSidebar.js","sourceRoot":"","sources":["../../../../../../UI/Components/LogsViewer/components/LogsFacetSidebar.tsx"],"names":[],"mappings":"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"}