@odigos/ui-kit 0.0.87 → 0.0.89
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/CHANGELOG.md +15 -0
- package/lib/components.js +8 -8
- package/lib/constants.js +1 -1
- package/lib/containers/data-flow-actions-menu/search/search-results/builder.d.ts +1 -1
- package/lib/containers/destination-form/dynamic-fields/index.d.ts +2 -1
- package/lib/containers/index.d.ts +1 -0
- package/lib/containers/trace-view/build-spans.d.ts +2 -0
- package/lib/containers/trace-view/index.d.ts +7 -0
- package/lib/containers/trace-view/span/index.d.ts +19 -0
- package/lib/containers.js +201 -55
- package/lib/functions/compare-condition/index.d.ts +2 -2
- package/lib/functions.js +7 -7
- package/lib/hooks.js +3 -3
- package/lib/icons.js +7 -7
- package/lib/{index-d30e26c2.js → index-2b6ae9c8.js} +1 -1
- package/lib/{index-72089d6e.js → index-430be181.js} +1 -1
- package/lib/{index-8b736e84.js → index-5fb023f6.js} +3 -35
- package/lib/{index-1b05e560.js → index-6344746d.js} +1 -1
- package/lib/{index-59b6fb7a.js → index-75412865.js} +1 -1
- package/lib/{index-86030474.js → index-9436f4a7.js} +48 -1
- package/lib/{index-6bb0eb56.js → index-968d01e8.js} +1 -1
- package/lib/{index-d87a2c69.js → index-ddf36942.js} +2 -2
- package/lib/{index-5dc10442.js → index-ff2ca759.js} +2 -2
- package/lib/{index-c766be17.js → index-ff2e118e.js} +5 -5
- package/lib/mock-data/index.d.ts +1 -0
- package/lib/mock-data/traces/index.d.ts +2 -0
- package/lib/snippets.js +7 -7
- package/lib/store.js +1 -1
- package/lib/theme.js +1 -1
- package/lib/types/destinations/index.d.ts +3 -3
- package/lib/types/index.d.ts +1 -0
- package/lib/types/traces/index.d.ts +38 -0
- package/lib/{useTransition-cac1649d.js → useTransition-0f2cccf3.js} +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.0.89](https://github.com/odigos-io/ui-kit/compare/ui-kit-v0.0.88...ui-kit-v0.0.89) (2025-08-21)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* add span durations ([#336](https://github.com/odigos-io/ui-kit/issues/336)) ([29c6be3](https://github.com/odigos-io/ui-kit/commit/29c6be353da5aa8f8789dae7b25aa8c1db9a2b7e))
|
|
9
|
+
* build spans with child/parent relations, initial render of spans ([#334](https://github.com/odigos-io/ui-kit/issues/334)) ([0b3fc46](https://github.com/odigos-io/ui-kit/commit/0b3fc46accde6a9cdece208c7cf958ebd3571051))
|
|
10
|
+
|
|
11
|
+
## [0.0.88](https://github.com/odigos-io/ui-kit/compare/ui-kit-v0.0.87...ui-kit-v0.0.88) (2025-08-20)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### Features
|
|
15
|
+
|
|
16
|
+
* enhance condition handling for dynamic fields and exported signals in destination forms ([#332](https://github.com/odigos-io/ui-kit/issues/332)) ([9938e0b](https://github.com/odigos-io/ui-kit/commit/9938e0be4f9b42ac62f64630f9fe05b0fd5910af))
|
|
17
|
+
|
|
3
18
|
## [0.0.87](https://github.com/odigos-io/ui-kit/compare/ui-kit-v0.0.86...ui-kit-v0.0.87) (2025-08-19)
|
|
4
19
|
|
|
5
20
|
|
package/lib/components.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import { B as Button } from './index-
|
|
2
|
-
export { A as AutocompleteInput, a as Badge, a9 as CenterThis, C as Checkbox, b as Code, c as ConditionDetails, D as DataCard, e as DataCardFieldTypes, d as DataCardFields, f as DataFinger, g as DataTab, h as DescribeRow, i as Divider, j as DocsButton, k as Drawer, m as DrawerFooter, l as DrawerHeader, n as Dropdown, E as ExtendArrow, F as FadeLoader, o as FieldError, p as FieldLabel, a8 as FlexColumn, a7 as FlexRow, H as Header, I as IconButton, q as IconGroup, r as IconTitleBadge, s as IconWrapped, t as IconsNav, u as ImageControlled, v as Input, w as InputList, x as InputTable, y as InteractiveTable, K as KeyValueInputsList, M as Modal, ac as ModalBody, z as MonitorsCheckboxes, G as MonitorsIcons, N as NavigationButtons, J as NoDataFound, L as NotificationNote, ab as Overlay, P as Popup, O as PopupForm, S as ScrollX, Q as SectionTitle, R as Segment, U as SelectionButton, V as SkeletonLoader, W as Status, X as Stepper, Y as TabList, ad as TableContainer, ae as TableTitleWrap, af as TableWrap, Z as Tag, _ as Text, a2 as TextArea, a3 as Toggle, T as ToggleCodeComponent, a4 as Tooltip, a5 as TraceLoader, aa as VerticalScroll, a6 as WarningModal, $ as getLinksFromText, a0 as getStrongsFromText, a1 as renderText } from './index-
|
|
3
|
-
export { C as CancelWarning, D as DeleteWarning } from './index-
|
|
1
|
+
import { B as Button } from './index-ff2e118e.js';
|
|
2
|
+
export { A as AutocompleteInput, a as Badge, a9 as CenterThis, C as Checkbox, b as Code, c as ConditionDetails, D as DataCard, e as DataCardFieldTypes, d as DataCardFields, f as DataFinger, g as DataTab, h as DescribeRow, i as Divider, j as DocsButton, k as Drawer, m as DrawerFooter, l as DrawerHeader, n as Dropdown, E as ExtendArrow, F as FadeLoader, o as FieldError, p as FieldLabel, a8 as FlexColumn, a7 as FlexRow, H as Header, I as IconButton, q as IconGroup, r as IconTitleBadge, s as IconWrapped, t as IconsNav, u as ImageControlled, v as Input, w as InputList, x as InputTable, y as InteractiveTable, K as KeyValueInputsList, M as Modal, ac as ModalBody, z as MonitorsCheckboxes, G as MonitorsIcons, N as NavigationButtons, J as NoDataFound, L as NotificationNote, ab as Overlay, P as Popup, O as PopupForm, S as ScrollX, Q as SectionTitle, R as Segment, U as SelectionButton, V as SkeletonLoader, W as Status, X as Stepper, Y as TabList, ad as TableContainer, ae as TableTitleWrap, af as TableWrap, Z as Tag, _ as Text, a2 as TextArea, a3 as Toggle, T as ToggleCodeComponent, a4 as Tooltip, a5 as TraceLoader, aa as VerticalScroll, a6 as WarningModal, $ as getLinksFromText, a0 as getStrongsFromText, a1 as renderText } from './index-ff2e118e.js';
|
|
3
|
+
export { C as CancelWarning, D as DeleteWarning } from './index-ff2ca759.js';
|
|
4
4
|
import React, { createContext, Component, createElement } from 'react';
|
|
5
|
-
import { T as Theme } from './index-
|
|
5
|
+
import { T as Theme } from './index-9436f4a7.js';
|
|
6
6
|
import 'styled-components';
|
|
7
|
-
import './index-
|
|
7
|
+
import './index-430be181.js';
|
|
8
8
|
import './types.js';
|
|
9
9
|
import './index-5e5f7bda.js';
|
|
10
|
-
import './index-
|
|
11
|
-
import './index-
|
|
10
|
+
import './index-ddf36942.js';
|
|
11
|
+
import './index-2b6ae9c8.js';
|
|
12
12
|
import 'react-dom';
|
|
13
|
-
import './useTransition-
|
|
13
|
+
import './useTransition-0f2cccf3.js';
|
|
14
14
|
|
|
15
15
|
const ErrorBoundaryContext = createContext(null);
|
|
16
16
|
|
package/lib/constants.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { A as ACTION_OPTIONS, B as BUTTON_TEXTS, a as DEFAULT_DATA_STREAM_NAME, D as DISPLAY_LANGUAGES, b as DISPLAY_TITLES, F as FORM_ALERTS, I as INSTRUMENTATION_RULE_OPTIONS, L as LANGUAGE_OPTIONS, M as MONITORS_OPTIONS, S as STORAGE_KEYS } from './index-
|
|
1
|
+
export { A as ACTION_OPTIONS, B as BUTTON_TEXTS, a as DEFAULT_DATA_STREAM_NAME, D as DISPLAY_LANGUAGES, b as DISPLAY_TITLES, F as FORM_ALERTS, I as INSTRUMENTATION_RULE_OPTIONS, L as LANGUAGE_OPTIONS, M as MONITORS_OPTIONS, S as STORAGE_KEYS } from './index-9436f4a7.js';
|
|
2
2
|
export { D as DESTINATION_CATEGORIES } from './index-1cb4f9e2.js';
|
|
3
3
|
import 'react';
|
|
4
4
|
import './types.js';
|
|
@@ -16,7 +16,7 @@ export declare const buildSearchResults: ({ instrumentationRules, sources, actio
|
|
|
16
16
|
entities: InstrumentationRule[] | Source[] | Action[] | Destination[];
|
|
17
17
|
}[];
|
|
18
18
|
searchResults: {
|
|
19
|
-
entities:
|
|
19
|
+
entities: Source[] | Action[] | Destination[] | InstrumentationRule[];
|
|
20
20
|
category: Category;
|
|
21
21
|
label: string;
|
|
22
22
|
count: number;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type FC } from 'react';
|
|
2
|
-
import { type DestinationDynamicField } from '@/types';
|
|
2
|
+
import { type DestinationDynamicField, SignalType } from '@/types';
|
|
3
3
|
interface DynamicFieldsProps {
|
|
4
|
+
signals: SignalType[];
|
|
4
5
|
fields: DestinationDynamicField[];
|
|
5
6
|
onChange: (name: string, value: any) => void;
|
|
6
7
|
formErrors: Record<string, string>;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React, { type FC } from 'react';
|
|
2
|
+
import type { TraceSpan } from '@/types';
|
|
3
|
+
interface SpanProps {
|
|
4
|
+
depth: number;
|
|
5
|
+
isHidden: boolean;
|
|
6
|
+
isOpen: boolean;
|
|
7
|
+
onToggleOpen: () => void;
|
|
8
|
+
withToggle: boolean;
|
|
9
|
+
span: TraceSpan;
|
|
10
|
+
maxDuration: number;
|
|
11
|
+
minStartTime: number;
|
|
12
|
+
maxEndTime: number;
|
|
13
|
+
}
|
|
14
|
+
declare const Span: FC<SpanProps>;
|
|
15
|
+
declare const renderSpans: (spans: TraceSpan[], depth: number, minStartTime: number, maxEndTime: number, maxDuration: number, openSpanIdsState: {
|
|
16
|
+
value: string[];
|
|
17
|
+
set: React.Dispatch<React.SetStateAction<string[]>>;
|
|
18
|
+
}) => React.JSX.Element[];
|
|
19
|
+
export { Span, type SpanProps, renderSpans };
|
package/lib/containers.js
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import React, { useState, useEffect, forwardRef, useRef, useImperativeHandle, useMemo, Fragment, useCallback, Children } from 'react';
|
|
2
2
|
import styled, { css } from 'styled-components';
|
|
3
|
-
import { b as DISPLAY_TITLES, T as Theme,
|
|
3
|
+
import { b as DISPLAY_TITLES, T as Theme, V as usePendingStore, W as useNotificationStore, Q as useDrawerStore, B as BUTTON_TEXTS, X as useEntityStore, A as ACTION_OPTIONS, g as getActionIcon, O as useModalStore, F as FORM_ALERTS, Y as useFilterStore, e as getInstrumentationRuleIcon, Z as useDataStreamStore, _ as useInstrumentStore, d as getEntityId, D as DISPLAY_LANGUAGES, M as MONITORS_OPTIONS, S as STORAGE_KEYS, a as DEFAULT_DATA_STREAM_NAME, c as compareCondition, $ as useSetupStore, f as getProgrammingLanguageIcon, I as INSTRUMENTATION_RULE_OPTIONS, a0 as useSelectedStore, l as ImageErrorIcon, a1 as useDarkMode } from './index-9436f4a7.js';
|
|
4
4
|
import { ActionType, ActionKeyTypes, InputTypes, FieldTypes, EntityTypes, StatusType, Crud, OtherStatus, NodeTypes, EdgeTypes, AddNodeTypes, SignalType, HeadersCollectionKeyTypes, CustomInstrumentationsKeyTypes, CodeAttributesKeyTypes, PayloadCollectionKeyTypes, InstrumentationRuleType, K8sResourceKind, ProgrammingLanguages, MountMethod, AgentEnvVarsInjectionMethod, Profile, InstallationMethod } from './types.js';
|
|
5
|
-
import { e as DataCardFieldTypes, p as FieldLabel, C as Checkbox, o as FieldError, v as Input, x as InputTable, a3 as Toggle, K as KeyValueInputsList, w as InputList, _ as Text, R as Segment, Q as SectionTitle, j as DocsButton, z as MonitorsCheckboxes, a2 as TextArea, k as Drawer, c as ConditionDetails, D as DataCard, a8 as FlexColumn, M as Modal, N as NavigationButtons, ac as ModalBody, L as NotificationNote, A as AutocompleteInput, i as Divider, W as Status, a7 as FlexRow, a4 as Tooltip, s as IconWrapped, G as MonitorsIcons, ad as TableContainer, ae as TableTitleWrap, r as IconTitleBadge, af as TableWrap, y as InteractiveTable, a9 as CenterThis, J as NoDataFound, a5 as TraceLoader, a as Badge, ag as nodeConfig, ah as useNodesState, ai as useEdgesState, aj as Flow, ak as applyNodeChanges, P as Popup, U as SelectionButton, aa as VerticalScroll, n as Dropdown, B as Button, I as IconButton, E as ExtendArrow, al as AddButton, F as FadeLoader, g as DataTab, X as Stepper, d as DataCardFields, Z as Tag, am as MarkerType, t as IconsNav, an as CopyText, h as DescribeRow, ao as PodContainer, ap as SourceContainer, q as IconGroup, O as PopupForm } from './index-
|
|
5
|
+
import { e as DataCardFieldTypes, p as FieldLabel, C as Checkbox, o as FieldError, v as Input, x as InputTable, a3 as Toggle, K as KeyValueInputsList, w as InputList, _ as Text, R as Segment, Q as SectionTitle, j as DocsButton, z as MonitorsCheckboxes, a2 as TextArea, k as Drawer, c as ConditionDetails, D as DataCard, a8 as FlexColumn, M as Modal, N as NavigationButtons, ac as ModalBody, L as NotificationNote, A as AutocompleteInput, i as Divider, W as Status, a7 as FlexRow, a4 as Tooltip, s as IconWrapped, G as MonitorsIcons, ad as TableContainer, ae as TableTitleWrap, r as IconTitleBadge, af as TableWrap, y as InteractiveTable, a9 as CenterThis, J as NoDataFound, a5 as TraceLoader, a as Badge, ag as nodeConfig, ah as useNodesState, ai as useEdgesState, aj as Flow, ak as applyNodeChanges, P as Popup, U as SelectionButton, aa as VerticalScroll, n as Dropdown, B as Button, I as IconButton, E as ExtendArrow, al as AddButton, F as FadeLoader, g as DataTab, X as Stepper, d as DataCardFields, Z as Tag, am as MarkerType, t as IconsNav, an as CopyText, h as DescribeRow, ao as PodContainer, ap as SourceContainer, q as IconGroup, O as PopupForm } from './index-ff2e118e.js';
|
|
6
6
|
import { i as isEmpty, s as safeJsonParse, d as deepClone } from './index-5e5f7bda.js';
|
|
7
|
-
import { C as CheckCircledIcon, O as OdigosLogo } from './index-
|
|
8
|
-
import { C as CrossCircledIcon, O as OdigosLogoText, F as FilterIcon, D as DataStreamsIcon, A as ArrowIcon, R as RefreshLeftArrowIcon, N as NotificationIcon, U as UserIcon, a as OverviewIcon, S as SlackLogo, K as KeyIcon, T as TerminalIcon, G as GearIcon } from './index-
|
|
7
|
+
import { C as CheckCircledIcon, O as OdigosLogo } from './index-2b6ae9c8.js';
|
|
8
|
+
import { C as CrossCircledIcon, O as OdigosLogoText, F as FilterIcon, D as DataStreamsIcon, A as ArrowIcon, R as RefreshLeftArrowIcon, N as NotificationIcon, U as UserIcon, a as OverviewIcon, S as SlackLogo, K as KeyIcon, T as TerminalIcon, G as GearIcon } from './index-75412865.js';
|
|
9
9
|
import { useActionFormData, useSessionStorage, useDataStreamFormData, useDestinationFormData, useClickNotification, useSourceFormData, useSourceSelectionFormData } from './hooks.js';
|
|
10
|
-
import { u as useKeyDown, a as useContainerSize, b as useClickNode, c as usePopup, d as useOnClickOutside, e as useInstrumentationRuleFormData, f as useTransition, g as useTimeAgo, h as useCopy, i as useGenericForm } from './useTransition-
|
|
11
|
-
import { E as EditIcon, T as TrashIcon, S as SearchIcon, h as CheckIcon, P as PlusIcon, a as CopyIcon } from './index-
|
|
12
|
-
import { D as DeleteWarning, C as CancelWarning } from './index-
|
|
13
|
-
import { g as getConditionsBooleans, m as mapConditions, b as getStatusIcon, h as splitCamelString, c as capitalizeFirstLetter, i as isStringABoolean, p as parseBooleanFromString } from './index-
|
|
14
|
-
import { f as filterActions,
|
|
10
|
+
import { u as useKeyDown, a as useContainerSize, b as useClickNode, c as usePopup, d as useOnClickOutside, e as useInstrumentationRuleFormData, f as useTransition, g as useTimeAgo, h as useCopy, i as useGenericForm } from './useTransition-0f2cccf3.js';
|
|
11
|
+
import { E as EditIcon, T as TrashIcon, S as SearchIcon, h as CheckIcon, P as PlusIcon, a as CopyIcon } from './index-430be181.js';
|
|
12
|
+
import { D as DeleteWarning, C as CancelWarning } from './index-ff2ca759.js';
|
|
13
|
+
import { g as getConditionsBooleans, m as mapConditions, b as getStatusIcon, h as splitCamelString, c as capitalizeFirstLetter, i as isStringABoolean, p as parseBooleanFromString } from './index-ddf36942.js';
|
|
14
|
+
import { f as filterActions, k as getEntityLabel, j as getEntityIcon, s as sleep, e as formatBytes, h as getContainersIcons, m as getValueForRange, i as getDestinationIcon, d as filterSourcesByStream, c as filterSources, b as filterDestinationsByStream, a as filterDestinations, r as mapDestinationFieldsForDisplay, o as getYamlFieldsForDestination, l as getMetricForEntity, n as getWorkloadId, p as hasUnhealthyInstances, g as getContainersInstrumentedCount, q as isOverTime } from './index-5fb023f6.js';
|
|
15
15
|
import { m as mapExportedSignals } from './index-6a6bea6e.js';
|
|
16
16
|
import { NoteBackToSummary, EditButton } from './snippets.js';
|
|
17
17
|
import { D as DESTINATION_CATEGORIES } from './index-1cb4f9e2.js';
|
|
18
|
-
import { a6 as RulesIcon, a3 as SourcesIcon, a5 as ActionsIcon, a4 as DestinationsIcon } from './index-
|
|
18
|
+
import { a6 as RulesIcon, a3 as SourcesIcon, a5 as ActionsIcon, a4 as DestinationsIcon } from './index-968d01e8.js';
|
|
19
19
|
import 'react-dom';
|
|
20
20
|
|
|
21
21
|
const buildCard$3 = (action) => {
|
|
@@ -502,7 +502,7 @@ const CustomFields$1 = ({ actionType, value, setValue, formErrors }) => {
|
|
|
502
502
|
return Component ? React.createElement(Component, { value: value, setValue: setValue, formErrors: formErrors }) : null;
|
|
503
503
|
};
|
|
504
504
|
|
|
505
|
-
const Container$
|
|
505
|
+
const Container$i = styled.div `
|
|
506
506
|
display: flex;
|
|
507
507
|
flex-direction: column;
|
|
508
508
|
gap: 24px;
|
|
@@ -513,7 +513,7 @@ const FieldTitle$2 = styled(Text) `
|
|
|
513
513
|
`;
|
|
514
514
|
const ActionForm = ({ isUpdate, action, formData, formErrors, handleFormChange }) => {
|
|
515
515
|
const theme = Theme.useTheme();
|
|
516
|
-
return (React.createElement(Container$
|
|
516
|
+
return (React.createElement(Container$i, null,
|
|
517
517
|
isUpdate && (React.createElement("div", null,
|
|
518
518
|
React.createElement(FieldTitle$2, null, "Status"),
|
|
519
519
|
React.createElement(Segment, { options: [
|
|
@@ -1042,7 +1042,7 @@ const ActionTable = ({ maxHeight, maxWidth }) => {
|
|
|
1042
1042
|
React.createElement(NoDataFound, null)))));
|
|
1043
1043
|
};
|
|
1044
1044
|
|
|
1045
|
-
const Container$
|
|
1045
|
+
const Container$h = styled(FlexColumn) `
|
|
1046
1046
|
// width: 100vw;
|
|
1047
1047
|
// height: 100vh;
|
|
1048
1048
|
gap: 64px;
|
|
@@ -1076,7 +1076,7 @@ const AwaitPipeline = () => {
|
|
|
1076
1076
|
useEffect(() => {
|
|
1077
1077
|
awaitPipeline();
|
|
1078
1078
|
}, []);
|
|
1079
|
-
return (React.createElement(Container$
|
|
1079
|
+
return (React.createElement(Container$h, null,
|
|
1080
1080
|
React.createElement(OdigosLogoText, { size: 100 }),
|
|
1081
1081
|
React.createElement(TraceLoader, { width: 400 }),
|
|
1082
1082
|
React.createElement(TextWrap, null,
|
|
@@ -1612,7 +1612,7 @@ const buildDestinationNodes = ({ loading, entities, positions, unfilteredCount,
|
|
|
1612
1612
|
return nodes;
|
|
1613
1613
|
};
|
|
1614
1614
|
|
|
1615
|
-
const Container$
|
|
1615
|
+
const Container$g = styled.div `
|
|
1616
1616
|
width: 100%;
|
|
1617
1617
|
height: ${({ $heightToRemove }) => `calc(100vh - ${$heightToRemove})`};
|
|
1618
1618
|
position: relative;
|
|
@@ -1694,7 +1694,7 @@ const DataFlow = ({ heightToRemove, metrics }) => {
|
|
|
1694
1694
|
});
|
|
1695
1695
|
handleNodesChanged(ruleNodes, EntityTypes.InstrumentationRule);
|
|
1696
1696
|
}, [instrumentationRules, instrumentationRulesLoading, positions[EntityTypes.InstrumentationRule], containerHeight]);
|
|
1697
|
-
return (React.createElement(Container$
|
|
1697
|
+
return (React.createElement(Container$g, { ref: containerRef, "$heightToRemove": heightToRemove },
|
|
1698
1698
|
React.createElement(Flow, { nodes: nodes, edges: edges, onNodesChange: onNodesChange, onEdgesChange: onEdgesChange })));
|
|
1699
1699
|
};
|
|
1700
1700
|
|
|
@@ -1958,7 +1958,7 @@ const Filters$1 = () => {
|
|
|
1958
1958
|
React.createElement(ErrorDropdown, { sources: sourcesByStream, value: filters['errors'], onSelect: (val) => setFilters((prev) => ({ ...prev, errors: [...(prev.errors || []), val] })), onDeselect: (val) => setFilters((prev) => ({ ...prev, errors: (prev.errors || []).filter((opt) => opt.id !== val.id) })), disabled: !filters['onlyErrors'], showSearch: true, required: true, isMulti: true })))));
|
|
1959
1959
|
};
|
|
1960
1960
|
|
|
1961
|
-
const Container$
|
|
1961
|
+
const Container$f = styled.div `
|
|
1962
1962
|
display: flex;
|
|
1963
1963
|
flex-direction: column;
|
|
1964
1964
|
gap: 24px;
|
|
@@ -1967,7 +1967,7 @@ const Container$e = styled.div `
|
|
|
1967
1967
|
const DataStreamForm = ({ formData, handleFormChange, formErrors }) => {
|
|
1968
1968
|
const { dataStreams, selectedStreamName } = useDataStreamStore();
|
|
1969
1969
|
const existingDS = useMemo(() => dataStreams.find((s) => s.name === formData.name && s.name !== selectedStreamName), [dataStreams, formData.name, selectedStreamName]);
|
|
1970
|
-
return (React.createElement(Container$
|
|
1970
|
+
return (React.createElement(Container$f, null,
|
|
1971
1971
|
React.createElement(Input, { name: 'name', title: DISPLAY_TITLES.STREAM_NAME, placeholder: DISPLAY_TITLES.NAME_YOUR_STREAM_PLACEHOLDER, required: true, value: formData.name, onChange: ({ target: { value } }) => handleFormChange('name', value), errorMessage: formErrors['name'] }),
|
|
1972
1972
|
existingDS && React.createElement(NotificationNote, { type: StatusType.Warning, message: DISPLAY_TITLES.DATA_STREAM_EXISTS_WARNING(selectedStreamName, existingDS.name) })));
|
|
1973
1973
|
};
|
|
@@ -2018,7 +2018,7 @@ const DataStreamDrawer = ({ isOpen, onClose, dataStreamName, updateDataStream })
|
|
|
2018
2018
|
const RelativeContainer$1 = styled.div `
|
|
2019
2019
|
position: relative;
|
|
2020
2020
|
`;
|
|
2021
|
-
const Container$
|
|
2021
|
+
const Container$e = styled(FlexRow) `
|
|
2022
2022
|
border: 1px solid ${({ theme }) => theme.colors.border};
|
|
2023
2023
|
border-radius: 32px;
|
|
2024
2024
|
|
|
@@ -2060,7 +2060,7 @@ const DataStreamSelect = ({ onClickNewDataStream, updateDataStream, deleteDataSt
|
|
|
2060
2060
|
React.createElement(EditIcon, null))))), [dataStreams, selectedStreamName, searchText]);
|
|
2061
2061
|
return (React.createElement(React.Fragment, null,
|
|
2062
2062
|
React.createElement(RelativeContainer$1, null,
|
|
2063
|
-
React.createElement(Container$
|
|
2063
|
+
React.createElement(Container$e, { "$gap": 0 },
|
|
2064
2064
|
React.createElement(Button, { variant: 'tertiary', onClick: () => {
|
|
2065
2065
|
handlePosition(0, 50);
|
|
2066
2066
|
setPopupOpen((prev) => !prev);
|
|
@@ -2089,7 +2089,7 @@ const DataStreamSelect = ({ onClickNewDataStream, updateDataStream, deleteDataSt
|
|
|
2089
2089
|
}, dataStreamName: editOpenForDataStreamName, updateDataStream: updateDataStream })));
|
|
2090
2090
|
};
|
|
2091
2091
|
|
|
2092
|
-
const Container$
|
|
2092
|
+
const Container$d = styled.div `
|
|
2093
2093
|
display: flex;
|
|
2094
2094
|
align-items: center;
|
|
2095
2095
|
margin: 20px 0;
|
|
@@ -2102,7 +2102,7 @@ const PushToEnd = styled.div `
|
|
|
2102
2102
|
`;
|
|
2103
2103
|
const DataFlowActionsMenu = ({ addEntity, preventSearchPopup, onClickNewDataStream, updateDataStream, deleteDataStream }) => {
|
|
2104
2104
|
const { setCurrentModal } = useModalStore();
|
|
2105
|
-
return (React.createElement(Container$
|
|
2105
|
+
return (React.createElement(Container$d, null,
|
|
2106
2106
|
React.createElement(DataStreamSelect, { onClickNewDataStream: onClickNewDataStream, updateDataStream: updateDataStream, deleteDataStream: deleteDataStream }),
|
|
2107
2107
|
React.createElement(Search, { preventPopup: preventSearchPopup }),
|
|
2108
2108
|
React.createElement(Filters$1, null),
|
|
@@ -2140,7 +2140,7 @@ const buildCard$2 = (destination, yamlFields) => {
|
|
|
2140
2140
|
const mappedFieldsForConditionCompare = mappedFields.map((field) => ({ name: field.key, value: field.value }));
|
|
2141
2141
|
mappedFields.map(({ key, name, value }) => {
|
|
2142
2142
|
const { secret, componentProperties, hideFromReadData, customReadDataLabels } = yamlFields.find((field) => field.name === key) || {};
|
|
2143
|
-
const shouldHide = !!hideFromReadData?.length ? compareCondition(hideFromReadData, mappedFieldsForConditionCompare) : false;
|
|
2143
|
+
const shouldHide = !!hideFromReadData?.length ? compareCondition(hideFromReadData, mapExportedSignals(exportedSignals), mappedFieldsForConditionCompare) : false;
|
|
2144
2144
|
if (!shouldHide) {
|
|
2145
2145
|
const { type } = safeJsonParse(componentProperties, { type: '' });
|
|
2146
2146
|
const secretPlaceholder = (secret || type === 'password') && !!value.length ? new Array(10).fill('•').join('') : '';
|
|
@@ -2166,10 +2166,10 @@ const buildCard$2 = (destination, yamlFields) => {
|
|
|
2166
2166
|
return arr;
|
|
2167
2167
|
};
|
|
2168
2168
|
|
|
2169
|
-
const DynamicFields = ({ fields, onChange, formErrors }) => {
|
|
2169
|
+
const DynamicFields = ({ signals, fields, onChange, formErrors }) => {
|
|
2170
2170
|
return fields?.map((field) => {
|
|
2171
2171
|
const { componentType, renderCondition, ...rest } = field;
|
|
2172
|
-
const shouldRender = renderCondition ? compareCondition(renderCondition, fields) : true;
|
|
2172
|
+
const shouldRender = renderCondition ? compareCondition(renderCondition, signals, fields) : true;
|
|
2173
2173
|
if (!shouldRender)
|
|
2174
2174
|
return null;
|
|
2175
2175
|
switch (componentType) {
|
|
@@ -2240,7 +2240,7 @@ const TestConnection = ({ destination, validateForm, status, testConnection, onS
|
|
|
2240
2240
|
React.createElement(Text, { family: 'secondary', decoration: 'underline', size: 14, color: !!status ? theme.text[status] : undefined }, loading ? 'Checking' : status === StatusType.Success ? 'Connection OK' : status === 'error' ? 'Connection Failed' : 'Test Connection')));
|
|
2241
2241
|
};
|
|
2242
2242
|
|
|
2243
|
-
const Container$
|
|
2243
|
+
const Container$c = styled(FlexColumn) `
|
|
2244
2244
|
align-items: unset;
|
|
2245
2245
|
padding: 0 4px;
|
|
2246
2246
|
`;
|
|
@@ -2293,7 +2293,7 @@ const DestinationForm = ({ isUpdate, categoryItem, formData, formErrors, validat
|
|
|
2293
2293
|
return arr;
|
|
2294
2294
|
}, [supportedSignals]);
|
|
2295
2295
|
const selectedMonitors = useMemo(() => {
|
|
2296
|
-
const { logs, metrics, traces } = formData
|
|
2296
|
+
const { logs, metrics, traces } = formData.exportedSignals || {};
|
|
2297
2297
|
const arr = [];
|
|
2298
2298
|
if (logs)
|
|
2299
2299
|
arr.push(SignalType.Logs);
|
|
@@ -2302,7 +2302,7 @@ const DestinationForm = ({ isUpdate, categoryItem, formData, formErrors, validat
|
|
|
2302
2302
|
if (traces)
|
|
2303
2303
|
arr.push(SignalType.Traces);
|
|
2304
2304
|
return arr;
|
|
2305
|
-
}, [formData]);
|
|
2305
|
+
}, [formData.exportedSignals]);
|
|
2306
2306
|
const dirtyForm = () => {
|
|
2307
2307
|
setAutoFilled(false);
|
|
2308
2308
|
setIsFormDirty(true);
|
|
@@ -2332,8 +2332,8 @@ const DestinationForm = ({ isUpdate, categoryItem, formData, formErrors, validat
|
|
|
2332
2332
|
message: testResult?.message || '',
|
|
2333
2333
|
});
|
|
2334
2334
|
};
|
|
2335
|
-
return (React.createElement(Container$
|
|
2336
|
-
React.createElement(Container$
|
|
2335
|
+
return (React.createElement(Container$c, { "$gap": 24 },
|
|
2336
|
+
React.createElement(Container$c, { "$gap": 12 },
|
|
2337
2337
|
React.createElement(SectionTitle, { title: isUpdate ? 'Update destination' : 'Create destination', description: `Connect ${displayName} with Odigos.`, actionButton: testConnectionSupported && (React.createElement(TestConnection, { destination: formData, validateForm: validateForm, status: connection?.type, testConnection: testConnection, onError: onTestConnectionError, onSuccess: onTestConnectionSuccess })) }),
|
|
2338
2338
|
React.createElement(NotesWrapper, null,
|
|
2339
2339
|
testConnectionSupported && connection && React.createElement(NotificationNote, { type: connection.type, title: connection.title, message: connection.message }),
|
|
@@ -2352,7 +2352,7 @@ const DestinationForm = ({ isUpdate, categoryItem, formData, formErrors, validat
|
|
|
2352
2352
|
dirtyForm();
|
|
2353
2353
|
handleFormChange('name', e.target.value);
|
|
2354
2354
|
}, errorMessage: formErrors['name'] })),
|
|
2355
|
-
React.createElement(DynamicFields, { fields: dynamicFields, onChange: (name, value) => {
|
|
2355
|
+
React.createElement(DynamicFields, { signals: selectedMonitors, fields: dynamicFields, onChange: (name, value) => {
|
|
2356
2356
|
dirtyForm();
|
|
2357
2357
|
setDynamicFields((prev) => {
|
|
2358
2358
|
const payload = [...prev];
|
|
@@ -2471,7 +2471,7 @@ const DestinationsList = ({ items, onSelectNew, onSelectConfigured, isLoadingFor
|
|
|
2471
2471
|
});
|
|
2472
2472
|
};
|
|
2473
2473
|
|
|
2474
|
-
const Container$
|
|
2474
|
+
const Container$b = styled.div `
|
|
2475
2475
|
display: flex;
|
|
2476
2476
|
flex-direction: column;
|
|
2477
2477
|
gap: 24px;
|
|
@@ -2497,7 +2497,7 @@ const ListsContainer = styled.div `
|
|
|
2497
2497
|
max-height: calc(100vh - 400px);
|
|
2498
2498
|
}
|
|
2499
2499
|
`;
|
|
2500
|
-
const NoDataFoundWrapper = styled(Container$
|
|
2500
|
+
const NoDataFoundWrapper = styled(Container$b) `
|
|
2501
2501
|
margin-top: 80px;
|
|
2502
2502
|
`;
|
|
2503
2503
|
const { MANAGED, SELF_HOSTED, DETECTED, EXISTS } = DESTINATION_CATEGORIES;
|
|
@@ -2564,7 +2564,7 @@ const ChooseDestinationBody = ({ hidden, categories, potentialDestinations, onSe
|
|
|
2564
2564
|
}, [categories, potentialDestinations, destinations, search, selectedCategory, selectedMonitors, selectedStreamName, configuredDestinations, configuredDestinationsUpdateOnly]);
|
|
2565
2565
|
if (hidden)
|
|
2566
2566
|
return null;
|
|
2567
|
-
return (React.createElement(Container$
|
|
2567
|
+
return (React.createElement(Container$b, null,
|
|
2568
2568
|
React.createElement(SectionTitle, { title: 'Choose destination', description: 'Add backend destination you want to connect with Odigos.' }),
|
|
2569
2569
|
React.createElement(Filters, null,
|
|
2570
2570
|
React.createElement(WidthConstraint, null,
|
|
@@ -2578,7 +2578,7 @@ const ChooseDestinationBody = ({ hidden, categories, potentialDestinations, onSe
|
|
|
2578
2578
|
React.createElement(DestinationsList, { items: filteredDestinations, onSelectNew: (dest) => onSelectNew(dest, selectedMonitors), onSelectConfigured: onSelectConfigured, isLoadingForDestinationIds: isLoadingForDestinationIds })))));
|
|
2579
2579
|
};
|
|
2580
2580
|
|
|
2581
|
-
const Container$
|
|
2581
|
+
const Container$a = styled.div `
|
|
2582
2582
|
display: flex;
|
|
2583
2583
|
`;
|
|
2584
2584
|
const SideMenuWrapper = styled.div `
|
|
@@ -2721,7 +2721,7 @@ const DestinationModal = ({ isOnboarding, categories, potentialDestinations, cre
|
|
|
2721
2721
|
};
|
|
2722
2722
|
useKeyDown({ key: 'Enter', active: isOpen }, () => handleSubmit());
|
|
2723
2723
|
return (React.createElement(Modal, { isOpen: isOpen, onClose: handleClose, header: { title: DISPLAY_TITLES.ADD_DESTINATION }, actionComponent: React.createElement(NavigationButtons, { buttons: renderHeaderButtons() }) },
|
|
2724
|
-
React.createElement(Container$
|
|
2724
|
+
React.createElement(Container$a, null,
|
|
2725
2725
|
React.createElement(SideMenuWrapper, null,
|
|
2726
2726
|
React.createElement(Stepper, { currentStep: selectedItem ? 2 : 1, data: [
|
|
2727
2727
|
{ stepNumber: 1, title: DISPLAY_TITLES.DESTINATIONS },
|
|
@@ -2732,7 +2732,7 @@ const DestinationModal = ({ isOnboarding, categories, potentialDestinations, cre
|
|
|
2732
2732
|
selectedItem && (React.createElement(DestinationForm, { categoryItem: selectedItem, formData: formData, formErrors: formErrors, handleFormChange: handleFormChange, dynamicFields: dynamicFields, setDynamicFields: setDynamicFields, validateForm: validateForm, testConnection: testConnection }))))));
|
|
2733
2733
|
};
|
|
2734
2734
|
|
|
2735
|
-
const Container$
|
|
2735
|
+
const Container$9 = styled.div `
|
|
2736
2736
|
display: flex;
|
|
2737
2737
|
flex-direction: column;
|
|
2738
2738
|
align-items: center;
|
|
@@ -2748,7 +2748,7 @@ const DestinationList = ({ categories, withDelete }) => {
|
|
|
2748
2748
|
return (React.createElement(CenterThis, null,
|
|
2749
2749
|
React.createElement(NoDataFound, { title: 'No destinations', subTitle: 'Please add a destination' })));
|
|
2750
2750
|
}
|
|
2751
|
-
return (React.createElement(Container$
|
|
2751
|
+
return (React.createElement(Container$9, null, configuredDestinations.concat(configuredDestinationsUpdateOnly).map((dest, idx) => (React.createElement(ListItem, { key: `configured-destination-${dest.destinationType.type}-${idx}`, "data-id": `configured-destination-${dest.destinationType.type}`, item: dest, yamlFields: getYamlFieldsForDestination(categories, dest), isLastItem: configuredDestinations.length + configuredDestinationsUpdateOnly.length === 1, withDelete: withDelete })))));
|
|
2752
2752
|
};
|
|
2753
2753
|
const ListItem = ({ item, yamlFields, isLastItem, withDelete }) => {
|
|
2754
2754
|
const [deleteWarning, setDeleteWarning] = useState(false);
|
|
@@ -3160,7 +3160,7 @@ const CustomFields = ({ ruleType, value, setValue, formErrors }) => {
|
|
|
3160
3160
|
return Component ? React.createElement(Component, { value: value, setValue: setValue, formErrors: formErrors }) : null;
|
|
3161
3161
|
};
|
|
3162
3162
|
|
|
3163
|
-
const Container$
|
|
3163
|
+
const Container$8 = styled.div `
|
|
3164
3164
|
display: flex;
|
|
3165
3165
|
flex-direction: column;
|
|
3166
3166
|
gap: 24px;
|
|
@@ -3171,7 +3171,7 @@ const FieldTitle = styled(Text) `
|
|
|
3171
3171
|
`;
|
|
3172
3172
|
const InstrumentationRuleForm = ({ isUpdate, rule, formData, formErrors, handleFormChange }) => {
|
|
3173
3173
|
const theme = Theme.useTheme();
|
|
3174
|
-
return (React.createElement(Container$
|
|
3174
|
+
return (React.createElement(Container$8, null,
|
|
3175
3175
|
React.createElement(FlexRow, null, rule.supportedLanguages.map((lang) => (React.createElement(Tag, { key: lang, icon: getProgrammingLanguageIcon(lang), type: StatusType.Info }, lang)))),
|
|
3176
3176
|
isUpdate ? (React.createElement("div", null,
|
|
3177
3177
|
React.createElement(FieldTitle, null, "Status"),
|
|
@@ -3439,7 +3439,7 @@ const InstrumentationRuleTable = ({ maxHeight, maxWidth }) => {
|
|
|
3439
3439
|
React.createElement(NoDataFound, null)))));
|
|
3440
3440
|
};
|
|
3441
3441
|
|
|
3442
|
-
const Container$
|
|
3442
|
+
const Container$7 = styled.div `
|
|
3443
3443
|
position: fixed;
|
|
3444
3444
|
bottom: 0;
|
|
3445
3445
|
left: 50%;
|
|
@@ -3456,7 +3456,7 @@ const Container$6 = styled.div `
|
|
|
3456
3456
|
const MultiSourceControl = ({ totalSourceCount, uninstrumentSources, restartWorkloads }) => {
|
|
3457
3457
|
const theme = Theme.useTheme();
|
|
3458
3458
|
const Transition = useTransition({
|
|
3459
|
-
container: Container$
|
|
3459
|
+
container: Container$7,
|
|
3460
3460
|
animateIn: Theme.animations.slide.in['center'],
|
|
3461
3461
|
animateOut: Theme.animations.slide.out['center'],
|
|
3462
3462
|
});
|
|
@@ -3819,7 +3819,7 @@ const buildMapNodes = ({ sources, serviceMap, containerHeight, containerWidth })
|
|
|
3819
3819
|
return nodes;
|
|
3820
3820
|
};
|
|
3821
3821
|
|
|
3822
|
-
const Container$
|
|
3822
|
+
const Container$6 = styled.div `
|
|
3823
3823
|
width: 100%;
|
|
3824
3824
|
height: ${({ $heightToRemove }) => `calc(100vh - ${$heightToRemove})`};
|
|
3825
3825
|
position: relative;
|
|
@@ -3877,11 +3877,11 @@ const ServiceMap = ({ heightToRemove, serviceMap }) => {
|
|
|
3877
3877
|
useEffect(() => {
|
|
3878
3878
|
setEdges(buildEdges({ theme, nodes, serviceMap }));
|
|
3879
3879
|
}, [theme, nodes, serviceMap]);
|
|
3880
|
-
return (React.createElement(Container$
|
|
3880
|
+
return (React.createElement(Container$6, { ref: containerRef, "$heightToRemove": heightToRemove },
|
|
3881
3881
|
React.createElement(Flow, { nodes: nodes, edges: edges, onNodesChange: onNodesChange, onEdgesChange: onEdgesChange, zoomOnScroll: true })));
|
|
3882
3882
|
};
|
|
3883
3883
|
|
|
3884
|
-
const Container$
|
|
3884
|
+
const Container$5 = styled.div `
|
|
3885
3885
|
display: flex;
|
|
3886
3886
|
flex-direction: column;
|
|
3887
3887
|
align-items: center;
|
|
@@ -3939,7 +3939,7 @@ const SourceList = ({ isModal = false, withInstances = true, isFetchingEachNames
|
|
|
3939
3939
|
return (React.createElement(CenterThis, null, namespacesLoading ? (React.createElement(FadeLoader, null)) : (React.createElement(NoDataFound, { title: DISPLAY_TITLES.NO_SOURCES, subTitle: onSelectNamespace ? DISPLAY_TITLES.PLEASE_MAKE_SURE_UNIGNORED_NAMESPACES : DISPLAY_TITLES.PLEASE_ADD_SOURCE }))));
|
|
3940
3940
|
}
|
|
3941
3941
|
const NamespaceIcon = getEntityIcon(EntityTypes.Namespace);
|
|
3942
|
-
return (React.createElement(Container$
|
|
3942
|
+
return (React.createElement(Container$5, { "$isModal": isModal },
|
|
3943
3943
|
matrix.map(([namespace, sources]) => {
|
|
3944
3944
|
const sourcesForNamespace = selectedSources?.[namespace] || [];
|
|
3945
3945
|
const futureAppsForNamespace = selectedFutureApps?.[namespace]?.selected || false;
|
|
@@ -3986,7 +3986,7 @@ const SourceRow = ({ withInstances, source, namespace, isSelected, onSelect, })
|
|
|
3986
3986
|
` • ${source.kind}`)))));
|
|
3987
3987
|
};
|
|
3988
3988
|
|
|
3989
|
-
const Container$
|
|
3989
|
+
const Container$4 = styled.div `
|
|
3990
3990
|
display: flex;
|
|
3991
3991
|
flex-direction: column;
|
|
3992
3992
|
align-items: center;
|
|
@@ -4003,7 +4003,7 @@ const SetupSummary = ({ onEditStream, onEditSources, onEditDestinations, categor
|
|
|
4003
4003
|
return (React.createElement(ModalBody, { "$isNotModal": true },
|
|
4004
4004
|
React.createElement(FlexColumn, { "$gap": 12 },
|
|
4005
4005
|
React.createElement(SectionTitle, { title: DISPLAY_TITLES.SUMMARY, description: DISPLAY_TITLES.STREAM_CONFIRM }),
|
|
4006
|
-
React.createElement(Container$
|
|
4006
|
+
React.createElement(Container$4, null,
|
|
4007
4007
|
React.createElement(DataCard, { title: DISPLAY_TITLES.STREAM_NAME, action: () => React.createElement(EditButton, { onClick: onEditStream }), data: [{ title: '', value: selectedStreamName }] }),
|
|
4008
4008
|
React.createElement(DataCard, { title: DISPLAY_TITLES.SELECTED_SOURCES, titleBadge: sourceCount, action: () => React.createElement(EditButton, { onClick: onEditSources }) },
|
|
4009
4009
|
React.createElement(SourceList, { filteredNamespacesAndSources: configuredSources, withInstances: false })),
|
|
@@ -4109,14 +4109,14 @@ const buildCard = (source) => {
|
|
|
4109
4109
|
return arr;
|
|
4110
4110
|
};
|
|
4111
4111
|
|
|
4112
|
-
const Container$
|
|
4112
|
+
const Container$3 = styled.div `
|
|
4113
4113
|
display: flex;
|
|
4114
4114
|
flex-direction: column;
|
|
4115
4115
|
gap: 24px;
|
|
4116
4116
|
padding: 4px;
|
|
4117
4117
|
`;
|
|
4118
4118
|
const SourceForm = ({ formData, handleFormChange }) => {
|
|
4119
|
-
return (React.createElement(Container$
|
|
4119
|
+
return (React.createElement(Container$3, null,
|
|
4120
4120
|
React.createElement(Input, { name: 'sourceName', title: 'Source name', tooltip: 'This overrides the default service name that runs in your cluster.', placeholder: 'Use a name that overrides the source name', value: formData.otelServiceName, onChange: ({ target: { value } }) => handleFormChange('otelServiceName', value) })));
|
|
4121
4121
|
};
|
|
4122
4122
|
|
|
@@ -5091,7 +5091,7 @@ const SystemSettings = ({ installationMethod, fetchSettings, onSave }) => {
|
|
|
5091
5091
|
} })));
|
|
5092
5092
|
};
|
|
5093
5093
|
|
|
5094
|
-
const Container$
|
|
5094
|
+
const Container$2 = styled.div `
|
|
5095
5095
|
position: fixed;
|
|
5096
5096
|
bottom: 12px;
|
|
5097
5097
|
left: 12px;
|
|
@@ -5109,7 +5109,7 @@ const ToastList = () => {
|
|
|
5109
5109
|
if (asSeen)
|
|
5110
5110
|
markAsSeen(id);
|
|
5111
5111
|
};
|
|
5112
|
-
return (React.createElement(Container$
|
|
5112
|
+
return (React.createElement(Container$2, null, notifications
|
|
5113
5113
|
.filter(({ dismissed }) => !dismissed)
|
|
5114
5114
|
.map(({ id, type, title, message, crdType, target }) => (React.createElement(NotificationNote, { key: `toast-${id}`, id: id, type: type, title: title, message: message, action: crdType && target
|
|
5115
5115
|
? {
|
|
@@ -5125,7 +5125,7 @@ const ToastList = () => {
|
|
|
5125
5125
|
: undefined, onClose: () => onClose({ id, asSeen: true }) })))));
|
|
5126
5126
|
};
|
|
5127
5127
|
|
|
5128
|
-
const Container = styled.div `
|
|
5128
|
+
const Container$1 = styled.div `
|
|
5129
5129
|
position: relative;
|
|
5130
5130
|
display: flex;
|
|
5131
5131
|
align-items: center;
|
|
@@ -5162,10 +5162,156 @@ const Svg = ({ path }) => {
|
|
|
5162
5162
|
};
|
|
5163
5163
|
const ToggleDarkMode = () => {
|
|
5164
5164
|
const { darkMode, setDarkMode } = useDarkMode();
|
|
5165
|
-
return (React.createElement(Container, { onClick: () => setDarkMode(!darkMode) },
|
|
5165
|
+
return (React.createElement(Container$1, { onClick: () => setDarkMode(!darkMode) },
|
|
5166
5166
|
React.createElement(Svg, { path: 'M14 7.977A4.333 4.333 0 1 1 8.023 2H8a6 6 0 1 0 6 6v-.023Z' }),
|
|
5167
5167
|
React.createElement(Svg, { path: 'M8 15.333v-.666m-5.185-1.482.471-.471M.666 8h.667m1.482-5.185.471.47M8 1.334V.667m4.714 2.619.471-.471M14.667 8h.666m-2.619 4.714.471.471M12 8a4 4 0 1 1-8 0 4 4 0 0 1 8 0Z' }),
|
|
5168
5168
|
React.createElement(Background, { "$darkMode": darkMode })));
|
|
5169
5169
|
};
|
|
5170
5170
|
|
|
5171
|
-
|
|
5171
|
+
const LEFT_MAX_WIDTH = 370;
|
|
5172
|
+
const Container = styled.div `
|
|
5173
|
+
display: flex;
|
|
5174
|
+
align-items: center;
|
|
5175
|
+
padding: 12px 2px;
|
|
5176
|
+
`;
|
|
5177
|
+
const Left = styled(FlexRow) `
|
|
5178
|
+
align-items: center;
|
|
5179
|
+
gap: 4px;
|
|
5180
|
+
padding-left: ${({ $depth }) => $depth * 16}px;
|
|
5181
|
+
width: calc(${LEFT_MAX_WIDTH}px - ${({ $depth }) => $depth * 16}px);
|
|
5182
|
+
overflow: auto;
|
|
5183
|
+
`;
|
|
5184
|
+
const Right = styled(FlexRow) `
|
|
5185
|
+
align-items: center;
|
|
5186
|
+
gap: 4px;
|
|
5187
|
+
width: calc(100% - ${LEFT_MAX_WIDTH}px);
|
|
5188
|
+
position: relative;
|
|
5189
|
+
`;
|
|
5190
|
+
const DurationBar = styled.div `
|
|
5191
|
+
position: absolute;
|
|
5192
|
+
left: ${({ $startTime, $minStartTime, $maxEndTime }) => `${(($startTime - $minStartTime) / ($maxEndTime - $minStartTime)) * 100}%`};
|
|
5193
|
+
width: ${({ $duration, $maxDuration }) => `${($duration / $maxDuration) * 100}%`};
|
|
5194
|
+
height: 12px;
|
|
5195
|
+
border-radius: 32px;
|
|
5196
|
+
background-color: ${({ theme }) => theme.colors.majestic_blue};
|
|
5197
|
+
`;
|
|
5198
|
+
const Span = ({ depth, isHidden, isOpen, onToggleOpen, withToggle, span, maxDuration, minStartTime, maxEndTime }) => {
|
|
5199
|
+
const theme = Theme.useTheme();
|
|
5200
|
+
if (isHidden)
|
|
5201
|
+
return null;
|
|
5202
|
+
return (React.createElement(Container, null,
|
|
5203
|
+
React.createElement(Left, { "$depth": depth },
|
|
5204
|
+
withToggle ? (React.createElement(IconButton, { onClick: onToggleOpen, size: 24 },
|
|
5205
|
+
React.createElement(ExtendArrow, { extend: isOpen }))) : (React.createElement("div", { style: { width: '24px' } })),
|
|
5206
|
+
React.createElement(Text, null, span.processID),
|
|
5207
|
+
React.createElement(Text, { size: 12, color: theme.text.grey }, span.operationName)),
|
|
5208
|
+
React.createElement(Right, null,
|
|
5209
|
+
React.createElement(DurationBar, { "$duration": span.duration, "$maxDuration": maxDuration, "$startTime": span.startTime, "$minStartTime": minStartTime, "$maxEndTime": maxEndTime }))));
|
|
5210
|
+
};
|
|
5211
|
+
const getChildSpanIds = (span) => {
|
|
5212
|
+
return span.spans?.map((s) => [s.spanID, ...getChildSpanIds(s)]).flat() ?? [];
|
|
5213
|
+
};
|
|
5214
|
+
const renderSpans = (spans, depth, minStartTime, maxEndTime, maxDuration, openSpanIdsState) => {
|
|
5215
|
+
if (!minStartTime) {
|
|
5216
|
+
// is equal left: 0%;
|
|
5217
|
+
minStartTime = spans.reduce((min, span) => Math.min(min, span.startTime), Number.MAX_SAFE_INTEGER);
|
|
5218
|
+
}
|
|
5219
|
+
if (!maxEndTime) {
|
|
5220
|
+
// is equal left: 100%;
|
|
5221
|
+
maxEndTime = spans.reduce((max, span) => Math.max(max, span.startTime + span.duration), 0);
|
|
5222
|
+
}
|
|
5223
|
+
return spans.map((span) => {
|
|
5224
|
+
const id = span.spanID;
|
|
5225
|
+
const isOpen = openSpanIdsState.value.includes(id);
|
|
5226
|
+
const hasChildSpans = !!(span.spans?.length ?? 0);
|
|
5227
|
+
return (React.createElement(Fragment, { key: id },
|
|
5228
|
+
React.createElement(Span, { depth: depth, isHidden: false, isOpen: isOpen, withToggle: hasChildSpans, onToggleOpen: () => openSpanIdsState.set((prev) => {
|
|
5229
|
+
const alreadyOpen = prev.some((st) => st === id);
|
|
5230
|
+
if (alreadyOpen)
|
|
5231
|
+
return prev.filter((st) => st != id);
|
|
5232
|
+
return [...prev, id, ...getChildSpanIds(span)];
|
|
5233
|
+
}), span: span, maxDuration: maxDuration, minStartTime: minStartTime, maxEndTime: maxEndTime }),
|
|
5234
|
+
isOpen && hasChildSpans ? renderSpans(span.spans || [], depth + 1, minStartTime, maxEndTime, maxDuration, openSpanIdsState) : null));
|
|
5235
|
+
});
|
|
5236
|
+
};
|
|
5237
|
+
|
|
5238
|
+
// This function builds a tree structure of spans from a trace.
|
|
5239
|
+
// It does this by first creating a map of all spans for easy lookup.
|
|
5240
|
+
// Then, it builds the tree structure by iterating over each span and adding it to the tree.
|
|
5241
|
+
// It checks if the span is a root span by checking if it has no references or if it has a CHILD_OF reference that points to a span that exists in the map.
|
|
5242
|
+
// If the span is a root span, it adds it to the rootSpans array.
|
|
5243
|
+
// If the span is not a root span, it finds the direct parent and adds this span as its child.
|
|
5244
|
+
// Finally, it returns the rootSpans array sorted by startTime.
|
|
5245
|
+
const buildSpans = (trace) => {
|
|
5246
|
+
const { spans } = trace;
|
|
5247
|
+
// Create a map of all spans for easy lookup
|
|
5248
|
+
const allSpansMap = new Map();
|
|
5249
|
+
// Initialize all spans with empty children arrays
|
|
5250
|
+
spans.forEach((span) => {
|
|
5251
|
+
allSpansMap.set(span.spanID, {
|
|
5252
|
+
...span,
|
|
5253
|
+
spans: [],
|
|
5254
|
+
});
|
|
5255
|
+
});
|
|
5256
|
+
// Build the tree structure
|
|
5257
|
+
const rootSpans = [];
|
|
5258
|
+
spans.forEach((span) => {
|
|
5259
|
+
const spanWithChildren = allSpansMap.get(span.spanID);
|
|
5260
|
+
// Check if this is a root span
|
|
5261
|
+
let isRootSpan = false;
|
|
5262
|
+
if (!span.references.length) {
|
|
5263
|
+
// No references at all - definitely a root span
|
|
5264
|
+
isRootSpan = true;
|
|
5265
|
+
}
|
|
5266
|
+
else {
|
|
5267
|
+
// Find the CHILD_OF reference
|
|
5268
|
+
const childOfRef = span.references.find((r) => r.refType === 'CHILD_OF');
|
|
5269
|
+
if (!childOfRef || !childOfRef.spanID || !allSpansMap.has(childOfRef.spanID)) {
|
|
5270
|
+
// Either no CHILD_OF reference, empty spanID, or parent doesn't exist in this trace
|
|
5271
|
+
isRootSpan = true;
|
|
5272
|
+
}
|
|
5273
|
+
}
|
|
5274
|
+
if (isRootSpan) {
|
|
5275
|
+
rootSpans.push(spanWithChildren);
|
|
5276
|
+
}
|
|
5277
|
+
else {
|
|
5278
|
+
// Find the direct parent and add this span as its child
|
|
5279
|
+
const childOfRef = span.references.find((r) => r.refType === 'CHILD_OF');
|
|
5280
|
+
if (childOfRef) {
|
|
5281
|
+
const parent = allSpansMap.get(childOfRef.spanID);
|
|
5282
|
+
if (parent) {
|
|
5283
|
+
// Add this span as a child of its parent
|
|
5284
|
+
parent.spans = parent.spans || [];
|
|
5285
|
+
parent.spans.push(spanWithChildren);
|
|
5286
|
+
parent.spans = parent.spans.sort((a, b) => a.startTime - b.startTime);
|
|
5287
|
+
}
|
|
5288
|
+
}
|
|
5289
|
+
}
|
|
5290
|
+
});
|
|
5291
|
+
return rootSpans.sort((a, b) => a.startTime - b.startTime);
|
|
5292
|
+
};
|
|
5293
|
+
|
|
5294
|
+
const ContainSpans = styled.div `
|
|
5295
|
+
display: flex;
|
|
5296
|
+
flex-direction: column;
|
|
5297
|
+
gap: 0;
|
|
5298
|
+
`;
|
|
5299
|
+
const TraceView = ({ traces }) => {
|
|
5300
|
+
const [openSpanIds, setOpenSpanIds] = useState([]);
|
|
5301
|
+
const finalTraces = useMemo(() => {
|
|
5302
|
+
const sorted = traces.sort((a, b) => b.spans[0].startTime - a.spans[0].startTime);
|
|
5303
|
+
const mapped = sorted.map((trace) => ({ ...trace, spans: buildSpans(trace) }));
|
|
5304
|
+
return mapped;
|
|
5305
|
+
}, [traces]);
|
|
5306
|
+
const maxDuration = useMemo(() => {
|
|
5307
|
+
return finalTraces.reduce((max, trace) => {
|
|
5308
|
+
return Math.max(max, trace.spans.reduce((max, span) => max + span.duration, 0));
|
|
5309
|
+
}, 0);
|
|
5310
|
+
}, [finalTraces]);
|
|
5311
|
+
return (React.createElement(ContainSpans, null, finalTraces.map((trace) => renderSpans(trace.spans, 0, 0, 0, maxDuration, {
|
|
5312
|
+
value: openSpanIds,
|
|
5313
|
+
set: setOpenSpanIds,
|
|
5314
|
+
}))));
|
|
5315
|
+
};
|
|
5316
|
+
|
|
5317
|
+
export { ActionDrawer, ActionForm, ActionModal, ActionTable, AwaitPipeline, ConditionDropdown, DataFlow, DataFlowActionsMenu, DataStreamDrawer, DataStreamForm, DataStreamSelectionForm, DestinationDrawer, DestinationForm, DestinationModal, DestinationSelectionForm, DestinationTable, ErrorDropdown, InstrumentationRuleDrawer, InstrumentationRuleForm, InstrumentationRuleModal, InstrumentationRuleTable, KindDropdown, LanguageDropdown, MonitorDropdown, MultiSourceControl, NamespaceDropdown, NavIconIds, NotificationManager, OverviewDrawer, ServiceMap, SetupSummary, SideNav, SlackInvite, SourceDrawer, SourceForm, SourceModal, SourceSelectionForm, SourceTable, SystemOverview, SystemSettings, TableCellConditions, ToastList, ToggleDarkMode, TraceView };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const compareCondition: (renderCondition:
|
|
1
|
+
import { SignalType, YamlCompareArr } from '@/types';
|
|
2
|
+
export declare const compareCondition: (renderCondition: YamlCompareArr, signals: SignalType[], fields: {
|
|
3
3
|
name: string;
|
|
4
4
|
value?: string;
|
|
5
5
|
}[]) => boolean;
|
package/lib/functions.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
export { c as capitalizeFirstLetter, f as flattenObjectKeys, g as getConditionsBooleans, a as getMonitorIcon, b as getStatusIcon, i as isStringABoolean, d as isValidVersion, m as mapConditions, n as numbersOnly, p as parseBooleanFromString, e as parseJsonStringToPrettyString, r as removeEmptyValuesFromObject, s as safeJsonStringify, h as splitCamelString } from './index-
|
|
2
|
-
|
|
1
|
+
export { c as capitalizeFirstLetter, f as flattenObjectKeys, g as getConditionsBooleans, a as getMonitorIcon, b as getStatusIcon, i as isStringABoolean, d as isValidVersion, m as mapConditions, n as numbersOnly, p as parseBooleanFromString, e as parseJsonStringToPrettyString, r as removeEmptyValuesFromObject, s as safeJsonStringify, h as splitCamelString } from './index-ddf36942.js';
|
|
2
|
+
import { K as K8sLogo } from './index-9436f4a7.js';
|
|
3
|
+
export { c as compareCondition, g as getActionIcon, d as getEntityId, e as getInstrumentationRuleIcon, f as getProgrammingLanguageIcon } from './index-9436f4a7.js';
|
|
3
4
|
export { d as deepClone, i as isEmpty, s as safeJsonParse } from './index-5e5f7bda.js';
|
|
4
|
-
|
|
5
|
-
export { g as getActionIcon, c as getEntityId, d as getInstrumentationRuleIcon, e as getProgrammingLanguageIcon } from './index-86030474.js';
|
|
5
|
+
export { f as filterActions, a as filterDestinations, b as filterDestinationsByStream, c as filterSources, d as filterSourcesByStream, e as formatBytes, h as getContainersIcons, g as getContainersInstrumentedCount, i as getDestinationIcon, j as getEntityIcon, k as getEntityLabel, l as getMetricForEntity, m as getValueForRange, n as getWorkloadId, o as getYamlFieldsForDestination, p as hasUnhealthyInstances, q as isOverTime, r as mapDestinationFieldsForDisplay, s as sleep } from './index-5fb023f6.js';
|
|
6
6
|
export { g as getIdFromSseTarget, i as isLegalK8sLabel, m as mapExportedSignals } from './index-6a6bea6e.js';
|
|
7
7
|
import { ProgrammingLanguages, PlatformType, EntityTypes } from './types.js';
|
|
8
8
|
import 'react';
|
|
9
9
|
import 'styled-components';
|
|
10
|
-
import { O as OdigosLogo } from './index-
|
|
11
|
-
import { V as VmLogo } from './index-
|
|
12
|
-
import './index-
|
|
10
|
+
import { O as OdigosLogo } from './index-2b6ae9c8.js';
|
|
11
|
+
import { V as VmLogo } from './index-6344746d.js';
|
|
12
|
+
import './index-968d01e8.js';
|
|
13
13
|
|
|
14
14
|
const cleanObjectEmptyStringsValues = (obj) => {
|
|
15
15
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
package/lib/hooks.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
+
import { W as useNotificationStore, F as FORM_ALERTS, Q as useDrawerStore, X as useEntityStore, Z as useDataStreamStore, $ as useSetupStore } from './index-9436f4a7.js';
|
|
1
2
|
import { ActionKeyTypes, ActionType, StatusType, EntityTypes, FieldTypes } from './types.js';
|
|
2
|
-
import { V as useNotificationStore, F as FORM_ALERTS, O as useDrawerStore, W as useEntityStore, Y as useDataStreamStore, _ as useSetupStore } from './index-86030474.js';
|
|
3
3
|
import { useState, useEffect, useMemo } from 'react';
|
|
4
4
|
import 'styled-components';
|
|
5
5
|
import { i as isEmpty, s as safeJsonParse } from './index-5e5f7bda.js';
|
|
6
|
-
import { i as useGenericForm } from './useTransition-
|
|
7
|
-
export { b as useClickNode, a as useContainerSize, h as useCopy, e as useInstrumentationRuleFormData, u as useKeyDown, d as useOnClickOutside, c as usePopup, g as useTimeAgo, f as useTransition } from './useTransition-
|
|
6
|
+
import { i as useGenericForm } from './useTransition-0f2cccf3.js';
|
|
7
|
+
export { b as useClickNode, a as useContainerSize, h as useCopy, e as useInstrumentationRuleFormData, u as useKeyDown, d as useOnClickOutside, c as usePopup, g as useTimeAgo, f as useTransition } from './useTransition-0f2cccf3.js';
|
|
8
8
|
import { g as getIdFromSseTarget, i as isLegalK8sLabel, m as mapExportedSignals } from './index-6a6bea6e.js';
|
|
9
9
|
|
|
10
10
|
const INITIAL$2 = {
|
package/lib/icons.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { T as Theme } from './index-
|
|
2
|
-
export {
|
|
3
|
-
export { C as CheckCircledIcon, E as ErrorTriangleIcon, I as InfoIcon, L as LogsIcon, M as MetricsIcon, O as OdigosLogo, T as TracesIcon, W as WarningTriangleIcon } from './index-
|
|
4
|
-
export { A as ArrowIcon, C as CrossCircledIcon, D as DataStreamsIcon, F as FilterIcon, G as GearIcon, K as KeyIcon, N as NotificationIcon, O as OdigosLogoText, a as OverviewIcon, R as RefreshLeftArrowIcon, S as SlackLogo, T as TerminalIcon, U as UserIcon } from './index-
|
|
1
|
+
import { T as Theme } from './index-9436f4a7.js';
|
|
2
|
+
export { i as AddClusterInfoIcon, o as CPlusPlusLogo, p as CSharpLogo, C as CodeAttributesIcon, m as CustomInstrumentationIcon, j as DeleteAttributeIcon, q as DotnetLogo, E as ElixirLogo, G as GoLogo, H as HeadersCollectionIcon, l as ImageErrorIcon, J as JavaLogo, K as K8sLogo, h as KafkaLogo, r as MysqlLogo, N as NginxLogo, s as NodejsLogo, n as PayloadCollectionIcon, t as PhpLogo, P as PiiMaskingIcon, u as PostgresLogo, v as PythonLogo, w as RedisLogo, R as RenameAttributeIcon, x as RubyLogo, y as RustLogo, k as SamplerIcon, z as SwiftLogo } from './index-9436f4a7.js';
|
|
3
|
+
export { C as CheckCircledIcon, E as ErrorTriangleIcon, I as InfoIcon, L as LogsIcon, M as MetricsIcon, O as OdigosLogo, T as TracesIcon, W as WarningTriangleIcon } from './index-2b6ae9c8.js';
|
|
4
|
+
export { A as ArrowIcon, C as CrossCircledIcon, D as DataStreamsIcon, F as FilterIcon, G as GearIcon, K as KeyIcon, N as NotificationIcon, O as OdigosLogoText, a as OverviewIcon, R as RefreshLeftArrowIcon, S as SlackLogo, T as TerminalIcon, U as UserIcon } from './index-75412865.js';
|
|
5
5
|
import React from 'react';
|
|
6
|
-
export { h as CheckIcon, C as CodeIcon, a as CopyIcon, i as CrossIcon, E as EditIcon, b as EditedIcon, c as ExtendArrowIcon, f as EyeClosedIcon, g as EyeOpenIcon, L as ListIcon, M as MinusIcon, N as NoDataIcon, d as NotebookIcon, P as PlusIcon, S as SearchIcon, e as SortArrowsIcon, T as TrashIcon, X as XIcon } from './index-
|
|
7
|
-
export { V as VmLogo } from './index-
|
|
8
|
-
export { a5 as ActionsIcon, A as AlaudaLogo, a as AlibabaCloudLogo, b as AppDynamicsLogo, i as AwsCloudwatchLogo, S as AwsS3Logo, a1 as AwsXrayLogo, c as AxiomLogo, d as BetterStackLogo, B as BlobStorageLogo, e as BonreeLogo, C as CauselyLogo, f as ChecklyLogo, g as ChronosphereLogo, h as ClickhouseLogo, j as CoralogixLogo, D as Dash0Logo, k as DatadogLogo, a4 as DestinationsIcon, l as DynatraceLogo, E as ElasticApmLogo, m as ElasticSearchLogo, F as GigapipeLogo, G as GoogleCloudPlatformLogo, n as GrafanaLogo, o as GreptimeLogo, p as GroundcoverLogo, H as HoneycombLogo, q as HyperDxLogo, I as InstanaLogo, J as JaegerLogo, K as KloudmateLogo, L as Last9Logo, r as LightstepLogo, s as LogzioLogo, t as LokiLogo, u as LumigoLogo, M as MiddlewareLogo, a2 as NamespacesIcon, N as NewRelicLogo, v as ObserveLogo, w as OneUptimeLogo, x as OpenObserveLogo, O as OpenTelemetryLogo, y as OpsVerseLogo, z as OracleLogo, P as PrometheusLogo, Q as QrynLogo, R as QuickwitLogo, a6 as RulesIcon, T as SeqLogo, U as SignozLogo, a3 as SourcesIcon, V as SplunkLogo, W as SumoLogicLogo, X as TelemetryHubLogo, Y as TempoLogo, Z as TingyunLogo, _ as TraceloopLogo, $ as UptraceLogo, a0 as VictoriaMetricsLogo } from './index-
|
|
6
|
+
export { h as CheckIcon, C as CodeIcon, a as CopyIcon, i as CrossIcon, E as EditIcon, b as EditedIcon, c as ExtendArrowIcon, f as EyeClosedIcon, g as EyeOpenIcon, L as ListIcon, M as MinusIcon, N as NoDataIcon, d as NotebookIcon, P as PlusIcon, S as SearchIcon, e as SortArrowsIcon, T as TrashIcon, X as XIcon } from './index-430be181.js';
|
|
7
|
+
export { V as VmLogo } from './index-6344746d.js';
|
|
8
|
+
export { a5 as ActionsIcon, A as AlaudaLogo, a as AlibabaCloudLogo, b as AppDynamicsLogo, i as AwsCloudwatchLogo, S as AwsS3Logo, a1 as AwsXrayLogo, c as AxiomLogo, d as BetterStackLogo, B as BlobStorageLogo, e as BonreeLogo, C as CauselyLogo, f as ChecklyLogo, g as ChronosphereLogo, h as ClickhouseLogo, j as CoralogixLogo, D as Dash0Logo, k as DatadogLogo, a4 as DestinationsIcon, l as DynatraceLogo, E as ElasticApmLogo, m as ElasticSearchLogo, F as GigapipeLogo, G as GoogleCloudPlatformLogo, n as GrafanaLogo, o as GreptimeLogo, p as GroundcoverLogo, H as HoneycombLogo, q as HyperDxLogo, I as InstanaLogo, J as JaegerLogo, K as KloudmateLogo, L as Last9Logo, r as LightstepLogo, s as LogzioLogo, t as LokiLogo, u as LumigoLogo, M as MiddlewareLogo, a2 as NamespacesIcon, N as NewRelicLogo, v as ObserveLogo, w as OneUptimeLogo, x as OpenObserveLogo, O as OpenTelemetryLogo, y as OpsVerseLogo, z as OracleLogo, P as PrometheusLogo, Q as QrynLogo, R as QuickwitLogo, a6 as RulesIcon, T as SeqLogo, U as SignozLogo, a3 as SourcesIcon, V as SplunkLogo, W as SumoLogicLogo, X as TelemetryHubLogo, Y as TempoLogo, Z as TingyunLogo, _ as TraceloopLogo, $ as UptraceLogo, a0 as VictoriaMetricsLogo } from './index-968d01e8.js';
|
|
9
9
|
import './types.js';
|
|
10
10
|
import 'styled-components';
|
|
11
11
|
|
|
@@ -1,42 +1,10 @@
|
|
|
1
1
|
import { StatusType, DestinationTypes, EntityTypes } from './types.js';
|
|
2
|
-
import { a as DEFAULT_DATA_STREAM_NAME,
|
|
2
|
+
import { a as DEFAULT_DATA_STREAM_NAME, f as getProgrammingLanguageIcon, h as KafkaLogo } from './index-9436f4a7.js';
|
|
3
3
|
import 'react';
|
|
4
4
|
import 'styled-components';
|
|
5
|
-
import { A as AlaudaLogo, a as AlibabaCloudLogo, b as AppDynamicsLogo, c as AxiomLogo, B as BlobStorageLogo, d as BetterStackLogo, e as BonreeLogo, C as CauselyLogo, f as ChecklyLogo, g as ChronosphereLogo, h as ClickhouseLogo, i as AwsCloudwatchLogo, j as CoralogixLogo, D as Dash0Logo, k as DatadogLogo, O as OpenTelemetryLogo, l as DynatraceLogo, E as ElasticApmLogo, m as ElasticSearchLogo, G as GoogleCloudPlatformLogo, n as GrafanaLogo, o as GreptimeLogo, p as GroundcoverLogo, H as HoneycombLogo, q as HyperDxLogo, I as InstanaLogo, J as JaegerLogo, K as KloudmateLogo, L as Last9Logo, r as LightstepLogo, s as LogzioLogo, t as LokiLogo, u as LumigoLogo, M as MiddlewareLogo, N as NewRelicLogo, v as ObserveLogo, w as OneUptimeLogo, x as OpenObserveLogo, y as OpsVerseLogo, z as OracleLogo, P as PrometheusLogo, Q as QrynLogo, F as GigapipeLogo, R as QuickwitLogo, S as AwsS3Logo, T as SeqLogo, U as SignozLogo, V as SplunkLogo, W as SumoLogicLogo, X as TelemetryHubLogo, Y as TempoLogo, Z as TingyunLogo, _ as TraceloopLogo, $ as UptraceLogo, a0 as VictoriaMetricsLogo, a1 as AwsXrayLogo, a2 as NamespacesIcon, a3 as SourcesIcon, a4 as DestinationsIcon, a5 as ActionsIcon, a6 as RulesIcon } from './index-
|
|
5
|
+
import { A as AlaudaLogo, a as AlibabaCloudLogo, b as AppDynamicsLogo, c as AxiomLogo, B as BlobStorageLogo, d as BetterStackLogo, e as BonreeLogo, C as CauselyLogo, f as ChecklyLogo, g as ChronosphereLogo, h as ClickhouseLogo, i as AwsCloudwatchLogo, j as CoralogixLogo, D as Dash0Logo, k as DatadogLogo, O as OpenTelemetryLogo, l as DynatraceLogo, E as ElasticApmLogo, m as ElasticSearchLogo, G as GoogleCloudPlatformLogo, n as GrafanaLogo, o as GreptimeLogo, p as GroundcoverLogo, H as HoneycombLogo, q as HyperDxLogo, I as InstanaLogo, J as JaegerLogo, K as KloudmateLogo, L as Last9Logo, r as LightstepLogo, s as LogzioLogo, t as LokiLogo, u as LumigoLogo, M as MiddlewareLogo, N as NewRelicLogo, v as ObserveLogo, w as OneUptimeLogo, x as OpenObserveLogo, y as OpsVerseLogo, z as OracleLogo, P as PrometheusLogo, Q as QrynLogo, F as GigapipeLogo, R as QuickwitLogo, S as AwsS3Logo, T as SeqLogo, U as SignozLogo, V as SplunkLogo, W as SumoLogicLogo, X as TelemetryHubLogo, Y as TempoLogo, Z as TingyunLogo, _ as TraceloopLogo, $ as UptraceLogo, a0 as VictoriaMetricsLogo, a1 as AwsXrayLogo, a2 as NamespacesIcon, a3 as SourcesIcon, a4 as DestinationsIcon, a5 as ActionsIcon, a6 as RulesIcon } from './index-968d01e8.js';
|
|
6
6
|
import { s as safeJsonParse } from './index-5e5f7bda.js';
|
|
7
7
|
|
|
8
|
-
const compareCondition = (renderCondition, fields) => {
|
|
9
|
-
if (!renderCondition || !renderCondition.length)
|
|
10
|
-
return true;
|
|
11
|
-
if (renderCondition.length === 1)
|
|
12
|
-
return renderCondition[0] == 'true';
|
|
13
|
-
const [key, cond, val] = renderCondition;
|
|
14
|
-
const field = fields.find((field) => field.name === key);
|
|
15
|
-
if (!field) {
|
|
16
|
-
console.warn(`Field with name ${key} not found, condition will be skipped`);
|
|
17
|
-
return true;
|
|
18
|
-
}
|
|
19
|
-
switch (cond) {
|
|
20
|
-
case '===':
|
|
21
|
-
case '==':
|
|
22
|
-
return field.value === val;
|
|
23
|
-
case '!==':
|
|
24
|
-
case '!=':
|
|
25
|
-
return field.value !== val;
|
|
26
|
-
case '>':
|
|
27
|
-
return Number(field.value) > Number(val);
|
|
28
|
-
case '<':
|
|
29
|
-
return Number(field.value) < Number(val);
|
|
30
|
-
case '>=':
|
|
31
|
-
return Number(field.value) >= Number(val);
|
|
32
|
-
case '<=':
|
|
33
|
-
return Number(field.value) <= Number(val);
|
|
34
|
-
default:
|
|
35
|
-
console.warn(`Invalid condition ${cond}, condition will be skipped`);
|
|
36
|
-
return true;
|
|
37
|
-
}
|
|
38
|
-
};
|
|
39
|
-
|
|
40
8
|
const filterActions = (actions, filters) => {
|
|
41
9
|
let filtered = [...actions];
|
|
42
10
|
if (!!filters.monitors?.length)
|
|
@@ -301,4 +269,4 @@ const mapDestinationFieldsForDisplay = (destination, yamlFields) => {
|
|
|
301
269
|
|
|
302
270
|
const sleep = async (ms = 1000) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
303
271
|
|
|
304
|
-
export { filterDestinations as a, filterDestinationsByStream as b,
|
|
272
|
+
export { filterDestinations as a, filterDestinationsByStream as b, filterSources as c, filterSourcesByStream as d, formatBytes as e, filterActions as f, getContainersInstrumentedCount as g, getContainersIcons as h, getDestinationIcon as i, getEntityIcon as j, getEntityLabel as k, getMetricForEntity as l, getValueForRange as m, getWorkloadId as n, getYamlFieldsForDestination as o, hasUnhealthyInstances as p, isOverTime as q, mapDestinationFieldsForDisplay as r, sleep as s };
|
|
@@ -774,6 +774,53 @@ const MONITORS_OPTIONS = [
|
|
|
774
774
|
},
|
|
775
775
|
];
|
|
776
776
|
|
|
777
|
+
var KeyType;
|
|
778
|
+
(function (KeyType) {
|
|
779
|
+
KeyType["SIGNALS"] = "SIGNALS";
|
|
780
|
+
})(KeyType || (KeyType = {}));
|
|
781
|
+
const compareCondition = (renderCondition, signals, fields) => {
|
|
782
|
+
if (!renderCondition || !renderCondition.length)
|
|
783
|
+
return true;
|
|
784
|
+
if (renderCondition.length === 1)
|
|
785
|
+
return renderCondition[0] == 'true';
|
|
786
|
+
const [key, cond, val] = renderCondition;
|
|
787
|
+
if (key === KeyType.SIGNALS) {
|
|
788
|
+
switch (cond) {
|
|
789
|
+
case 'INCLUDES':
|
|
790
|
+
return signals?.includes(val);
|
|
791
|
+
case 'EXCLUDES':
|
|
792
|
+
return !signals?.includes(val);
|
|
793
|
+
default:
|
|
794
|
+
console.warn(`Invalid condition ${cond}, condition will be skipped`);
|
|
795
|
+
return true;
|
|
796
|
+
}
|
|
797
|
+
}
|
|
798
|
+
const field = fields.find((field) => field.name === key);
|
|
799
|
+
if (!field) {
|
|
800
|
+
console.warn(`Field with name ${key} not found, condition will be skipped`);
|
|
801
|
+
return true;
|
|
802
|
+
}
|
|
803
|
+
switch (cond) {
|
|
804
|
+
case '===':
|
|
805
|
+
case '==':
|
|
806
|
+
return field.value === val;
|
|
807
|
+
case '!==':
|
|
808
|
+
case '!=':
|
|
809
|
+
return field.value !== val;
|
|
810
|
+
case '>':
|
|
811
|
+
return Number(field.value) > Number(val);
|
|
812
|
+
case '<':
|
|
813
|
+
return Number(field.value) < Number(val);
|
|
814
|
+
case '>=':
|
|
815
|
+
return Number(field.value) >= Number(val);
|
|
816
|
+
case '<=':
|
|
817
|
+
return Number(field.value) <= Number(val);
|
|
818
|
+
default:
|
|
819
|
+
console.warn(`Invalid condition ${cond}, condition will be skipped`);
|
|
820
|
+
return true;
|
|
821
|
+
}
|
|
822
|
+
};
|
|
823
|
+
|
|
777
824
|
const getProgrammingLanguageIcon = (language) => {
|
|
778
825
|
const LOGOS = {
|
|
779
826
|
[ProgrammingLanguages.Java]: JavaLogo,
|
|
@@ -1915,4 +1962,4 @@ var animations = /*#__PURE__*/Object.freeze({
|
|
|
1915
1962
|
|
|
1916
1963
|
const Theme = { Provider, useTheme, opacity, animations };
|
|
1917
1964
|
|
|
1918
|
-
export {
|
|
1965
|
+
export { useSetupStore as $, ACTION_OPTIONS as A, BUTTON_TEXTS as B, CodeAttributesIcon as C, DISPLAY_LANGUAGES as D, ElixirLogo as E, FORM_ALERTS as F, GoLogo as G, HeadersCollectionIcon as H, INSTRUMENTATION_RULE_OPTIONS as I, JavaLogo as J, K8sLogo as K, LANGUAGE_OPTIONS as L, MONITORS_OPTIONS as M, NginxLogo as N, useModalStore as O, PiiMaskingIcon as P, useDrawerStore as Q, RenameAttributeIcon as R, STORAGE_KEYS as S, Theme as T, useActiveNodeStore as U, usePendingStore as V, useNotificationStore as W, useEntityStore as X, useFilterStore as Y, useDataStreamStore as Z, useInstrumentStore as _, DEFAULT_DATA_STREAM_NAME as a, useSelectedStore as a0, useDarkMode as a1, styleInject as a2, DISPLAY_TITLES as b, compareCondition as c, getEntityId as d, getInstrumentationRuleIcon as e, getProgrammingLanguageIcon as f, getActionIcon as g, KafkaLogo as h, AddClusterInfoIcon as i, DeleteAttributeIcon as j, SamplerIcon as k, ImageErrorIcon as l, CustomInstrumentationIcon as m, PayloadCollectionIcon as n, CPlusPlusLogo as o, CSharpLogo as p, DotnetLogo as q, MysqlLogo as r, NodejsLogo as s, PhpLogo as t, PostgresLogo as u, PythonLogo as v, RedisLogo as w, RubyLogo as x, RustLogo as y, SwiftLogo as z };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { T as Theme } from './index-
|
|
2
|
+
import { T as Theme } from './index-9436f4a7.js';
|
|
3
3
|
|
|
4
4
|
const AlaudaLogo = ({ size = 16, fill, rotate = 0, onClick }) => {
|
|
5
5
|
return (React.createElement("svg", { width: size, height: size, viewBox: '0 0 43 43', xmlns: 'http://www.w3.org/2000/svg', fill: 'none', style: { transform: `rotate(${rotate}deg)` }, onClick: onClick },
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { StatusType, OtherStatus, SignalType } from './types.js';
|
|
2
2
|
import 'react';
|
|
3
|
-
import './index-
|
|
3
|
+
import './index-9436f4a7.js';
|
|
4
4
|
import 'styled-components';
|
|
5
|
-
import { L as LogsIcon, M as MetricsIcon, T as TracesIcon, C as CheckCircledIcon, E as ErrorTriangleIcon, W as WarningTriangleIcon, I as InfoIcon, O as OdigosLogo } from './index-
|
|
5
|
+
import { L as LogsIcon, M as MetricsIcon, T as TracesIcon, C as CheckCircledIcon, E as ErrorTriangleIcon, W as WarningTriangleIcon, I as InfoIcon, O as OdigosLogo } from './index-2b6ae9c8.js';
|
|
6
6
|
|
|
7
7
|
const capitalizeFirstLetter = (string) => {
|
|
8
8
|
return string.charAt(0).toUpperCase() + string.slice(1);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { a6 as WarningModal } from './index-
|
|
2
|
+
import { a6 as WarningModal } from './index-ff2e118e.js';
|
|
3
3
|
import { StatusType, EntityTypes } from './types.js';
|
|
4
|
-
import './index-
|
|
4
|
+
import './index-9436f4a7.js';
|
|
5
5
|
import 'styled-components';
|
|
6
6
|
|
|
7
7
|
const CancelWarning = ({ isOpen, noOverlay, name, onApprove, onDeny }) => {
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import React, { Fragment, useMemo, useState, useEffect, useRef, forwardRef, createElement, useCallback, createContext, memo, useContext, useLayoutEffect } from 'react';
|
|
2
|
-
import { T as Theme, B as BUTTON_TEXTS,
|
|
2
|
+
import { T as Theme, B as BUTTON_TEXTS, l as ImageErrorIcon, M as MONITORS_OPTIONS, a2 as styleInject, V as usePendingStore, a0 as useSelectedStore, _ as useInstrumentStore, U as useActiveNodeStore, W as useNotificationStore, b as DISPLAY_TITLES, L as LANGUAGE_OPTIONS, F as FORM_ALERTS, D as DISPLAY_LANGUAGES, f as getProgrammingLanguageIcon } from './index-9436f4a7.js';
|
|
3
3
|
import styled, { css } from 'styled-components';
|
|
4
|
-
import { M as MinusIcon$1, h as CheckIcon, L as ListIcon, C as CodeIcon, c as ExtendArrowIcon, P as PlusIcon$1, a as CopyIcon, E as EditIcon, b as EditedIcon, e as SortArrowsIcon, d as NotebookIcon, X as XIcon, f as EyeClosedIcon, g as EyeOpenIcon, N as NoDataIcon, i as CrossIcon, S as SearchIcon, T as TrashIcon } from './index-
|
|
4
|
+
import { M as MinusIcon$1, h as CheckIcon, L as ListIcon, C as CodeIcon, c as ExtendArrowIcon, P as PlusIcon$1, a as CopyIcon, E as EditIcon, b as EditedIcon, e as SortArrowsIcon, d as NotebookIcon, X as XIcon, f as EyeClosedIcon, g as EyeOpenIcon, N as NoDataIcon, i as CrossIcon, S as SearchIcon, T as TrashIcon } from './index-430be181.js';
|
|
5
5
|
import { StatusType, OtherStatus, EntityTypes, NodeTypes, AddNodeTypes, EdgeTypes, ProgrammingLanguages, IntrumentationStatus, SortDirection, InputTypes, FieldTypes } from './types.js';
|
|
6
6
|
import { s as safeJsonParse, i as isEmpty } from './index-5e5f7bda.js';
|
|
7
|
-
import { b as getStatusIcon, r as removeEmptyValuesFromObject, s as safeJsonStringify, f as flattenObjectKeys, m as mapConditions, g as getConditionsBooleans, c as capitalizeFirstLetter, a as getMonitorIcon, i as isStringABoolean, p as parseBooleanFromString, d as isValidVersion, h as splitCamelString, e as parseJsonStringToPrettyString, n as numbersOnly } from './index-
|
|
7
|
+
import { b as getStatusIcon, r as removeEmptyValuesFromObject, s as safeJsonStringify, f as flattenObjectKeys, m as mapConditions, g as getConditionsBooleans, c as capitalizeFirstLetter, a as getMonitorIcon, i as isStringABoolean, p as parseBooleanFromString, d as isValidVersion, h as splitCamelString, e as parseJsonStringToPrettyString, n as numbersOnly } from './index-ddf36942.js';
|
|
8
8
|
import ReactDOM, { createPortal } from 'react-dom';
|
|
9
|
-
import { c as usePopup, h as useCopy, b as useClickNode, i as useGenericForm, a as useContainerSize, f as useTransition, u as useKeyDown, d as useOnClickOutside } from './useTransition-
|
|
10
|
-
import { I as InfoIcon } from './index-
|
|
9
|
+
import { c as usePopup, h as useCopy, b as useClickNode, i as useGenericForm, a as useContainerSize, f as useTransition, u as useKeyDown, d as useOnClickOutside } from './useTransition-0f2cccf3.js';
|
|
10
|
+
import { I as InfoIcon } from './index-2b6ae9c8.js';
|
|
11
11
|
|
|
12
12
|
const TextWrapper$2 = styled.div `
|
|
13
13
|
color: ${({ $color, theme }) => $color || theme.text.secondary};
|
package/lib/mock-data/index.d.ts
CHANGED
package/lib/snippets.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { B as Button, _ as Text, L as NotificationNote } from './index-
|
|
2
|
-
export { al as AddButton, aq as AddNode, ar as BaseNode, an as CopyText, as as EdgedNode, aj as Flow, at as FrameNode, au as HeaderNode, az as LabeledEdge, av as MapItemNode, aw as NoDataNode, ao as PodContainer, ax as ScrollNode, ay as SkeletonNode, ap as SourceContainer, ag as nodeConfig } from './index-
|
|
1
|
+
import { B as Button, _ as Text, L as NotificationNote } from './index-ff2e118e.js';
|
|
2
|
+
export { al as AddButton, aq as AddNode, ar as BaseNode, an as CopyText, as as EdgedNode, aj as Flow, at as FrameNode, au as HeaderNode, az as LabeledEdge, av as MapItemNode, aw as NoDataNode, ao as PodContainer, ax as ScrollNode, ay as SkeletonNode, ap as SourceContainer, ag as nodeConfig } from './index-ff2e118e.js';
|
|
3
3
|
import React from 'react';
|
|
4
|
-
import { T as Theme, B as BUTTON_TEXTS, b as DISPLAY_TITLES } from './index-
|
|
5
|
-
import { E as EditIcon } from './index-
|
|
4
|
+
import { T as Theme, B as BUTTON_TEXTS, b as DISPLAY_TITLES } from './index-9436f4a7.js';
|
|
5
|
+
import { E as EditIcon } from './index-430be181.js';
|
|
6
6
|
import { StatusType } from './types.js';
|
|
7
7
|
import 'styled-components';
|
|
8
|
-
import { I as InfoIcon } from './index-
|
|
8
|
+
import { I as InfoIcon } from './index-2b6ae9c8.js';
|
|
9
9
|
import './index-5e5f7bda.js';
|
|
10
|
-
import './index-
|
|
10
|
+
import './index-ddf36942.js';
|
|
11
11
|
import 'react-dom';
|
|
12
|
-
import './useTransition-
|
|
12
|
+
import './useTransition-0f2cccf3.js';
|
|
13
13
|
|
|
14
14
|
const EditButton = ({ label, onClick, variant = 'tertiary', ...props }) => {
|
|
15
15
|
const theme = Theme.useTheme();
|
package/lib/store.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { U as useActiveNodeStore, a1 as useDarkMode, Z as useDataStreamStore, Q as useDrawerStore, X as useEntityStore, Y as useFilterStore, _ as useInstrumentStore, O as useModalStore, W as useNotificationStore, V as usePendingStore, a0 as useSelectedStore, $ as useSetupStore } from './index-9436f4a7.js';
|
|
2
2
|
import 'react';
|
|
3
3
|
import './types.js';
|
|
4
4
|
import 'styled-components';
|
package/lib/theme.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { Comparison } from '@/functions';
|
|
2
1
|
import type { DropdownProps } from '@/components';
|
|
3
2
|
import { type Condition, FieldTypes, SVG } from '../common';
|
|
4
3
|
export declare enum DestinationTypes {
|
|
@@ -95,7 +94,9 @@ export interface Destination {
|
|
|
95
94
|
};
|
|
96
95
|
};
|
|
97
96
|
}
|
|
98
|
-
type
|
|
97
|
+
export type ComparisonStrings = '===' | '==' | '!==' | '!=' | '>' | '<' | '>=' | '<=';
|
|
98
|
+
export type ComparisonArrays = 'INCLUDES' | 'EXCLUDES';
|
|
99
|
+
export type YamlCompareArr = [string | 'SIGNALS', ComparisonStrings | ComparisonArrays, string] | ['true' | 'false'];
|
|
99
100
|
export interface DestinationYamlProperties {
|
|
100
101
|
name: string;
|
|
101
102
|
componentType: FieldTypes;
|
|
@@ -155,4 +156,3 @@ export interface TestConnectionResponse {
|
|
|
155
156
|
destinationType?: DestinationTypes;
|
|
156
157
|
}
|
|
157
158
|
export type TestConnectionFunc = (payload: DestinationFormData) => Promise<TestConnectionResponse | undefined>;
|
|
158
|
-
export {};
|
package/lib/types/index.d.ts
CHANGED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
interface TraceTag {
|
|
2
|
+
key: string;
|
|
3
|
+
type: string;
|
|
4
|
+
value: string;
|
|
5
|
+
}
|
|
6
|
+
interface TraceReference {
|
|
7
|
+
refType: string;
|
|
8
|
+
traceID: string;
|
|
9
|
+
spanID: string;
|
|
10
|
+
}
|
|
11
|
+
interface TraceLog {
|
|
12
|
+
timestamp: number;
|
|
13
|
+
fields: TraceTag[];
|
|
14
|
+
}
|
|
15
|
+
export interface TraceSpan {
|
|
16
|
+
traceID: string;
|
|
17
|
+
spanID: string;
|
|
18
|
+
operationName: string;
|
|
19
|
+
references: TraceReference[];
|
|
20
|
+
startTime: number;
|
|
21
|
+
duration: number;
|
|
22
|
+
tags: TraceTag[];
|
|
23
|
+
logs: TraceLog[];
|
|
24
|
+
processID: string;
|
|
25
|
+
warnings: string;
|
|
26
|
+
spans?: TraceSpan[];
|
|
27
|
+
}
|
|
28
|
+
interface TraceProcess {
|
|
29
|
+
serviceName: string;
|
|
30
|
+
tags: TraceTag[];
|
|
31
|
+
}
|
|
32
|
+
export interface Trace {
|
|
33
|
+
traceID: string;
|
|
34
|
+
spans: TraceSpan[];
|
|
35
|
+
processes: TraceProcess[];
|
|
36
|
+
warnings: string;
|
|
37
|
+
}
|
|
38
|
+
export {};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { O as useModalStore, Q as useDrawerStore, U as useActiveNodeStore } from './index-9436f4a7.js';
|
|
2
2
|
import { AddNodeTypes, EntityTypes, PayloadCollectionKeyTypes, CodeAttributesKeyTypes, CustomInstrumentationsKeyTypes } from './types.js';
|
|
3
3
|
import React, { useState, useMemo, useEffect, useRef, useCallback } from 'react';
|
|
4
4
|
import styled from 'styled-components';
|