@flanksource/clicky-ui 0.2.13 → 0.2.15
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/dist/chat.cjs +20 -0
- package/dist/chat.cjs.map +1 -0
- package/dist/chat.d.ts +2 -0
- package/dist/chat.d.ts.map +1 -0
- package/dist/chat.js +20 -0
- package/dist/chat.js.map +1 -0
- package/dist/components/Combobox.cjs +5 -3
- package/dist/components/Combobox.cjs.map +1 -1
- package/dist/components/Combobox.d.ts +2 -0
- package/dist/components/Combobox.d.ts.map +1 -1
- package/dist/components/Combobox.js +5 -3
- package/dist/components/Combobox.js.map +1 -1
- package/dist/components/DateTimePicker.cjs +3 -1
- package/dist/components/DateTimePicker.cjs.map +1 -1
- package/dist/components/DateTimePicker.d.ts +5 -1
- package/dist/components/DateTimePicker.d.ts.map +1 -1
- package/dist/components/DateTimePicker.js +3 -1
- package/dist/components/DateTimePicker.js.map +1 -1
- package/dist/components/FilterBar.cjs +8 -41
- package/dist/components/FilterBar.cjs.map +1 -1
- package/dist/components/FilterBar.d.ts +0 -2
- package/dist/components/FilterBar.d.ts.map +1 -1
- package/dist/components/FilterBar.js +3 -36
- package/dist/components/FilterBar.js.map +1 -1
- package/dist/components/FormatOptionsDropdown.cjs +2 -18
- package/dist/components/FormatOptionsDropdown.cjs.map +1 -1
- package/dist/components/FormatOptionsDropdown.d.ts +1 -17
- package/dist/components/FormatOptionsDropdown.d.ts.map +1 -1
- package/dist/components/FormatOptionsDropdown.js +1 -17
- package/dist/components/FormatOptionsDropdown.js.map +1 -1
- package/dist/components/JsonSchemaForm.cjs +128 -12
- package/dist/components/JsonSchemaForm.cjs.map +1 -1
- package/dist/components/JsonSchemaForm.d.ts +1 -1
- package/dist/components/JsonSchemaForm.d.ts.map +1 -1
- package/dist/components/JsonSchemaForm.js +131 -15
- package/dist/components/JsonSchemaForm.js.map +1 -1
- package/dist/components/SecretKeySelector.cjs +1 -2
- package/dist/components/SecretKeySelector.cjs.map +1 -1
- package/dist/components/SecretKeySelector.d.ts +5 -3
- package/dist/components/SecretKeySelector.d.ts.map +1 -1
- package/dist/components/SecretKeySelector.js +2 -3
- package/dist/components/SecretKeySelector.js.map +1 -1
- package/dist/components/TreePickerField.cjs +137 -0
- package/dist/components/TreePickerField.cjs.map +1 -0
- package/dist/components/TreePickerField.d.ts +30 -0
- package/dist/components/TreePickerField.d.ts.map +1 -0
- package/dist/components/TreePickerField.js +137 -0
- package/dist/components/TreePickerField.js.map +1 -0
- package/dist/components/WorkloadPicker.cjs +6 -81
- package/dist/components/WorkloadPicker.cjs.map +1 -1
- package/dist/components/WorkloadPicker.d.ts +1 -20
- package/dist/components/WorkloadPicker.d.ts.map +1 -1
- package/dist/components/WorkloadPicker.js +3 -78
- package/dist/components/WorkloadPicker.js.map +1 -1
- package/dist/components/button-variants.cjs +30 -0
- package/dist/components/button-variants.cjs.map +1 -0
- package/dist/components/button-variants.d.ts +5 -0
- package/dist/components/button-variants.d.ts.map +1 -0
- package/dist/components/button-variants.js +30 -0
- package/dist/components/button-variants.js.map +1 -0
- package/dist/components/button.cjs +11 -82
- package/dist/components/button.cjs.map +1 -1
- package/dist/components/button.d.ts +1 -5
- package/dist/components/button.d.ts.map +1 -1
- package/dist/components/button.js +5 -76
- package/dist/components/button.js.map +1 -1
- package/dist/components/filter-bar-utils.cjs +37 -0
- package/dist/components/filter-bar-utils.cjs.map +1 -0
- package/dist/components/filter-bar-utils.d.ts +4 -0
- package/dist/components/filter-bar-utils.d.ts.map +1 -0
- package/dist/components/filter-bar-utils.js +37 -0
- package/dist/components/filter-bar-utils.js.map +1 -0
- package/dist/components/format-options.cjs +20 -0
- package/dist/components/format-options.cjs.map +1 -0
- package/dist/components/format-options.d.ts +18 -0
- package/dist/components/format-options.d.ts.map +1 -0
- package/dist/components/format-options.js +20 -0
- package/dist/components/format-options.js.map +1 -0
- package/dist/components/json-schema-form-array.cjs +13 -17
- package/dist/components/json-schema-form-array.cjs.map +1 -1
- package/dist/components/json-schema-form-array.d.ts +1 -2
- package/dist/components/json-schema-form-array.d.ts.map +1 -1
- package/dist/components/json-schema-form-array.js +3 -7
- package/dist/components/json-schema-form-array.js.map +1 -1
- package/dist/components/json-schema-form-fields.cjs +90 -232
- package/dist/components/json-schema-form-fields.cjs.map +1 -1
- package/dist/components/json-schema-form-fields.d.ts +51 -6
- package/dist/components/json-schema-form-fields.d.ts.map +1 -1
- package/dist/components/json-schema-form-fields.js +82 -224
- package/dist/components/json-schema-form-fields.js.map +1 -1
- package/dist/components/json-schema-form-object.cjs +149 -0
- package/dist/components/json-schema-form-object.cjs.map +1 -0
- package/dist/components/json-schema-form-object.d.ts +10 -0
- package/dist/components/json-schema-form-object.d.ts.map +1 -0
- package/dist/components/json-schema-form-object.js +149 -0
- package/dist/components/json-schema-form-object.js.map +1 -0
- package/dist/components/json-schema-form-preferences.cjs +41 -0
- package/dist/components/json-schema-form-preferences.cjs.map +1 -0
- package/dist/components/json-schema-form-preferences.d.ts +10 -0
- package/dist/components/json-schema-form-preferences.d.ts.map +1 -0
- package/dist/components/json-schema-form-preferences.js +41 -0
- package/dist/components/json-schema-form-preferences.js.map +1 -0
- package/dist/components/json-schema-form-render.cjs +43 -72
- package/dist/components/json-schema-form-render.cjs.map +1 -1
- package/dist/components/json-schema-form-render.d.ts +5 -33
- package/dist/components/json-schema-form-render.d.ts.map +1 -1
- package/dist/components/json-schema-form-render.js +41 -70
- package/dist/components/json-schema-form-render.js.map +1 -1
- package/dist/components/json-schema-form-resolve.cjs +9 -1
- package/dist/components/json-schema-form-resolve.cjs.map +1 -1
- package/dist/components/json-schema-form-resolve.d.ts.map +1 -1
- package/dist/components/json-schema-form-resolve.js +9 -1
- package/dist/components/json-schema-form-resolve.js.map +1 -1
- package/dist/components/json-schema-form-types.d.ts +58 -1
- package/dist/components/json-schema-form-types.d.ts.map +1 -1
- package/dist/components/json-schema-form-utils.cjs +96 -0
- package/dist/components/json-schema-form-utils.cjs.map +1 -0
- package/dist/components/json-schema-form-utils.d.ts +17 -0
- package/dist/components/json-schema-form-utils.d.ts.map +1 -0
- package/dist/components/json-schema-form-utils.js +96 -0
- package/dist/components/json-schema-form-utils.js.map +1 -0
- package/dist/components/loading.cjs +109 -0
- package/dist/components/loading.cjs.map +1 -0
- package/dist/components/loading.d.ts +27 -0
- package/dist/components/loading.d.ts.map +1 -0
- package/dist/components/loading.js +109 -0
- package/dist/components/loading.js.map +1 -0
- package/dist/components/workload-picker-utils.cjs +88 -0
- package/dist/components/workload-picker-utils.cjs.map +1 -0
- package/dist/components/workload-picker-utils.d.ts +34 -0
- package/dist/components/workload-picker-utils.d.ts.map +1 -0
- package/dist/components/workload-picker-utils.js +88 -0
- package/dist/components/workload-picker-utils.js.map +1 -0
- package/dist/components.cjs +18 -6
- package/dist/components.cjs.map +1 -1
- package/dist/components.d.ts +10 -3
- package/dist/components.d.ts.map +1 -1
- package/dist/components.js +16 -4
- package/dist/components.js.map +1 -1
- package/dist/data/Badge.cjs +11 -91
- package/dist/data/Badge.cjs.map +1 -1
- package/dist/data/Badge.d.ts +1 -5
- package/dist/data/Badge.d.ts.map +1 -1
- package/dist/data/Badge.js +11 -91
- package/dist/data/Badge.js.map +1 -1
- package/dist/data/Clicky.cjs +4 -3
- package/dist/data/Clicky.cjs.map +1 -1
- package/dist/data/Clicky.d.ts.map +1 -1
- package/dist/data/Clicky.js +4 -3
- package/dist/data/Clicky.js.map +1 -1
- package/dist/data/DataTable.cjs +161 -156
- package/dist/data/DataTable.cjs.map +1 -1
- package/dist/data/DataTable.d.ts +25 -4
- package/dist/data/DataTable.d.ts.map +1 -1
- package/dist/data/DataTable.js +140 -135
- package/dist/data/DataTable.js.map +1 -1
- package/dist/data/FilterPill.cjs +3 -0
- package/dist/data/FilterPill.cjs.map +1 -1
- package/dist/data/FilterPill.d.ts.map +1 -1
- package/dist/data/FilterPill.js +3 -0
- package/dist/data/FilterPill.js.map +1 -1
- package/dist/data/Icon.cjs +7 -7
- package/dist/data/Icon.cjs.map +1 -1
- package/dist/data/Icon.js +7 -7
- package/dist/data/Icon.js.map +1 -1
- package/dist/data/LogDetails.cjs +5 -14
- package/dist/data/LogDetails.cjs.map +1 -1
- package/dist/data/LogDetails.d.ts +8 -4
- package/dist/data/LogDetails.d.ts.map +1 -1
- package/dist/data/LogDetails.js +4 -13
- package/dist/data/LogDetails.js.map +1 -1
- package/dist/data/LogsTable.cjs +6 -165
- package/dist/data/LogsTable.cjs.map +1 -1
- package/dist/data/LogsTable.d.ts +2 -15
- package/dist/data/LogsTable.d.ts.map +1 -1
- package/dist/data/LogsTable.js +6 -165
- package/dist/data/LogsTable.js.map +1 -1
- package/dist/data/TimeseriesCoreBars.cjs +8 -1
- package/dist/data/TimeseriesCoreBars.cjs.map +1 -1
- package/dist/data/TimeseriesCoreBars.d.ts.map +1 -1
- package/dist/data/TimeseriesCoreBars.js +8 -1
- package/dist/data/TimeseriesCoreBars.js.map +1 -1
- package/dist/data/TimeseriesPanel.axes.cjs.map +1 -1
- package/dist/data/TimeseriesPanel.axes.js.map +1 -1
- package/dist/data/TreeNode.cjs +13 -7
- package/dist/data/TreeNode.cjs.map +1 -1
- package/dist/data/TreeNode.d.ts.map +1 -1
- package/dist/data/TreeNode.js +13 -7
- package/dist/data/TreeNode.js.map +1 -1
- package/dist/data/badge-variants.cjs +85 -0
- package/dist/data/badge-variants.cjs.map +1 -0
- package/dist/data/badge-variants.d.ts +6 -0
- package/dist/data/badge-variants.d.ts.map +1 -0
- package/dist/data/badge-variants.js +85 -0
- package/dist/data/badge-variants.js.map +1 -0
- package/dist/data/cache-browser/CacheBrowser.cjs +59 -0
- package/dist/data/cache-browser/CacheBrowser.cjs.map +1 -0
- package/dist/data/cache-browser/CacheBrowser.d.ts +26 -0
- package/dist/data/cache-browser/CacheBrowser.d.ts.map +1 -0
- package/dist/data/cache-browser/CacheBrowser.js +59 -0
- package/dist/data/cache-browser/CacheBrowser.js.map +1 -0
- package/dist/data/cache-browser/CacheDetailPanel.cjs +193 -0
- package/dist/data/cache-browser/CacheDetailPanel.cjs.map +1 -0
- package/dist/data/cache-browser/CacheDetailPanel.d.ts +20 -0
- package/dist/data/cache-browser/CacheDetailPanel.d.ts.map +1 -0
- package/dist/data/cache-browser/CacheDetailPanel.js +193 -0
- package/dist/data/cache-browser/CacheDetailPanel.js.map +1 -0
- package/dist/data/cache-browser/CacheStatsOverview.cjs +126 -0
- package/dist/data/cache-browser/CacheStatsOverview.cjs.map +1 -0
- package/dist/data/cache-browser/CacheStatsOverview.d.ts +17 -0
- package/dist/data/cache-browser/CacheStatsOverview.d.ts.map +1 -0
- package/dist/data/cache-browser/CacheStatsOverview.js +126 -0
- package/dist/data/cache-browser/CacheStatsOverview.js.map +1 -0
- package/dist/data/cache-browser/CacheTree.cjs +189 -0
- package/dist/data/cache-browser/CacheTree.cjs.map +1 -0
- package/dist/data/cache-browser/CacheTree.d.ts +27 -0
- package/dist/data/cache-browser/CacheTree.d.ts.map +1 -0
- package/dist/data/cache-browser/CacheTree.js +189 -0
- package/dist/data/cache-browser/CacheTree.js.map +1 -0
- package/dist/data/cache-browser/CacheValue.cjs +86 -0
- package/dist/data/cache-browser/CacheValue.cjs.map +1 -0
- package/dist/data/cache-browser/CacheValue.d.ts +11 -0
- package/dist/data/cache-browser/CacheValue.d.ts.map +1 -0
- package/dist/data/cache-browser/CacheValue.js +86 -0
- package/dist/data/cache-browser/CacheValue.js.map +1 -0
- package/dist/data/cache-browser/adapter.cjs +52 -0
- package/dist/data/cache-browser/adapter.cjs.map +1 -0
- package/dist/data/cache-browser/adapter.d.ts +48 -0
- package/dist/data/cache-browser/adapter.d.ts.map +1 -0
- package/dist/data/cache-browser/adapter.js +52 -0
- package/dist/data/cache-browser/adapter.js.map +1 -0
- package/dist/data/cache-browser/api.cjs +42 -0
- package/dist/data/cache-browser/api.cjs.map +1 -0
- package/dist/data/cache-browser/api.d.ts +33 -0
- package/dist/data/cache-browser/api.d.ts.map +1 -0
- package/dist/data/cache-browser/api.js +42 -0
- package/dist/data/cache-browser/api.js.map +1 -0
- package/dist/data/cache-browser/index.d.ts +9 -0
- package/dist/data/cache-browser/index.d.ts.map +1 -0
- package/dist/data/cache-browser/types.cjs +7 -0
- package/dist/data/cache-browser/types.cjs.map +1 -0
- package/dist/data/cache-browser/types.d.ts +78 -0
- package/dist/data/cache-browser/types.d.ts.map +1 -0
- package/dist/data/cache-browser/types.js +7 -0
- package/dist/data/cache-browser/types.js.map +1 -0
- package/dist/data/cells/TagList.cjs +4 -101
- package/dist/data/cells/TagList.cjs.map +1 -1
- package/dist/data/cells/TagList.d.ts +1 -49
- package/dist/data/cells/TagList.d.ts.map +1 -1
- package/dist/data/cells/TagList.js +3 -100
- package/dist/data/cells/TagList.js.map +1 -1
- package/dist/data/cells/Timestamp.cjs +3 -192
- package/dist/data/cells/Timestamp.cjs.map +1 -1
- package/dist/data/cells/Timestamp.d.ts +1 -50
- package/dist/data/cells/Timestamp.d.ts.map +1 -1
- package/dist/data/cells/Timestamp.js +2 -191
- package/dist/data/cells/Timestamp.js.map +1 -1
- package/dist/data/cells/tag-utils.cjs +103 -0
- package/dist/data/cells/tag-utils.cjs.map +1 -0
- package/dist/data/cells/tag-utils.d.ts +51 -0
- package/dist/data/cells/tag-utils.d.ts.map +1 -0
- package/dist/data/cells/tag-utils.js +103 -0
- package/dist/data/cells/tag-utils.js.map +1 -0
- package/dist/data/cells/timestamp-format.cjs +193 -0
- package/dist/data/cells/timestamp-format.cjs.map +1 -0
- package/dist/data/cells/timestamp-format.d.ts +51 -0
- package/dist/data/cells/timestamp-format.d.ts.map +1 -0
- package/dist/data/cells/timestamp-format.js +193 -0
- package/dist/data/cells/timestamp-format.js.map +1 -0
- package/dist/data/chat/Chat.cjs +48 -0
- package/dist/data/chat/Chat.cjs.map +1 -0
- package/dist/data/chat/Chat.d.ts +26 -0
- package/dist/data/chat/Chat.d.ts.map +1 -0
- package/dist/data/chat/Chat.fixtures.d.ts +6 -0
- package/dist/data/chat/Chat.fixtures.d.ts.map +1 -0
- package/dist/data/chat/Chat.js +48 -0
- package/dist/data/chat/Chat.js.map +1 -0
- package/dist/data/chat/Conversation.cjs +34 -0
- package/dist/data/chat/Conversation.cjs.map +1 -0
- package/dist/data/chat/Conversation.d.ts +11 -0
- package/dist/data/chat/Conversation.d.ts.map +1 -0
- package/dist/data/chat/Conversation.js +34 -0
- package/dist/data/chat/Conversation.js.map +1 -0
- package/dist/data/chat/Message.cjs +44 -0
- package/dist/data/chat/Message.cjs.map +1 -0
- package/dist/data/chat/Message.d.ts +10 -0
- package/dist/data/chat/Message.d.ts.map +1 -0
- package/dist/data/chat/Message.js +44 -0
- package/dist/data/chat/Message.js.map +1 -0
- package/dist/data/chat/PromptInput.cjs +61 -0
- package/dist/data/chat/PromptInput.cjs.map +1 -0
- package/dist/data/chat/PromptInput.d.ts +16 -0
- package/dist/data/chat/PromptInput.d.ts.map +1 -0
- package/dist/data/chat/PromptInput.js +61 -0
- package/dist/data/chat/PromptInput.js.map +1 -0
- package/dist/data/chat/ToolCall.cjs +92 -0
- package/dist/data/chat/ToolCall.cjs.map +1 -0
- package/dist/data/chat/ToolCall.d.ts +14 -0
- package/dist/data/chat/ToolCall.d.ts.map +1 -0
- package/dist/data/chat/ToolCall.js +92 -0
- package/dist/data/chat/ToolCall.js.map +1 -0
- package/dist/data/chat/clickyOperationsToTools.cjs +73 -0
- package/dist/data/chat/clickyOperationsToTools.cjs.map +1 -0
- package/dist/data/chat/clickyOperationsToTools.d.ts +10 -0
- package/dist/data/chat/clickyOperationsToTools.d.ts.map +1 -0
- package/dist/data/chat/clickyOperationsToTools.js +73 -0
- package/dist/data/chat/clickyOperationsToTools.js.map +1 -0
- package/dist/data/chat/index.d.ts +8 -0
- package/dist/data/chat/index.d.ts.map +1 -0
- package/dist/data/chat/types.cjs +18 -0
- package/dist/data/chat/types.cjs.map +1 -0
- package/dist/data/chat/types.d.ts +41 -0
- package/dist/data/chat/types.d.ts.map +1 -0
- package/dist/data/chat/types.js +18 -0
- package/dist/data/chat/types.js.map +1 -0
- package/dist/data/data-table-utils.cjs +55 -0
- package/dist/data/data-table-utils.cjs.map +1 -0
- package/dist/data/data-table-utils.d.ts +24 -0
- package/dist/data/data-table-utils.d.ts.map +1 -0
- package/dist/data/data-table-utils.js +55 -0
- package/dist/data/data-table-utils.js.map +1 -0
- package/dist/data/diagnostics/DiagnosticsDetailPanel.cjs +2 -1
- package/dist/data/diagnostics/DiagnosticsDetailPanel.cjs.map +1 -1
- package/dist/data/diagnostics/DiagnosticsDetailPanel.d.ts.map +1 -1
- package/dist/data/diagnostics/DiagnosticsDetailPanel.js +3 -2
- package/dist/data/diagnostics/DiagnosticsDetailPanel.js.map +1 -1
- package/dist/data/diagnostics/GoroutineCard.cjs +3 -22
- package/dist/data/diagnostics/GoroutineCard.cjs.map +1 -1
- package/dist/data/diagnostics/GoroutineCard.d.ts +0 -2
- package/dist/data/diagnostics/GoroutineCard.d.ts.map +1 -1
- package/dist/data/diagnostics/GoroutineCard.js +2 -21
- package/dist/data/diagnostics/GoroutineCard.js.map +1 -1
- package/dist/data/diagnostics/ThreadCard.cjs +3 -38
- package/dist/data/diagnostics/ThreadCard.cjs.map +1 -1
- package/dist/data/diagnostics/ThreadCard.d.ts +0 -2
- package/dist/data/diagnostics/ThreadCard.d.ts.map +1 -1
- package/dist/data/diagnostics/ThreadCard.js +2 -37
- package/dist/data/diagnostics/ThreadCard.js.map +1 -1
- package/dist/data/diagnostics/state-styles.cjs +59 -0
- package/dist/data/diagnostics/state-styles.cjs.map +1 -0
- package/dist/data/diagnostics/state-styles.d.ts +5 -0
- package/dist/data/diagnostics/state-styles.d.ts.map +1 -0
- package/dist/data/diagnostics/state-styles.js +59 -0
- package/dist/data/diagnostics/state-styles.js.map +1 -0
- package/dist/data/logs-normalize.cjs +166 -0
- package/dist/data/logs-normalize.cjs.map +1 -0
- package/dist/data/logs-normalize.d.ts +16 -0
- package/dist/data/logs-normalize.d.ts.map +1 -0
- package/dist/data/logs-normalize.js +166 -0
- package/dist/data/logs-normalize.js.map +1 -0
- package/dist/data/task-status.cjs +19 -19
- package/dist/data/task-status.cjs.map +1 -1
- package/dist/data/task-status.js +19 -19
- package/dist/data/task-status.js.map +1 -1
- package/dist/data/version-info.cjs +3 -3
- package/dist/data/version-info.js +3 -3
- package/dist/data.cjs +43 -18
- package/dist/data.cjs.map +1 -1
- package/dist/data.d.ts +11 -5
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +30 -5
- package/dist/data.js.map +1 -1
- package/dist/hooks/density-provider.cjs +38 -0
- package/dist/hooks/density-provider.cjs.map +1 -0
- package/dist/hooks/density-provider.d.ts +20 -0
- package/dist/hooks/density-provider.d.ts.map +1 -0
- package/dist/hooks/density-provider.js +38 -0
- package/dist/hooks/density-provider.js.map +1 -0
- package/dist/hooks/theme-provider.cjs +43 -0
- package/dist/hooks/theme-provider.cjs.map +1 -0
- package/dist/hooks/theme-provider.d.ts +9 -0
- package/dist/hooks/theme-provider.d.ts.map +1 -0
- package/dist/hooks/theme-provider.js +43 -0
- package/dist/hooks/theme-provider.js.map +1 -0
- package/dist/hooks/use-density.cjs +8 -37
- package/dist/hooks/use-density.cjs.map +1 -1
- package/dist/hooks/use-density.d.ts +5 -20
- package/dist/hooks/use-density.d.ts.map +1 -1
- package/dist/hooks/use-density.js +9 -38
- package/dist/hooks/use-density.js.map +1 -1
- package/dist/hooks/use-theme.cjs +10 -43
- package/dist/hooks/use-theme.cjs.map +1 -1
- package/dist/hooks/use-theme.d.ts +6 -9
- package/dist/hooks/use-theme.d.ts.map +1 -1
- package/dist/hooks/use-theme.js +11 -44
- package/dist/hooks/use-theme.js.map +1 -1
- package/dist/hooks.cjs +5 -2
- package/dist/hooks.cjs.map +1 -1
- package/dist/hooks.d.ts +4 -2
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +5 -2
- package/dist/hooks.js.map +1 -1
- package/dist/icons/changeIconAliases.cjs +13 -13
- package/dist/icons/changeIconAliases.cjs.map +1 -1
- package/dist/icons/changeIconAliases.d.ts.map +1 -1
- package/dist/icons/changeIconAliases.js +13 -13
- package/dist/icons/changeIconAliases.js.map +1 -1
- package/dist/index.cjs +71 -30
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +53 -12
- package/dist/index.js.map +1 -1
- package/dist/overlay/DropdownMenu.cjs +2 -0
- package/dist/overlay/DropdownMenu.cjs.map +1 -1
- package/dist/overlay/DropdownMenu.d.ts +3 -1
- package/dist/overlay/DropdownMenu.d.ts.map +1 -1
- package/dist/overlay/DropdownMenu.js +2 -0
- package/dist/overlay/DropdownMenu.js.map +1 -1
- package/dist/overlay/Modal.cjs +11 -4
- package/dist/overlay/Modal.cjs.map +1 -1
- package/dist/overlay/Modal.d.ts +1 -1
- package/dist/overlay/Modal.d.ts.map +1 -1
- package/dist/overlay/Modal.js +11 -4
- package/dist/overlay/Modal.js.map +1 -1
- package/dist/overlay/modalStack.cjs +35 -0
- package/dist/overlay/modalStack.cjs.map +1 -0
- package/dist/overlay/modalStack.d.ts +13 -0
- package/dist/overlay/modalStack.d.ts.map +1 -0
- package/dist/overlay/modalStack.js +35 -0
- package/dist/overlay/modalStack.js.map +1 -0
- package/dist/rpc/AcceptPicker.cjs +2 -18
- package/dist/rpc/AcceptPicker.cjs.map +1 -1
- package/dist/rpc/AcceptPicker.d.ts +1 -41
- package/dist/rpc/AcceptPicker.d.ts.map +1 -1
- package/dist/rpc/AcceptPicker.js +2 -18
- package/dist/rpc/AcceptPicker.js.map +1 -1
- package/dist/rpc/CommandOutput.cjs +1 -1
- package/dist/rpc/CommandOutput.cjs.map +1 -1
- package/dist/rpc/CommandOutput.js +1 -1
- package/dist/rpc/CommandOutput.js.map +1 -1
- package/dist/rpc/EndpointList.cjs +1 -1
- package/dist/rpc/EndpointList.cjs.map +1 -1
- package/dist/rpc/EndpointList.js +1 -1
- package/dist/rpc/EndpointList.js.map +1 -1
- package/dist/rpc/OperationCatalog.cjs +23 -41
- package/dist/rpc/OperationCatalog.cjs.map +1 -1
- package/dist/rpc/OperationCatalog.d.ts.map +1 -1
- package/dist/rpc/OperationCatalog.js +24 -42
- package/dist/rpc/OperationCatalog.js.map +1 -1
- package/dist/rpc/OperationCommandPage.cjs.map +1 -1
- package/dist/rpc/OperationCommandPage.d.ts.map +1 -1
- package/dist/rpc/OperationCommandPage.js.map +1 -1
- package/dist/rpc/accept-options.cjs +20 -0
- package/dist/rpc/accept-options.cjs.map +1 -0
- package/dist/rpc/accept-options.d.ts +42 -0
- package/dist/rpc/accept-options.d.ts.map +1 -0
- package/dist/rpc/accept-options.js +20 -0
- package/dist/rpc/accept-options.js.map +1 -0
- package/dist/rpc/classify.cjs +15 -4
- package/dist/rpc/classify.cjs.map +1 -1
- package/dist/rpc/classify.d.ts.map +1 -1
- package/dist/rpc/classify.js +15 -4
- package/dist/rpc/classify.js.map +1 -1
- package/dist/rpc/clickyMetadata.cjs +13 -3
- package/dist/rpc/clickyMetadata.cjs.map +1 -1
- package/dist/rpc/clickyMetadata.d.ts +2 -0
- package/dist/rpc/clickyMetadata.d.ts.map +1 -1
- package/dist/rpc/clickyMetadata.js +14 -4
- package/dist/rpc/clickyMetadata.js.map +1 -1
- package/dist/rpc.cjs +3 -2
- package/dist/rpc.cjs.map +1 -1
- package/dist/rpc.d.ts +2 -1
- package/dist/rpc.d.ts.map +1 -1
- package/dist/rpc.js +2 -1
- package/dist/rpc.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +16 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThreadCard.cjs","sources":["../../../src/data/diagnostics/ThreadCard.tsx"],"sourcesContent":["import { JvmStackTrace, type JvmFrameSourceResolver } from \"./JvmStackTrace\";\nimport type { ParsedThread } from \"./jvm-stacktrace\";\
|
|
1
|
+
{"version":3,"file":"ThreadCard.cjs","sources":["../../../src/data/diagnostics/ThreadCard.tsx"],"sourcesContent":["import { JvmStackTrace, type JvmFrameSourceResolver } from \"./JvmStackTrace\";\nimport type { ParsedThread } from \"./jvm-stacktrace\";\nimport { threadStateBadge, threadStateDot } from \"./state-styles\";\n\nexport type ThreadCardProps = {\n thread: ParsedThread;\n search: string;\n hideRuntimeOnly: boolean;\n resolveSource?: JvmFrameSourceResolver;\n};\n\nexport function ThreadCard({ thread, search, hideRuntimeOnly, resolveSource }: ThreadCardProps) {\n const frames = hideRuntimeOnly\n ? thread.frames.filter((f) => f.kind !== \"frame\" || !f.runtime)\n : thread.frames;\n const defaultOpen = thread.state === \"runnable\" || thread.state === \"blocked\" || !!search;\n\n return (\n <details className=\"border-0 bg-transparent\" open={defaultOpen}>\n <summary className=\"cursor-pointer list-none px-0 py-1\">\n <div className=\"flex items-center gap-2 flex-wrap\">\n <span className=\"font-mono text-xs font-semibold text-foreground\">#{thread.id}</span>\n <span className=\"truncate font-mono text-xs text-foreground\">{thread.name}</span>\n <span\n className={`inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-[11px] ${threadStateBadge(\n thread.state,\n )}`}\n >\n <span className={`h-2 w-2 rounded-full ${threadStateDot(thread.state)}`} />\n {thread.rawState || thread.state}\n </span>\n {thread.daemon && (\n <span className=\"rounded-full bg-muted px-1.5 py-0.5 text-[10px] text-muted-foreground\">\n daemon\n </span>\n )}\n <span className=\"text-[11px] text-muted-foreground\">{frames.length}f</span>\n {thread.userFrameCount > 0 && (\n <span className=\"text-[11px] text-muted-foreground\">{thread.userFrameCount}u</span>\n )}\n {thread.topFunction && (\n <span className=\"truncate text-[11px] text-muted-foreground\">{thread.topFunction}</span>\n )}\n </div>\n </summary>\n <JvmStackTrace\n frames={frames}\n className=\"space-y-0.5 py-1 pl-3\"\n {...(resolveSource ? { resolveSource } : {})}\n />\n </details>\n );\n}\n"],"names":["jsxs","jsx","threadStateBadge","threadStateDot","JvmStackTrace"],"mappings":";;;;;AAWO,SAAS,WAAW,EAAE,QAAQ,QAAQ,iBAAiB,iBAAkC;AAC9F,QAAM,SAAS,kBACX,OAAO,OAAO,OAAO,CAAC,MAAM,EAAE,SAAS,WAAW,CAAC,EAAE,OAAO,IAC5D,OAAO;AACX,QAAM,cAAc,OAAO,UAAU,cAAc,OAAO,UAAU,aAAa,CAAC,CAAC;AAEnF,SACEA,2BAAAA,KAAC,WAAA,EAAQ,WAAU,2BAA0B,MAAM,aACjD,UAAA;AAAA,IAAAC,2BAAAA,IAAC,aAAQ,WAAU,sCACjB,UAAAD,2BAAAA,KAAC,OAAA,EAAI,WAAU,qCACb,UAAA;AAAA,MAAAA,2BAAAA,KAAC,QAAA,EAAK,WAAU,mDAAkD,UAAA;AAAA,QAAA;AAAA,QAAE,OAAO;AAAA,MAAA,GAAG;AAAA,MAC9EC,2BAAAA,IAAC,QAAA,EAAK,WAAU,8CAA8C,iBAAO,MAAK;AAAA,MAC1ED,2BAAAA;AAAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAW,uEAAuEE,YAAAA;AAAAA,YAChF,OAAO;AAAA,UAAA,CACR;AAAA,UAED,UAAA;AAAA,YAAAD,+BAAC,UAAK,WAAW,wBAAwBE,YAAAA,eAAe,OAAO,KAAK,CAAC,IAAI;AAAA,YACxE,OAAO,YAAY,OAAO;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,MAE5B,OAAO,UACNF,2BAAAA,IAAC,QAAA,EAAK,WAAU,yEAAwE,UAAA,UAExF;AAAA,MAEFD,2BAAAA,KAAC,QAAA,EAAK,WAAU,qCAAqC,UAAA;AAAA,QAAA,OAAO;AAAA,QAAO;AAAA,MAAA,GAAC;AAAA,MACnE,OAAO,iBAAiB,KACvBA,2BAAAA,KAAC,QAAA,EAAK,WAAU,qCAAqC,UAAA;AAAA,QAAA,OAAO;AAAA,QAAe;AAAA,MAAA,GAAC;AAAA,MAE7E,OAAO,eACNC,2BAAAA,IAAC,UAAK,WAAU,8CAA8C,iBAAO,YAAA,CAAY;AAAA,IAAA,EAAA,CAErF,EAAA,CACF;AAAA,IACAA,2BAAAA;AAAAA,MAACG,cAAAA;AAAAA,MAAA;AAAA,QACC;AAAA,QACA,WAAU;AAAA,QACT,GAAI,gBAAgB,EAAE,kBAAkB,CAAA;AAAA,MAAC;AAAA,IAAA;AAAA,EAC5C,GACF;AAEJ;;"}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import { JvmFrameSourceResolver } from './JvmStackTrace';
|
|
2
2
|
import { ParsedThread } from './jvm-stacktrace';
|
|
3
|
-
export declare function threadStateBadge(state: string): string;
|
|
4
|
-
export declare function threadStateDot(state: string): string;
|
|
5
3
|
export type ThreadCardProps = {
|
|
6
4
|
thread: ParsedThread;
|
|
7
5
|
search: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThreadCard.d.ts","sourceRoot":"","sources":["../../../src/data/diagnostics/ThreadCard.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"ThreadCard.d.ts","sourceRoot":"","sources":["../../../src/data/diagnostics/ThreadCard.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGrD,MAAM,MAAM,eAAe,GAAG;IAC5B,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,CAAC,EAAE,sBAAsB,CAAC;CACxC,CAAC;AAEF,wBAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,aAAa,EAAE,EAAE,eAAe,2CAyC7F"}
|
|
@@ -1,39 +1,6 @@
|
|
|
1
1
|
import { jsxs, jsx } from "react/jsx-runtime";
|
|
2
2
|
import { JvmStackTrace } from "./JvmStackTrace.js";
|
|
3
|
-
|
|
4
|
-
switch (state) {
|
|
5
|
-
case "runnable":
|
|
6
|
-
return "bg-green-50 text-green-700 dark:bg-green-500/20 dark:text-green-300";
|
|
7
|
-
case "blocked":
|
|
8
|
-
return "bg-red-50 text-red-700 dark:bg-red-500/20 dark:text-red-300";
|
|
9
|
-
case "waiting":
|
|
10
|
-
case "timed_waiting":
|
|
11
|
-
return "bg-blue-50 text-blue-700 dark:bg-blue-500/20 dark:text-blue-300";
|
|
12
|
-
case "new":
|
|
13
|
-
return "bg-amber-50 text-amber-700 dark:bg-amber-500/20 dark:text-amber-300";
|
|
14
|
-
case "terminated":
|
|
15
|
-
return "bg-muted text-muted-foreground";
|
|
16
|
-
default:
|
|
17
|
-
return "bg-muted text-muted-foreground";
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
function threadStateDot(state) {
|
|
21
|
-
switch (state) {
|
|
22
|
-
case "runnable":
|
|
23
|
-
return "bg-green-500";
|
|
24
|
-
case "blocked":
|
|
25
|
-
return "bg-red-500";
|
|
26
|
-
case "waiting":
|
|
27
|
-
case "timed_waiting":
|
|
28
|
-
return "bg-blue-500";
|
|
29
|
-
case "new":
|
|
30
|
-
return "bg-amber-500";
|
|
31
|
-
case "terminated":
|
|
32
|
-
return "bg-muted-foreground/40";
|
|
33
|
-
default:
|
|
34
|
-
return "bg-muted-foreground/40";
|
|
35
|
-
}
|
|
36
|
-
}
|
|
3
|
+
import { threadStateDot, threadStateBadge } from "./state-styles.js";
|
|
37
4
|
function ThreadCard({ thread, search, hideRuntimeOnly, resolveSource }) {
|
|
38
5
|
const frames = hideRuntimeOnly ? thread.frames.filter((f) => f.kind !== "frame" || !f.runtime) : thread.frames;
|
|
39
6
|
const defaultOpen = thread.state === "runnable" || thread.state === "blocked" || !!search;
|
|
@@ -78,8 +45,6 @@ function ThreadCard({ thread, search, hideRuntimeOnly, resolveSource }) {
|
|
|
78
45
|
] });
|
|
79
46
|
}
|
|
80
47
|
export {
|
|
81
|
-
ThreadCard
|
|
82
|
-
threadStateBadge,
|
|
83
|
-
threadStateDot
|
|
48
|
+
ThreadCard
|
|
84
49
|
};
|
|
85
50
|
//# sourceMappingURL=ThreadCard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThreadCard.js","sources":["../../../src/data/diagnostics/ThreadCard.tsx"],"sourcesContent":["import { JvmStackTrace, type JvmFrameSourceResolver } from \"./JvmStackTrace\";\nimport type { ParsedThread } from \"./jvm-stacktrace\";\
|
|
1
|
+
{"version":3,"file":"ThreadCard.js","sources":["../../../src/data/diagnostics/ThreadCard.tsx"],"sourcesContent":["import { JvmStackTrace, type JvmFrameSourceResolver } from \"./JvmStackTrace\";\nimport type { ParsedThread } from \"./jvm-stacktrace\";\nimport { threadStateBadge, threadStateDot } from \"./state-styles\";\n\nexport type ThreadCardProps = {\n thread: ParsedThread;\n search: string;\n hideRuntimeOnly: boolean;\n resolveSource?: JvmFrameSourceResolver;\n};\n\nexport function ThreadCard({ thread, search, hideRuntimeOnly, resolveSource }: ThreadCardProps) {\n const frames = hideRuntimeOnly\n ? thread.frames.filter((f) => f.kind !== \"frame\" || !f.runtime)\n : thread.frames;\n const defaultOpen = thread.state === \"runnable\" || thread.state === \"blocked\" || !!search;\n\n return (\n <details className=\"border-0 bg-transparent\" open={defaultOpen}>\n <summary className=\"cursor-pointer list-none px-0 py-1\">\n <div className=\"flex items-center gap-2 flex-wrap\">\n <span className=\"font-mono text-xs font-semibold text-foreground\">#{thread.id}</span>\n <span className=\"truncate font-mono text-xs text-foreground\">{thread.name}</span>\n <span\n className={`inline-flex items-center gap-1 rounded-full px-2 py-0.5 text-[11px] ${threadStateBadge(\n thread.state,\n )}`}\n >\n <span className={`h-2 w-2 rounded-full ${threadStateDot(thread.state)}`} />\n {thread.rawState || thread.state}\n </span>\n {thread.daemon && (\n <span className=\"rounded-full bg-muted px-1.5 py-0.5 text-[10px] text-muted-foreground\">\n daemon\n </span>\n )}\n <span className=\"text-[11px] text-muted-foreground\">{frames.length}f</span>\n {thread.userFrameCount > 0 && (\n <span className=\"text-[11px] text-muted-foreground\">{thread.userFrameCount}u</span>\n )}\n {thread.topFunction && (\n <span className=\"truncate text-[11px] text-muted-foreground\">{thread.topFunction}</span>\n )}\n </div>\n </summary>\n <JvmStackTrace\n frames={frames}\n className=\"space-y-0.5 py-1 pl-3\"\n {...(resolveSource ? { resolveSource } : {})}\n />\n </details>\n );\n}\n"],"names":[],"mappings":";;;AAWO,SAAS,WAAW,EAAE,QAAQ,QAAQ,iBAAiB,iBAAkC;AAC9F,QAAM,SAAS,kBACX,OAAO,OAAO,OAAO,CAAC,MAAM,EAAE,SAAS,WAAW,CAAC,EAAE,OAAO,IAC5D,OAAO;AACX,QAAM,cAAc,OAAO,UAAU,cAAc,OAAO,UAAU,aAAa,CAAC,CAAC;AAEnF,SACE,qBAAC,WAAA,EAAQ,WAAU,2BAA0B,MAAM,aACjD,UAAA;AAAA,IAAA,oBAAC,aAAQ,WAAU,sCACjB,UAAA,qBAAC,OAAA,EAAI,WAAU,qCACb,UAAA;AAAA,MAAA,qBAAC,QAAA,EAAK,WAAU,mDAAkD,UAAA;AAAA,QAAA;AAAA,QAAE,OAAO;AAAA,MAAA,GAAG;AAAA,MAC9E,oBAAC,QAAA,EAAK,WAAU,8CAA8C,iBAAO,MAAK;AAAA,MAC1E;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAW,uEAAuE;AAAA,YAChF,OAAO;AAAA,UAAA,CACR;AAAA,UAED,UAAA;AAAA,YAAA,oBAAC,UAAK,WAAW,wBAAwB,eAAe,OAAO,KAAK,CAAC,IAAI;AAAA,YACxE,OAAO,YAAY,OAAO;AAAA,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,MAE5B,OAAO,UACN,oBAAC,QAAA,EAAK,WAAU,yEAAwE,UAAA,UAExF;AAAA,MAEF,qBAAC,QAAA,EAAK,WAAU,qCAAqC,UAAA;AAAA,QAAA,OAAO;AAAA,QAAO;AAAA,MAAA,GAAC;AAAA,MACnE,OAAO,iBAAiB,KACvB,qBAAC,QAAA,EAAK,WAAU,qCAAqC,UAAA;AAAA,QAAA,OAAO;AAAA,QAAe;AAAA,MAAA,GAAC;AAAA,MAE7E,OAAO,eACN,oBAAC,UAAK,WAAU,8CAA8C,iBAAO,YAAA,CAAY;AAAA,IAAA,EAAA,CAErF,EAAA,CACF;AAAA,IACA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC;AAAA,QACA,WAAU;AAAA,QACT,GAAI,gBAAgB,EAAE,kBAAkB,CAAA;AAAA,MAAC;AAAA,IAAA;AAAA,EAC5C,GACF;AAEJ;"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
function goroutineStateBadge(state) {
|
|
4
|
+
if (state.includes("running"))
|
|
5
|
+
return "bg-green-50 text-green-700 dark:bg-green-500/20 dark:text-green-300";
|
|
6
|
+
if (state.includes("chan") || state.includes("wait"))
|
|
7
|
+
return "bg-blue-50 text-blue-700 dark:bg-blue-500/20 dark:text-blue-300";
|
|
8
|
+
if (state.includes("sleep"))
|
|
9
|
+
return "bg-amber-50 text-amber-700 dark:bg-amber-500/20 dark:text-amber-300";
|
|
10
|
+
if (state.includes("select"))
|
|
11
|
+
return "bg-violet-50 text-violet-700 dark:bg-violet-500/20 dark:text-violet-300";
|
|
12
|
+
return "bg-muted text-muted-foreground";
|
|
13
|
+
}
|
|
14
|
+
function goroutineStateDot(state) {
|
|
15
|
+
if (state.includes("running")) return "bg-green-500";
|
|
16
|
+
if (state.includes("chan") || state.includes("wait")) return "bg-blue-500";
|
|
17
|
+
if (state.includes("sleep")) return "bg-amber-500";
|
|
18
|
+
if (state.includes("select")) return "bg-violet-500";
|
|
19
|
+
return "bg-muted-foreground/40";
|
|
20
|
+
}
|
|
21
|
+
function threadStateBadge(state) {
|
|
22
|
+
switch (state) {
|
|
23
|
+
case "runnable":
|
|
24
|
+
return "bg-green-50 text-green-700 dark:bg-green-500/20 dark:text-green-300";
|
|
25
|
+
case "blocked":
|
|
26
|
+
return "bg-red-50 text-red-700 dark:bg-red-500/20 dark:text-red-300";
|
|
27
|
+
case "waiting":
|
|
28
|
+
case "timed_waiting":
|
|
29
|
+
return "bg-blue-50 text-blue-700 dark:bg-blue-500/20 dark:text-blue-300";
|
|
30
|
+
case "new":
|
|
31
|
+
return "bg-amber-50 text-amber-700 dark:bg-amber-500/20 dark:text-amber-300";
|
|
32
|
+
case "terminated":
|
|
33
|
+
return "bg-muted text-muted-foreground";
|
|
34
|
+
default:
|
|
35
|
+
return "bg-muted text-muted-foreground";
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
function threadStateDot(state) {
|
|
39
|
+
switch (state) {
|
|
40
|
+
case "runnable":
|
|
41
|
+
return "bg-green-500";
|
|
42
|
+
case "blocked":
|
|
43
|
+
return "bg-red-500";
|
|
44
|
+
case "waiting":
|
|
45
|
+
case "timed_waiting":
|
|
46
|
+
return "bg-blue-500";
|
|
47
|
+
case "new":
|
|
48
|
+
return "bg-amber-500";
|
|
49
|
+
case "terminated":
|
|
50
|
+
return "bg-muted-foreground/40";
|
|
51
|
+
default:
|
|
52
|
+
return "bg-muted-foreground/40";
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.goroutineStateBadge = goroutineStateBadge;
|
|
56
|
+
exports.goroutineStateDot = goroutineStateDot;
|
|
57
|
+
exports.threadStateBadge = threadStateBadge;
|
|
58
|
+
exports.threadStateDot = threadStateDot;
|
|
59
|
+
//# sourceMappingURL=state-styles.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-styles.cjs","sources":["../../../src/data/diagnostics/state-styles.ts"],"sourcesContent":["// Tailwind class pickers for goroutine / JVM-thread states, shared by the\n// stack cards and the diagnostics detail panel.\n\nexport function goroutineStateBadge(state: string): string {\n if (state.includes(\"running\"))\n return \"bg-green-50 text-green-700 dark:bg-green-500/20 dark:text-green-300\";\n if (state.includes(\"chan\") || state.includes(\"wait\"))\n return \"bg-blue-50 text-blue-700 dark:bg-blue-500/20 dark:text-blue-300\";\n if (state.includes(\"sleep\"))\n return \"bg-amber-50 text-amber-700 dark:bg-amber-500/20 dark:text-amber-300\";\n if (state.includes(\"select\"))\n return \"bg-violet-50 text-violet-700 dark:bg-violet-500/20 dark:text-violet-300\";\n return \"bg-muted text-muted-foreground\";\n}\n\nexport function goroutineStateDot(state: string): string {\n if (state.includes(\"running\")) return \"bg-green-500\";\n if (state.includes(\"chan\") || state.includes(\"wait\")) return \"bg-blue-500\";\n if (state.includes(\"sleep\")) return \"bg-amber-500\";\n if (state.includes(\"select\")) return \"bg-violet-500\";\n return \"bg-muted-foreground/40\";\n}\n\nexport function threadStateBadge(state: string): string {\n switch (state) {\n case \"runnable\":\n return \"bg-green-50 text-green-700 dark:bg-green-500/20 dark:text-green-300\";\n case \"blocked\":\n return \"bg-red-50 text-red-700 dark:bg-red-500/20 dark:text-red-300\";\n case \"waiting\":\n case \"timed_waiting\":\n return \"bg-blue-50 text-blue-700 dark:bg-blue-500/20 dark:text-blue-300\";\n case \"new\":\n return \"bg-amber-50 text-amber-700 dark:bg-amber-500/20 dark:text-amber-300\";\n case \"terminated\":\n return \"bg-muted text-muted-foreground\";\n default:\n return \"bg-muted text-muted-foreground\";\n }\n}\n\nexport function threadStateDot(state: string): string {\n switch (state) {\n case \"runnable\":\n return \"bg-green-500\";\n case \"blocked\":\n return \"bg-red-500\";\n case \"waiting\":\n case \"timed_waiting\":\n return \"bg-blue-500\";\n case \"new\":\n return \"bg-amber-500\";\n case \"terminated\":\n return \"bg-muted-foreground/40\";\n default:\n return \"bg-muted-foreground/40\";\n }\n}\n"],"names":[],"mappings":";;AAGO,SAAS,oBAAoB,OAAuB;AACzD,MAAI,MAAM,SAAS,SAAS;AAC1B,WAAO;AACT,MAAI,MAAM,SAAS,MAAM,KAAK,MAAM,SAAS,MAAM;AACjD,WAAO;AACT,MAAI,MAAM,SAAS,OAAO;AACxB,WAAO;AACT,MAAI,MAAM,SAAS,QAAQ;AACzB,WAAO;AACT,SAAO;AACT;AAEO,SAAS,kBAAkB,OAAuB;AACvD,MAAI,MAAM,SAAS,SAAS,EAAG,QAAO;AACtC,MAAI,MAAM,SAAS,MAAM,KAAK,MAAM,SAAS,MAAM,EAAG,QAAO;AAC7D,MAAI,MAAM,SAAS,OAAO,EAAG,QAAO;AACpC,MAAI,MAAM,SAAS,QAAQ,EAAG,QAAO;AACrC,SAAO;AACT;AAEO,SAAS,iBAAiB,OAAuB;AACtD,UAAQ,OAAA;AAAA,IACN,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EAAA;AAEb;AAEO,SAAS,eAAe,OAAuB;AACpD,UAAQ,OAAA;AAAA,IACN,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EAAA;AAEb;;;;;"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare function goroutineStateBadge(state: string): string;
|
|
2
|
+
export declare function goroutineStateDot(state: string): string;
|
|
3
|
+
export declare function threadStateBadge(state: string): string;
|
|
4
|
+
export declare function threadStateDot(state: string): string;
|
|
5
|
+
//# sourceMappingURL=state-styles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-styles.d.ts","sourceRoot":"","sources":["../../../src/data/diagnostics/state-styles.ts"],"names":[],"mappings":"AAGA,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAUzD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMvD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAgBtD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAgBpD"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
function goroutineStateBadge(state) {
|
|
2
|
+
if (state.includes("running"))
|
|
3
|
+
return "bg-green-50 text-green-700 dark:bg-green-500/20 dark:text-green-300";
|
|
4
|
+
if (state.includes("chan") || state.includes("wait"))
|
|
5
|
+
return "bg-blue-50 text-blue-700 dark:bg-blue-500/20 dark:text-blue-300";
|
|
6
|
+
if (state.includes("sleep"))
|
|
7
|
+
return "bg-amber-50 text-amber-700 dark:bg-amber-500/20 dark:text-amber-300";
|
|
8
|
+
if (state.includes("select"))
|
|
9
|
+
return "bg-violet-50 text-violet-700 dark:bg-violet-500/20 dark:text-violet-300";
|
|
10
|
+
return "bg-muted text-muted-foreground";
|
|
11
|
+
}
|
|
12
|
+
function goroutineStateDot(state) {
|
|
13
|
+
if (state.includes("running")) return "bg-green-500";
|
|
14
|
+
if (state.includes("chan") || state.includes("wait")) return "bg-blue-500";
|
|
15
|
+
if (state.includes("sleep")) return "bg-amber-500";
|
|
16
|
+
if (state.includes("select")) return "bg-violet-500";
|
|
17
|
+
return "bg-muted-foreground/40";
|
|
18
|
+
}
|
|
19
|
+
function threadStateBadge(state) {
|
|
20
|
+
switch (state) {
|
|
21
|
+
case "runnable":
|
|
22
|
+
return "bg-green-50 text-green-700 dark:bg-green-500/20 dark:text-green-300";
|
|
23
|
+
case "blocked":
|
|
24
|
+
return "bg-red-50 text-red-700 dark:bg-red-500/20 dark:text-red-300";
|
|
25
|
+
case "waiting":
|
|
26
|
+
case "timed_waiting":
|
|
27
|
+
return "bg-blue-50 text-blue-700 dark:bg-blue-500/20 dark:text-blue-300";
|
|
28
|
+
case "new":
|
|
29
|
+
return "bg-amber-50 text-amber-700 dark:bg-amber-500/20 dark:text-amber-300";
|
|
30
|
+
case "terminated":
|
|
31
|
+
return "bg-muted text-muted-foreground";
|
|
32
|
+
default:
|
|
33
|
+
return "bg-muted text-muted-foreground";
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
function threadStateDot(state) {
|
|
37
|
+
switch (state) {
|
|
38
|
+
case "runnable":
|
|
39
|
+
return "bg-green-500";
|
|
40
|
+
case "blocked":
|
|
41
|
+
return "bg-red-500";
|
|
42
|
+
case "waiting":
|
|
43
|
+
case "timed_waiting":
|
|
44
|
+
return "bg-blue-500";
|
|
45
|
+
case "new":
|
|
46
|
+
return "bg-amber-500";
|
|
47
|
+
case "terminated":
|
|
48
|
+
return "bg-muted-foreground/40";
|
|
49
|
+
default:
|
|
50
|
+
return "bg-muted-foreground/40";
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
export {
|
|
54
|
+
goroutineStateBadge,
|
|
55
|
+
goroutineStateDot,
|
|
56
|
+
threadStateBadge,
|
|
57
|
+
threadStateDot
|
|
58
|
+
};
|
|
59
|
+
//# sourceMappingURL=state-styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-styles.js","sources":["../../../src/data/diagnostics/state-styles.ts"],"sourcesContent":["// Tailwind class pickers for goroutine / JVM-thread states, shared by the\n// stack cards and the diagnostics detail panel.\n\nexport function goroutineStateBadge(state: string): string {\n if (state.includes(\"running\"))\n return \"bg-green-50 text-green-700 dark:bg-green-500/20 dark:text-green-300\";\n if (state.includes(\"chan\") || state.includes(\"wait\"))\n return \"bg-blue-50 text-blue-700 dark:bg-blue-500/20 dark:text-blue-300\";\n if (state.includes(\"sleep\"))\n return \"bg-amber-50 text-amber-700 dark:bg-amber-500/20 dark:text-amber-300\";\n if (state.includes(\"select\"))\n return \"bg-violet-50 text-violet-700 dark:bg-violet-500/20 dark:text-violet-300\";\n return \"bg-muted text-muted-foreground\";\n}\n\nexport function goroutineStateDot(state: string): string {\n if (state.includes(\"running\")) return \"bg-green-500\";\n if (state.includes(\"chan\") || state.includes(\"wait\")) return \"bg-blue-500\";\n if (state.includes(\"sleep\")) return \"bg-amber-500\";\n if (state.includes(\"select\")) return \"bg-violet-500\";\n return \"bg-muted-foreground/40\";\n}\n\nexport function threadStateBadge(state: string): string {\n switch (state) {\n case \"runnable\":\n return \"bg-green-50 text-green-700 dark:bg-green-500/20 dark:text-green-300\";\n case \"blocked\":\n return \"bg-red-50 text-red-700 dark:bg-red-500/20 dark:text-red-300\";\n case \"waiting\":\n case \"timed_waiting\":\n return \"bg-blue-50 text-blue-700 dark:bg-blue-500/20 dark:text-blue-300\";\n case \"new\":\n return \"bg-amber-50 text-amber-700 dark:bg-amber-500/20 dark:text-amber-300\";\n case \"terminated\":\n return \"bg-muted text-muted-foreground\";\n default:\n return \"bg-muted text-muted-foreground\";\n }\n}\n\nexport function threadStateDot(state: string): string {\n switch (state) {\n case \"runnable\":\n return \"bg-green-500\";\n case \"blocked\":\n return \"bg-red-500\";\n case \"waiting\":\n case \"timed_waiting\":\n return \"bg-blue-500\";\n case \"new\":\n return \"bg-amber-500\";\n case \"terminated\":\n return \"bg-muted-foreground/40\";\n default:\n return \"bg-muted-foreground/40\";\n }\n}\n"],"names":[],"mappings":"AAGO,SAAS,oBAAoB,OAAuB;AACzD,MAAI,MAAM,SAAS,SAAS;AAC1B,WAAO;AACT,MAAI,MAAM,SAAS,MAAM,KAAK,MAAM,SAAS,MAAM;AACjD,WAAO;AACT,MAAI,MAAM,SAAS,OAAO;AACxB,WAAO;AACT,MAAI,MAAM,SAAS,QAAQ;AACzB,WAAO;AACT,SAAO;AACT;AAEO,SAAS,kBAAkB,OAAuB;AACvD,MAAI,MAAM,SAAS,SAAS,EAAG,QAAO;AACtC,MAAI,MAAM,SAAS,MAAM,KAAK,MAAM,SAAS,MAAM,EAAG,QAAO;AAC7D,MAAI,MAAM,SAAS,OAAO,EAAG,QAAO;AACpC,MAAI,MAAM,SAAS,QAAQ,EAAG,QAAO;AACrC,SAAO;AACT;AAEO,SAAS,iBAAiB,OAAuB;AACtD,UAAQ,OAAA;AAAA,IACN,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EAAA;AAEb;AAEO,SAAS,eAAe,OAAuB;AACpD,UAAQ,OAAA;AAAA,IACN,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT;AACE,aAAO;AAAA,EAAA;AAEb;"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const logUtils = require("./log-utils.cjs");
|
|
4
|
+
const JSON_PARSE_FAILED = Symbol("json-parse-failed");
|
|
5
|
+
function normalizeLogsTableRows(logs) {
|
|
6
|
+
const entries = typeof logs === "string" ? splitLogLines(logs) : logs;
|
|
7
|
+
return entries.map((entry, index) => normalizeLogEntry(entry, index));
|
|
8
|
+
}
|
|
9
|
+
function splitLogLines(logs) {
|
|
10
|
+
return logs.split(/\r?\n/).filter((line) => line.length > 0);
|
|
11
|
+
}
|
|
12
|
+
function normalizeLogEntry(entry, index) {
|
|
13
|
+
const parsedOuterValue = typeof entry === "string" ? tryParseJson(entry) : entry;
|
|
14
|
+
const parsedOuter = parsedOuterValue === JSON_PARSE_FAILED ? entry : parsedOuterValue;
|
|
15
|
+
const outer = logUtils.asRecord(parsedOuter);
|
|
16
|
+
const outerLine = stringValue(outer == null ? void 0 : outer.line);
|
|
17
|
+
const parsedLineValue = outerLine ? tryParseJson(outerLine) : JSON_PARSE_FAILED;
|
|
18
|
+
const parsedLine = parsedLineValue === JSON_PARSE_FAILED ? void 0 : parsedLineValue;
|
|
19
|
+
const inner = logUtils.asRecord(parsedLine) ?? (outerLine ? void 0 : outer);
|
|
20
|
+
const labels = logUtils.asRecord(outer == null ? void 0 : outer.labels);
|
|
21
|
+
const timestamp = firstString(
|
|
22
|
+
pick(outer, "timestamp"),
|
|
23
|
+
pick(inner, "@timestamp"),
|
|
24
|
+
pick(outer, "ts"),
|
|
25
|
+
pick(inner, "timestamp"),
|
|
26
|
+
pick(outer, "time"),
|
|
27
|
+
pick(inner, "time")
|
|
28
|
+
);
|
|
29
|
+
const level = firstString(
|
|
30
|
+
pick(inner, "log.level"),
|
|
31
|
+
pick(inner, "level"),
|
|
32
|
+
pick(outer, "level"),
|
|
33
|
+
pick(outer, "severity"),
|
|
34
|
+
pick(inner, "severity")
|
|
35
|
+
);
|
|
36
|
+
const pod = firstString(
|
|
37
|
+
pick(outer, "pod"),
|
|
38
|
+
pick(labels, "pod"),
|
|
39
|
+
pick(inner, "kubernetes.pod.name")
|
|
40
|
+
);
|
|
41
|
+
const namespace = firstString(
|
|
42
|
+
pick(outer, "namespace"),
|
|
43
|
+
pick(labels, "namespace"),
|
|
44
|
+
pick(inner, "kubernetes.namespace")
|
|
45
|
+
);
|
|
46
|
+
const container = firstString(
|
|
47
|
+
pick(outer, "container"),
|
|
48
|
+
pick(labels, "container"),
|
|
49
|
+
pick(inner, "container.name")
|
|
50
|
+
);
|
|
51
|
+
const service = firstString(
|
|
52
|
+
pick(inner, "service.name"),
|
|
53
|
+
pick(inner, "service"),
|
|
54
|
+
pick(outer, "service"),
|
|
55
|
+
pick(labels, "service")
|
|
56
|
+
);
|
|
57
|
+
const dataset = firstString(pick(inner, "event.dataset"), pick(inner, "dataset"));
|
|
58
|
+
const logger = firstString(
|
|
59
|
+
pick(inner, "log.logger"),
|
|
60
|
+
pick(inner, "logger"),
|
|
61
|
+
pick(outer, "logger")
|
|
62
|
+
);
|
|
63
|
+
const thread = firstString(
|
|
64
|
+
pick(inner, "process.thread.name"),
|
|
65
|
+
pick(inner, "thread"),
|
|
66
|
+
pick(outer, "thread")
|
|
67
|
+
);
|
|
68
|
+
const message = firstString(
|
|
69
|
+
pick(inner, "message"),
|
|
70
|
+
pick(inner, "msg"),
|
|
71
|
+
pick(outer, "message"),
|
|
72
|
+
outerLine,
|
|
73
|
+
typeof entry === "string" ? entry : void 0
|
|
74
|
+
);
|
|
75
|
+
const tags = buildTags({
|
|
76
|
+
namespace,
|
|
77
|
+
container,
|
|
78
|
+
service,
|
|
79
|
+
dataset,
|
|
80
|
+
ecsVersion: firstString(pick(inner, "ecs.version")),
|
|
81
|
+
labels
|
|
82
|
+
});
|
|
83
|
+
return {
|
|
84
|
+
id: `${index}:${timestamp || pod || message || stableString(entry)}`,
|
|
85
|
+
timestamp,
|
|
86
|
+
level,
|
|
87
|
+
pod,
|
|
88
|
+
logger,
|
|
89
|
+
thread,
|
|
90
|
+
message,
|
|
91
|
+
tags,
|
|
92
|
+
line: outerLine ?? (typeof entry === "string" ? entry : stableString(entry)),
|
|
93
|
+
raw: parsedOuter,
|
|
94
|
+
...parsedLine !== void 0 ? { parsedLine } : {}
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
function buildTags({
|
|
98
|
+
namespace,
|
|
99
|
+
container,
|
|
100
|
+
service,
|
|
101
|
+
dataset,
|
|
102
|
+
ecsVersion,
|
|
103
|
+
labels
|
|
104
|
+
}) {
|
|
105
|
+
const tags = [];
|
|
106
|
+
const seen = /* @__PURE__ */ new Set();
|
|
107
|
+
const addTag = (key, value) => {
|
|
108
|
+
const valueString = stringValue(value);
|
|
109
|
+
if (!valueString) return;
|
|
110
|
+
const tag = `${key}=${valueString}`;
|
|
111
|
+
if (seen.has(tag)) return;
|
|
112
|
+
seen.add(tag);
|
|
113
|
+
tags.push(tag);
|
|
114
|
+
};
|
|
115
|
+
addTag("namespace", namespace);
|
|
116
|
+
addTag("container", container);
|
|
117
|
+
addTag("service", service);
|
|
118
|
+
addTag("dataset", dataset);
|
|
119
|
+
addTag("ecs.version", ecsVersion);
|
|
120
|
+
if (labels) {
|
|
121
|
+
for (const [key, value] of Object.entries(labels)) {
|
|
122
|
+
addTag(key, value);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return tags;
|
|
126
|
+
}
|
|
127
|
+
function tryParseJson(value) {
|
|
128
|
+
try {
|
|
129
|
+
return JSON.parse(value);
|
|
130
|
+
} catch {
|
|
131
|
+
return JSON_PARSE_FAILED;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
function pick(record, path) {
|
|
135
|
+
if (!record) return void 0;
|
|
136
|
+
if (Object.prototype.hasOwnProperty.call(record, path)) return record[path];
|
|
137
|
+
return path.split(".").reduce((current, key) => {
|
|
138
|
+
if (current && typeof current === "object") {
|
|
139
|
+
return current[key];
|
|
140
|
+
}
|
|
141
|
+
return void 0;
|
|
142
|
+
}, record);
|
|
143
|
+
}
|
|
144
|
+
function firstString(...values) {
|
|
145
|
+
for (const value of values) {
|
|
146
|
+
const string = stringValue(value);
|
|
147
|
+
if (string) return string;
|
|
148
|
+
}
|
|
149
|
+
return "";
|
|
150
|
+
}
|
|
151
|
+
function stringValue(value) {
|
|
152
|
+
if (value == null) return "";
|
|
153
|
+
if (typeof value === "string") return value.trim();
|
|
154
|
+
if (typeof value === "number" || typeof value === "boolean") return String(value);
|
|
155
|
+
return "";
|
|
156
|
+
}
|
|
157
|
+
function stableString(value) {
|
|
158
|
+
if (typeof value === "string") return value;
|
|
159
|
+
try {
|
|
160
|
+
return JSON.stringify(value);
|
|
161
|
+
} catch {
|
|
162
|
+
return String(value);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
exports.normalizeLogsTableRows = normalizeLogsTableRows;
|
|
166
|
+
//# sourceMappingURL=logs-normalize.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logs-normalize.cjs","sources":["../../src/data/logs-normalize.ts"],"sourcesContent":["import { asRecord } from \"./log-utils\";\n\nexport type LogsTableInput = string | Record<string, unknown>;\n\nexport type LogsTableRow = {\n id: string;\n timestamp: string;\n level: string;\n pod: string;\n logger: string;\n thread: string;\n message: string;\n tags: string[];\n line: string;\n parsedLine?: unknown;\n raw: unknown;\n};\n\nconst JSON_PARSE_FAILED = Symbol(\"json-parse-failed\");\n\nexport function normalizeLogsTableRows(logs: string | LogsTableInput[]): LogsTableRow[] {\n const entries = typeof logs === \"string\" ? splitLogLines(logs) : logs;\n return entries.map((entry, index) => normalizeLogEntry(entry, index));\n}\n\nfunction splitLogLines(logs: string): string[] {\n return logs.split(/\\r?\\n/).filter((line) => line.length > 0);\n}\n\nfunction normalizeLogEntry(entry: LogsTableInput, index: number): LogsTableRow {\n const parsedOuterValue = typeof entry === \"string\" ? tryParseJson(entry) : entry;\n const parsedOuter = parsedOuterValue === JSON_PARSE_FAILED ? entry : parsedOuterValue;\n const outer = asRecord(parsedOuter);\n const outerLine = stringValue(outer?.line);\n const parsedLineValue = outerLine ? tryParseJson(outerLine) : JSON_PARSE_FAILED;\n const parsedLine = parsedLineValue === JSON_PARSE_FAILED ? undefined : parsedLineValue;\n const inner = asRecord(parsedLine) ?? (outerLine ? undefined : outer);\n const labels = asRecord(outer?.labels);\n\n const timestamp = firstString(\n pick(outer, \"timestamp\"),\n pick(inner, \"@timestamp\"),\n pick(outer, \"ts\"),\n pick(inner, \"timestamp\"),\n pick(outer, \"time\"),\n pick(inner, \"time\"),\n );\n const level = firstString(\n pick(inner, \"log.level\"),\n pick(inner, \"level\"),\n pick(outer, \"level\"),\n pick(outer, \"severity\"),\n pick(inner, \"severity\"),\n );\n const pod = firstString(\n pick(outer, \"pod\"),\n pick(labels, \"pod\"),\n pick(inner, \"kubernetes.pod.name\"),\n );\n const namespace = firstString(\n pick(outer, \"namespace\"),\n pick(labels, \"namespace\"),\n pick(inner, \"kubernetes.namespace\"),\n );\n const container = firstString(\n pick(outer, \"container\"),\n pick(labels, \"container\"),\n pick(inner, \"container.name\"),\n );\n const service = firstString(\n pick(inner, \"service.name\"),\n pick(inner, \"service\"),\n pick(outer, \"service\"),\n pick(labels, \"service\"),\n );\n const dataset = firstString(pick(inner, \"event.dataset\"), pick(inner, \"dataset\"));\n const logger = firstString(\n pick(inner, \"log.logger\"),\n pick(inner, \"logger\"),\n pick(outer, \"logger\"),\n );\n const thread = firstString(\n pick(inner, \"process.thread.name\"),\n pick(inner, \"thread\"),\n pick(outer, \"thread\"),\n );\n const message = firstString(\n pick(inner, \"message\"),\n pick(inner, \"msg\"),\n pick(outer, \"message\"),\n outerLine,\n typeof entry === \"string\" ? entry : undefined,\n );\n\n const tags = buildTags({\n namespace,\n container,\n service,\n dataset,\n ecsVersion: firstString(pick(inner, \"ecs.version\")),\n labels,\n });\n\n return {\n id: `${index}:${timestamp || pod || message || stableString(entry)}`,\n timestamp,\n level,\n pod,\n logger,\n thread,\n message,\n tags,\n line: outerLine ?? (typeof entry === \"string\" ? entry : stableString(entry)),\n raw: parsedOuter,\n ...(parsedLine !== undefined ? { parsedLine } : {}),\n };\n}\n\nfunction buildTags({\n namespace,\n container,\n service,\n dataset,\n ecsVersion,\n labels,\n}: {\n namespace: string;\n container: string;\n service: string;\n dataset: string;\n ecsVersion: string;\n labels: Record<string, unknown> | undefined;\n}) {\n const tags: string[] = [];\n const seen = new Set<string>();\n const addTag = (key: string, value: unknown) => {\n const valueString = stringValue(value);\n if (!valueString) return;\n const tag = `${key}=${valueString}`;\n if (seen.has(tag)) return;\n seen.add(tag);\n tags.push(tag);\n };\n\n addTag(\"namespace\", namespace);\n addTag(\"container\", container);\n addTag(\"service\", service);\n addTag(\"dataset\", dataset);\n addTag(\"ecs.version\", ecsVersion);\n\n if (labels) {\n for (const [key, value] of Object.entries(labels)) {\n addTag(key, value);\n }\n }\n\n return tags;\n}\n\nfunction tryParseJson(value: string): unknown | typeof JSON_PARSE_FAILED {\n try {\n return JSON.parse(value) as unknown;\n } catch {\n return JSON_PARSE_FAILED;\n }\n}\n\nfunction pick(record: Record<string, unknown> | undefined, path: string): unknown {\n if (!record) return undefined;\n if (Object.prototype.hasOwnProperty.call(record, path)) return record[path];\n return path.split(\".\").reduce<unknown>((current, key) => {\n if (current && typeof current === \"object\") {\n return (current as Record<string, unknown>)[key];\n }\n return undefined;\n }, record);\n}\n\nfunction firstString(...values: unknown[]): string {\n for (const value of values) {\n const string = stringValue(value);\n if (string) return string;\n }\n return \"\";\n}\n\nfunction stringValue(value: unknown): string {\n if (value == null) return \"\";\n if (typeof value === \"string\") return value.trim();\n if (typeof value === \"number\" || typeof value === \"boolean\") return String(value);\n return \"\";\n}\n\nfunction stableString(value: unknown): string {\n if (typeof value === \"string\") return value;\n try {\n return JSON.stringify(value);\n } catch {\n return String(value);\n }\n}\n"],"names":["asRecord"],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export type LogsTableInput = string | Record<string, unknown>;
|
|
2
|
+
export type LogsTableRow = {
|
|
3
|
+
id: string;
|
|
4
|
+
timestamp: string;
|
|
5
|
+
level: string;
|
|
6
|
+
pod: string;
|
|
7
|
+
logger: string;
|
|
8
|
+
thread: string;
|
|
9
|
+
message: string;
|
|
10
|
+
tags: string[];
|
|
11
|
+
line: string;
|
|
12
|
+
parsedLine?: unknown;
|
|
13
|
+
raw: unknown;
|
|
14
|
+
};
|
|
15
|
+
export declare function normalizeLogsTableRows(logs: string | LogsTableInput[]): LogsTableRow[];
|
|
16
|
+
//# sourceMappingURL=logs-normalize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logs-normalize.d.ts","sourceRoot":"","sources":["../../src/data/logs-normalize.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE9D,MAAM,MAAM,YAAY,GAAG;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,EAAE,OAAO,CAAC;CACd,CAAC;AAIF,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,EAAE,GAAG,YAAY,EAAE,CAGtF"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { asRecord } from "./log-utils.js";
|
|
2
|
+
const JSON_PARSE_FAILED = Symbol("json-parse-failed");
|
|
3
|
+
function normalizeLogsTableRows(logs) {
|
|
4
|
+
const entries = typeof logs === "string" ? splitLogLines(logs) : logs;
|
|
5
|
+
return entries.map((entry, index) => normalizeLogEntry(entry, index));
|
|
6
|
+
}
|
|
7
|
+
function splitLogLines(logs) {
|
|
8
|
+
return logs.split(/\r?\n/).filter((line) => line.length > 0);
|
|
9
|
+
}
|
|
10
|
+
function normalizeLogEntry(entry, index) {
|
|
11
|
+
const parsedOuterValue = typeof entry === "string" ? tryParseJson(entry) : entry;
|
|
12
|
+
const parsedOuter = parsedOuterValue === JSON_PARSE_FAILED ? entry : parsedOuterValue;
|
|
13
|
+
const outer = asRecord(parsedOuter);
|
|
14
|
+
const outerLine = stringValue(outer == null ? void 0 : outer.line);
|
|
15
|
+
const parsedLineValue = outerLine ? tryParseJson(outerLine) : JSON_PARSE_FAILED;
|
|
16
|
+
const parsedLine = parsedLineValue === JSON_PARSE_FAILED ? void 0 : parsedLineValue;
|
|
17
|
+
const inner = asRecord(parsedLine) ?? (outerLine ? void 0 : outer);
|
|
18
|
+
const labels = asRecord(outer == null ? void 0 : outer.labels);
|
|
19
|
+
const timestamp = firstString(
|
|
20
|
+
pick(outer, "timestamp"),
|
|
21
|
+
pick(inner, "@timestamp"),
|
|
22
|
+
pick(outer, "ts"),
|
|
23
|
+
pick(inner, "timestamp"),
|
|
24
|
+
pick(outer, "time"),
|
|
25
|
+
pick(inner, "time")
|
|
26
|
+
);
|
|
27
|
+
const level = firstString(
|
|
28
|
+
pick(inner, "log.level"),
|
|
29
|
+
pick(inner, "level"),
|
|
30
|
+
pick(outer, "level"),
|
|
31
|
+
pick(outer, "severity"),
|
|
32
|
+
pick(inner, "severity")
|
|
33
|
+
);
|
|
34
|
+
const pod = firstString(
|
|
35
|
+
pick(outer, "pod"),
|
|
36
|
+
pick(labels, "pod"),
|
|
37
|
+
pick(inner, "kubernetes.pod.name")
|
|
38
|
+
);
|
|
39
|
+
const namespace = firstString(
|
|
40
|
+
pick(outer, "namespace"),
|
|
41
|
+
pick(labels, "namespace"),
|
|
42
|
+
pick(inner, "kubernetes.namespace")
|
|
43
|
+
);
|
|
44
|
+
const container = firstString(
|
|
45
|
+
pick(outer, "container"),
|
|
46
|
+
pick(labels, "container"),
|
|
47
|
+
pick(inner, "container.name")
|
|
48
|
+
);
|
|
49
|
+
const service = firstString(
|
|
50
|
+
pick(inner, "service.name"),
|
|
51
|
+
pick(inner, "service"),
|
|
52
|
+
pick(outer, "service"),
|
|
53
|
+
pick(labels, "service")
|
|
54
|
+
);
|
|
55
|
+
const dataset = firstString(pick(inner, "event.dataset"), pick(inner, "dataset"));
|
|
56
|
+
const logger = firstString(
|
|
57
|
+
pick(inner, "log.logger"),
|
|
58
|
+
pick(inner, "logger"),
|
|
59
|
+
pick(outer, "logger")
|
|
60
|
+
);
|
|
61
|
+
const thread = firstString(
|
|
62
|
+
pick(inner, "process.thread.name"),
|
|
63
|
+
pick(inner, "thread"),
|
|
64
|
+
pick(outer, "thread")
|
|
65
|
+
);
|
|
66
|
+
const message = firstString(
|
|
67
|
+
pick(inner, "message"),
|
|
68
|
+
pick(inner, "msg"),
|
|
69
|
+
pick(outer, "message"),
|
|
70
|
+
outerLine,
|
|
71
|
+
typeof entry === "string" ? entry : void 0
|
|
72
|
+
);
|
|
73
|
+
const tags = buildTags({
|
|
74
|
+
namespace,
|
|
75
|
+
container,
|
|
76
|
+
service,
|
|
77
|
+
dataset,
|
|
78
|
+
ecsVersion: firstString(pick(inner, "ecs.version")),
|
|
79
|
+
labels
|
|
80
|
+
});
|
|
81
|
+
return {
|
|
82
|
+
id: `${index}:${timestamp || pod || message || stableString(entry)}`,
|
|
83
|
+
timestamp,
|
|
84
|
+
level,
|
|
85
|
+
pod,
|
|
86
|
+
logger,
|
|
87
|
+
thread,
|
|
88
|
+
message,
|
|
89
|
+
tags,
|
|
90
|
+
line: outerLine ?? (typeof entry === "string" ? entry : stableString(entry)),
|
|
91
|
+
raw: parsedOuter,
|
|
92
|
+
...parsedLine !== void 0 ? { parsedLine } : {}
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
function buildTags({
|
|
96
|
+
namespace,
|
|
97
|
+
container,
|
|
98
|
+
service,
|
|
99
|
+
dataset,
|
|
100
|
+
ecsVersion,
|
|
101
|
+
labels
|
|
102
|
+
}) {
|
|
103
|
+
const tags = [];
|
|
104
|
+
const seen = /* @__PURE__ */ new Set();
|
|
105
|
+
const addTag = (key, value) => {
|
|
106
|
+
const valueString = stringValue(value);
|
|
107
|
+
if (!valueString) return;
|
|
108
|
+
const tag = `${key}=${valueString}`;
|
|
109
|
+
if (seen.has(tag)) return;
|
|
110
|
+
seen.add(tag);
|
|
111
|
+
tags.push(tag);
|
|
112
|
+
};
|
|
113
|
+
addTag("namespace", namespace);
|
|
114
|
+
addTag("container", container);
|
|
115
|
+
addTag("service", service);
|
|
116
|
+
addTag("dataset", dataset);
|
|
117
|
+
addTag("ecs.version", ecsVersion);
|
|
118
|
+
if (labels) {
|
|
119
|
+
for (const [key, value] of Object.entries(labels)) {
|
|
120
|
+
addTag(key, value);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return tags;
|
|
124
|
+
}
|
|
125
|
+
function tryParseJson(value) {
|
|
126
|
+
try {
|
|
127
|
+
return JSON.parse(value);
|
|
128
|
+
} catch {
|
|
129
|
+
return JSON_PARSE_FAILED;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
function pick(record, path) {
|
|
133
|
+
if (!record) return void 0;
|
|
134
|
+
if (Object.prototype.hasOwnProperty.call(record, path)) return record[path];
|
|
135
|
+
return path.split(".").reduce((current, key) => {
|
|
136
|
+
if (current && typeof current === "object") {
|
|
137
|
+
return current[key];
|
|
138
|
+
}
|
|
139
|
+
return void 0;
|
|
140
|
+
}, record);
|
|
141
|
+
}
|
|
142
|
+
function firstString(...values) {
|
|
143
|
+
for (const value of values) {
|
|
144
|
+
const string = stringValue(value);
|
|
145
|
+
if (string) return string;
|
|
146
|
+
}
|
|
147
|
+
return "";
|
|
148
|
+
}
|
|
149
|
+
function stringValue(value) {
|
|
150
|
+
if (value == null) return "";
|
|
151
|
+
if (typeof value === "string") return value.trim();
|
|
152
|
+
if (typeof value === "number" || typeof value === "boolean") return String(value);
|
|
153
|
+
return "";
|
|
154
|
+
}
|
|
155
|
+
function stableString(value) {
|
|
156
|
+
if (typeof value === "string") return value;
|
|
157
|
+
try {
|
|
158
|
+
return JSON.stringify(value);
|
|
159
|
+
} catch {
|
|
160
|
+
return String(value);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
export {
|
|
164
|
+
normalizeLogsTableRows
|
|
165
|
+
};
|
|
166
|
+
//# sourceMappingURL=logs-normalize.js.map
|