@flanksource/clicky-ui 0.3.25 → 0.3.27
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/NOTICE.md +1 -0
- package/dist/ai.cjs +4 -0
- package/dist/ai.cjs.map +1 -1
- package/dist/ai.js +6 -2
- package/dist/ai.js.map +1 -1
- package/dist/chat.cjs +8 -0
- package/dist/chat.cjs.map +1 -1
- package/dist/chat.js +9 -1
- package/dist/chat.js.map +1 -1
- package/dist/comments/CommentCard.cjs +89 -14
- package/dist/comments/CommentCard.cjs.map +1 -1
- package/dist/comments/CommentCard.d.ts.map +1 -1
- package/dist/comments/CommentCard.js +90 -15
- package/dist/comments/CommentCard.js.map +1 -1
- package/dist/comments/CommentComposer.cjs +25 -2
- package/dist/comments/CommentComposer.cjs.map +1 -1
- package/dist/comments/CommentComposer.d.ts.map +1 -1
- package/dist/comments/CommentComposer.js +25 -2
- package/dist/comments/CommentComposer.js.map +1 -1
- package/dist/comments/CommentProvider.cjs +21 -14
- package/dist/comments/CommentProvider.cjs.map +1 -1
- package/dist/comments/CommentProvider.d.ts +1 -1
- package/dist/comments/CommentProvider.d.ts.map +1 -1
- package/dist/comments/CommentProvider.js +21 -14
- package/dist/comments/CommentProvider.js.map +1 -1
- package/dist/comments/CommentSidePanel.cjs +1 -1
- package/dist/comments/CommentSidePanel.cjs.map +1 -1
- package/dist/comments/CommentSidePanel.js +1 -1
- package/dist/comments/CommentSidePanel.js.map +1 -1
- package/dist/comments/comment-types.cjs.map +1 -1
- package/dist/comments/comment-types.d.ts +6 -0
- package/dist/comments/comment-types.d.ts.map +1 -1
- package/dist/comments/comment-types.js.map +1 -1
- package/dist/components/DimensionField.cjs +56 -0
- package/dist/components/DimensionField.cjs.map +1 -0
- package/dist/components/DimensionField.d.ts +17 -0
- package/dist/components/DimensionField.d.ts.map +1 -0
- package/dist/components/DimensionField.js +56 -0
- package/dist/components/DimensionField.js.map +1 -0
- package/dist/components.cjs +4 -0
- package/dist/components.cjs.map +1 -1
- package/dist/components.d.ts +2 -0
- package/dist/components.d.ts.map +1 -1
- package/dist/components.js +4 -0
- package/dist/components.js.map +1 -1
- package/dist/data/Clicky.cjs +4 -5
- package/dist/data/Clicky.cjs.map +1 -1
- package/dist/data/Clicky.d.ts.map +1 -1
- package/dist/data/Clicky.js +4 -5
- package/dist/data/Clicky.js.map +1 -1
- package/dist/data/FixtureEditor/fixture-frontmatter.cjs +4 -0
- package/dist/data/FixtureEditor/fixture-frontmatter.cjs.map +1 -1
- package/dist/data/FixtureEditor/fixture-frontmatter.d.ts.map +1 -1
- package/dist/data/FixtureEditor/fixture-frontmatter.js +4 -0
- package/dist/data/FixtureEditor/fixture-frontmatter.js.map +1 -1
- package/dist/data/TaskExecDetails.cjs +8 -3
- package/dist/data/TaskExecDetails.cjs.map +1 -1
- package/dist/data/TaskExecDetails.d.ts +4 -0
- package/dist/data/TaskExecDetails.d.ts.map +1 -1
- package/dist/data/TaskExecDetails.js +9 -4
- package/dist/data/TaskExecDetails.js.map +1 -1
- package/dist/data/TaskManagerButton.cjs +101 -7
- package/dist/data/TaskManagerButton.cjs.map +1 -1
- package/dist/data/TaskManagerButton.d.ts +6 -1
- package/dist/data/TaskManagerButton.d.ts.map +1 -1
- package/dist/data/TaskManagerButton.js +103 -9
- package/dist/data/TaskManagerButton.js.map +1 -1
- package/dist/data/TaskProcessDetails.cjs +2 -0
- package/dist/data/TaskProcessDetails.cjs.map +1 -1
- package/dist/data/TaskProcessDetails.d.ts.map +1 -1
- package/dist/data/TaskProcessDetails.js +2 -0
- package/dist/data/TaskProcessDetails.js.map +1 -1
- package/dist/data/TaskProgress.cjs +14 -4
- package/dist/data/TaskProgress.cjs.map +1 -1
- package/dist/data/TaskProgress.js +14 -4
- package/dist/data/TaskProgress.js.map +1 -1
- package/dist/data/TaskSnapshot.cjs.map +1 -1
- package/dist/data/TaskSnapshot.d.ts +1 -0
- package/dist/data/TaskSnapshot.d.ts.map +1 -1
- package/dist/data/TaskSnapshot.js.map +1 -1
- package/dist/data/ai/ChatWindow.cjs +18 -23
- package/dist/data/ai/ChatWindow.cjs.map +1 -1
- package/dist/data/ai/ChatWindow.d.ts +1 -1
- package/dist/data/ai/ChatWindow.d.ts.map +1 -1
- package/dist/data/ai/ChatWindow.js +19 -24
- package/dist/data/ai/ChatWindow.js.map +1 -1
- package/dist/data/ai/ChatWindow.preferences.cjs +12 -21
- package/dist/data/ai/ChatWindow.preferences.cjs.map +1 -1
- package/dist/data/ai/ChatWindow.preferences.d.ts +3 -2
- package/dist/data/ai/ChatWindow.preferences.d.ts.map +1 -1
- package/dist/data/ai/ChatWindow.preferences.js +12 -21
- package/dist/data/ai/ChatWindow.preferences.js.map +1 -1
- package/dist/data/ai/ChatWindow.tool-catalog.cjs +21 -38
- package/dist/data/ai/ChatWindow.tool-catalog.cjs.map +1 -1
- package/dist/data/ai/ChatWindow.tool-catalog.d.ts +5 -5
- package/dist/data/ai/ChatWindow.tool-catalog.d.ts.map +1 -1
- package/dist/data/ai/ChatWindow.tool-catalog.js +21 -38
- package/dist/data/ai/ChatWindow.tool-catalog.js.map +1 -1
- package/dist/data/ai/ChatWindow.types.d.ts +2 -2
- package/dist/data/ai/ChatWindow.types.d.ts.map +1 -1
- package/dist/data/ai/ChatWindowManager.cjs +2 -2
- package/dist/data/ai/ChatWindowManager.cjs.map +1 -1
- package/dist/data/ai/ChatWindowManager.js +2 -2
- package/dist/data/ai/ChatWindowManager.js.map +1 -1
- package/dist/data/ai/ChatWindowRequestBody.cjs +4 -2
- package/dist/data/ai/ChatWindowRequestBody.cjs.map +1 -1
- package/dist/data/ai/ChatWindowRequestBody.d.ts +15 -3
- package/dist/data/ai/ChatWindowRequestBody.d.ts.map +1 -1
- package/dist/data/ai/ChatWindowRequestBody.js +4 -2
- package/dist/data/ai/ChatWindowRequestBody.js.map +1 -1
- package/dist/data/ai/PromptRunEditor/index.cjs +2 -3
- package/dist/data/ai/PromptRunEditor/index.cjs.map +1 -1
- package/dist/data/ai/PromptRunEditor/index.d.ts.map +1 -1
- package/dist/data/ai/PromptRunEditor/index.js +2 -3
- package/dist/data/ai/PromptRunEditor/index.js.map +1 -1
- package/dist/data/ai/PromptRunEditor/model.cjs +1 -0
- package/dist/data/ai/PromptRunEditor/model.cjs.map +1 -1
- package/dist/data/ai/PromptRunEditor/model.d.ts +1 -1
- package/dist/data/ai/PromptRunEditor/model.d.ts.map +1 -1
- package/dist/data/ai/PromptRunEditor/model.js +1 -0
- package/dist/data/ai/PromptRunEditor/model.js.map +1 -1
- package/dist/data/ai/RuntimeModePicker.cjs +11 -9
- package/dist/data/ai/RuntimeModePicker.cjs.map +1 -1
- package/dist/data/ai/RuntimeModePicker.d.ts.map +1 -1
- package/dist/data/ai/RuntimeModePicker.js +12 -10
- package/dist/data/ai/RuntimeModePicker.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.cjs +5 -0
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.js +5 -0
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor.model.cjs +4 -0
- package/dist/data/ai/SpecRuntimeEditor.model.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor.model.d.ts +2 -0
- package/dist/data/ai/SpecRuntimeEditor.model.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor.model.js +4 -0
- package/dist/data/ai/SpecRuntimeEditor.model.js.map +1 -1
- package/dist/data/ai/ToolPreferences.cjs +5 -5
- package/dist/data/ai/ToolPreferences.cjs.map +1 -1
- package/dist/data/ai/ToolPreferences.d.ts +6 -5
- package/dist/data/ai/ToolPreferences.d.ts.map +1 -1
- package/dist/data/ai/ToolPreferences.js +5 -5
- package/dist/data/ai/ToolPreferences.js.map +1 -1
- package/dist/data/ai/ToolPreferences.model.cjs +61 -37
- package/dist/data/ai/ToolPreferences.model.cjs.map +1 -1
- package/dist/data/ai/ToolPreferences.model.d.ts +32 -13
- package/dist/data/ai/ToolPreferences.model.d.ts.map +1 -1
- package/dist/data/ai/ToolPreferences.model.js +62 -38
- package/dist/data/ai/ToolPreferences.model.js.map +1 -1
- package/dist/data/ai/ToolPreferencesList.cjs +17 -20
- package/dist/data/ai/ToolPreferencesList.cjs.map +1 -1
- package/dist/data/ai/ToolPreferencesList.d.ts +16 -7
- package/dist/data/ai/ToolPreferencesList.d.ts.map +1 -1
- package/dist/data/ai/ToolPreferencesList.js +18 -21
- package/dist/data/ai/ToolPreferencesList.js.map +1 -1
- package/dist/data/ai/chat-window-context.cjs +1 -1
- package/dist/data/ai/chat-window-context.cjs.map +1 -1
- package/dist/data/ai/chat-window-context.d.ts +7 -7
- package/dist/data/ai/chat-window-context.d.ts.map +1 -1
- package/dist/data/ai/chat-window-context.js +1 -1
- package/dist/data/ai/chat-window-context.js.map +1 -1
- package/dist/data/ai/index.d.ts +3 -1
- package/dist/data/ai/index.d.ts.map +1 -1
- package/dist/data/chat/Chat.cjs +4 -2
- package/dist/data/chat/Chat.cjs.map +1 -1
- package/dist/data/chat/Chat.d.ts.map +1 -1
- package/dist/data/chat/Chat.js +4 -2
- package/dist/data/chat/Chat.js.map +1 -1
- package/dist/data/chat/Chat.runtime.cjs +14 -3
- package/dist/data/chat/Chat.runtime.cjs.map +1 -1
- package/dist/data/chat/Chat.runtime.d.ts.map +1 -1
- package/dist/data/chat/Chat.runtime.js +15 -4
- package/dist/data/chat/Chat.runtime.js.map +1 -1
- package/dist/data/chat/clickyOperationsToTools.cjs +2 -1
- package/dist/data/chat/clickyOperationsToTools.cjs.map +1 -1
- package/dist/data/chat/clickyOperationsToTools.d.ts.map +1 -1
- package/dist/data/chat/clickyOperationsToTools.js +2 -1
- package/dist/data/chat/clickyOperationsToTools.js.map +1 -1
- package/dist/data/chat/index.d.ts +2 -1
- package/dist/data/chat/index.d.ts.map +1 -1
- package/dist/data/chat/tool-policy.cjs +132 -0
- package/dist/data/chat/tool-policy.cjs.map +1 -0
- package/dist/data/chat/tool-policy.d.ts +81 -0
- package/dist/data/chat/tool-policy.d.ts.map +1 -0
- package/dist/data/chat/tool-policy.js +132 -0
- package/dist/data/chat/tool-policy.js.map +1 -0
- package/dist/data/chat/types.cjs +20 -0
- package/dist/data/chat/types.cjs.map +1 -1
- package/dist/data/chat/types.d.ts +22 -2
- package/dist/data/chat/types.d.ts.map +1 -1
- package/dist/data/chat/types.js +20 -0
- package/dist/data/chat/types.js.map +1 -1
- package/dist/data/debugConsoleSignal.cjs +64 -0
- package/dist/data/debugConsoleSignal.cjs.map +1 -0
- package/dist/data/debugConsoleSignal.d.ts +83 -0
- package/dist/data/debugConsoleSignal.d.ts.map +1 -0
- package/dist/data/debugConsoleSignal.js +64 -0
- package/dist/data/debugConsoleSignal.js.map +1 -0
- package/dist/data/har/HarPanel.cjs +20 -14
- package/dist/data/har/HarPanel.cjs.map +1 -1
- package/dist/data/har/HarPanel.d.ts.map +1 -1
- package/dist/data/har/HarPanel.js +20 -14
- package/dist/data/har/HarPanel.js.map +1 -1
- package/dist/data/har/types.d.ts +18 -0
- package/dist/data/har/types.d.ts.map +1 -1
- package/dist/data/query-browser/QueryBrowser.cjs +4 -42
- package/dist/data/query-browser/QueryBrowser.cjs.map +1 -1
- package/dist/data/query-browser/QueryBrowser.d.ts.map +1 -1
- package/dist/data/query-browser/QueryBrowser.js +5 -43
- package/dist/data/query-browser/QueryBrowser.js.map +1 -1
- package/dist/data/query-browser/QueryBrowser.types.cjs.map +1 -1
- package/dist/data/query-browser/QueryBrowser.types.d.ts +0 -1
- package/dist/data/query-browser/QueryBrowser.types.d.ts.map +1 -1
- package/dist/data/query-browser/QueryBrowser.types.js.map +1 -1
- package/dist/data/runtime/RuntimeBar.cjs +26 -41
- package/dist/data/runtime/RuntimeBar.cjs.map +1 -1
- package/dist/data/runtime/RuntimeBar.d.ts.map +1 -1
- package/dist/data/runtime/RuntimeBar.js +28 -43
- package/dist/data/runtime/RuntimeBar.js.map +1 -1
- package/dist/data/runtime/RuntimeBar.model.cjs +65 -0
- package/dist/data/runtime/RuntimeBar.model.cjs.map +1 -1
- package/dist/data/runtime/RuntimeBar.model.d.ts +11 -3
- package/dist/data/runtime/RuntimeBar.model.d.ts.map +1 -1
- package/dist/data/runtime/RuntimeBar.model.js +65 -0
- package/dist/data/runtime/RuntimeBar.model.js.map +1 -1
- package/dist/data/runtime/model-capabilities.cjs +8 -5
- package/dist/data/runtime/model-capabilities.cjs.map +1 -1
- package/dist/data/runtime/model-capabilities.d.ts +6 -1
- package/dist/data/runtime/model-capabilities.d.ts.map +1 -1
- package/dist/data/runtime/model-capabilities.js +8 -5
- package/dist/data/runtime/model-capabilities.js.map +1 -1
- package/dist/data/runtime/runtime-mode.cjs +17 -0
- package/dist/data/runtime/runtime-mode.cjs.map +1 -1
- package/dist/data/runtime/runtime-mode.d.ts +6 -0
- package/dist/data/runtime/runtime-mode.d.ts.map +1 -1
- package/dist/data/runtime/runtime-mode.js +17 -0
- package/dist/data/runtime/runtime-mode.js.map +1 -1
- package/dist/data/useDebugAction.cjs +29 -0
- package/dist/data/useDebugAction.cjs.map +1 -0
- package/dist/data/useDebugAction.d.ts +16 -0
- package/dist/data/useDebugAction.d.ts.map +1 -0
- package/dist/data/useDebugAction.js +29 -0
- package/dist/data/useDebugAction.js.map +1 -0
- package/dist/data/version-info.cjs +3 -3
- package/dist/data/version-info.js +3 -3
- package/dist/data.cjs +16 -8
- package/dist/data.cjs.map +1 -1
- package/dist/data.d.ts +3 -2
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +16 -8
- package/dist/devtools/DebugConsole.cjs +138 -0
- package/dist/devtools/DebugConsole.cjs.map +1 -0
- package/dist/devtools/DebugConsole.d.ts +23 -0
- package/dist/devtools/DebugConsole.d.ts.map +1 -0
- package/dist/devtools/DebugConsole.js +138 -0
- package/dist/devtools/DebugConsole.js.map +1 -0
- package/dist/devtools/DebugConsoleButton.cjs +59 -0
- package/dist/devtools/DebugConsoleButton.cjs.map +1 -0
- package/dist/devtools/DebugConsoleButton.d.ts +20 -0
- package/dist/devtools/DebugConsoleButton.d.ts.map +1 -0
- package/dist/devtools/DebugConsoleButton.js +59 -0
- package/dist/devtools/DebugConsoleButton.js.map +1 -0
- package/dist/devtools/DebugConsoleDock.cjs +112 -0
- package/dist/devtools/DebugConsoleDock.cjs.map +1 -0
- package/dist/devtools/DebugConsoleDock.d.ts +26 -0
- package/dist/devtools/DebugConsoleDock.d.ts.map +1 -0
- package/dist/devtools/DebugConsoleDock.js +112 -0
- package/dist/devtools/DebugConsoleDock.js.map +1 -0
- package/dist/devtools/ExecutionDetail.cjs +135 -0
- package/dist/devtools/ExecutionDetail.cjs.map +1 -0
- package/dist/devtools/ExecutionDetail.d.ts +19 -0
- package/dist/devtools/ExecutionDetail.d.ts.map +1 -0
- package/dist/devtools/ExecutionDetail.js +135 -0
- package/dist/devtools/ExecutionDetail.js.map +1 -0
- package/dist/devtools/debugClient.cjs +172 -0
- package/dist/devtools/debugClient.cjs.map +1 -0
- package/dist/devtools/debugClient.d.ts +98 -0
- package/dist/devtools/debugClient.d.ts.map +1 -0
- package/dist/devtools/debugClient.js +172 -0
- package/dist/devtools/debugClient.js.map +1 -0
- package/dist/devtools/debugStore.cjs +115 -0
- package/dist/devtools/debugStore.cjs.map +1 -0
- package/dist/devtools/debugStore.d.ts +83 -0
- package/dist/devtools/debugStore.d.ts.map +1 -0
- package/dist/devtools/debugStore.js +115 -0
- package/dist/devtools/debugStore.js.map +1 -0
- package/dist/devtools/dockState.cjs +51 -0
- package/dist/devtools/dockState.cjs.map +1 -0
- package/dist/devtools/dockState.d.ts +31 -0
- package/dist/devtools/dockState.d.ts.map +1 -0
- package/dist/devtools/dockState.js +51 -0
- package/dist/devtools/dockState.js.map +1 -0
- package/dist/devtools/tabs/ConsoleTab.cjs +36 -0
- package/dist/devtools/tabs/ConsoleTab.cjs.map +1 -0
- package/dist/devtools/tabs/ConsoleTab.d.ts +19 -0
- package/dist/devtools/tabs/ConsoleTab.d.ts.map +1 -0
- package/dist/devtools/tabs/ConsoleTab.js +36 -0
- package/dist/devtools/tabs/ConsoleTab.js.map +1 -0
- package/dist/devtools/tabs/InspectionCaches.cjs +150 -0
- package/dist/devtools/tabs/InspectionCaches.cjs.map +1 -0
- package/dist/devtools/tabs/InspectionCaches.d.ts +23 -0
- package/dist/devtools/tabs/InspectionCaches.d.ts.map +1 -0
- package/dist/devtools/tabs/InspectionCaches.js +150 -0
- package/dist/devtools/tabs/InspectionCaches.js.map +1 -0
- package/dist/devtools/tabs/InspectionTab.cjs +316 -0
- package/dist/devtools/tabs/InspectionTab.cjs.map +1 -0
- package/dist/devtools/tabs/InspectionTab.d.ts +27 -0
- package/dist/devtools/tabs/InspectionTab.d.ts.map +1 -0
- package/dist/devtools/tabs/InspectionTab.js +316 -0
- package/dist/devtools/tabs/InspectionTab.js.map +1 -0
- package/dist/devtools/tabs/NetworkTab.cjs +91 -0
- package/dist/devtools/tabs/NetworkTab.cjs.map +1 -0
- package/dist/devtools/tabs/NetworkTab.d.ts +20 -0
- package/dist/devtools/tabs/NetworkTab.d.ts.map +1 -0
- package/dist/devtools/tabs/NetworkTab.js +91 -0
- package/dist/devtools/tabs/NetworkTab.js.map +1 -0
- package/dist/devtools/tabs/QueriesTab.cjs +85 -0
- package/dist/devtools/tabs/QueriesTab.cjs.map +1 -0
- package/dist/devtools/tabs/QueriesTab.d.ts +24 -0
- package/dist/devtools/tabs/QueriesTab.d.ts.map +1 -0
- package/dist/devtools/tabs/QueriesTab.js +85 -0
- package/dist/devtools/tabs/QueriesTab.js.map +1 -0
- package/dist/devtools/types.cjs +26 -0
- package/dist/devtools/types.cjs.map +1 -0
- package/dist/devtools/types.d.ts +235 -0
- package/dist/devtools/types.d.ts.map +1 -0
- package/dist/devtools/types.js +26 -0
- package/dist/devtools/types.js.map +1 -0
- package/dist/devtools/useDebugStream.cjs +46 -0
- package/dist/devtools/useDebugStream.cjs.map +1 -0
- package/dist/devtools/useDebugStream.d.ts +23 -0
- package/dist/devtools/useDebugStream.d.ts.map +1 -0
- package/dist/devtools/useDebugStream.js +46 -0
- package/dist/devtools/useDebugStream.js.map +1 -0
- package/dist/devtools.cjs +51 -0
- package/dist/devtools.cjs.map +1 -0
- package/dist/devtools.d.ts +37 -0
- package/dist/devtools.d.ts.map +1 -0
- package/dist/devtools.js +51 -0
- package/dist/devtools.js.map +1 -0
- package/dist/icons/components/UiOpenScad.cjs +10 -0
- package/dist/icons/components/UiOpenScad.cjs.map +1 -0
- package/dist/icons/components/UiOpenScad.d.ts +9 -0
- package/dist/icons/components/UiOpenScad.d.ts.map +1 -0
- package/dist/icons/components/UiOpenScad.js +10 -0
- package/dist/icons/components/UiOpenScad.js.map +1 -0
- package/dist/icons/index.d.ts +1 -0
- package/dist/icons/index.d.ts.map +1 -1
- package/dist/icons/registry.cjs +2 -0
- package/dist/icons/registry.cjs.map +1 -1
- package/dist/icons/registry.d.ts.map +1 -1
- package/dist/icons/registry.js +2 -0
- package/dist/icons/registry.js.map +1 -1
- package/dist/icons.cjs +2 -0
- package/dist/icons.cjs.map +1 -1
- package/dist/icons.js +2 -0
- package/dist/icons.js.map +1 -1
- package/dist/index.cjs +20 -8
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +20 -8
- package/dist/index.js.map +1 -1
- package/dist/layout/AppShell.cjs +15 -10
- package/dist/layout/AppShell.cjs.map +1 -1
- package/dist/layout/AppShell.d.ts +11 -0
- package/dist/layout/AppShell.d.ts.map +1 -1
- package/dist/layout/AppShell.js +15 -10
- package/dist/layout/AppShell.js.map +1 -1
- package/dist/layout/AppShell.nav.cjs +170 -49
- package/dist/layout/AppShell.nav.cjs.map +1 -1
- package/dist/layout/AppShell.nav.d.ts.map +1 -1
- package/dist/layout/AppShell.nav.js +170 -49
- package/dist/layout/AppShell.nav.js.map +1 -1
- package/dist/overlay/CellActions.cjs +18 -124
- package/dist/overlay/CellActions.cjs.map +1 -1
- package/dist/overlay/CellActions.d.ts +1 -1
- package/dist/overlay/CellActions.d.ts.map +1 -1
- package/dist/overlay/CellActions.js +18 -124
- package/dist/overlay/CellActions.js.map +1 -1
- package/dist/overlay/ContextMenu.cjs +144 -0
- package/dist/overlay/ContextMenu.cjs.map +1 -0
- package/dist/overlay/ContextMenu.d.ts +8 -0
- package/dist/overlay/ContextMenu.d.ts.map +1 -0
- package/dist/overlay/ContextMenu.js +144 -0
- package/dist/overlay/ContextMenu.js.map +1 -0
- package/dist/profiles/connections/connectionBrowserModel.cjs +14 -65
- package/dist/profiles/connections/connectionBrowserModel.cjs.map +1 -1
- package/dist/profiles/connections/connectionBrowserModel.d.ts +35 -35
- package/dist/profiles/connections/connectionBrowserModel.d.ts.map +1 -1
- package/dist/profiles/connections/connectionBrowserModel.js +14 -65
- package/dist/profiles/connections/connectionBrowserModel.js.map +1 -1
- package/dist/profiles/connections/connectionQueryWorkspace.cjs +29 -9
- package/dist/profiles/connections/connectionQueryWorkspace.cjs.map +1 -1
- package/dist/profiles/connections/connectionQueryWorkspace.d.ts +3 -2
- package/dist/profiles/connections/connectionQueryWorkspace.d.ts.map +1 -1
- package/dist/profiles/connections/connectionQueryWorkspace.js +30 -10
- package/dist/profiles/connections/connectionQueryWorkspace.js.map +1 -1
- package/dist/profiles/connections/connectionQueryWorkspaceModel.cjs +15 -0
- package/dist/profiles/connections/connectionQueryWorkspaceModel.cjs.map +1 -1
- package/dist/profiles/connections/connectionQueryWorkspaceModel.d.ts +22 -1
- package/dist/profiles/connections/connectionQueryWorkspaceModel.d.ts.map +1 -1
- package/dist/profiles/connections/connectionQueryWorkspaceModel.js +15 -0
- package/dist/profiles/connections/connectionQueryWorkspaceModel.js.map +1 -1
- package/dist/profiles/connections/index.d.ts +1 -0
- package/dist/profiles/connections/index.d.ts.map +1 -1
- package/dist/profiles/connections/inspectionStatus.cjs +44 -0
- package/dist/profiles/connections/inspectionStatus.cjs.map +1 -0
- package/dist/profiles/connections/inspectionStatus.d.ts +5 -0
- package/dist/profiles/connections/inspectionStatus.d.ts.map +1 -0
- package/dist/profiles/connections/inspectionStatus.js +44 -0
- package/dist/profiles/connections/inspectionStatus.js.map +1 -0
- package/dist/profiles/connections/useInspection.cjs +123 -0
- package/dist/profiles/connections/useInspection.cjs.map +1 -0
- package/dist/profiles/connections/useInspection.d.ts +35 -0
- package/dist/profiles/connections/useInspection.d.ts.map +1 -0
- package/dist/profiles/connections/useInspection.js +123 -0
- package/dist/profiles/connections/useInspection.js.map +1 -0
- package/dist/profiles/editor/profileBuilderWorkspace.cjs +55 -23
- package/dist/profiles/editor/profileBuilderWorkspace.cjs.map +1 -1
- package/dist/profiles/editor/profileBuilderWorkspace.d.ts.map +1 -1
- package/dist/profiles/editor/profileBuilderWorkspace.js +56 -24
- package/dist/profiles/editor/profileBuilderWorkspace.js.map +1 -1
- package/dist/profiles/elasticsearch/esQueryBuilder.cjs +12 -3
- package/dist/profiles/elasticsearch/esQueryBuilder.cjs.map +1 -1
- package/dist/profiles/elasticsearch/esQueryBuilder.d.ts +2 -2
- package/dist/profiles/elasticsearch/esQueryBuilder.d.ts.map +1 -1
- package/dist/profiles/elasticsearch/esQueryBuilder.js +12 -3
- package/dist/profiles/elasticsearch/esQueryBuilder.js.map +1 -1
- package/dist/profiles/fields/profileFieldEditor.cjs +137 -22
- package/dist/profiles/fields/profileFieldEditor.cjs.map +1 -1
- package/dist/profiles/fields/profileFieldEditor.d.ts.map +1 -1
- package/dist/profiles/fields/profileFieldEditor.js +137 -22
- package/dist/profiles/fields/profileFieldEditor.js.map +1 -1
- package/dist/profiles/fields/profileFieldFilterEditor.cjs +171 -82
- package/dist/profiles/fields/profileFieldFilterEditor.cjs.map +1 -1
- package/dist/profiles/fields/profileFieldFilterEditor.d.ts +0 -9
- package/dist/profiles/fields/profileFieldFilterEditor.d.ts.map +1 -1
- package/dist/profiles/fields/profileFieldFilterEditor.js +174 -85
- package/dist/profiles/fields/profileFieldFilterEditor.js.map +1 -1
- package/dist/profiles/fields/profileFieldIcons.cjs +6 -3
- package/dist/profiles/fields/profileFieldIcons.cjs.map +1 -1
- package/dist/profiles/fields/profileFieldIcons.js +6 -3
- package/dist/profiles/fields/profileFieldIcons.js.map +1 -1
- package/dist/profiles/query/profileSampleFilterLookup.cjs +34 -0
- package/dist/profiles/query/profileSampleFilterLookup.cjs.map +1 -0
- package/dist/profiles/query/profileSampleFilterLookup.d.ts +12 -0
- package/dist/profiles/query/profileSampleFilterLookup.d.ts.map +1 -0
- package/dist/profiles/query/profileSampleFilterLookup.js +34 -0
- package/dist/profiles/query/profileSampleFilterLookup.js.map +1 -0
- package/dist/profiles/query/profileSamplePayload.cjs +6 -4
- package/dist/profiles/query/profileSamplePayload.cjs.map +1 -1
- package/dist/profiles/query/profileSamplePayload.d.ts +11 -4
- package/dist/profiles/query/profileSamplePayload.d.ts.map +1 -1
- package/dist/profiles/query/profileSamplePayload.js +6 -4
- package/dist/profiles/query/profileSamplePayload.js.map +1 -1
- package/dist/profiles/query/profileSampleResult.cjs +26 -0
- package/dist/profiles/query/profileSampleResult.cjs.map +1 -0
- package/dist/profiles/query/profileSampleResult.d.ts +11 -0
- package/dist/profiles/query/profileSampleResult.d.ts.map +1 -0
- package/dist/profiles/query/profileSampleResult.js +26 -0
- package/dist/profiles/query/profileSampleResult.js.map +1 -0
- package/dist/profiles/query/queryTargetPicker.cjs +5 -3
- package/dist/profiles/query/queryTargetPicker.cjs.map +1 -1
- package/dist/profiles/query/queryTargetPicker.d.ts +3 -2
- package/dist/profiles/query/queryTargetPicker.d.ts.map +1 -1
- package/dist/profiles/query/queryTargetPicker.js +5 -3
- package/dist/profiles/query/queryTargetPicker.js.map +1 -1
- package/dist/profiles/wizard/profileWizard.cjs +14 -5
- package/dist/profiles/wizard/profileWizard.cjs.map +1 -1
- package/dist/profiles/wizard/profileWizard.d.ts.map +1 -1
- package/dist/profiles/wizard/profileWizard.js +15 -6
- package/dist/profiles/wizard/profileWizard.js.map +1 -1
- package/dist/profiles/wizard/profileWizardModel.cjs +35 -6
- package/dist/profiles/wizard/profileWizardModel.cjs.map +1 -1
- package/dist/profiles/wizard/profileWizardModel.d.ts +29 -4
- package/dist/profiles/wizard/profileWizardModel.d.ts.map +1 -1
- package/dist/profiles/wizard/profileWizardModel.js +35 -6
- package/dist/profiles/wizard/profileWizardModel.js.map +1 -1
- package/dist/profiles/wizard/profileWizardQueryStep.cjs +44 -11
- package/dist/profiles/wizard/profileWizardQueryStep.cjs.map +1 -1
- package/dist/profiles/wizard/profileWizardQueryStep.d.ts.map +1 -1
- package/dist/profiles/wizard/profileWizardQueryStep.js +46 -13
- package/dist/profiles/wizard/profileWizardQueryStep.js.map +1 -1
- package/dist/profiles/wizard/profileWizardSteps.cjs +33 -2
- package/dist/profiles/wizard/profileWizardSteps.cjs.map +1 -1
- package/dist/profiles/wizard/profileWizardSteps.d.ts +11 -2
- package/dist/profiles/wizard/profileWizardSteps.d.ts.map +1 -1
- package/dist/profiles/wizard/profileWizardSteps.js +33 -2
- package/dist/profiles/wizard/profileWizardSteps.js.map +1 -1
- package/dist/profiles.cjs +8 -2
- package/dist/profiles.cjs.map +1 -1
- package/dist/profiles.js +10 -4
- package/dist/profiles.js.map +1 -1
- package/dist/rpc/FilterForm.cjs +21 -237
- package/dist/rpc/FilterForm.cjs.map +1 -1
- package/dist/rpc/FilterForm.d.ts +3 -1
- package/dist/rpc/FilterForm.d.ts.map +1 -1
- package/dist/rpc/FilterForm.js +21 -237
- package/dist/rpc/FilterForm.js.map +1 -1
- package/dist/rpc/FilterFormFields.cjs +240 -0
- package/dist/rpc/FilterFormFields.cjs.map +1 -0
- package/dist/rpc/FilterFormFields.d.ts +12 -0
- package/dist/rpc/FilterFormFields.d.ts.map +1 -0
- package/dist/rpc/FilterFormFields.js +240 -0
- package/dist/rpc/FilterFormFields.js.map +1 -0
- package/dist/rpc/router.cjs +3 -2
- package/dist/rpc/router.cjs.map +1 -1
- package/dist/rpc/router.d.ts.map +1 -1
- package/dist/rpc/router.js +3 -2
- package/dist/rpc/router.js.map +1 -1
- package/dist/rpc/types.cjs.map +1 -1
- package/dist/rpc/types.d.ts +3 -1
- package/dist/rpc/types.d.ts.map +1 -1
- package/dist/rpc/types.js.map +1 -1
- package/dist/styles.css +1 -1
- package/package.json +6 -1
- package/dist/data/query-info/QueryInfoDialog.cjs +0 -106
- package/dist/data/query-info/QueryInfoDialog.cjs.map +0 -1
- package/dist/data/query-info/QueryInfoDialog.d.ts +0 -16
- package/dist/data/query-info/QueryInfoDialog.d.ts.map +0 -1
- package/dist/data/query-info/QueryInfoDialog.js +0 -106
- package/dist/data/query-info/QueryInfoDialog.js.map +0 -1
- package/dist/data/query-info/index.d.ts +0 -4
- package/dist/data/query-info/index.d.ts.map +0 -1
- package/dist/data/query-info/queryInfo.cjs +0 -42
- package/dist/data/query-info/queryInfo.cjs.map +0 -1
- package/dist/data/query-info/queryInfo.d.ts +0 -45
- package/dist/data/query-info/queryInfo.d.ts.map +0 -1
- package/dist/data/query-info/queryInfo.js +0 -42
- package/dist/data/query-info/queryInfo.js.map +0 -1
- package/dist/data/query-info/useQueryInfo.cjs +0 -48
- package/dist/data/query-info/useQueryInfo.cjs.map +0 -1
- package/dist/data/query-info/useQueryInfo.d.ts +0 -26
- package/dist/data/query-info/useQueryInfo.d.ts.map +0 -1
- package/dist/data/query-info/useQueryInfo.js +0 -48
- package/dist/data/query-info/useQueryInfo.js.map +0 -1
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
|
+
const reactQuery = require("@tanstack/react-query");
|
|
4
|
+
const react = require("react");
|
|
5
|
+
const connectionBrowserModel = require("./connectionBrowserModel.cjs");
|
|
6
|
+
function effectiveInspectionDatabase(scope) {
|
|
7
|
+
return scope.database || scope.fallbackDatabase || "";
|
|
8
|
+
}
|
|
9
|
+
function inspectionURL(baseUrl, options = {}) {
|
|
10
|
+
const params = new URLSearchParams();
|
|
11
|
+
if (options.database) params.set("database", options.database);
|
|
12
|
+
if (options.target) params.set("target", options.target);
|
|
13
|
+
if (options.targetKind) params.set("targetKind", options.targetKind);
|
|
14
|
+
if (options.refresh) params.set("refresh", "true");
|
|
15
|
+
const encoded = params.toString();
|
|
16
|
+
return `${baseUrl}/inspect${encoded ? `?${encoded}` : ""}`;
|
|
17
|
+
}
|
|
18
|
+
function useInspection(scope) {
|
|
19
|
+
var _a, _b, _c, _d;
|
|
20
|
+
const { cacheKey, id, baseUrl } = scope;
|
|
21
|
+
const queryClient = reactQuery.useQueryClient();
|
|
22
|
+
const requestedDatabase = effectiveInspectionDatabase(scope);
|
|
23
|
+
const baseQueryKey = [cacheKey, id, "base", requestedDatabase];
|
|
24
|
+
const base = reactQuery.useQuery({
|
|
25
|
+
queryKey: baseQueryKey,
|
|
26
|
+
queryFn: () => connectionBrowserModel.fetchJSON(
|
|
27
|
+
inspectionURL(baseUrl, { database: requestedDatabase })
|
|
28
|
+
),
|
|
29
|
+
enabled: scope.enabled,
|
|
30
|
+
retry: 0,
|
|
31
|
+
staleTime: 0,
|
|
32
|
+
placeholderData: reactQuery.keepPreviousData
|
|
33
|
+
});
|
|
34
|
+
const data = base.data;
|
|
35
|
+
const targetKind = scope.targetKind ?? ((_b = (_a = data == null ? void 0 : data.targets) == null ? void 0 : _a.find((target2) => target2.name === scope.target)) == null ? void 0 : _b.kind) ?? "";
|
|
36
|
+
const targetEnabled = (data == null ? void 0 : data.kind) === "opensearch" && scope.target !== "" && targetKind !== "";
|
|
37
|
+
const targetQueryKey = [
|
|
38
|
+
cacheKey,
|
|
39
|
+
id,
|
|
40
|
+
"target",
|
|
41
|
+
targetKind,
|
|
42
|
+
scope.target
|
|
43
|
+
];
|
|
44
|
+
const target = reactQuery.useQuery({
|
|
45
|
+
queryKey: targetQueryKey,
|
|
46
|
+
queryFn: () => connectionBrowserModel.fetchJSON(
|
|
47
|
+
inspectionURL(baseUrl, { target: scope.target, targetKind })
|
|
48
|
+
),
|
|
49
|
+
enabled: targetEnabled,
|
|
50
|
+
retry: 0,
|
|
51
|
+
staleTime: 0,
|
|
52
|
+
placeholderData: reactQuery.keepPreviousData
|
|
53
|
+
});
|
|
54
|
+
const activeDatabase = requestedDatabase || (data == null ? void 0 : data.database) || "";
|
|
55
|
+
const completion = react.useMemo(
|
|
56
|
+
() => connectionBrowserModel.completionForInspection(data, target.data),
|
|
57
|
+
[data, target.data]
|
|
58
|
+
);
|
|
59
|
+
const activeCache = targetEnabled ? ((_c = target.data) == null ? void 0 : _c.cache) ?? (data == null ? void 0 : data.cache) : data == null ? void 0 : data.cache;
|
|
60
|
+
const refresh = reactQuery.useMutation({
|
|
61
|
+
mutationFn: () => connectionBrowserModel.fetchJSON(
|
|
62
|
+
inspectionURL(baseUrl, {
|
|
63
|
+
database: requestedDatabase,
|
|
64
|
+
...targetEnabled ? { target: scope.target, targetKind } : {},
|
|
65
|
+
refresh: true
|
|
66
|
+
})
|
|
67
|
+
),
|
|
68
|
+
onSuccess: (refreshed) => {
|
|
69
|
+
queryClient.setQueryData(baseQueryKey, refreshed);
|
|
70
|
+
if (targetEnabled) queryClient.setQueryData(targetQueryKey, refreshed);
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
react.useEffect(() => {
|
|
74
|
+
if (!(activeCache == null ? void 0 : activeCache.refreshing)) return;
|
|
75
|
+
let cancelled = false;
|
|
76
|
+
let timer = 0;
|
|
77
|
+
const poll = async () => {
|
|
78
|
+
var _a2, _b2, _c2;
|
|
79
|
+
const baseResult = await base.refetch();
|
|
80
|
+
const targetResult = targetEnabled ? await target.refetch() : void 0;
|
|
81
|
+
const cache = targetEnabled ? ((_a2 = targetResult == null ? void 0 : targetResult.data) == null ? void 0 : _a2.cache) ?? ((_b2 = baseResult.data) == null ? void 0 : _b2.cache) : (_c2 = baseResult.data) == null ? void 0 : _c2.cache;
|
|
82
|
+
if (!cancelled && (cache == null ? void 0 : cache.refreshing)) {
|
|
83
|
+
timer = window.setTimeout(
|
|
84
|
+
() => void poll(),
|
|
85
|
+
Math.max(500, cache.retryAfterMs ?? 1e3)
|
|
86
|
+
);
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
timer = window.setTimeout(
|
|
90
|
+
() => void poll(),
|
|
91
|
+
Math.max(500, activeCache.retryAfterMs ?? 1e3)
|
|
92
|
+
);
|
|
93
|
+
return () => {
|
|
94
|
+
cancelled = true;
|
|
95
|
+
window.clearTimeout(timer);
|
|
96
|
+
};
|
|
97
|
+
}, [
|
|
98
|
+
activeCache == null ? void 0 : activeCache.refreshing,
|
|
99
|
+
activeCache == null ? void 0 : activeCache.retryAfterMs,
|
|
100
|
+
base.refetch,
|
|
101
|
+
target.refetch,
|
|
102
|
+
targetEnabled
|
|
103
|
+
]);
|
|
104
|
+
const active = targetEnabled ? target : base;
|
|
105
|
+
return {
|
|
106
|
+
data,
|
|
107
|
+
nodes: (data == null ? void 0 : data.nodes) ?? [],
|
|
108
|
+
databases: ((_d = base.data) == null ? void 0 : _d.databases) ?? [],
|
|
109
|
+
activeDatabase,
|
|
110
|
+
sqlDatabase: (data == null ? void 0 : data.kind) === "sql" ? activeDatabase : "",
|
|
111
|
+
targetKind,
|
|
112
|
+
loading: active.isLoading && active.data === void 0,
|
|
113
|
+
error: refresh.error ?? active.error ?? base.error,
|
|
114
|
+
completion,
|
|
115
|
+
cache: activeCache,
|
|
116
|
+
refreshing: refresh.isPending || base.isFetching || targetEnabled && target.isFetching,
|
|
117
|
+
refresh: () => refresh.mutate()
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
exports.effectiveInspectionDatabase = effectiveInspectionDatabase;
|
|
121
|
+
exports.inspectionURL = inspectionURL;
|
|
122
|
+
exports.useInspection = useInspection;
|
|
123
|
+
//# sourceMappingURL=useInspection.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useInspection.cjs","sources":["../../../src/profiles/connections/useInspection.ts"],"sourcesContent":["import type { QueryBrowserCompletion } from \"../../data/query-browser/QueryBrowser.completion\";\nimport {\n keepPreviousData,\n useMutation,\n useQuery,\n useQueryClient,\n} from \"@tanstack/react-query\";\nimport { useEffect, useMemo } from \"react\";\nimport {\n completionForInspection,\n fetchJSON,\n type BrowserInspection,\n type CatalogNode,\n type InspectionCache,\n} from \"./connectionBrowserModel\";\n\nexport type InspectionScope = {\n cacheKey: string;\n id: string;\n baseUrl: string;\n enabled: boolean;\n database: string;\n fallbackDatabase?: string;\n target: string;\n targetKind?: string;\n};\n\nexport type Inspection = {\n data?: BrowserInspection | undefined;\n nodes: CatalogNode[];\n databases: string[];\n activeDatabase: string;\n sqlDatabase: string;\n targetKind: string;\n loading: boolean;\n error: unknown;\n completion?: QueryBrowserCompletion | undefined;\n cache?: InspectionCache | undefined;\n refreshing: boolean;\n refresh: () => void;\n};\n\nexport function effectiveInspectionDatabase(\n scope: Pick<InspectionScope, \"database\" | \"fallbackDatabase\">,\n): string {\n return scope.database || scope.fallbackDatabase || \"\";\n}\n\nexport function inspectionURL(\n baseUrl: string,\n options: {\n database?: string;\n target?: string;\n targetKind?: string;\n refresh?: boolean;\n } = {},\n): string {\n const params = new URLSearchParams();\n if (options.database) params.set(\"database\", options.database);\n if (options.target) params.set(\"target\", options.target);\n if (options.targetKind) params.set(\"targetKind\", options.targetKind);\n if (options.refresh) params.set(\"refresh\", \"true\");\n const encoded = params.toString();\n return `${baseUrl}/inspect${encoded ? `?${encoded}` : \"\"}`;\n}\n\nexport function useInspection(scope: InspectionScope): Inspection {\n const { cacheKey, id, baseUrl } = scope;\n const queryClient = useQueryClient();\n const requestedDatabase = effectiveInspectionDatabase(scope);\n const baseQueryKey = [cacheKey, id, \"base\", requestedDatabase] as const;\n const base = useQuery({\n queryKey: baseQueryKey,\n queryFn: () =>\n fetchJSON<BrowserInspection>(\n inspectionURL(baseUrl, { database: requestedDatabase }),\n ),\n enabled: scope.enabled,\n retry: 0,\n staleTime: 0,\n placeholderData: keepPreviousData,\n });\n const data = base.data;\n const targetKind =\n scope.targetKind ??\n data?.targets?.find((target) => target.name === scope.target)?.kind ??\n \"\";\n const targetEnabled =\n data?.kind === \"opensearch\" && scope.target !== \"\" && targetKind !== \"\";\n const targetQueryKey = [\n cacheKey,\n id,\n \"target\",\n targetKind,\n scope.target,\n ] as const;\n const target = useQuery({\n queryKey: targetQueryKey,\n queryFn: () =>\n fetchJSON<BrowserInspection>(\n inspectionURL(baseUrl, { target: scope.target, targetKind }),\n ),\n enabled: targetEnabled,\n retry: 0,\n staleTime: 0,\n placeholderData: keepPreviousData,\n });\n const activeDatabase = requestedDatabase || data?.database || \"\";\n const completion = useMemo(\n () => completionForInspection(data, target.data),\n [data, target.data],\n );\n const activeCache = targetEnabled\n ? (target.data?.cache ?? data?.cache)\n : data?.cache;\n const refresh = useMutation({\n mutationFn: () =>\n fetchJSON<BrowserInspection>(\n inspectionURL(baseUrl, {\n database: requestedDatabase,\n ...(targetEnabled ? { target: scope.target, targetKind } : {}),\n refresh: true,\n }),\n ),\n onSuccess: (refreshed) => {\n queryClient.setQueryData(baseQueryKey, refreshed);\n if (targetEnabled) queryClient.setQueryData(targetQueryKey, refreshed);\n },\n });\n\n useEffect(() => {\n if (!activeCache?.refreshing) return;\n let cancelled = false;\n let timer = 0;\n const poll = async () => {\n const baseResult = await base.refetch();\n const targetResult = targetEnabled ? await target.refetch() : undefined;\n const cache = targetEnabled\n ? (targetResult?.data?.cache ?? baseResult.data?.cache)\n : baseResult.data?.cache;\n if (!cancelled && cache?.refreshing) {\n timer = window.setTimeout(\n () => void poll(),\n Math.max(500, cache.retryAfterMs ?? 1_000),\n );\n }\n };\n timer = window.setTimeout(\n () => void poll(),\n Math.max(500, activeCache.retryAfterMs ?? 1_000),\n );\n return () => {\n cancelled = true;\n window.clearTimeout(timer);\n };\n }, [\n activeCache?.refreshing,\n activeCache?.retryAfterMs,\n base.refetch,\n target.refetch,\n targetEnabled,\n ]);\n\n const active = targetEnabled ? target : base;\n return {\n data,\n nodes: data?.nodes ?? [],\n databases: base.data?.databases ?? [],\n activeDatabase,\n sqlDatabase: data?.kind === \"sql\" ? activeDatabase : \"\",\n targetKind,\n loading: active.isLoading && active.data === undefined,\n error: refresh.error ?? active.error ?? base.error,\n completion,\n cache: activeCache,\n refreshing:\n refresh.isPending ||\n base.isFetching ||\n (targetEnabled && target.isFetching),\n refresh: () => refresh.mutate(),\n };\n}\n"],"names":["useQueryClient","useQuery","fetchJSON","keepPreviousData","target","useMemo","completionForInspection","useMutation","useEffect","_a","_b","_c"],"mappings":";;;;;AA0CO,SAAS,4BACd,OACQ;AACR,SAAO,MAAM,YAAY,MAAM,oBAAoB;AACrD;AAEO,SAAS,cACd,SACA,UAKI,IACI;AACR,QAAM,SAAS,IAAI,gBAAA;AACnB,MAAI,QAAQ,SAAU,QAAO,IAAI,YAAY,QAAQ,QAAQ;AAC7D,MAAI,QAAQ,OAAQ,QAAO,IAAI,UAAU,QAAQ,MAAM;AACvD,MAAI,QAAQ,WAAY,QAAO,IAAI,cAAc,QAAQ,UAAU;AACnE,MAAI,QAAQ,QAAS,QAAO,IAAI,WAAW,MAAM;AACjD,QAAM,UAAU,OAAO,SAAA;AACvB,SAAO,GAAG,OAAO,WAAW,UAAU,IAAI,OAAO,KAAK,EAAE;AAC1D;AAEO,SAAS,cAAc,OAAoC;;AAChE,QAAM,EAAE,UAAU,IAAI,QAAA,IAAY;AAClC,QAAM,cAAcA,WAAAA,eAAA;AACpB,QAAM,oBAAoB,4BAA4B,KAAK;AAC3D,QAAM,eAAe,CAAC,UAAU,IAAI,QAAQ,iBAAiB;AAC7D,QAAM,OAAOC,WAAAA,SAAS;AAAA,IACpB,UAAU;AAAA,IACV,SAAS,MACPC,uBAAAA;AAAAA,MACE,cAAc,SAAS,EAAE,UAAU,mBAAmB;AAAA,IAAA;AAAA,IAE1D,SAAS,MAAM;AAAA,IACf,OAAO;AAAA,IACP,WAAW;AAAA,IACX,iBAAiBC,WAAAA;AAAAA,EAAA,CAClB;AACD,QAAM,OAAO,KAAK;AAClB,QAAM,aACJ,MAAM,gBACN,wCAAM,YAAN,mBAAe,KAAK,CAACC,YAAWA,QAAO,SAAS,MAAM,YAAtD,mBAA+D,SAC/D;AACF,QAAM,iBACJ,6BAAM,UAAS,gBAAgB,MAAM,WAAW,MAAM,eAAe;AACvE,QAAM,iBAAiB;AAAA,IACrB;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,MAAM;AAAA,EAAA;AAER,QAAM,SAASH,WAAAA,SAAS;AAAA,IACtB,UAAU;AAAA,IACV,SAAS,MACPC,uBAAAA;AAAAA,MACE,cAAc,SAAS,EAAE,QAAQ,MAAM,QAAQ,YAAY;AAAA,IAAA;AAAA,IAE/D,SAAS;AAAA,IACT,OAAO;AAAA,IACP,WAAW;AAAA,IACX,iBAAiBC,WAAAA;AAAAA,EAAA,CAClB;AACD,QAAM,iBAAiB,sBAAqB,6BAAM,aAAY;AAC9D,QAAM,aAAaE,MAAAA;AAAAA,IACjB,MAAMC,+CAAwB,MAAM,OAAO,IAAI;AAAA,IAC/C,CAAC,MAAM,OAAO,IAAI;AAAA,EAAA;AAEpB,QAAM,cAAc,kBACf,YAAO,SAAP,mBAAa,WAAS,6BAAM,SAC7B,6BAAM;AACV,QAAM,UAAUC,WAAAA,YAAY;AAAA,IAC1B,YAAY,MACVL,uBAAAA;AAAAA,MACE,cAAc,SAAS;AAAA,QACrB,UAAU;AAAA,QACV,GAAI,gBAAgB,EAAE,QAAQ,MAAM,QAAQ,WAAA,IAAe,CAAA;AAAA,QAC3D,SAAS;AAAA,MAAA,CACV;AAAA,IAAA;AAAA,IAEL,WAAW,CAAC,cAAc;AACxB,kBAAY,aAAa,cAAc,SAAS;AAChD,UAAI,cAAe,aAAY,aAAa,gBAAgB,SAAS;AAAA,IACvE;AAAA,EAAA,CACD;AAEDM,QAAAA,UAAU,MAAM;AACd,QAAI,EAAC,2CAAa,YAAY;AAC9B,QAAI,YAAY;AAChB,QAAI,QAAQ;AACZ,UAAM,OAAO,YAAY;;AACvB,YAAM,aAAa,MAAM,KAAK,QAAA;AAC9B,YAAM,eAAe,gBAAgB,MAAM,OAAO,YAAY;AAC9D,YAAM,QAAQ,kBACTC,MAAA,6CAAc,SAAd,gBAAAA,IAAoB,YAASC,MAAA,WAAW,SAAX,gBAAAA,IAAiB,UAC/CC,MAAA,WAAW,SAAX,gBAAAA,IAAiB;AACrB,UAAI,CAAC,cAAa,+BAAO,aAAY;AACnC,gBAAQ,OAAO;AAAA,UACb,MAAM,KAAK,KAAA;AAAA,UACX,KAAK,IAAI,KAAK,MAAM,gBAAgB,GAAK;AAAA,QAAA;AAAA,MAE7C;AAAA,IACF;AACA,YAAQ,OAAO;AAAA,MACb,MAAM,KAAK,KAAA;AAAA,MACX,KAAK,IAAI,KAAK,YAAY,gBAAgB,GAAK;AAAA,IAAA;AAEjD,WAAO,MAAM;AACX,kBAAY;AACZ,aAAO,aAAa,KAAK;AAAA,IAC3B;AAAA,EACF,GAAG;AAAA,IACD,2CAAa;AAAA,IACb,2CAAa;AAAA,IACb,KAAK;AAAA,IACL,OAAO;AAAA,IACP;AAAA,EAAA,CACD;AAED,QAAM,SAAS,gBAAgB,SAAS;AACxC,SAAO;AAAA,IACL;AAAA,IACA,QAAO,6BAAM,UAAS,CAAA;AAAA,IACtB,aAAW,UAAK,SAAL,mBAAW,cAAa,CAAA;AAAA,IACnC;AAAA,IACA,cAAa,6BAAM,UAAS,QAAQ,iBAAiB;AAAA,IACrD;AAAA,IACA,SAAS,OAAO,aAAa,OAAO,SAAS;AAAA,IAC7C,OAAO,QAAQ,SAAS,OAAO,SAAS,KAAK;AAAA,IAC7C;AAAA,IACA,OAAO;AAAA,IACP,YACE,QAAQ,aACR,KAAK,cACJ,iBAAiB,OAAO;AAAA,IAC3B,SAAS,MAAM,QAAQ,OAAA;AAAA,EAAO;AAElC;;;;"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { QueryBrowserCompletion } from '../../data/query-browser/QueryBrowser.completion';
|
|
2
|
+
import { BrowserInspection, CatalogNode, InspectionCache } from './connectionBrowserModel';
|
|
3
|
+
export type InspectionScope = {
|
|
4
|
+
cacheKey: string;
|
|
5
|
+
id: string;
|
|
6
|
+
baseUrl: string;
|
|
7
|
+
enabled: boolean;
|
|
8
|
+
database: string;
|
|
9
|
+
fallbackDatabase?: string;
|
|
10
|
+
target: string;
|
|
11
|
+
targetKind?: string;
|
|
12
|
+
};
|
|
13
|
+
export type Inspection = {
|
|
14
|
+
data?: BrowserInspection | undefined;
|
|
15
|
+
nodes: CatalogNode[];
|
|
16
|
+
databases: string[];
|
|
17
|
+
activeDatabase: string;
|
|
18
|
+
sqlDatabase: string;
|
|
19
|
+
targetKind: string;
|
|
20
|
+
loading: boolean;
|
|
21
|
+
error: unknown;
|
|
22
|
+
completion?: QueryBrowserCompletion | undefined;
|
|
23
|
+
cache?: InspectionCache | undefined;
|
|
24
|
+
refreshing: boolean;
|
|
25
|
+
refresh: () => void;
|
|
26
|
+
};
|
|
27
|
+
export declare function effectiveInspectionDatabase(scope: Pick<InspectionScope, "database" | "fallbackDatabase">): string;
|
|
28
|
+
export declare function inspectionURL(baseUrl: string, options?: {
|
|
29
|
+
database?: string;
|
|
30
|
+
target?: string;
|
|
31
|
+
targetKind?: string;
|
|
32
|
+
refresh?: boolean;
|
|
33
|
+
}): string;
|
|
34
|
+
export declare function useInspection(scope: InspectionScope): Inspection;
|
|
35
|
+
//# sourceMappingURL=useInspection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useInspection.d.ts","sourceRoot":"","sources":["../../../src/profiles/connections/useInspection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kDAAkD,CAAC;AAQ/F,OAAO,EAGL,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,eAAe,EACrB,MAAM,0BAA0B,CAAC;AAElC,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACrC,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC;IAChD,KAAK,CAAC,EAAE,eAAe,GAAG,SAAS,CAAC;IACpC,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AAEF,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,GAAG,kBAAkB,CAAC,GAC5D,MAAM,CAER;AAED,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IACP,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACd,GACL,MAAM,CAQR;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,eAAe,GAAG,UAAU,CAmHhE"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { useQueryClient, useQuery, keepPreviousData, useMutation } from "@tanstack/react-query";
|
|
2
|
+
import { useMemo, useEffect } from "react";
|
|
3
|
+
import { fetchJSON, completionForInspection } from "./connectionBrowserModel.js";
|
|
4
|
+
function effectiveInspectionDatabase(scope) {
|
|
5
|
+
return scope.database || scope.fallbackDatabase || "";
|
|
6
|
+
}
|
|
7
|
+
function inspectionURL(baseUrl, options = {}) {
|
|
8
|
+
const params = new URLSearchParams();
|
|
9
|
+
if (options.database) params.set("database", options.database);
|
|
10
|
+
if (options.target) params.set("target", options.target);
|
|
11
|
+
if (options.targetKind) params.set("targetKind", options.targetKind);
|
|
12
|
+
if (options.refresh) params.set("refresh", "true");
|
|
13
|
+
const encoded = params.toString();
|
|
14
|
+
return `${baseUrl}/inspect${encoded ? `?${encoded}` : ""}`;
|
|
15
|
+
}
|
|
16
|
+
function useInspection(scope) {
|
|
17
|
+
var _a, _b, _c, _d;
|
|
18
|
+
const { cacheKey, id, baseUrl } = scope;
|
|
19
|
+
const queryClient = useQueryClient();
|
|
20
|
+
const requestedDatabase = effectiveInspectionDatabase(scope);
|
|
21
|
+
const baseQueryKey = [cacheKey, id, "base", requestedDatabase];
|
|
22
|
+
const base = useQuery({
|
|
23
|
+
queryKey: baseQueryKey,
|
|
24
|
+
queryFn: () => fetchJSON(
|
|
25
|
+
inspectionURL(baseUrl, { database: requestedDatabase })
|
|
26
|
+
),
|
|
27
|
+
enabled: scope.enabled,
|
|
28
|
+
retry: 0,
|
|
29
|
+
staleTime: 0,
|
|
30
|
+
placeholderData: keepPreviousData
|
|
31
|
+
});
|
|
32
|
+
const data = base.data;
|
|
33
|
+
const targetKind = scope.targetKind ?? ((_b = (_a = data == null ? void 0 : data.targets) == null ? void 0 : _a.find((target2) => target2.name === scope.target)) == null ? void 0 : _b.kind) ?? "";
|
|
34
|
+
const targetEnabled = (data == null ? void 0 : data.kind) === "opensearch" && scope.target !== "" && targetKind !== "";
|
|
35
|
+
const targetQueryKey = [
|
|
36
|
+
cacheKey,
|
|
37
|
+
id,
|
|
38
|
+
"target",
|
|
39
|
+
targetKind,
|
|
40
|
+
scope.target
|
|
41
|
+
];
|
|
42
|
+
const target = useQuery({
|
|
43
|
+
queryKey: targetQueryKey,
|
|
44
|
+
queryFn: () => fetchJSON(
|
|
45
|
+
inspectionURL(baseUrl, { target: scope.target, targetKind })
|
|
46
|
+
),
|
|
47
|
+
enabled: targetEnabled,
|
|
48
|
+
retry: 0,
|
|
49
|
+
staleTime: 0,
|
|
50
|
+
placeholderData: keepPreviousData
|
|
51
|
+
});
|
|
52
|
+
const activeDatabase = requestedDatabase || (data == null ? void 0 : data.database) || "";
|
|
53
|
+
const completion = useMemo(
|
|
54
|
+
() => completionForInspection(data, target.data),
|
|
55
|
+
[data, target.data]
|
|
56
|
+
);
|
|
57
|
+
const activeCache = targetEnabled ? ((_c = target.data) == null ? void 0 : _c.cache) ?? (data == null ? void 0 : data.cache) : data == null ? void 0 : data.cache;
|
|
58
|
+
const refresh = useMutation({
|
|
59
|
+
mutationFn: () => fetchJSON(
|
|
60
|
+
inspectionURL(baseUrl, {
|
|
61
|
+
database: requestedDatabase,
|
|
62
|
+
...targetEnabled ? { target: scope.target, targetKind } : {},
|
|
63
|
+
refresh: true
|
|
64
|
+
})
|
|
65
|
+
),
|
|
66
|
+
onSuccess: (refreshed) => {
|
|
67
|
+
queryClient.setQueryData(baseQueryKey, refreshed);
|
|
68
|
+
if (targetEnabled) queryClient.setQueryData(targetQueryKey, refreshed);
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
useEffect(() => {
|
|
72
|
+
if (!(activeCache == null ? void 0 : activeCache.refreshing)) return;
|
|
73
|
+
let cancelled = false;
|
|
74
|
+
let timer = 0;
|
|
75
|
+
const poll = async () => {
|
|
76
|
+
var _a2, _b2, _c2;
|
|
77
|
+
const baseResult = await base.refetch();
|
|
78
|
+
const targetResult = targetEnabled ? await target.refetch() : void 0;
|
|
79
|
+
const cache = targetEnabled ? ((_a2 = targetResult == null ? void 0 : targetResult.data) == null ? void 0 : _a2.cache) ?? ((_b2 = baseResult.data) == null ? void 0 : _b2.cache) : (_c2 = baseResult.data) == null ? void 0 : _c2.cache;
|
|
80
|
+
if (!cancelled && (cache == null ? void 0 : cache.refreshing)) {
|
|
81
|
+
timer = window.setTimeout(
|
|
82
|
+
() => void poll(),
|
|
83
|
+
Math.max(500, cache.retryAfterMs ?? 1e3)
|
|
84
|
+
);
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
timer = window.setTimeout(
|
|
88
|
+
() => void poll(),
|
|
89
|
+
Math.max(500, activeCache.retryAfterMs ?? 1e3)
|
|
90
|
+
);
|
|
91
|
+
return () => {
|
|
92
|
+
cancelled = true;
|
|
93
|
+
window.clearTimeout(timer);
|
|
94
|
+
};
|
|
95
|
+
}, [
|
|
96
|
+
activeCache == null ? void 0 : activeCache.refreshing,
|
|
97
|
+
activeCache == null ? void 0 : activeCache.retryAfterMs,
|
|
98
|
+
base.refetch,
|
|
99
|
+
target.refetch,
|
|
100
|
+
targetEnabled
|
|
101
|
+
]);
|
|
102
|
+
const active = targetEnabled ? target : base;
|
|
103
|
+
return {
|
|
104
|
+
data,
|
|
105
|
+
nodes: (data == null ? void 0 : data.nodes) ?? [],
|
|
106
|
+
databases: ((_d = base.data) == null ? void 0 : _d.databases) ?? [],
|
|
107
|
+
activeDatabase,
|
|
108
|
+
sqlDatabase: (data == null ? void 0 : data.kind) === "sql" ? activeDatabase : "",
|
|
109
|
+
targetKind,
|
|
110
|
+
loading: active.isLoading && active.data === void 0,
|
|
111
|
+
error: refresh.error ?? active.error ?? base.error,
|
|
112
|
+
completion,
|
|
113
|
+
cache: activeCache,
|
|
114
|
+
refreshing: refresh.isPending || base.isFetching || targetEnabled && target.isFetching,
|
|
115
|
+
refresh: () => refresh.mutate()
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
export {
|
|
119
|
+
effectiveInspectionDatabase,
|
|
120
|
+
inspectionURL,
|
|
121
|
+
useInspection
|
|
122
|
+
};
|
|
123
|
+
//# sourceMappingURL=useInspection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useInspection.js","sources":["../../../src/profiles/connections/useInspection.ts"],"sourcesContent":["import type { QueryBrowserCompletion } from \"../../data/query-browser/QueryBrowser.completion\";\nimport {\n keepPreviousData,\n useMutation,\n useQuery,\n useQueryClient,\n} from \"@tanstack/react-query\";\nimport { useEffect, useMemo } from \"react\";\nimport {\n completionForInspection,\n fetchJSON,\n type BrowserInspection,\n type CatalogNode,\n type InspectionCache,\n} from \"./connectionBrowserModel\";\n\nexport type InspectionScope = {\n cacheKey: string;\n id: string;\n baseUrl: string;\n enabled: boolean;\n database: string;\n fallbackDatabase?: string;\n target: string;\n targetKind?: string;\n};\n\nexport type Inspection = {\n data?: BrowserInspection | undefined;\n nodes: CatalogNode[];\n databases: string[];\n activeDatabase: string;\n sqlDatabase: string;\n targetKind: string;\n loading: boolean;\n error: unknown;\n completion?: QueryBrowserCompletion | undefined;\n cache?: InspectionCache | undefined;\n refreshing: boolean;\n refresh: () => void;\n};\n\nexport function effectiveInspectionDatabase(\n scope: Pick<InspectionScope, \"database\" | \"fallbackDatabase\">,\n): string {\n return scope.database || scope.fallbackDatabase || \"\";\n}\n\nexport function inspectionURL(\n baseUrl: string,\n options: {\n database?: string;\n target?: string;\n targetKind?: string;\n refresh?: boolean;\n } = {},\n): string {\n const params = new URLSearchParams();\n if (options.database) params.set(\"database\", options.database);\n if (options.target) params.set(\"target\", options.target);\n if (options.targetKind) params.set(\"targetKind\", options.targetKind);\n if (options.refresh) params.set(\"refresh\", \"true\");\n const encoded = params.toString();\n return `${baseUrl}/inspect${encoded ? `?${encoded}` : \"\"}`;\n}\n\nexport function useInspection(scope: InspectionScope): Inspection {\n const { cacheKey, id, baseUrl } = scope;\n const queryClient = useQueryClient();\n const requestedDatabase = effectiveInspectionDatabase(scope);\n const baseQueryKey = [cacheKey, id, \"base\", requestedDatabase] as const;\n const base = useQuery({\n queryKey: baseQueryKey,\n queryFn: () =>\n fetchJSON<BrowserInspection>(\n inspectionURL(baseUrl, { database: requestedDatabase }),\n ),\n enabled: scope.enabled,\n retry: 0,\n staleTime: 0,\n placeholderData: keepPreviousData,\n });\n const data = base.data;\n const targetKind =\n scope.targetKind ??\n data?.targets?.find((target) => target.name === scope.target)?.kind ??\n \"\";\n const targetEnabled =\n data?.kind === \"opensearch\" && scope.target !== \"\" && targetKind !== \"\";\n const targetQueryKey = [\n cacheKey,\n id,\n \"target\",\n targetKind,\n scope.target,\n ] as const;\n const target = useQuery({\n queryKey: targetQueryKey,\n queryFn: () =>\n fetchJSON<BrowserInspection>(\n inspectionURL(baseUrl, { target: scope.target, targetKind }),\n ),\n enabled: targetEnabled,\n retry: 0,\n staleTime: 0,\n placeholderData: keepPreviousData,\n });\n const activeDatabase = requestedDatabase || data?.database || \"\";\n const completion = useMemo(\n () => completionForInspection(data, target.data),\n [data, target.data],\n );\n const activeCache = targetEnabled\n ? (target.data?.cache ?? data?.cache)\n : data?.cache;\n const refresh = useMutation({\n mutationFn: () =>\n fetchJSON<BrowserInspection>(\n inspectionURL(baseUrl, {\n database: requestedDatabase,\n ...(targetEnabled ? { target: scope.target, targetKind } : {}),\n refresh: true,\n }),\n ),\n onSuccess: (refreshed) => {\n queryClient.setQueryData(baseQueryKey, refreshed);\n if (targetEnabled) queryClient.setQueryData(targetQueryKey, refreshed);\n },\n });\n\n useEffect(() => {\n if (!activeCache?.refreshing) return;\n let cancelled = false;\n let timer = 0;\n const poll = async () => {\n const baseResult = await base.refetch();\n const targetResult = targetEnabled ? await target.refetch() : undefined;\n const cache = targetEnabled\n ? (targetResult?.data?.cache ?? baseResult.data?.cache)\n : baseResult.data?.cache;\n if (!cancelled && cache?.refreshing) {\n timer = window.setTimeout(\n () => void poll(),\n Math.max(500, cache.retryAfterMs ?? 1_000),\n );\n }\n };\n timer = window.setTimeout(\n () => void poll(),\n Math.max(500, activeCache.retryAfterMs ?? 1_000),\n );\n return () => {\n cancelled = true;\n window.clearTimeout(timer);\n };\n }, [\n activeCache?.refreshing,\n activeCache?.retryAfterMs,\n base.refetch,\n target.refetch,\n targetEnabled,\n ]);\n\n const active = targetEnabled ? target : base;\n return {\n data,\n nodes: data?.nodes ?? [],\n databases: base.data?.databases ?? [],\n activeDatabase,\n sqlDatabase: data?.kind === \"sql\" ? activeDatabase : \"\",\n targetKind,\n loading: active.isLoading && active.data === undefined,\n error: refresh.error ?? active.error ?? base.error,\n completion,\n cache: activeCache,\n refreshing:\n refresh.isPending ||\n base.isFetching ||\n (targetEnabled && target.isFetching),\n refresh: () => refresh.mutate(),\n };\n}\n"],"names":["target","_a","_b","_c"],"mappings":"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"}
|
|
@@ -3,17 +3,23 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
|
3
3
|
const jsxRuntime = require("react/jsx-runtime");
|
|
4
4
|
const JsonSchemaForm = require("../../components/JsonSchemaForm.cjs");
|
|
5
5
|
const button = require("../../components/button.cjs");
|
|
6
|
+
const debugConsoleSignal = require("../../data/debugConsoleSignal.cjs");
|
|
6
7
|
const Icon = require("../../data/Icon.cjs");
|
|
7
8
|
const Modal = require("../../overlay/Modal.cjs");
|
|
8
9
|
const reactQuery = require("@tanstack/react-query");
|
|
9
10
|
const react = require("react");
|
|
10
11
|
const connectionBrowserModel = require("../connections/connectionBrowserModel.cjs");
|
|
11
12
|
const connectionQueryWorkspace = require("../connections/connectionQueryWorkspace.cjs");
|
|
13
|
+
const useInspection = require("../connections/useInspection.cjs");
|
|
14
|
+
const profileApi = require("../profileApi.cjs");
|
|
12
15
|
const profileColumnPicker = require("../fields/profileColumnPicker.cjs");
|
|
13
16
|
const profileWizardModel = require("../wizard/profileWizardModel.cjs");
|
|
14
17
|
const esQueryBuilderForm = require("../elasticsearch/esQueryBuilderForm.cjs");
|
|
15
18
|
const profileColumnModel = require("../fields/profileColumnModel.cjs");
|
|
16
19
|
const profileBuilderModel = require("./profileBuilderModel.cjs");
|
|
20
|
+
const profileSamplePayload = require("../query/profileSamplePayload.cjs");
|
|
21
|
+
const profileSampleFilterLookup = require("../query/profileSampleFilterLookup.cjs");
|
|
22
|
+
const profileSampleResult = require("../query/profileSampleResult.cjs");
|
|
17
23
|
const UiCheck = require("../../icons/components/UiCheck.cjs");
|
|
18
24
|
const UiColumns = require("../../icons/components/UiColumns.cjs");
|
|
19
25
|
const UiSqlColumn = require("../../icons/components/UiSqlColumn.cjs");
|
|
@@ -24,7 +30,7 @@ function ProfileBuilderWorkspace({
|
|
|
24
30
|
onApply,
|
|
25
31
|
onClose
|
|
26
32
|
}) {
|
|
27
|
-
var _a, _b, _c, _d;
|
|
33
|
+
var _a, _b, _c, _d, _e, _f;
|
|
28
34
|
const baseUrl = connectionBrowserModel.browserBaseUrl(connectionID);
|
|
29
35
|
const descriptor = reactQuery.useQuery({
|
|
30
36
|
queryKey: ["profile-builder-descriptor", connectionID],
|
|
@@ -68,6 +74,7 @@ function ProfileBuilderWorkspace({
|
|
|
68
74
|
const [limits, setLimits] = react.useState(
|
|
69
75
|
() => rootValue.limits
|
|
70
76
|
);
|
|
77
|
+
const filterColumns = react.useRef([]);
|
|
71
78
|
react.useEffect(() => {
|
|
72
79
|
var _a2;
|
|
73
80
|
if (!query && ((_a2 = descriptor.data) == null ? void 0 : _a2.defaultQuery)) {
|
|
@@ -75,14 +82,17 @@ function ProfileBuilderWorkspace({
|
|
|
75
82
|
}
|
|
76
83
|
}, [(_b = descriptor.data) == null ? void 0 : _b.defaultQuery, query]);
|
|
77
84
|
const explicitTargetKind = liveOptions.targetKind ?? initialProviderOptions.targetKind;
|
|
78
|
-
const
|
|
85
|
+
const targetOption = ((_d = (_c = descriptor.data) == null ? void 0 : _c.target) == null ? void 0 : _d.kind) === "index" ? descriptor.data.target.option : "";
|
|
86
|
+
const inspection = useInspection.useInspection({
|
|
79
87
|
cacheKey: "profile-builder-inspection",
|
|
80
88
|
id: connectionID,
|
|
81
89
|
baseUrl,
|
|
82
|
-
enabled: ((
|
|
90
|
+
enabled: ((_e = descriptor.data) == null ? void 0 : _e.catalog) === true,
|
|
83
91
|
database: selectedDatabase,
|
|
84
92
|
fallbackDatabase: String(initialProviderOptions.database ?? ""),
|
|
85
|
-
target: String(
|
|
93
|
+
target: targetOption ? String(
|
|
94
|
+
liveOptions[targetOption] ?? initialProviderOptions[targetOption] ?? ""
|
|
95
|
+
) : "",
|
|
86
96
|
...typeof explicitTargetKind === "string" ? { targetKind: explicitTargetKind } : {}
|
|
87
97
|
});
|
|
88
98
|
const browserOptions = react.useMemo(
|
|
@@ -100,7 +110,7 @@ function ProfileBuilderWorkspace({
|
|
|
100
110
|
},
|
|
101
111
|
[
|
|
102
112
|
catalogOptions,
|
|
103
|
-
(
|
|
113
|
+
(_f = descriptor.data) == null ? void 0 : _f.initialOptions,
|
|
104
114
|
initialProviderOptions,
|
|
105
115
|
inspection.sqlDatabase
|
|
106
116
|
]
|
|
@@ -264,34 +274,56 @@ function ProfileBuilderWorkspace({
|
|
|
264
274
|
setCatalogOptions(nextOptions);
|
|
265
275
|
setLiveOptions({ ...browserOptions, ...nextOptions });
|
|
266
276
|
},
|
|
277
|
+
lookupFilterValues: (request) => profileSampleFilterLookup.lookupProfileSampleFilterValues({
|
|
278
|
+
draft: {
|
|
279
|
+
...rootValue,
|
|
280
|
+
params,
|
|
281
|
+
profile: rootValue.profile || "sample",
|
|
282
|
+
query: request.query,
|
|
283
|
+
provider: {
|
|
284
|
+
...rootValue.provider,
|
|
285
|
+
options: effectiveOptions(request.options)
|
|
286
|
+
}
|
|
287
|
+
},
|
|
288
|
+
params: sampleParams,
|
|
289
|
+
filterColumns: filterColumns.current,
|
|
290
|
+
request
|
|
291
|
+
}),
|
|
267
292
|
execute: async (request) => {
|
|
293
|
+
const sampleDraft = {
|
|
294
|
+
...rootValue,
|
|
295
|
+
params,
|
|
296
|
+
profile: rootValue.profile || "sample",
|
|
297
|
+
query: request.query,
|
|
298
|
+
provider: {
|
|
299
|
+
...rootValue.provider,
|
|
300
|
+
options: effectiveOptions(request.options)
|
|
301
|
+
}
|
|
302
|
+
};
|
|
268
303
|
const result = await connectionBrowserModel.fetchJSON(
|
|
269
|
-
"
|
|
304
|
+
profileApi.profileApiPath("profile/sample"),
|
|
270
305
|
{
|
|
271
306
|
method: "POST",
|
|
272
|
-
headers: {
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
params: sampleParams,
|
|
285
|
-
...request.pagination ? { pagination: request.pagination } : {},
|
|
286
|
-
...request.debug ? { debug: true } : {}
|
|
287
|
-
})
|
|
307
|
+
headers: {
|
|
308
|
+
"Content-Type": "application/json",
|
|
309
|
+
...debugConsoleSignal.debugCaptureHeaders()
|
|
310
|
+
},
|
|
311
|
+
body: JSON.stringify(
|
|
312
|
+
profileSamplePayload.profileSamplePayload({
|
|
313
|
+
draft: sampleDraft,
|
|
314
|
+
request,
|
|
315
|
+
params: sampleParams,
|
|
316
|
+
filterColumns: filterColumns.current
|
|
317
|
+
})
|
|
318
|
+
)
|
|
288
319
|
}
|
|
289
320
|
);
|
|
321
|
+
filterColumns.current = profileSampleResult.profileSampleFilterColumns(result);
|
|
290
322
|
setSampleColumns(result.columns ?? []);
|
|
291
323
|
setSelectedColumns(
|
|
292
324
|
new Set((result.columns ?? []).map((column) => column.name))
|
|
293
325
|
);
|
|
294
|
-
return result;
|
|
326
|
+
return profileSampleResult.profileSampleQueryResult(result);
|
|
295
327
|
},
|
|
296
328
|
renderResults: ({ defaultView }) => /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex min-h-0 flex-1 flex-col gap-3", children: [
|
|
297
329
|
/* @__PURE__ */ jsxRuntime.jsx("div", { className: "min-h-0 flex-1", children: defaultView }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profileBuilderWorkspace.cjs","sources":["../../../src/profiles/editor/profileBuilderWorkspace.tsx"],"sourcesContent":["import { JsonSchemaForm } from \"../../components/JsonSchemaForm\";\nimport { Button } from \"../../components/button\";\nimport { Icon } from \"../../data/Icon\";\nimport type { QueryBrowserResult } from \"../../data/query-browser/QueryBrowser.types\";\nimport { Modal } from \"../../overlay/Modal\";\nimport { UiCheck, UiColumns, UiSqlColumn } from \"../../icons\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport {\n useCallback,\n useEffect,\n useMemo,\n useState,\n type ReactNode,\n} from \"react\";\nimport {\n browserBaseUrl,\n fetchJSON,\n mergeProviderOptions,\n useInspection,\n type BrowserDescriptor,\n type ProfileRowLimits,\n} from \"../connections/connectionBrowserModel\";\nimport { ConnectionQueryWorkspace } from \"../connections/connectionQueryWorkspace\";\nimport type { EsSearch } from \"../elasticsearch/esQueryBuilderModel\";\nimport {\n ColumnPicker,\n type ProfileColumn,\n} from \"../fields/profileColumnPicker\";\nimport {\n withProfileLimits,\n type ParamDraft,\n type ProfileProvider,\n} from \"../wizard/profileWizardModel\";\nimport {\n defaultParamValues,\n paramRoles,\n} from \"../elasticsearch/esQueryBuilderForm\";\nimport { mapTimestampColumn } from \"../fields/profileColumnModel\";\nimport { sampleParamSchema } from \"./profileBuilderModel\";\n\n// Same story as ProfileColumn: one ProfileProvider, defined with the draft\n// model. The copy here had drifted to carry `role`, which the canonical type's\n// index signature already admits.\nexport type { ProfileProvider };\n\nexport type ProfileDraft = Record<string, unknown> & {\n profile?: string;\n query?: string;\n provider?: ProfileProvider;\n params?: ParamDraft[];\n columns?: ProfileColumn[];\n /** The row caps this profile sets for itself; unset ones take their default. */\n limits?: ProfileRowLimits;\n};\n\ntype SampleResult = QueryBrowserResult & {\n columns: ProfileColumn[];\n renderedQuery: string;\n};\n\n// Modal's body is a flex child. It must be allowed to shrink and must not own\n// scrolling, otherwise QueryBrowser's intrinsic minimum height expands the\n// whole workspace and pushes the editor/results below the dialog viewport.\n//\n// These are utilities rather than a stylesheet on purpose: a library CSS asset\n// only reaches a consumer that remembers to import it, whereas Tailwind scans\n// this source and folds the rules into the dist/styles.css every consumer\n// already loads.\nexport const profileBuilderModalClassName =\n \"h-[calc(100dvh-2rem)] [&>[data-slot=modal-body]]:flex [&>[data-slot=modal-body]]:min-h-0 [&>[data-slot=modal-body]]:overflow-hidden [&>[data-slot=modal-body]>*]:flex-1 [&>[data-slot=modal-body]>*]:h-auto [&>[data-slot=modal-body]>*]:min-h-0\";\n\nexport function ProfileBuilderWorkspace({\n connectionID,\n rootValue,\n onApply,\n onClose,\n}: {\n connectionID: string;\n rootValue: ProfileDraft;\n onApply: (next: Record<string, unknown>) => void;\n onClose: () => void;\n}) {\n const baseUrl = browserBaseUrl(connectionID);\n const descriptor = useQuery({\n queryKey: [\"profile-builder-descriptor\", connectionID],\n queryFn: () => fetchJSON<BrowserDescriptor>(baseUrl),\n retry: 0,\n });\n const initialProviderOptions = useMemo(\n () => ({ ...rootValue.provider?.options }),\n [rootValue.provider?.options],\n );\n const [query, setQuery] = useState(rootValue.query ?? \"\");\n const [search, setSearch] = useState<EsSearch | undefined>(\n () => initialProviderOptions.search as EsSearch | undefined,\n );\n const [params, setParams] = useState<ParamDraft[]>(\n () => rootValue.params ?? [],\n );\n const [liveOptions, setLiveOptions] = useState<Record<string, unknown>>(\n initialProviderOptions,\n );\n const [catalogOptions, setCatalogOptions] = useState<Record<string, unknown>>(\n {},\n );\n const [sampleParams, setSampleParams] = useState<Record<string, unknown>>(\n () => defaultParamValues(params),\n );\n const [sampleColumns, setSampleColumns] = useState<ProfileColumn[]>([]);\n const [selectedColumns, setSelectedColumns] = useState<Set<string>>(\n () => new Set(),\n );\n const [timestampColumn, setTimestampColumn] = useState(\n () =>\n rootValue.columns?.find((column) => column.kind === \"timestamp\")?.name ??\n \"\",\n );\n const [selectedDatabase, setSelectedDatabase] = useState(\"\");\n const [limits, setLimits] = useState<ProfileRowLimits | undefined>(\n () => rootValue.limits,\n );\n\n useEffect(() => {\n if (!query && descriptor.data?.defaultQuery) {\n setQuery(descriptor.data.defaultQuery);\n }\n }, [descriptor.data?.defaultQuery, query]);\n\n const explicitTargetKind =\n liveOptions.targetKind ?? initialProviderOptions.targetKind;\n const inspection = useInspection({\n cacheKey: \"profile-builder-inspection\",\n id: connectionID,\n baseUrl,\n enabled: descriptor.data?.catalog === true,\n database: selectedDatabase,\n fallbackDatabase: String(initialProviderOptions.database ?? \"\"),\n target: String(liveOptions.index ?? initialProviderOptions.index ?? \"\"),\n ...(typeof explicitTargetKind === \"string\"\n ? { targetKind: explicitTargetKind }\n : {}),\n });\n const browserOptions = useMemo(\n () =>\n mergeProviderOptions({\n layers: [\n descriptor.data?.initialOptions,\n initialProviderOptions,\n catalogOptions,\n ],\n database: inspection.sqlDatabase,\n keepTargetKind: true,\n }),\n [\n catalogOptions,\n descriptor.data?.initialOptions,\n initialProviderOptions,\n inspection.sqlDatabase,\n ],\n );\n // The specification is authored here, not merged from a layer, so it is\n // stamped on last — including its absence, which a lower layer would\n // otherwise reinstate after the author switched back to raw DSL.\n const effectiveOptions = useCallback(\n (options: Record<string, unknown>) => {\n const merged = mergeProviderOptions({\n layers: [initialProviderOptions, catalogOptions, options],\n database: inspection.sqlDatabase,\n });\n if (search) merged.search = search;\n else delete merged.search;\n return merged;\n },\n [catalogOptions, initialProviderOptions, inspection.sqlDatabase, search],\n );\n\n const paramSchema = useMemo(() => sampleParamSchema(params), [params]);\n const existingColumns = rootValue.columns ?? [];\n const existingNames = useMemo(\n () => new Set(existingColumns.map((column) => column.name)),\n [existingColumns],\n );\n\n const applyDraft = (mode: \"query\" | \"merge\" | \"replace\") => {\n const chosen = mapTimestampColumn(\n sampleColumns.filter((column) => selectedColumns.has(column.name)),\n timestampColumn,\n );\n let columns = existingColumns;\n if (mode === \"merge\") {\n columns = mapTimestampColumn(\n [\n ...existingColumns,\n ...chosen.filter((column) => !existingNames.has(column.name)),\n ],\n timestampColumn,\n );\n } else if (mode === \"replace\") {\n if (\n existingColumns.length > 0 &&\n !window.confirm(\n `Replace ${existingColumns.length} configured column${existingColumns.length === 1 ? \"\" : \"s\"}?`,\n )\n ) {\n return;\n }\n columns = chosen;\n }\n const next: ProfileDraft = withProfileLimits(\n {\n ...rootValue,\n query,\n params,\n provider: {\n ...rootValue.provider,\n options: effectiveOptions(liveOptions),\n },\n ...(mode === \"query\" ? {} : { columns }),\n },\n limits,\n );\n onApply(next);\n onClose();\n };\n\n const footer = (\n <div className=\"flex flex-wrap items-center justify-end gap-2\">\n <Button type=\"button\" variant=\"ghost\" onClick={onClose}>\n Cancel\n </Button>\n <Button\n type=\"button\"\n variant=\"outline\"\n disabled={!query.trim() && !search}\n onClick={() => applyDraft(\"query\")}\n >\n <Icon icon={UiCheck} className=\"size-4\" />\n Use query\n </Button>\n <Button\n type=\"button\"\n variant=\"outline\"\n disabled={selectedColumns.size === 0}\n onClick={() => applyDraft(\"merge\")}\n >\n <Icon icon={UiColumns} className=\"size-4\" />\n Merge selected\n </Button>\n <Button\n type=\"button\"\n disabled={selectedColumns.size === 0}\n onClick={() => applyDraft(\"replace\")}\n >\n <Icon icon={UiSqlColumn} className=\"size-4\" />\n Replace columns\n </Button>\n </div>\n );\n\n return (\n <Modal\n open\n onClose={onClose}\n title={`Build profile from ${connectionID}`}\n size=\"full\"\n className={profileBuilderModalClassName}\n footer={footer}\n >\n <div className=\"flex h-full min-h-0 flex-col gap-3\">\n {Object.keys(paramSchema.properties ?? {}).length > 0 ? (\n <div className=\"shrink-0 rounded-md border bg-card px-3 py-2\">\n <div className=\"mb-2 text-xs font-medium text-muted-foreground\">\n Temporary sample parameters (not saved)\n </div>\n <JsonSchemaForm\n schema={paramSchema}\n value={sampleParams}\n onChange={setSampleParams}\n size=\"sm\"\n inline\n showPreferencesMenu={false}\n persistPreferences={false}\n />\n </div>\n ) : null}\n {descriptor.isLoading ? (\n <WorkspaceMessage>Loading connection browser…</WorkspaceMessage>\n ) : descriptor.isError ? (\n <WorkspaceMessage error>\n {errorMessage(\n descriptor.error,\n \"Unable to load this connection browser\",\n )}\n </WorkspaceMessage>\n ) : descriptor.data ? (\n <ConnectionQueryWorkspace\n id={`profile-builder:${connectionID}`}\n title=\"Profile query\"\n descriptor={descriptor.data}\n inspection={inspection}\n onDatabaseChange={setSelectedDatabase}\n query={query}\n onQueryChange={setQuery}\n options={browserOptions}\n onOptionsChange={setLiveOptions}\n search={search}\n onSearchChange={(transition) => {\n setSearch(transition.search);\n setQuery(transition.query);\n }}\n {...(limits ? { limits } : {})}\n onLimitsChange={setLimits}\n params={params}\n onParamMappingChange={(edit) => {\n setSearch(edit.search);\n setParams(edit.params);\n }}\n paramValues={sampleParams}\n paramRoles={paramRoles(params)}\n compileBaseUrl={baseUrl}\n className=\"h-full min-h-0\"\n onCatalogSelect={(node) => {\n if (node.query) setQuery(node.query);\n const nextOptions = node.options ?? {};\n setCatalogOptions(nextOptions);\n setLiveOptions({ ...browserOptions, ...nextOptions });\n }}\n execute={async (request) => {\n const result = await fetchJSON<SampleResult>(\n \"/api/v1/profile/sample\",\n {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({\n profile: {\n ...rootValue,\n params,\n profile: rootValue.profile || \"sample\",\n query: request.query,\n provider: {\n ...rootValue.provider,\n options: effectiveOptions(request.options),\n },\n },\n params: sampleParams,\n ...(request.pagination\n ? { pagination: request.pagination }\n : {}),\n ...(request.debug ? { debug: true } : {}),\n }),\n },\n );\n setSampleColumns(result.columns ?? []);\n setSelectedColumns(\n new Set((result.columns ?? []).map((column) => column.name)),\n );\n return result;\n }}\n renderResults={({ defaultView }) => (\n <div className=\"flex min-h-0 flex-1 flex-col gap-3\">\n <div className=\"min-h-0 flex-1\">{defaultView}</div>\n {sampleColumns.length > 0 ? (\n <ColumnPicker\n columns={sampleColumns}\n selected={selectedColumns}\n existing={existingNames}\n onChange={setSelectedColumns}\n timestampColumn={timestampColumn}\n onTimestampColumnChange={setTimestampColumn}\n />\n ) : null}\n </div>\n )}\n />\n ) : (\n <WorkspaceMessage>\n This saved connection does not expose a query browser.\n </WorkspaceMessage>\n )}\n </div>\n </Modal>\n );\n}\n\nfunction WorkspaceMessage({\n children,\n error = false,\n}: {\n children: ReactNode;\n error?: boolean;\n}) {\n return (\n <div\n className={`grid min-h-80 flex-1 place-items-center rounded-md border border-dashed p-6 text-sm ${error ? \"border-destructive/40 text-destructive\" : \"text-muted-foreground\"}`}\n >\n {children}\n </div>\n );\n}\n\nfunction errorMessage(error: unknown, fallback: string): string {\n return error instanceof Error && error.message.trim()\n ? error.message.trim()\n : fallback;\n}\n"],"names":["browserBaseUrl","useQuery","fetchJSON","useMemo","_a","useState","defaultParamValues","_b","useEffect","useInspection","mergeProviderOptions","useCallback","sampleParamSchema","mapTimestampColumn","withProfileLimits","jsxs","jsx","Button","Icon","UiCheck","UiColumns","UiSqlColumn","Modal","JsonSchemaForm","ConnectionQueryWorkspace","paramRoles","ColumnPicker"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"profileBuilderWorkspace.cjs","sources":["../../../src/profiles/editor/profileBuilderWorkspace.tsx"],"sourcesContent":["import { JsonSchemaForm } from \"../../components/JsonSchemaForm\";\nimport { Button } from \"../../components/button\";\nimport { debugCaptureHeaders } from \"../../data/debugConsoleSignal\";\nimport { Icon } from \"../../data/Icon\";\nimport { Modal } from \"../../overlay/Modal\";\nimport { UiCheck, UiColumns, UiSqlColumn } from \"../../icons\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ReactNode,\n} from \"react\";\nimport {\n browserBaseUrl,\n fetchJSON,\n mergeProviderOptions,\n type BrowserDescriptor,\n type ProfileRowLimits,\n} from \"../connections/connectionBrowserModel\";\nimport { ConnectionQueryWorkspace } from \"../connections/connectionQueryWorkspace\";\nimport { useInspection } from \"../connections/useInspection\";\nimport { profileApiPath } from \"../profileApi\";\nimport type { EsSearch } from \"../elasticsearch/esQueryBuilderModel\";\nimport {\n ColumnPicker,\n type ProfileColumn,\n} from \"../fields/profileColumnPicker\";\nimport {\n withProfileLimits,\n type ParamDraft,\n type ProfileProvider,\n} from \"../wizard/profileWizardModel\";\nimport {\n defaultParamValues,\n paramRoles,\n} from \"../elasticsearch/esQueryBuilderForm\";\nimport { mapTimestampColumn } from \"../fields/profileColumnModel\";\nimport { sampleParamSchema } from \"./profileBuilderModel\";\nimport { profileSamplePayload } from \"../query/profileSamplePayload\";\nimport { lookupProfileSampleFilterValues } from \"../query/profileSampleFilterLookup\";\nimport {\n profileSampleFilterColumns,\n profileSampleQueryResult,\n type ProfileSampleResponse,\n} from \"../query/profileSampleResult\";\n\n// Same story as ProfileColumn: one ProfileProvider, defined with the draft\n// model. The copy here had drifted to carry `role`, which the canonical type's\n// index signature already admits.\nexport type { ProfileProvider };\n\nexport type ProfileDraft = Record<string, unknown> & {\n profile?: string;\n query?: string;\n provider?: ProfileProvider;\n params?: ParamDraft[];\n columns?: ProfileColumn[];\n /** The row caps this profile sets for itself; unset ones take their default. */\n limits?: ProfileRowLimits;\n};\n\n// Modal's body is a flex child. It must be allowed to shrink and must not own\n// scrolling, otherwise QueryBrowser's intrinsic minimum height expands the\n// whole workspace and pushes the editor/results below the dialog viewport.\n//\n// These are utilities rather than a stylesheet on purpose: a library CSS asset\n// only reaches a consumer that remembers to import it, whereas Tailwind scans\n// this source and folds the rules into the dist/styles.css every consumer\n// already loads.\nexport const profileBuilderModalClassName =\n \"h-[calc(100dvh-2rem)] [&>[data-slot=modal-body]]:flex [&>[data-slot=modal-body]]:min-h-0 [&>[data-slot=modal-body]]:overflow-hidden [&>[data-slot=modal-body]>*]:flex-1 [&>[data-slot=modal-body]>*]:h-auto [&>[data-slot=modal-body]>*]:min-h-0\";\n\nexport function ProfileBuilderWorkspace({\n connectionID,\n rootValue,\n onApply,\n onClose,\n}: {\n connectionID: string;\n rootValue: ProfileDraft;\n onApply: (next: Record<string, unknown>) => void;\n onClose: () => void;\n}) {\n const baseUrl = browserBaseUrl(connectionID);\n const descriptor = useQuery({\n queryKey: [\"profile-builder-descriptor\", connectionID],\n queryFn: () => fetchJSON<BrowserDescriptor>(baseUrl),\n retry: 0,\n });\n const initialProviderOptions = useMemo(\n () => ({ ...rootValue.provider?.options }),\n [rootValue.provider?.options],\n );\n const [query, setQuery] = useState(rootValue.query ?? \"\");\n const [search, setSearch] = useState<EsSearch | undefined>(\n () => initialProviderOptions.search as EsSearch | undefined,\n );\n const [params, setParams] = useState<ParamDraft[]>(\n () => rootValue.params ?? [],\n );\n const [liveOptions, setLiveOptions] = useState<Record<string, unknown>>(\n initialProviderOptions,\n );\n const [catalogOptions, setCatalogOptions] = useState<Record<string, unknown>>(\n {},\n );\n const [sampleParams, setSampleParams] = useState<Record<string, unknown>>(\n () => defaultParamValues(params),\n );\n const [sampleColumns, setSampleColumns] = useState<ProfileColumn[]>([]);\n const [selectedColumns, setSelectedColumns] = useState<Set<string>>(\n () => new Set(),\n );\n const [timestampColumn, setTimestampColumn] = useState(\n () =>\n rootValue.columns?.find((column) => column.kind === \"timestamp\")?.name ??\n \"\",\n );\n const [selectedDatabase, setSelectedDatabase] = useState(\"\");\n const [limits, setLimits] = useState<ProfileRowLimits | undefined>(\n () => rootValue.limits,\n );\n const filterColumns = useRef<ProfileColumn[]>([]);\n\n useEffect(() => {\n if (!query && descriptor.data?.defaultQuery) {\n setQuery(descriptor.data.defaultQuery);\n }\n }, [descriptor.data?.defaultQuery, query]);\n\n const explicitTargetKind =\n liveOptions.targetKind ?? initialProviderOptions.targetKind;\n const targetOption =\n descriptor.data?.target?.kind === \"index\"\n ? descriptor.data.target.option\n : \"\";\n const inspection = useInspection({\n cacheKey: \"profile-builder-inspection\",\n id: connectionID,\n baseUrl,\n enabled: descriptor.data?.catalog === true,\n database: selectedDatabase,\n fallbackDatabase: String(initialProviderOptions.database ?? \"\"),\n target: targetOption\n ? String(\n liveOptions[targetOption] ??\n initialProviderOptions[targetOption] ??\n \"\",\n )\n : \"\",\n ...(typeof explicitTargetKind === \"string\"\n ? { targetKind: explicitTargetKind }\n : {}),\n });\n const browserOptions = useMemo(\n () =>\n mergeProviderOptions({\n layers: [\n descriptor.data?.initialOptions,\n initialProviderOptions,\n catalogOptions,\n ],\n database: inspection.sqlDatabase,\n keepTargetKind: true,\n }),\n [\n catalogOptions,\n descriptor.data?.initialOptions,\n initialProviderOptions,\n inspection.sqlDatabase,\n ],\n );\n // The specification is authored here, not merged from a layer, so it is\n // stamped on last — including its absence, which a lower layer would\n // otherwise reinstate after the author switched back to raw DSL.\n const effectiveOptions = useCallback(\n (options: Record<string, unknown>) => {\n const merged = mergeProviderOptions({\n layers: [initialProviderOptions, catalogOptions, options],\n database: inspection.sqlDatabase,\n });\n if (search) merged.search = search;\n else delete merged.search;\n return merged;\n },\n [catalogOptions, initialProviderOptions, inspection.sqlDatabase, search],\n );\n\n const paramSchema = useMemo(() => sampleParamSchema(params), [params]);\n const existingColumns = rootValue.columns ?? [];\n const existingNames = useMemo(\n () => new Set(existingColumns.map((column) => column.name)),\n [existingColumns],\n );\n\n const applyDraft = (mode: \"query\" | \"merge\" | \"replace\") => {\n const chosen = mapTimestampColumn(\n sampleColumns.filter((column) => selectedColumns.has(column.name)),\n timestampColumn,\n );\n let columns = existingColumns;\n if (mode === \"merge\") {\n columns = mapTimestampColumn(\n [\n ...existingColumns,\n ...chosen.filter((column) => !existingNames.has(column.name)),\n ],\n timestampColumn,\n );\n } else if (mode === \"replace\") {\n if (\n existingColumns.length > 0 &&\n !window.confirm(\n `Replace ${existingColumns.length} configured column${existingColumns.length === 1 ? \"\" : \"s\"}?`,\n )\n ) {\n return;\n }\n columns = chosen;\n }\n const next: ProfileDraft = withProfileLimits(\n {\n ...rootValue,\n query,\n params,\n provider: {\n ...rootValue.provider,\n options: effectiveOptions(liveOptions),\n },\n ...(mode === \"query\" ? {} : { columns }),\n },\n limits,\n );\n onApply(next);\n onClose();\n };\n\n const footer = (\n <div className=\"flex flex-wrap items-center justify-end gap-2\">\n <Button type=\"button\" variant=\"ghost\" onClick={onClose}>\n Cancel\n </Button>\n <Button\n type=\"button\"\n variant=\"outline\"\n disabled={!query.trim() && !search}\n onClick={() => applyDraft(\"query\")}\n >\n <Icon icon={UiCheck} className=\"size-4\" />\n Use query\n </Button>\n <Button\n type=\"button\"\n variant=\"outline\"\n disabled={selectedColumns.size === 0}\n onClick={() => applyDraft(\"merge\")}\n >\n <Icon icon={UiColumns} className=\"size-4\" />\n Merge selected\n </Button>\n <Button\n type=\"button\"\n disabled={selectedColumns.size === 0}\n onClick={() => applyDraft(\"replace\")}\n >\n <Icon icon={UiSqlColumn} className=\"size-4\" />\n Replace columns\n </Button>\n </div>\n );\n\n return (\n <Modal\n open\n onClose={onClose}\n title={`Build profile from ${connectionID}`}\n size=\"full\"\n className={profileBuilderModalClassName}\n footer={footer}\n >\n <div className=\"flex h-full min-h-0 flex-col gap-3\">\n {Object.keys(paramSchema.properties ?? {}).length > 0 ? (\n <div className=\"shrink-0 rounded-md border bg-card px-3 py-2\">\n <div className=\"mb-2 text-xs font-medium text-muted-foreground\">\n Temporary sample parameters (not saved)\n </div>\n <JsonSchemaForm\n schema={paramSchema}\n value={sampleParams}\n onChange={setSampleParams}\n size=\"sm\"\n inline\n showPreferencesMenu={false}\n persistPreferences={false}\n />\n </div>\n ) : null}\n {descriptor.isLoading ? (\n <WorkspaceMessage>Loading connection browser…</WorkspaceMessage>\n ) : descriptor.isError ? (\n <WorkspaceMessage error>\n {errorMessage(\n descriptor.error,\n \"Unable to load this connection browser\",\n )}\n </WorkspaceMessage>\n ) : descriptor.data ? (\n <ConnectionQueryWorkspace\n id={`profile-builder:${connectionID}`}\n title=\"Profile query\"\n descriptor={descriptor.data}\n inspection={inspection}\n onDatabaseChange={setSelectedDatabase}\n query={query}\n onQueryChange={setQuery}\n options={browserOptions}\n onOptionsChange={setLiveOptions}\n search={search}\n onSearchChange={(transition) => {\n setSearch(transition.search);\n setQuery(transition.query);\n }}\n {...(limits ? { limits } : {})}\n onLimitsChange={setLimits}\n params={params}\n onParamMappingChange={(edit) => {\n setSearch(edit.search);\n setParams(edit.params);\n }}\n paramValues={sampleParams}\n paramRoles={paramRoles(params)}\n compileBaseUrl={baseUrl}\n className=\"h-full min-h-0\"\n onCatalogSelect={(node) => {\n if (node.query) setQuery(node.query);\n const nextOptions = node.options ?? {};\n setCatalogOptions(nextOptions);\n setLiveOptions({ ...browserOptions, ...nextOptions });\n }}\n lookupFilterValues={(request) =>\n lookupProfileSampleFilterValues({\n draft: {\n ...rootValue,\n params,\n profile: rootValue.profile || \"sample\",\n query: request.query,\n provider: {\n ...rootValue.provider,\n options: effectiveOptions(request.options),\n },\n },\n params: sampleParams,\n filterColumns: filterColumns.current,\n request,\n })\n }\n execute={async (request) => {\n const sampleDraft: ProfileDraft = {\n ...rootValue,\n params,\n profile: rootValue.profile || \"sample\",\n query: request.query,\n provider: {\n ...rootValue.provider,\n options: effectiveOptions(request.options),\n },\n };\n const result = await fetchJSON<ProfileSampleResponse>(\n profileApiPath(\"profile/sample\"),\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n ...debugCaptureHeaders(),\n },\n body: JSON.stringify(\n profileSamplePayload({\n draft: sampleDraft,\n request,\n params: sampleParams,\n filterColumns: filterColumns.current,\n }),\n ),\n },\n );\n filterColumns.current = profileSampleFilterColumns(result);\n setSampleColumns(result.columns ?? []);\n setSelectedColumns(\n new Set((result.columns ?? []).map((column) => column.name)),\n );\n return profileSampleQueryResult(result);\n }}\n renderResults={({ defaultView }) => (\n <div className=\"flex min-h-0 flex-1 flex-col gap-3\">\n <div className=\"min-h-0 flex-1\">{defaultView}</div>\n {sampleColumns.length > 0 ? (\n <ColumnPicker\n columns={sampleColumns}\n selected={selectedColumns}\n existing={existingNames}\n onChange={setSelectedColumns}\n timestampColumn={timestampColumn}\n onTimestampColumnChange={setTimestampColumn}\n />\n ) : null}\n </div>\n )}\n />\n ) : (\n <WorkspaceMessage>\n This saved connection does not expose a query browser.\n </WorkspaceMessage>\n )}\n </div>\n </Modal>\n );\n}\n\nfunction WorkspaceMessage({\n children,\n error = false,\n}: {\n children: ReactNode;\n error?: boolean;\n}) {\n return (\n <div\n className={`grid min-h-80 flex-1 place-items-center rounded-md border border-dashed p-6 text-sm ${error ? \"border-destructive/40 text-destructive\" : \"text-muted-foreground\"}`}\n >\n {children}\n </div>\n );\n}\n\nfunction errorMessage(error: unknown, fallback: string): string {\n return error instanceof Error && error.message.trim()\n ? error.message.trim()\n : fallback;\n}\n"],"names":["browserBaseUrl","useQuery","fetchJSON","useMemo","_a","useState","defaultParamValues","_b","useRef","useEffect","useInspection","mergeProviderOptions","useCallback","sampleParamSchema","mapTimestampColumn","withProfileLimits","jsxs","jsx","Button","Icon","UiCheck","UiColumns","UiSqlColumn","Modal","JsonSchemaForm","ConnectionQueryWorkspace","paramRoles","lookupProfileSampleFilterValues","profileApiPath","debugCaptureHeaders","profileSamplePayload","profileSampleFilterColumns","profileSampleQueryResult","ColumnPicker"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profileBuilderWorkspace.d.ts","sourceRoot":"","sources":["../../../src/profiles/editor/profileBuilderWorkspace.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"profileBuilderWorkspace.d.ts","sourceRoot":"","sources":["../../../src/profiles/editor/profileBuilderWorkspace.tsx"],"names":[],"mappings":"AAeA,OAAO,EAKL,KAAK,gBAAgB,EACtB,MAAM,uCAAuC,CAAC;AAK/C,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,eAAe,EACrB,MAAM,8BAA8B,CAAC;AAkBtC,YAAY,EAAE,eAAe,EAAE,CAAC;AAEhC,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;IACtB,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B,gFAAgF;IAChF,MAAM,CAAC,EAAE,gBAAgB,CAAC;CAC3B,CAAC;AAUF,eAAO,MAAM,4BAA4B,qPAC2M,CAAC;AAErP,wBAAgB,uBAAuB,CAAC,EACtC,YAAY,EACZ,SAAS,EACT,OAAO,EACP,OAAO,GACR,EAAE;IACD,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,YAAY,CAAC;IACxB,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACjD,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,2CA8UA"}
|