@msqd/lydia 0.0.0-stage → 0.6.1
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/LICENSE +373 -0
- package/README.md +151 -2
- package/THIRD_PARTY_NOTICES.md +29 -0
- package/dist/Components/Badges/Badge.d.ts +20 -0
- package/dist/Components/Badges/Badge.js +33 -0
- package/dist/Components/Badges/index.d.ts +1 -0
- package/dist/Components/Badges/index.js +4 -0
- package/dist/Components/Buttons/Button.d.ts +8 -0
- package/dist/Components/Buttons/Button.js +30 -0
- package/dist/Components/Buttons/ButtonGroup.d.ts +13 -0
- package/dist/Components/Buttons/ButtonGroup.js +61 -0
- package/dist/Components/Buttons/index.d.ts +2 -0
- package/dist/Components/Buttons/index.js +6 -0
- package/dist/Components/Cards/Card.d.ts +38 -0
- package/dist/Components/Cards/Card.js +31 -0
- package/dist/Components/Cards/StatCard.d.ts +14 -0
- package/dist/Components/Cards/StatCard.js +27 -0
- package/dist/Components/Cards/index.d.ts +2 -0
- package/dist/Components/Cards/index.js +7 -0
- package/dist/Components/Charts/Components/ThinBarChart.d.ts +35 -0
- package/dist/Components/Charts/Components/ThinBarChart.js +41 -0
- package/dist/Components/Charts/Components/WideBarChart.d.ts +48 -0
- package/dist/Components/Charts/Components/WideBarChart.js +50 -0
- package/dist/Components/Charts/Components/index.d.ts +2 -0
- package/dist/Components/Charts/Components/index.js +6 -0
- package/dist/Components/Charts/Hooks/index.d.ts +2 -0
- package/dist/Components/Charts/Hooks/index.js +7 -0
- package/dist/Components/Charts/Hooks/useChartDimensions.d.ts +24 -0
- package/dist/Components/Charts/Hooks/useChartDimensions.js +42 -0
- package/dist/Components/Charts/Hooks/useThemeColors.d.ts +10 -0
- package/dist/Components/Charts/Hooks/useThemeColors.js +51 -0
- package/dist/Components/Charts/SummaryPerformancesChart.d.ts +7 -0
- package/dist/Components/Charts/SummaryPerformancesChart.js +93 -0
- package/dist/Components/Charts/SummaryRateChart.d.ts +9 -0
- package/dist/Components/Charts/SummaryRateChart.js +81 -0
- package/dist/Components/Charts/TransactionsChart.d.ts +6 -0
- package/dist/Components/Charts/TransactionsChart.js +70 -0
- package/dist/Components/Charts/Utils/ChartBarCalculator.d.ts +48 -0
- package/dist/Components/Charts/Utils/ChartBarCalculator.js +66 -0
- package/dist/Components/Charts/Utils/ChartColors.d.ts +13 -0
- package/dist/Components/Charts/Utils/ChartColors.js +10 -0
- package/dist/Components/Charts/Utils/ChartTooltipFormatter.d.ts +43 -0
- package/dist/Components/Charts/Utils/ChartTooltipFormatter.js +57 -0
- package/dist/Components/Charts/Utils/ReactEChartsCore.d.ts +4 -0
- package/dist/Components/Charts/Utils/ReactEChartsCore.js +5 -0
- package/dist/Components/Charts/Utils/ThemeColor.d.ts +21 -0
- package/dist/Components/Charts/Utils/ThemeColor.js +54 -0
- package/dist/Components/Charts/Utils/TimeFormatter.d.ts +9 -0
- package/dist/Components/Charts/Utils/TimeFormatter.js +25 -0
- package/dist/Components/Charts/Utils/escapeTooltipHtml.d.ts +6 -0
- package/dist/Components/Charts/Utils/escapeTooltipHtml.js +5 -0
- package/dist/Components/Charts/Utils/index.d.ts +5 -0
- package/dist/Components/Charts/Utils/index.js +14 -0
- package/dist/Components/Charts/index.d.ts +6 -0
- package/dist/Components/Charts/index.js +29 -0
- package/dist/Components/Colors/Colors.d.ts +19 -0
- package/dist/Components/Colors/Colors.js +154 -0
- package/dist/Components/Colors/index.d.ts +1 -0
- package/dist/Components/Colors/index.js +4 -0
- package/dist/Components/DataTable/DataTable.d.ts +86 -0
- package/dist/Components/DataTable/DataTable.js +122 -0
- package/dist/Components/DataTable/Paginator.d.ts +41 -0
- package/dist/Components/DataTable/Paginator.js +122 -0
- package/dist/Components/DataTable/ProportionBar.d.ts +48 -0
- package/dist/Components/DataTable/ProportionBar.js +20 -0
- package/dist/Components/DataTable/index.d.ts +3 -0
- package/dist/Components/DataTable/index.js +9 -0
- package/dist/Components/Dialog/Dialog.d.ts +49 -0
- package/dist/Components/Dialog/Dialog.js +83 -0
- package/dist/Components/Dialog/Drawer.d.ts +45 -0
- package/dist/Components/Dialog/Drawer.js +120 -0
- package/dist/Components/Dialog/index.d.ts +3 -0
- package/dist/Components/Dialog/index.js +12 -0
- package/dist/Components/Dialog/modal.types.d.ts +47 -0
- package/dist/Components/Dialog/modal.types.js +8 -0
- package/dist/Components/Facets/FacetCount.d.ts +11 -0
- package/dist/Components/Facets/FacetCount.js +8 -0
- package/dist/Components/Facets/FacetCountsCaption.d.ts +16 -0
- package/dist/Components/Facets/FacetCountsCaption.js +14 -0
- package/dist/Components/Facets/FacetInnerLightButton.d.ts +10 -0
- package/dist/Components/Facets/FacetInnerLightButton.js +17 -0
- package/dist/Components/Facets/FacetLabel.d.ts +13 -0
- package/dist/Components/Facets/FacetLabel.js +15 -0
- package/dist/Components/Facets/FacetList.d.ts +40 -0
- package/dist/Components/Facets/FacetList.js +37 -0
- package/dist/Components/Facets/FacetListCard.d.ts +38 -0
- package/dist/Components/Facets/FacetListCard.js +47 -0
- package/dist/Components/Facets/FacetResetLink.d.ts +13 -0
- package/dist/Components/Facets/FacetResetLink.js +23 -0
- package/dist/Components/Facets/Variants/DateRangeFacet.d.ts +47 -0
- package/dist/Components/Facets/Variants/DateRangeFacet.js +51 -0
- package/dist/Components/Facets/Variants/MultipleChoiceFacet.d.ts +67 -0
- package/dist/Components/Facets/Variants/MultipleChoiceFacet.js +200 -0
- package/dist/Components/Facets/Variants/PerformanceFacet.d.ts +61 -0
- package/dist/Components/Facets/Variants/PerformanceFacet.js +77 -0
- package/dist/Components/Facets/Variants/SingleChoiceFacet.d.ts +56 -0
- package/dist/Components/Facets/Variants/SingleChoiceFacet.js +54 -0
- package/dist/Components/Facets/Variants/index.d.ts +8 -0
- package/dist/Components/Facets/Variants/index.js +10 -0
- package/dist/Components/Facets/Variants/nestedValues.d.ts +33 -0
- package/dist/Components/Facets/Variants/nestedValues.js +87 -0
- package/dist/Components/Facets/index.d.ts +15 -0
- package/dist/Components/Facets/index.js +27 -0
- package/dist/Components/Formatter/BodyNotice.d.ts +9 -0
- package/dist/Components/Formatter/BodyNotice.js +21 -0
- package/dist/Components/Formatter/CodeFormatter.d.ts +47 -0
- package/dist/Components/Formatter/CodeFormatter.js +47 -0
- package/dist/Components/Formatter/HeadersDisplay.d.ts +9 -0
- package/dist/Components/Formatter/HeadersDisplay.js +18 -0
- package/dist/Components/Formatter/JsonTreeView.d.ts +27 -0
- package/dist/Components/Formatter/JsonTreeView.js +149 -0
- package/dist/Components/Formatter/PerformanceMetrics.d.ts +27 -0
- package/dist/Components/Formatter/PerformanceMetrics.js +29 -0
- package/dist/Components/Formatter/SyntaxHighlighter.d.ts +11 -0
- package/dist/Components/Formatter/SyntaxHighlighter.js +16 -0
- package/dist/Components/Formatter/VirtualizedCodeView.d.ts +24 -0
- package/dist/Components/Formatter/VirtualizedCodeView.js +47 -0
- package/dist/Components/Formatter/bodyLimits.d.ts +6 -0
- package/dist/Components/Formatter/bodyLimits.js +6 -0
- package/dist/Components/Formatter/index.d.ts +8 -0
- package/dist/Components/Formatter/index.js +16 -0
- package/dist/Components/Formatter/syntaxTheme.d.ts +8 -0
- package/dist/Components/Formatter/syntaxTheme.js +15 -0
- package/dist/Components/Formatter/useCodeHighlighting.d.ts +15 -0
- package/dist/Components/Formatter/useCodeHighlighting.js +47 -0
- package/dist/Components/Formatter/useVirtualization.d.ts +29 -0
- package/dist/Components/Formatter/useVirtualization.js +18 -0
- package/dist/Components/Inputs/Checkbox/Checkbox.d.ts +6 -0
- package/dist/Components/Inputs/Checkbox/Checkbox.js +75 -0
- package/dist/Components/Inputs/Checkbox/index.d.ts +1 -0
- package/dist/Components/Inputs/Checkbox/index.js +4 -0
- package/dist/Components/Inputs/DateRangeSelector/DateRangeSelector.d.ts +48 -0
- package/dist/Components/Inputs/DateRangeSelector/DateRangeSelector.js +71 -0
- package/dist/Components/Inputs/DateRangeSelector/index.d.ts +1 -0
- package/dist/Components/Inputs/DateRangeSelector/index.js +4 -0
- package/dist/Components/Inputs/Field/Field.d.ts +19 -0
- package/dist/Components/Inputs/Field/Field.js +35 -0
- package/dist/Components/Inputs/Field/index.d.ts +2 -0
- package/dist/Components/Inputs/Field/index.js +7 -0
- package/dist/Components/Inputs/Field/useField.d.ts +33 -0
- package/dist/Components/Inputs/Field/useField.js +36 -0
- package/dist/Components/Inputs/Input/Input.d.ts +85 -0
- package/dist/Components/Inputs/Input/Input.js +146 -0
- package/dist/Components/Inputs/Input/index.d.ts +1 -0
- package/dist/Components/Inputs/Input/index.js +4 -0
- package/dist/Components/Inputs/InputAddon/InputAddon.d.ts +21 -0
- package/dist/Components/Inputs/InputAddon/InputAddon.js +18 -0
- package/dist/Components/Inputs/InputAddon/index.d.ts +1 -0
- package/dist/Components/Inputs/InputAddon/index.js +4 -0
- package/dist/Components/Inputs/InputButton/InputButton.d.ts +21 -0
- package/dist/Components/Inputs/InputButton/InputButton.js +29 -0
- package/dist/Components/Inputs/InputButton/index.d.ts +1 -0
- package/dist/Components/Inputs/InputButton/index.js +4 -0
- package/dist/Components/Inputs/InputIcon/InputIcon.d.ts +20 -0
- package/dist/Components/Inputs/InputIcon/InputIcon.js +16 -0
- package/dist/Components/Inputs/InputIcon/index.d.ts +1 -0
- package/dist/Components/Inputs/InputIcon/index.js +4 -0
- package/dist/Components/Inputs/KeyboardShortcut/KeyboardShortcut.d.ts +12 -0
- package/dist/Components/Inputs/KeyboardShortcut/KeyboardShortcut.js +18 -0
- package/dist/Components/Inputs/KeyboardShortcut/index.d.ts +1 -0
- package/dist/Components/Inputs/KeyboardShortcut/index.js +4 -0
- package/dist/Components/Inputs/Radio/Radio.d.ts +3 -0
- package/dist/Components/Inputs/Radio/Radio.js +59 -0
- package/dist/Components/Inputs/Radio/index.d.ts +1 -0
- package/dist/Components/Inputs/Radio/index.js +4 -0
- package/dist/Components/Inputs/SearchInput/SearchInput.d.ts +9 -0
- package/dist/Components/Inputs/SearchInput/SearchInput.js +48 -0
- package/dist/Components/Inputs/SearchInput/index.d.ts +2 -0
- package/dist/Components/Inputs/SearchInput/index.js +4 -0
- package/dist/Components/Inputs/Sliders/RangeSlider.d.ts +40 -0
- package/dist/Components/Inputs/Sliders/RangeSlider.js +160 -0
- package/dist/Components/Inputs/Sliders/index.d.ts +2 -0
- package/dist/Components/Inputs/Sliders/index.js +4 -0
- package/dist/Components/Inputs/Textarea/Textarea.d.ts +56 -0
- package/dist/Components/Inputs/Textarea/Textarea.js +79 -0
- package/dist/Components/Inputs/Textarea/index.d.ts +1 -0
- package/dist/Components/Inputs/Textarea/index.js +4 -0
- package/dist/Components/Inputs/choiceInput.d.ts +12 -0
- package/dist/Components/Inputs/choiceInput.js +8 -0
- package/dist/Components/Inputs/index.d.ts +11 -0
- package/dist/Components/Inputs/index.js +24 -0
- package/dist/Components/Layouts/DefaultLayout.d.ts +30 -0
- package/dist/Components/Layouts/DefaultLayout.js +25 -0
- package/dist/Components/Layouts/index.d.ts +2 -0
- package/dist/Components/Layouts/index.js +4 -0
- package/dist/Components/NavBar/Assets/defaultAvatar.d.ts +4 -0
- package/dist/Components/NavBar/Assets/defaultAvatar.js +28 -0
- package/dist/Components/NavBar/Assets/index.d.ts +2 -0
- package/dist/Components/NavBar/Assets/index.js +4 -0
- package/dist/Components/NavBar/NavBar.d.ts +58 -0
- package/dist/Components/NavBar/NavBar.js +141 -0
- package/dist/Components/NavBar/index.d.ts +1 -0
- package/dist/Components/NavBar/index.js +5 -0
- package/dist/Components/Tabs/Tabs.d.ts +24 -0
- package/dist/Components/Tabs/Tabs.js +69 -0
- package/dist/Components/Tabs/index.d.ts +2 -0
- package/dist/Components/Tabs/index.js +5 -0
- package/dist/Components/Toast/Toast.d.ts +28 -0
- package/dist/Components/Toast/Toast.js +128 -0
- package/dist/Components/Toast/ToastContainer.d.ts +29 -0
- package/dist/Components/Toast/ToastContainer.js +28 -0
- package/dist/Components/Toast/ToastContext.d.ts +103 -0
- package/dist/Components/Toast/ToastContext.js +124 -0
- package/dist/Components/Toast/index.d.ts +3 -0
- package/dist/Components/Toast/index.js +13 -0
- package/dist/Components/Typography/HeadingLevel.d.ts +28 -0
- package/dist/Components/Typography/HeadingLevel.js +20 -0
- package/dist/Components/Typography/Paragraphs.d.ts +8 -0
- package/dist/Components/Typography/Paragraphs.js +6 -0
- package/dist/Components/Typography/Section.d.ts +8 -0
- package/dist/Components/Typography/Section.js +6 -0
- package/dist/Components/Typography/Titles.d.ts +31 -0
- package/dist/Components/Typography/Titles.js +14 -0
- package/dist/Components/Typography/index.d.ts +4 -0
- package/dist/Components/Typography/index.js +17 -0
- package/dist/Components/Utilities/Foldable.d.ts +42 -0
- package/dist/Components/Utilities/Foldable.js +39 -0
- package/dist/Components/Utilities/index.d.ts +2 -0
- package/dist/Components/Utilities/index.js +6 -0
- package/dist/Components/Utilities/useClickOutside.d.ts +21 -0
- package/dist/Components/Utilities/useClickOutside.js +23 -0
- package/dist/Components/index.d.ts +16 -0
- package/dist/Components/index.js +158 -0
- package/dist/Elements/Http/CacheBadge.d.ts +13 -0
- package/dist/Elements/Http/CacheBadge.js +34 -0
- package/dist/Elements/Http/CacheIndicator.d.ts +17 -0
- package/dist/Elements/Http/CacheIndicator.js +47 -0
- package/dist/Elements/Http/RequestMethodBadge.d.ts +5 -0
- package/dist/Elements/Http/RequestMethodBadge.js +13 -0
- package/dist/Elements/Http/ResponseStatusBadge.d.ts +19 -0
- package/dist/Elements/Http/ResponseStatusBadge.js +20 -0
- package/dist/Elements/Http/index.d.ts +4 -0
- package/dist/Elements/Http/index.js +10 -0
- package/dist/Elements/System/CircuitBreakerStatus.d.ts +11 -0
- package/dist/Elements/System/CircuitBreakerStatus.js +98 -0
- package/dist/Elements/System/EndpointNode.d.ts +10 -0
- package/dist/Elements/System/EndpointNode.js +19 -0
- package/dist/Elements/System/EntrypointNode.d.ts +9 -0
- package/dist/Elements/System/EntrypointNode.js +17 -0
- package/dist/Elements/System/NetworkEdges.d.ts +37 -0
- package/dist/Elements/System/NetworkEdges.js +52 -0
- package/dist/Elements/System/NetworkMap.d.ts +33 -0
- package/dist/Elements/System/NetworkMap.js +121 -0
- package/dist/Elements/System/NetworkNode.d.ts +29 -0
- package/dist/Elements/System/NetworkNode.js +31 -0
- package/dist/Elements/System/ProxyNode.d.ts +8 -0
- package/dist/Elements/System/ProxyNode.js +10 -0
- package/dist/Elements/System/index.d.ts +9 -0
- package/dist/Elements/System/index.js +17 -0
- package/dist/Elements/Tpdex/TpdexBadge.d.ts +26 -0
- package/dist/Elements/Tpdex/TpdexBadge.js +36 -0
- package/dist/Elements/Tpdex/index.d.ts +4 -0
- package/dist/Elements/Tpdex/index.js +8 -0
- package/dist/Elements/Transactions/TransactionFiltersCard.d.ts +41 -0
- package/dist/Elements/Transactions/TransactionFiltersCard.js +121 -0
- package/dist/Elements/Transactions/TransactionsExplorerSidebar.d.ts +37 -0
- package/dist/Elements/Transactions/TransactionsExplorerSidebar.js +154 -0
- package/dist/Elements/Transactions/TransactionsFiltersSidebar.d.ts +22 -0
- package/dist/Elements/Transactions/TransactionsFiltersSidebar.js +39 -0
- package/dist/Elements/Transactions/index.d.ts +13 -0
- package/dist/Elements/Transactions/index.js +9 -0
- package/dist/Elements/index.d.ts +18 -0
- package/dist/Elements/index.js +38 -0
- package/dist/Models/Filters/active.d.ts +12 -0
- package/dist/Models/Filters/active.js +10 -0
- package/dist/Models/Filters/dates.d.ts +8 -0
- package/dist/Models/Filters/dates.js +16 -0
- package/dist/Models/Filters/index.d.ts +4 -0
- package/dist/Models/Filters/index.js +13 -0
- package/dist/Models/Filters/read.d.ts +9 -0
- package/dist/Models/Filters/read.js +22 -0
- package/dist/Models/Filters/types.d.ts +50 -0
- package/dist/Models/Filters/types.js +1 -0
- package/dist/Models/Http/body.d.ts +7 -0
- package/dist/Models/Http/body.js +6 -0
- package/dist/Models/Http/contentDisposition.d.ts +7 -0
- package/dist/Models/Http/contentDisposition.js +51 -0
- package/dist/Models/Http/dataUrl.d.ts +12 -0
- package/dist/Models/Http/dataUrl.js +21 -0
- package/dist/Models/Http/headers.d.ts +18 -0
- package/dist/Models/Http/headers.js +7 -0
- package/dist/Models/Http/index.d.ts +2 -0
- package/dist/Models/Http/index.js +6 -0
- package/dist/Models/Http/percent.d.ts +5 -0
- package/dist/Models/Http/percent.js +17 -0
- package/dist/Models/Http/requestTarget.d.ts +11 -0
- package/dist/Models/Http/requestTarget.js +7 -0
- package/dist/Models/System/index.d.ts +1 -0
- package/dist/Models/System/index.js +7 -0
- package/dist/Models/System/types.d.ts +20 -0
- package/dist/Models/System/types.js +48 -0
- package/dist/Models/Tpdex.d.ts +36 -0
- package/dist/Models/Tpdex.js +38 -0
- package/dist/Models/Transactions/Overview.d.ts +19 -0
- package/dist/Models/Transactions/Overview.js +1 -0
- package/dist/Models/Transactions/encoding.d.ts +49 -0
- package/dist/Models/Transactions/encoding.js +26 -0
- package/dist/Models/Transactions/endpoints.d.ts +15 -0
- package/dist/Models/Transactions/endpoints.js +21 -0
- package/dist/Models/Transactions/facets.d.ts +25 -0
- package/dist/Models/Transactions/facets.js +40 -0
- package/dist/Models/Transactions/filtering.d.ts +20 -0
- package/dist/Models/Transactions/filtering.js +34 -0
- package/dist/Models/Transactions/treeDepth.d.ts +2 -0
- package/dist/Models/Transactions/treeDepth.js +4 -0
- package/dist/Models/Transactions/types.d.ts +58 -0
- package/dist/Models/Transactions/types.js +1 -0
- package/dist/Models/index.d.ts +10 -0
- package/dist/Models/index.js +46 -0
- package/dist/Pages/Alerts/AlertsPage.d.ts +18 -0
- package/dist/Pages/Alerts/AlertsPage.js +104 -0
- package/dist/Pages/Alerts/index.d.ts +1 -0
- package/dist/Pages/Alerts/index.js +4 -0
- package/dist/Pages/Explorer/ExplorerPage.d.ts +6 -0
- package/dist/Pages/Explorer/ExplorerPage.js +55 -0
- package/dist/Pages/Explorer/index.d.ts +1 -0
- package/dist/Pages/Explorer/index.js +4 -0
- package/dist/Pages/Overview/OverviewPage.d.ts +11 -0
- package/dist/Pages/Overview/OverviewPage.js +10 -0
- package/dist/Pages/Overview/Sections/Components/TransactionsHistoryView.d.ts +7 -0
- package/dist/Pages/Overview/Sections/Components/TransactionsHistoryView.js +32 -0
- package/dist/Pages/Overview/Sections/Components/index.d.ts +1 -0
- package/dist/Pages/Overview/Sections/Components/index.js +4 -0
- package/dist/Pages/Overview/Sections/HistorySection.d.ts +18 -0
- package/dist/Pages/Overview/Sections/HistorySection.js +21 -0
- package/dist/Pages/Overview/Sections/SummarySection.d.ts +44 -0
- package/dist/Pages/Overview/Sections/SummarySection.js +127 -0
- package/dist/Pages/Overview/index.d.ts +4 -0
- package/dist/Pages/Overview/index.js +8 -0
- package/dist/Pages/SystemPage/SystemPage.d.ts +8 -0
- package/dist/Pages/SystemPage/SystemPage.js +16 -0
- package/dist/Pages/SystemPage/index.d.ts +1 -0
- package/dist/Pages/SystemPage/index.js +4 -0
- package/dist/Pages/Transactions/Detail/Components/DownloadButton.d.ts +33 -0
- package/dist/Pages/Transactions/Detail/Components/DownloadButton.js +62 -0
- package/dist/Pages/Transactions/Detail/Components/TransactionMessage.d.ts +16 -0
- package/dist/Pages/Transactions/Detail/Components/TransactionMessage.js +44 -0
- package/dist/Pages/Transactions/Detail/Components/TransactionMetadata.d.ts +21 -0
- package/dist/Pages/Transactions/Detail/Components/TransactionMetadata.js +127 -0
- package/dist/Pages/Transactions/Detail/Components/index.d.ts +6 -0
- package/dist/Pages/Transactions/Detail/Components/index.js +8 -0
- package/dist/Pages/Transactions/Detail/TransactionsDetailPage.d.ts +8 -0
- package/dist/Pages/Transactions/Detail/TransactionsDetailPage.js +15 -0
- package/dist/Pages/Transactions/Detail/Utils/BodyPreview.d.ts +15 -0
- package/dist/Pages/Transactions/Detail/Utils/BodyPreview.js +30 -0
- package/dist/Pages/Transactions/Detail/Utils/ContentRenderer.d.ts +28 -0
- package/dist/Pages/Transactions/Detail/Utils/ContentRenderer.js +115 -0
- package/dist/Pages/Transactions/Detail/Utils/index.d.ts +4 -0
- package/dist/Pages/Transactions/Detail/Utils/index.js +9 -0
- package/dist/Pages/Transactions/Detail/index.d.ts +4 -0
- package/dist/Pages/Transactions/Detail/index.js +8 -0
- package/dist/Pages/Transactions/List/TransactionsListPage.d.ts +80 -0
- package/dist/Pages/Transactions/List/TransactionsListPage.js +220 -0
- package/dist/Pages/Transactions/List/index.d.ts +4 -0
- package/dist/Pages/Transactions/List/index.js +6 -0
- package/dist/Pages/Transactions/List/useClientSideTransactions.d.ts +38 -0
- package/dist/Pages/Transactions/List/useClientSideTransactions.js +32 -0
- package/dist/Pages/Transactions/index.d.ts +4 -0
- package/dist/Pages/Transactions/index.js +6 -0
- package/dist/Pages/index.d.ts +5 -0
- package/dist/Pages/index.js +18 -0
- package/dist/Settings.d.ts +13 -0
- package/dist/Settings.js +16 -0
- package/dist/css/Components/Formatter/prism.css +79 -0
- package/dist/css/Components/Inputs/Input/Input.css +73 -0
- package/dist/css/Components/Inputs/Sliders/RangeSliderStyles.css +92 -0
- package/dist/css/components.css +6 -0
- package/dist/css/fonts/Lato-Bold.woff2 +0 -0
- package/dist/css/fonts/Lato-BoldItalic.woff2 +0 -0
- package/dist/css/fonts/Lato-Italic.woff2 +0 -0
- package/dist/css/fonts/Lato-Regular.woff2 +0 -0
- package/dist/css/fonts/OFL.txt +93 -0
- package/dist/css/theme.css +109 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +250 -0
- package/dist/logo.svg +1 -0
- package/dist/styles/styles.css +1 -0
- package/package.json +367 -3
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { FacetOption, FilterMeta } from "../Filters/index.js";
|
|
2
|
+
import type { Transaction } from "./types.js";
|
|
3
|
+
/** The facets a transaction list can be narrowed by. */
|
|
4
|
+
export type TransactionFacetName = "endpoint" | "method" | "status" | "cacheStatus" | "flags" | "tags";
|
|
5
|
+
/** Options offered by each facet. A facet with no entry offers nothing rather than something made up. */
|
|
6
|
+
export type TransactionFacets = Partial<Record<Exclude<TransactionFacetName, "status">, FilterMeta[]>> & {
|
|
7
|
+
/** Status classes with their codes nested under them (ADR 0002). */
|
|
8
|
+
status?: FacetOption[];
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Derives the facet options a list of transactions can offer, with their counts.
|
|
12
|
+
*
|
|
13
|
+
* **Derive from the full set you were handed, never from a page of it.** A facet count describes
|
|
14
|
+
* the dataset, so counting a page gives a number that disagrees with what a server would compute
|
|
15
|
+
* over the same data, while looking just as authoritative. This is the client-side counterpart of
|
|
16
|
+
* a server's facet query, and it is only correct while it sees everything.
|
|
17
|
+
*
|
|
18
|
+
* Counts are of the unfiltered set: selecting `GET` does not narrow the status counts. Narrowing
|
|
19
|
+
* each facet by the others is a different product behaviour, not a refinement of this one.
|
|
20
|
+
*
|
|
21
|
+
* `flags` is absent by construction. Flags are per-user state kept in their own table, keyed by
|
|
22
|
+
* user and transaction, so no transaction payload can answer that facet at all. Only a consumer
|
|
23
|
+
* that can ask the right question supplies those options.
|
|
24
|
+
*/
|
|
25
|
+
export declare function deriveTransactionFacets(transactions: Transaction[]): TransactionFacets;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { tagPairsOf as u, effectiveCacheStatus as i, statusGroupsOf as p, statusClassOrder as f, cacheStatusOrder as h } from "./encoding.js";
|
|
2
|
+
const d = {
|
|
3
|
+
hit: "Cache Hit",
|
|
4
|
+
miss: "Cache Miss",
|
|
5
|
+
stale: "Stale",
|
|
6
|
+
bypass: "Bypass",
|
|
7
|
+
unknown: "Not reported"
|
|
8
|
+
}, l = (e) => {
|
|
9
|
+
const t = /* @__PURE__ */ new Map();
|
|
10
|
+
for (const s of e)
|
|
11
|
+
t.set(s, (t.get(s) ?? 0) + 1);
|
|
12
|
+
return t;
|
|
13
|
+
}, n = (e, t = (s) => s) => [...e.entries()].sort(([, s], [, r]) => r - s).map(([s, r]) => ({ name: s, label: t(s), count: r })), b = (e, t, s) => t.filter((r) => e.has(r)).map((r) => ({ name: r, label: s[r], count: e.get(r) ?? 0 })), m = {
|
|
14
|
+
1: "Informational",
|
|
15
|
+
2: "Success",
|
|
16
|
+
3: "Redirection",
|
|
17
|
+
4: "Client Error",
|
|
18
|
+
5: "Server Error"
|
|
19
|
+
}, g = (e) => {
|
|
20
|
+
const t = l(e.flatMap(p)), s = t.get("failure"), r = f.filter((a) => t.has(a)).map((a) => ({
|
|
21
|
+
name: a,
|
|
22
|
+
label: `${a}xx`,
|
|
23
|
+
description: m[a],
|
|
24
|
+
count: t.get(a) ?? 0,
|
|
25
|
+
under: [...t.entries()].filter(([o]) => o.length === 3 && o.startsWith(a)).sort(([o], [c]) => Number(o) - Number(c)).map(([o, c]) => ({ name: o, label: o, count: c }))
|
|
26
|
+
}));
|
|
27
|
+
return s ? [...r, { name: "failure", label: "Failure", count: s }] : r;
|
|
28
|
+
};
|
|
29
|
+
function S(e) {
|
|
30
|
+
return {
|
|
31
|
+
endpoint: n(l(e.map((t) => t.url))),
|
|
32
|
+
method: n(l(e.map((t) => t.method))),
|
|
33
|
+
status: g(e),
|
|
34
|
+
cacheStatus: b(l(e.map(i)), h, d),
|
|
35
|
+
tags: n(l(e.flatMap(u)))
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
export {
|
|
39
|
+
S as deriveTransactionFacets
|
|
40
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type Filters } from "../Filters/index.js";
|
|
2
|
+
import type { Transaction } from "./types.js";
|
|
3
|
+
export interface TransactionCriteria {
|
|
4
|
+
/** Facet selections, in the shape the facet components produce. */
|
|
5
|
+
filters?: Filters;
|
|
6
|
+
/** Free text term, matched against the fields the search placeholder promises. */
|
|
7
|
+
search?: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Applies facet selections and a search term to a list of transactions, in memory.
|
|
11
|
+
*
|
|
12
|
+
* This is the fallback for consumers with no filtering backend, not the recommended path: a
|
|
13
|
+
* consumer that fetches transactions from a server filters, searches and paginates there, where
|
|
14
|
+
* the whole dataset is. Filtering a page of results client-side narrows only that page.
|
|
15
|
+
*
|
|
16
|
+
* An inactive facet does not filter, so a transaction the facets say nothing about stays in the
|
|
17
|
+
* default view. `flags` are per-user state kept outside the transaction payload, so no transaction
|
|
18
|
+
* can answer them and the facet is ignored here.
|
|
19
|
+
*/
|
|
20
|
+
export declare function filterTransactions(transactions: Transaction[], criteria: TransactionCriteria): Transaction[];
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { effectiveCacheStatus as x, parseStatusSelection as D, statusClassOf as S, tagPairsOf as C } from "./encoding.js";
|
|
2
|
+
import { readArray as d, readDates as v, readRange as T } from "../Filters/read.js";
|
|
3
|
+
import { parseLocalDay as f } from "../Filters/dates.js";
|
|
4
|
+
const w = (e) => [
|
|
5
|
+
e.url,
|
|
6
|
+
e.method,
|
|
7
|
+
String(e.statusCode),
|
|
8
|
+
e.apiName ?? ""
|
|
9
|
+
], y = (e) => {
|
|
10
|
+
const { classes: s, codes: t, excluded: u, failure: r } = D(e);
|
|
11
|
+
return s.length + t.length === 0 && !r ? () => !0 : (n) => {
|
|
12
|
+
const o = String(n.statusCode);
|
|
13
|
+
return r && n.status === "Failed" || t.includes(o) || s.includes(S(n.statusCode)) && !u.includes(o);
|
|
14
|
+
};
|
|
15
|
+
}, L = (e, s) => {
|
|
16
|
+
const t = new Date(e.timestamp), u = f(s.startDate ?? ""), r = f(s.endDate ?? "");
|
|
17
|
+
if (u && t < u)
|
|
18
|
+
return !1;
|
|
19
|
+
if (r) {
|
|
20
|
+
const n = new Date(r.getFullYear(), r.getMonth(), r.getDate() + 1);
|
|
21
|
+
return t < n;
|
|
22
|
+
}
|
|
23
|
+
return !0;
|
|
24
|
+
}, b = (e, s) => e.tpdex === void 0 || s.min !== void 0 && e.tpdex < s.min ? !1 : !(s.max !== void 0 && e.tpdex > s.max), F = (e, s) => {
|
|
25
|
+
const t = C(e);
|
|
26
|
+
return s.some((u) => t.includes(u));
|
|
27
|
+
};
|
|
28
|
+
function A(e, s) {
|
|
29
|
+
const { filters: t = {}, search: u = "" } = s, r = u.trim().toLowerCase(), n = d(t, "endpoint"), o = d(t, "method"), m = y(d(t, "status")), i = d(t, "cacheStatus"), c = d(t, "tags"), h = v(t, "time"), l = T(t, "tpdex"), p = l.min !== void 0 || l.max !== void 0;
|
|
30
|
+
return e.filter((a) => r && !w(a).some((g) => g.toLowerCase().includes(r)) || n.length > 0 && !n.includes(a.url) || o.length > 0 && !o.includes(a.method) || !m(a) || i.length > 0 && !i.includes(x(a)) || c.length > 0 && !F(a, c) || !L(a, h) ? !1 : !(p && !b(a, l)));
|
|
31
|
+
}
|
|
32
|
+
export {
|
|
33
|
+
A as filterTransactions
|
|
34
|
+
};
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { HttpBody } from "../Http/body.js";
|
|
2
|
+
import type { HttpHeader } from "../Http/headers.js";
|
|
3
|
+
/**
|
|
4
|
+
* HTTP content types for request/response bodies
|
|
5
|
+
*/
|
|
6
|
+
export type ContentType = "json" | "xml" | "text" | "html" | "image" | "binary";
|
|
7
|
+
/**
|
|
8
|
+
* Base transaction model representing an HTTP API transaction
|
|
9
|
+
*/
|
|
10
|
+
export interface Transaction {
|
|
11
|
+
id: string;
|
|
12
|
+
url: string;
|
|
13
|
+
method: string;
|
|
14
|
+
status: "Successful" | "Pending" | "Failed";
|
|
15
|
+
statusCode: number;
|
|
16
|
+
timestamp: string;
|
|
17
|
+
responseTime: number;
|
|
18
|
+
client: string;
|
|
19
|
+
apiName?: string;
|
|
20
|
+
/**
|
|
21
|
+
* Arbitrary key/value annotations. HARP populates these from `x-harp-*` request
|
|
22
|
+
* headers, so both halves carry meaning and the value must not be discarded.
|
|
23
|
+
*/
|
|
24
|
+
tags?: Record<string, string>;
|
|
25
|
+
userAgent?: string;
|
|
26
|
+
remoteAddress?: string;
|
|
27
|
+
cached?: boolean;
|
|
28
|
+
cacheStatus?: "hit" | "miss" | "stale" | "bypass";
|
|
29
|
+
/**
|
|
30
|
+
* TPDEX performance score, 0-100. Absent while a transaction is still running,
|
|
31
|
+
* since there is nothing to score yet. Never substitute a value for absence: a
|
|
32
|
+
* fabricated score is indistinguishable from a measured one. When absent and a
|
|
33
|
+
* score is needed, derive it with `calculateTpdexScore(responseTime)`.
|
|
34
|
+
*/
|
|
35
|
+
tpdex?: number;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Flags such as "favorite" are deliberately absent from this model. They are per-user
|
|
39
|
+
* state, not transaction data: HARP keys them by (user, transaction, flag) in a separate
|
|
40
|
+
* table and mutates them through their own endpoint. A transaction payload cannot carry
|
|
41
|
+
* them, so they cannot be read from or filtered on one.
|
|
42
|
+
*/
|
|
43
|
+
/**
|
|
44
|
+
* HTTP message (request or response) with headers and body
|
|
45
|
+
*/
|
|
46
|
+
export interface HttpMessage {
|
|
47
|
+
headers: HttpHeader[];
|
|
48
|
+
body?: HttpBody;
|
|
49
|
+
contentType?: ContentType;
|
|
50
|
+
size?: number;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Detailed transaction model with HTTP request and response details
|
|
54
|
+
*/
|
|
55
|
+
export interface DetailedTransaction extends Transaction {
|
|
56
|
+
request: HttpMessage;
|
|
57
|
+
response: HttpMessage;
|
|
58
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export * from "./Http/index.js";
|
|
2
|
+
export * from "./Transactions/types.js";
|
|
3
|
+
export * from "./Transactions/filtering.js";
|
|
4
|
+
export * from "./Transactions/facets.js";
|
|
5
|
+
export * from "./Transactions/endpoints.js";
|
|
6
|
+
export * from "./Transactions/encoding.js";
|
|
7
|
+
export * from "./Transactions/Overview.js";
|
|
8
|
+
export * from "./System/types.js";
|
|
9
|
+
export * from "./Tpdex.js";
|
|
10
|
+
export * from "./Filters/index.js";
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { filterTransactions as a } from "./Transactions/filtering.js";
|
|
2
|
+
import { deriveTransactionFacets as s } from "./Transactions/facets.js";
|
|
3
|
+
import { UNKNOWN_API as c, apiOf as i, isUnder as p, segmentsOf as f } from "./Transactions/endpoints.js";
|
|
4
|
+
import { cacheStatusOrder as u, canonicalStatusToken as x, effectiveCacheStatus as d, parseStatusSelection as n, statusClassOf as m, statusClassOrder as S, statusGroupsOf as g, tagPairsOf as T } from "./Transactions/encoding.js";
|
|
5
|
+
import { circuitBreakerStatusMap as h, healthStatusMap as A, isCircuitBreakerStatus as C, isHealthStatus as v } from "./System/types.js";
|
|
6
|
+
import { calculateAggregateTpdexScore as k, calculateTpdexScore as y, getTpdexRating as F, getTpdexTextClassName as R, tpdexScale as B } from "./Tpdex.js";
|
|
7
|
+
import { countActiveFilters as H, hasActiveFilters as M } from "./Filters/active.js";
|
|
8
|
+
import { findHeader as U } from "./Http/headers.js";
|
|
9
|
+
import { localToday as G, parseLocalDay as I } from "./Filters/dates.js";
|
|
10
|
+
import { readArray as L, readDates as W, readRange as _, readSingle as b } from "./Filters/read.js";
|
|
11
|
+
import { splitRequestTarget as w } from "./Http/requestTarget.js";
|
|
12
|
+
export {
|
|
13
|
+
c as UNKNOWN_API,
|
|
14
|
+
i as apiOf,
|
|
15
|
+
u as cacheStatusOrder,
|
|
16
|
+
k as calculateAggregateTpdexScore,
|
|
17
|
+
y as calculateTpdexScore,
|
|
18
|
+
x as canonicalStatusToken,
|
|
19
|
+
h as circuitBreakerStatusMap,
|
|
20
|
+
H as countActiveFilters,
|
|
21
|
+
s as deriveTransactionFacets,
|
|
22
|
+
d as effectiveCacheStatus,
|
|
23
|
+
a as filterTransactions,
|
|
24
|
+
U as findHeader,
|
|
25
|
+
F as getTpdexRating,
|
|
26
|
+
R as getTpdexTextClassName,
|
|
27
|
+
M as hasActiveFilters,
|
|
28
|
+
A as healthStatusMap,
|
|
29
|
+
C as isCircuitBreakerStatus,
|
|
30
|
+
v as isHealthStatus,
|
|
31
|
+
p as isUnder,
|
|
32
|
+
G as localToday,
|
|
33
|
+
I as parseLocalDay,
|
|
34
|
+
n as parseStatusSelection,
|
|
35
|
+
L as readArray,
|
|
36
|
+
W as readDates,
|
|
37
|
+
_ as readRange,
|
|
38
|
+
b as readSingle,
|
|
39
|
+
f as segmentsOf,
|
|
40
|
+
w as splitRequestTarget,
|
|
41
|
+
m as statusClassOf,
|
|
42
|
+
S as statusClassOrder,
|
|
43
|
+
g as statusGroupsOf,
|
|
44
|
+
T as tagPairsOf,
|
|
45
|
+
B as tpdexScale
|
|
46
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Transaction } from "../../Models/Transactions/types.js";
|
|
2
|
+
import type { ComponentProps } from "react";
|
|
3
|
+
export interface Alert {
|
|
4
|
+
id: string;
|
|
5
|
+
name: string;
|
|
6
|
+
description: string;
|
|
7
|
+
status: "firing" | "expired" | "archived" | "ignored";
|
|
8
|
+
severity: "critical" | "warning" | "info";
|
|
9
|
+
lastTriggered: string;
|
|
10
|
+
affectedEndpoint?: string;
|
|
11
|
+
transactionCount?: number;
|
|
12
|
+
/** Transactions related to this alert, shown in the drawer when the alert is selected. */
|
|
13
|
+
transactions?: Transaction[];
|
|
14
|
+
}
|
|
15
|
+
export interface AlertsPageProps extends ComponentProps<"div"> {
|
|
16
|
+
alerts: Alert[];
|
|
17
|
+
}
|
|
18
|
+
export declare function AlertsPage({ alerts, className, ...props }: AlertsPageProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { jsxs as i, jsx as n } from "react/jsx-runtime";
|
|
2
|
+
import { InformationCircleIcon as p, ExclamationTriangleIcon as g, XCircleIcon as u, ClockIcon as v } from "@heroicons/react/24/outline";
|
|
3
|
+
import { useState as y } from "react";
|
|
4
|
+
import { twMerge as c } from "tailwind-merge";
|
|
5
|
+
import { Section as N } from "../../Components/Typography/Section.js";
|
|
6
|
+
import { H2 as w } from "../../Components/Typography/Titles.js";
|
|
7
|
+
import { P as C } from "../../Components/Typography/Paragraphs.js";
|
|
8
|
+
import { Badge as o } from "../../Components/Badges/Badge.js";
|
|
9
|
+
import { Drawer as b } from "../../Components/Dialog/Drawer.js";
|
|
10
|
+
import { useClientSideTransactions as k } from "../Transactions/List/useClientSideTransactions.js";
|
|
11
|
+
import { TransactionsListPage as A } from "../Transactions/List/TransactionsListPage.js";
|
|
12
|
+
const l = [];
|
|
13
|
+
function T({ transactions: s }) {
|
|
14
|
+
const r = k(s);
|
|
15
|
+
return /* @__PURE__ */ n(A, { ...r, className: "h-full" });
|
|
16
|
+
}
|
|
17
|
+
const I = {
|
|
18
|
+
firing: "danger",
|
|
19
|
+
expired: "warning",
|
|
20
|
+
archived: "blue",
|
|
21
|
+
ignored: "default"
|
|
22
|
+
}, S = {
|
|
23
|
+
critical: "danger",
|
|
24
|
+
warning: "warning",
|
|
25
|
+
info: "blue"
|
|
26
|
+
}, E = {
|
|
27
|
+
critical: u,
|
|
28
|
+
warning: g,
|
|
29
|
+
info: p
|
|
30
|
+
};
|
|
31
|
+
function X({ alerts: s, className: r, ...d }) {
|
|
32
|
+
const [t, a] = y(null), m = t !== null, f = (e) => {
|
|
33
|
+
a(e);
|
|
34
|
+
}, h = () => {
|
|
35
|
+
a(null);
|
|
36
|
+
};
|
|
37
|
+
return /* @__PURE__ */ i("div", { className: c("space-y-6", r), ...d, children: [
|
|
38
|
+
/* @__PURE__ */ i(N, { children: [
|
|
39
|
+
/* @__PURE__ */ n(w, { children: "Active & Recent Alerts" }),
|
|
40
|
+
/* @__PURE__ */ n(C, { className: "text-gray-500 mt-2", children: "Monitor and manage API observability alerts. Click on any alert to view related transactions." })
|
|
41
|
+
] }),
|
|
42
|
+
/* @__PURE__ */ n("div", { className: "bg-white rounded-lg shadow", children: /* @__PURE__ */ n("div", { className: "divide-y divide-gray-200", children: s.map((e) => {
|
|
43
|
+
const x = E[e.severity];
|
|
44
|
+
return /* @__PURE__ */ n(
|
|
45
|
+
"div",
|
|
46
|
+
{
|
|
47
|
+
onClick: () => f(e),
|
|
48
|
+
className: "px-4 py-2.5 hover:bg-gray-50 cursor-pointer transition-colors",
|
|
49
|
+
children: /* @__PURE__ */ i("div", { className: "flex items-center space-x-3", children: [
|
|
50
|
+
/* @__PURE__ */ n("div", { className: "flex-shrink-0", children: /* @__PURE__ */ n(
|
|
51
|
+
x,
|
|
52
|
+
{
|
|
53
|
+
className: c(
|
|
54
|
+
"h-4 w-4",
|
|
55
|
+
e.severity === "critical" && "text-danger-500",
|
|
56
|
+
e.severity === "warning" && "text-warning-500",
|
|
57
|
+
e.severity === "info" && "text-blue-500"
|
|
58
|
+
)
|
|
59
|
+
}
|
|
60
|
+
) }),
|
|
61
|
+
/* @__PURE__ */ i("div", { className: "flex-1 min-w-0", children: [
|
|
62
|
+
/* @__PURE__ */ i("div", { className: "flex items-center justify-between", children: [
|
|
63
|
+
/* @__PURE__ */ i("div", { className: "flex items-center space-x-2 min-w-0 flex-1", children: [
|
|
64
|
+
/* @__PURE__ */ n("h3", { className: "text-sm font-medium text-gray-900 truncate", children: e.name }),
|
|
65
|
+
/* @__PURE__ */ n(o, { color: S[e.severity], className: "flex-shrink-0 text-xs", children: e.severity }),
|
|
66
|
+
/* @__PURE__ */ n(o, { color: I[e.status], className: "flex-shrink-0 text-xs", children: e.status })
|
|
67
|
+
] }),
|
|
68
|
+
/* @__PURE__ */ i("div", { className: "flex items-center space-x-3 text-xs text-gray-500 flex-shrink-0", children: [
|
|
69
|
+
/* @__PURE__ */ i("div", { className: "flex items-center space-x-1", children: [
|
|
70
|
+
/* @__PURE__ */ n(v, { className: "h-3 w-3" }),
|
|
71
|
+
/* @__PURE__ */ n("span", { children: e.lastTriggered })
|
|
72
|
+
] }),
|
|
73
|
+
e.affectedEndpoint && /* @__PURE__ */ n("span", { className: "font-mono bg-gray-100 text-gray-700 px-1.5 py-0.5 rounded text-xs", children: e.affectedEndpoint }),
|
|
74
|
+
e.transactionCount ? /* @__PURE__ */ i("span", { children: [
|
|
75
|
+
/* @__PURE__ */ n("span", { className: "font-medium", children: e.transactionCount }),
|
|
76
|
+
" tx"
|
|
77
|
+
] }) : null
|
|
78
|
+
] })
|
|
79
|
+
] }),
|
|
80
|
+
/* @__PURE__ */ n("p", { className: "text-xs text-gray-600 mt-1 line-clamp-1", children: e.description })
|
|
81
|
+
] })
|
|
82
|
+
] })
|
|
83
|
+
},
|
|
84
|
+
e.id
|
|
85
|
+
);
|
|
86
|
+
}) }) }),
|
|
87
|
+
/* @__PURE__ */ n(
|
|
88
|
+
b,
|
|
89
|
+
{
|
|
90
|
+
isOpen: m,
|
|
91
|
+
onClose: h,
|
|
92
|
+
title: t ? `Transactions for: ${t.name}` : "Alert Transactions",
|
|
93
|
+
description: t ? `Showing ${(t.transactions ?? l).length} transactions related to this alert from ${t.affectedEndpoint || "various endpoints"}` : "Related transaction details",
|
|
94
|
+
size: "lg",
|
|
95
|
+
position: "right",
|
|
96
|
+
backdrop: !0,
|
|
97
|
+
children: t && /* @__PURE__ */ n("div", { className: "h-full", children: /* @__PURE__ */ n(T, { transactions: t.transactions ?? l }, t.id) })
|
|
98
|
+
}
|
|
99
|
+
)
|
|
100
|
+
] });
|
|
101
|
+
}
|
|
102
|
+
export {
|
|
103
|
+
X as AlertsPage
|
|
104
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./AlertsPage.js";
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { DetailedTransaction } from "../../Models/Transactions/types.js";
|
|
2
|
+
export interface ExplorerPageProps {
|
|
3
|
+
transactions: DetailedTransaction[];
|
|
4
|
+
className?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function ExplorerPage({ transactions, className }: ExplorerPageProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { jsxs as i, jsx as e } from "react/jsx-runtime";
|
|
2
|
+
import { FolderIcon as x } from "@heroicons/react/24/outline";
|
|
3
|
+
import { isUnder as w } from "../../Models/Transactions/endpoints.js";
|
|
4
|
+
import { useState as c, useMemo as T } from "react";
|
|
5
|
+
import { twMerge as g } from "tailwind-merge";
|
|
6
|
+
import { useClientSideTransactions as N } from "../Transactions/List/useClientSideTransactions.js";
|
|
7
|
+
import { Section as S } from "../../Components/Typography/Section.js";
|
|
8
|
+
import { H2 as v } from "../../Components/Typography/Titles.js";
|
|
9
|
+
import { P } from "../../Components/Typography/Paragraphs.js";
|
|
10
|
+
import { TransactionsExplorerSidebar as D } from "../../Elements/Transactions/TransactionsExplorerSidebar.js";
|
|
11
|
+
import { TransactionsListPage as I } from "../Transactions/List/TransactionsListPage.js";
|
|
12
|
+
import { Drawer as b } from "../../Components/Dialog/Drawer.js";
|
|
13
|
+
import { TransactionsDetailPage as y } from "../Transactions/Detail/TransactionsDetailPage.js";
|
|
14
|
+
function z({ transactions: n, className: m }) {
|
|
15
|
+
const [t, d] = c(null), [a, o] = c(null), s = a !== null, p = T(() => t ? n.filter((r) => w(r, t)).sort((r, l) => new Date(l.timestamp).getTime() - new Date(r.timestamp).getTime()) : [], [t, n]), f = N(p), h = (r) => {
|
|
16
|
+
o(n.find((l) => l.id === r.id) ?? null);
|
|
17
|
+
}, u = () => {
|
|
18
|
+
o(null);
|
|
19
|
+
};
|
|
20
|
+
return /* @__PURE__ */ i("div", { className: g("h-full", m), children: [
|
|
21
|
+
/* @__PURE__ */ i(S, { className: "mb-6", children: [
|
|
22
|
+
/* @__PURE__ */ e(v, { children: "API Explorer" }),
|
|
23
|
+
/* @__PURE__ */ e(P, { className: "text-gray-500 mt-2", children: "Browse and explore API endpoints hierarchically. Select an API or endpoint to view related transactions." })
|
|
24
|
+
] }),
|
|
25
|
+
/* @__PURE__ */ i("div", { className: "flex gap-4 h-[calc(100%-8rem)]", children: [
|
|
26
|
+
/* @__PURE__ */ e(
|
|
27
|
+
D,
|
|
28
|
+
{
|
|
29
|
+
className: "w-80",
|
|
30
|
+
transactions: n,
|
|
31
|
+
selected: t,
|
|
32
|
+
onSelect: d
|
|
33
|
+
}
|
|
34
|
+
),
|
|
35
|
+
/* @__PURE__ */ e("div", { className: "flex-1 bg-white rounded-lg shadow overflow-hidden", children: t ? /* @__PURE__ */ e(
|
|
36
|
+
I,
|
|
37
|
+
{
|
|
38
|
+
...f,
|
|
39
|
+
variant: "embedded",
|
|
40
|
+
onTransactionSelect: h,
|
|
41
|
+
selectedId: a?.id ?? null,
|
|
42
|
+
isDrawerOpen: s,
|
|
43
|
+
className: "h-full"
|
|
44
|
+
}
|
|
45
|
+
) : /* @__PURE__ */ e("div", { className: "h-full flex items-center justify-center", children: /* @__PURE__ */ i("div", { className: "text-center", children: [
|
|
46
|
+
/* @__PURE__ */ e(x, { className: "h-12 w-12 text-gray-300 mx-auto mb-3" }),
|
|
47
|
+
/* @__PURE__ */ e("p", { className: "text-sm text-gray-500", children: "Select an API or endpoint to view transactions" })
|
|
48
|
+
] }) }) })
|
|
49
|
+
] }),
|
|
50
|
+
/* @__PURE__ */ e(b, { isOpen: s, onClose: u, title: "Transaction Details", children: a && /* @__PURE__ */ e(y, { transaction: a }) })
|
|
51
|
+
] });
|
|
52
|
+
}
|
|
53
|
+
export {
|
|
54
|
+
z as ExplorerPage
|
|
55
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "./ExplorerPage.js";
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type HistorySectionProps } from "./Sections/HistorySection.js";
|
|
2
|
+
import { type SummarySectionProps } from "./Sections/SummarySection.js";
|
|
3
|
+
export type { SummarySectionProps, SummaryLinks, ChartDataPoint, PerformanceData, RateData, } from "./Sections/SummarySection.js";
|
|
4
|
+
export type { HistorySectionProps, HistoryEndpoint } from "./Sections/HistorySection.js";
|
|
5
|
+
export interface OverviewPageProps {
|
|
6
|
+
/** Summary section: data (performance, transactions and errors rates), links, link component and window label. */
|
|
7
|
+
summary: SummarySectionProps;
|
|
8
|
+
/** History section: selected time range, its change handler, and the data for that range. */
|
|
9
|
+
history: HistorySectionProps;
|
|
10
|
+
}
|
|
11
|
+
export declare const OverviewPage: ({ summary, history }: OverviewPageProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsxs as i, jsx as r } from "react/jsx-runtime";
|
|
2
|
+
import { HistorySection as m } from "./Sections/HistorySection.js";
|
|
3
|
+
import { SummarySection as t } from "./Sections/SummarySection.js";
|
|
4
|
+
const n = ({ summary: o, history: e }) => /* @__PURE__ */ i("div", { className: "space-y-8", children: [
|
|
5
|
+
/* @__PURE__ */ r(t, { ...o }),
|
|
6
|
+
/* @__PURE__ */ r(m, { ...e })
|
|
7
|
+
] });
|
|
8
|
+
export {
|
|
9
|
+
n as OverviewPage
|
|
10
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { OverviewData } from "../../../../Models/index.js";
|
|
2
|
+
export interface TransactionsHistoryViewProps {
|
|
3
|
+
data: OverviewData;
|
|
4
|
+
title?: string;
|
|
5
|
+
className?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare const TransactionsHistoryView: ({ data, title, className }: TransactionsHistoryViewProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { jsx as e, jsxs as t } from "react/jsx-runtime";
|
|
2
|
+
import { H3 as o } from "../../../../Components/Typography/Titles.js";
|
|
3
|
+
import { TpdexBadge as l } from "../../../../Elements/Tpdex/TpdexBadge.js";
|
|
4
|
+
import { TransactionsChart as m } from "../../../../Components/Charts/TransactionsChart.js";
|
|
5
|
+
const p = ({ data: r, title: n, className: s }) => {
|
|
6
|
+
const i = Math.trunc(r.meanDuration) / 1e3, a = Math.trunc(r.meanTpdex), c = r.errors.rate.toLocaleString(void 0, { style: "percent", minimumFractionDigits: 1 });
|
|
7
|
+
return /* @__PURE__ */ e("div", { className: s, children: /* @__PURE__ */ t("div", { className: "flex", children: [
|
|
8
|
+
/* @__PURE__ */ t("div", { className: "flex flex-col max-w-60", children: [
|
|
9
|
+
/* @__PURE__ */ e(o, { children: n }),
|
|
10
|
+
/* @__PURE__ */ t("div", { className: "flex flex-col items-center gap-2 self-center", children: [
|
|
11
|
+
/* @__PURE__ */ e(l, { score: a }),
|
|
12
|
+
/* @__PURE__ */ t("div", { className: "text-xs font-normal text-center text-gray-600", children: [
|
|
13
|
+
r.timeRange,
|
|
14
|
+
" average"
|
|
15
|
+
] })
|
|
16
|
+
] }),
|
|
17
|
+
/* @__PURE__ */ t("div", { className: "grid grid-cols-2 text-xs text-left align-text-bottom items-center self-center ml-10 mt-10", children: [
|
|
18
|
+
/* @__PURE__ */ e("span", { className: "font-bold", children: "Mean duration:" }),
|
|
19
|
+
/* @__PURE__ */ t("span", { children: [
|
|
20
|
+
i,
|
|
21
|
+
" s"
|
|
22
|
+
] }),
|
|
23
|
+
/* @__PURE__ */ e("span", { className: "font-bold", children: "Errors:" }),
|
|
24
|
+
/* @__PURE__ */ e("span", { children: c })
|
|
25
|
+
] })
|
|
26
|
+
] }),
|
|
27
|
+
/* @__PURE__ */ e("div", { className: "grow h-full", children: /* @__PURE__ */ e(m, { data: r.transactions, timeRange: r.timeRange }) })
|
|
28
|
+
] }) });
|
|
29
|
+
};
|
|
30
|
+
export {
|
|
31
|
+
p as TransactionsHistoryView
|
|
32
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { TransactionsHistoryView } from "./TransactionsHistoryView.js";
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { OverviewData } from "../../../Models/index.js";
|
|
2
|
+
/** One endpoint's history block. */
|
|
3
|
+
export interface HistoryEndpoint {
|
|
4
|
+
name: string;
|
|
5
|
+
data: OverviewData;
|
|
6
|
+
}
|
|
7
|
+
/** Props for the HistorySection component. */
|
|
8
|
+
export interface HistorySectionProps {
|
|
9
|
+
/** Currently selected time range (one of the selector keys, e.g. "7d"). */
|
|
10
|
+
timeRange: string;
|
|
11
|
+
/** Called when the user picks a different time range; the consumer loads and passes new data. */
|
|
12
|
+
onTimeRangeChange: (timeRange: string) => void;
|
|
13
|
+
/** Aggregated transactions history for the selected range. */
|
|
14
|
+
transactions: OverviewData;
|
|
15
|
+
/** Per-endpoint history for the selected range. */
|
|
16
|
+
endpoints: HistoryEndpoint[];
|
|
17
|
+
}
|
|
18
|
+
export declare const HistorySection: ({ timeRange, onTimeRangeChange, transactions, endpoints }: HistorySectionProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { jsxs as e, Fragment as l, jsx as t } from "react/jsx-runtime";
|
|
2
|
+
import { ButtonGroup as c } from "../../../Components/Buttons/ButtonGroup.js";
|
|
3
|
+
import { H2 as d } from "../../../Components/Typography/Titles.js";
|
|
4
|
+
import { Card as i } from "../../../Components/Cards/Card.js";
|
|
5
|
+
import { TransactionsHistoryView as o } from "./Components/TransactionsHistoryView.js";
|
|
6
|
+
const h = [
|
|
7
|
+
{ key: "1h", title: "1 hour" },
|
|
8
|
+
{ key: "24h", title: "24 hours" },
|
|
9
|
+
{ key: "7d", title: "7 days" },
|
|
10
|
+
{ key: "1m", title: "1 month" }
|
|
11
|
+
], k = ({ timeRange: s, onTimeRangeChange: a, transactions: m, endpoints: n }) => /* @__PURE__ */ e(l, { children: [
|
|
12
|
+
/* @__PURE__ */ e("div", { className: "flex justify-end my-2", children: [
|
|
13
|
+
/* @__PURE__ */ t(d, { className: "grow", children: "History" }),
|
|
14
|
+
/* @__PURE__ */ t(c, { buttonProps: h, current: s, setCurrent: a })
|
|
15
|
+
] }),
|
|
16
|
+
/* @__PURE__ */ t(i, { className: "mb-4", children: /* @__PURE__ */ t(o, { title: "Transactions", data: m }) }),
|
|
17
|
+
/* @__PURE__ */ t("div", { className: "grid grid-cols-2 gap-4", children: n.map((r) => /* @__PURE__ */ t(i, { children: /* @__PURE__ */ t(o, { title: r.name, data: r.data }) }, r.name)) })
|
|
18
|
+
] });
|
|
19
|
+
export {
|
|
20
|
+
k as HistorySection
|
|
21
|
+
};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { LinkComponentType } from "../../../Components/NavBar/index.js";
|
|
2
|
+
/** Data point for time-series charts. */
|
|
3
|
+
export interface ChartDataPoint {
|
|
4
|
+
datetime: string;
|
|
5
|
+
value: number;
|
|
6
|
+
}
|
|
7
|
+
/** Performance (TPDEX) summary data. */
|
|
8
|
+
export interface PerformanceData {
|
|
9
|
+
/** Mean TPDEX score (0-100). */
|
|
10
|
+
mean: number;
|
|
11
|
+
/** Hourly data points for the chart. */
|
|
12
|
+
data: ChartDataPoint[];
|
|
13
|
+
}
|
|
14
|
+
/** Rate-based metric data (transactions or errors). */
|
|
15
|
+
export interface RateData {
|
|
16
|
+
/** Rate value (count per period). */
|
|
17
|
+
rate: number;
|
|
18
|
+
/** Period label (e.g., "h" for hourly). */
|
|
19
|
+
period: string;
|
|
20
|
+
/** Hourly data points for the chart. */
|
|
21
|
+
data: ChartDataPoint[];
|
|
22
|
+
}
|
|
23
|
+
/** Props for the SummarySection component. */
|
|
24
|
+
export interface SummarySectionProps {
|
|
25
|
+
/** Performance/TPDEX data. */
|
|
26
|
+
performance: PerformanceData;
|
|
27
|
+
/** Transaction rate data. */
|
|
28
|
+
transactions: RateData;
|
|
29
|
+
/** Error rate data. */
|
|
30
|
+
errors: RateData;
|
|
31
|
+
/** Target of each pane's "details" link. A pane without a target renders no link. */
|
|
32
|
+
links?: SummaryLinks;
|
|
33
|
+
/** Component rendering the links, to go through the consumer's router. Defaults to a plain `<a>`. */
|
|
34
|
+
linkComponent?: LinkComponentType;
|
|
35
|
+
/** Period the data covers (e.g. "24h"), shown in the pane titles and the average labels. Shown nowhere when absent. */
|
|
36
|
+
windowLabel?: string;
|
|
37
|
+
}
|
|
38
|
+
/** Targets of the "details" links of the summary panes. */
|
|
39
|
+
export interface SummaryLinks {
|
|
40
|
+
performance?: string;
|
|
41
|
+
transactions?: string;
|
|
42
|
+
errors?: string;
|
|
43
|
+
}
|
|
44
|
+
export declare const SummarySection: ({ performance, transactions, errors, links, linkComponent, windowLabel, }: SummarySectionProps) => import("react/jsx-runtime").JSX.Element;
|