@flanksource/clicky-ui 0.3.17 → 0.3.19
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/ai.cjs +12 -6
- package/dist/ai.cjs.map +1 -1
- package/dist/ai.js +10 -4
- package/dist/ai.js.map +1 -1
- package/dist/chat.cjs +36 -0
- package/dist/chat.cjs.map +1 -1
- package/dist/chat.js +37 -1
- package/dist/chat.js.map +1 -1
- package/dist/components/Combobox.cjs +122 -153
- package/dist/components/Combobox.cjs.map +1 -1
- package/dist/components/Combobox.d.ts.map +1 -1
- package/dist/components/Combobox.js +124 -155
- package/dist/components/Combobox.js.map +1 -1
- package/dist/components/ComboboxControl.cjs +145 -0
- package/dist/components/ComboboxControl.cjs.map +1 -0
- package/dist/components/ComboboxControl.d.ts +37 -0
- package/dist/components/ComboboxControl.d.ts.map +1 -0
- package/dist/components/ComboboxControl.js +145 -0
- package/dist/components/ComboboxControl.js.map +1 -0
- package/dist/components/ComboboxMenu.cjs +35 -14
- package/dist/components/ComboboxMenu.cjs.map +1 -1
- package/dist/components/ComboboxMenu.d.ts.map +1 -1
- package/dist/components/ComboboxMenu.js +35 -14
- package/dist/components/ComboboxMenu.js.map +1 -1
- package/dist/components/ComboboxTags.cjs +40 -0
- package/dist/components/ComboboxTags.cjs.map +1 -0
- package/dist/components/ComboboxTags.d.ts +8 -0
- package/dist/components/ComboboxTags.d.ts.map +1 -0
- package/dist/components/ComboboxTags.js +40 -0
- package/dist/components/ComboboxTags.js.map +1 -0
- package/dist/components/EndpointSelector.model.cjs +96 -0
- package/dist/components/EndpointSelector.model.cjs.map +1 -0
- package/dist/components/EndpointSelector.model.d.ts +2 -0
- package/dist/components/EndpointSelector.model.d.ts.map +1 -1
- package/dist/components/EndpointSelector.model.js +96 -0
- package/dist/components/EndpointSelector.model.js.map +1 -0
- package/dist/components/ErrorWrapper.cjs +168 -0
- package/dist/components/ErrorWrapper.cjs.map +1 -0
- package/dist/components/ErrorWrapper.d.ts +19 -0
- package/dist/components/ErrorWrapper.d.ts.map +1 -0
- package/dist/components/ErrorWrapper.js +168 -0
- package/dist/components/ErrorWrapper.js.map +1 -0
- package/dist/components/FilterBar.cjs +116 -4
- package/dist/components/FilterBar.cjs.map +1 -1
- package/dist/components/FilterBar.d.ts +37 -2
- package/dist/components/FilterBar.d.ts.map +1 -1
- package/dist/components/FilterBar.js +116 -4
- package/dist/components/FilterBar.js.map +1 -1
- package/dist/components/JSONPathField.cjs +112 -0
- package/dist/components/JSONPathField.cjs.map +1 -0
- package/dist/components/JSONPathField.d.ts +36 -0
- package/dist/components/JSONPathField.d.ts.map +1 -0
- package/dist/components/JSONPathField.js +112 -0
- package/dist/components/JSONPathField.js.map +1 -0
- package/dist/components/JSONPathPlayground.cjs +225 -0
- package/dist/components/JSONPathPlayground.cjs.map +1 -0
- package/dist/components/JSONPathPlayground.d.ts +59 -0
- package/dist/components/JSONPathPlayground.d.ts.map +1 -0
- package/dist/components/JSONPathPlayground.js +225 -0
- package/dist/components/JSONPathPlayground.js.map +1 -0
- package/dist/components/JsonSchemaForm.cjs +8 -4
- package/dist/components/JsonSchemaForm.cjs.map +1 -1
- package/dist/components/JsonSchemaForm.d.ts.map +1 -1
- package/dist/components/JsonSchemaForm.js +8 -4
- package/dist/components/JsonSchemaForm.js.map +1 -1
- package/dist/components/OnePasswordSelector.cjs +178 -0
- package/dist/components/OnePasswordSelector.cjs.map +1 -0
- package/dist/components/OnePasswordSelector.d.ts +8 -0
- package/dist/components/OnePasswordSelector.d.ts.map +1 -0
- package/dist/components/OnePasswordSelector.js +178 -0
- package/dist/components/OnePasswordSelector.js.map +1 -0
- package/dist/components/OnePasswordSelector.model.cjs +31 -0
- package/dist/components/OnePasswordSelector.model.cjs.map +1 -0
- package/dist/components/OnePasswordSelector.model.d.ts +27 -0
- package/dist/components/OnePasswordSelector.model.d.ts.map +1 -0
- package/dist/components/OnePasswordSelector.model.js +31 -0
- package/dist/components/OnePasswordSelector.model.js.map +1 -0
- package/dist/components/SecretFormField.cjs +142 -0
- package/dist/components/SecretFormField.cjs.map +1 -0
- package/dist/components/SecretFormField.d.ts +9 -0
- package/dist/components/SecretFormField.d.ts.map +1 -0
- package/dist/components/SecretFormField.js +142 -0
- package/dist/components/SecretFormField.js.map +1 -0
- package/dist/components/SecretKeySelector.cjs +20 -14
- package/dist/components/SecretKeySelector.cjs.map +1 -1
- package/dist/components/SecretKeySelector.d.ts +4 -1
- package/dist/components/SecretKeySelector.d.ts.map +1 -1
- package/dist/components/SecretKeySelector.js +20 -14
- package/dist/components/SecretKeySelector.js.map +1 -1
- package/dist/components/TreePickerField.cjs +71 -27
- package/dist/components/TreePickerField.cjs.map +1 -1
- package/dist/components/TreePickerField.d.ts +31 -2
- package/dist/components/TreePickerField.d.ts.map +1 -1
- package/dist/components/TreePickerField.js +72 -28
- package/dist/components/TreePickerField.js.map +1 -1
- package/dist/components/TriStateToggle.cjs +53 -0
- package/dist/components/TriStateToggle.cjs.map +1 -0
- package/dist/components/TriStateToggle.d.ts +27 -0
- package/dist/components/TriStateToggle.d.ts.map +1 -0
- package/dist/components/TriStateToggle.js +53 -0
- package/dist/components/TriStateToggle.js.map +1 -0
- package/dist/components/combobox-types.d.ts +25 -1
- package/dist/components/combobox-types.d.ts.map +1 -1
- package/dist/components/combobox-utils.cjs +26 -0
- package/dist/components/combobox-utils.cjs.map +1 -1
- package/dist/components/combobox-utils.d.ts +10 -0
- package/dist/components/combobox-utils.d.ts.map +1 -1
- package/dist/components/combobox-utils.js +26 -0
- package/dist/components/combobox-utils.js.map +1 -1
- package/dist/components/filter-bar-utils.cjs +12 -0
- package/dist/components/filter-bar-utils.cjs.map +1 -1
- package/dist/components/filter-bar-utils.d.ts.map +1 -1
- package/dist/components/filter-bar-utils.js +12 -0
- package/dist/components/filter-bar-utils.js.map +1 -1
- package/dist/components/jotai-bindings-core.cjs.map +1 -1
- package/dist/components/jotai-bindings-core.d.ts +4 -1
- package/dist/components/jotai-bindings-core.d.ts.map +1 -1
- package/dist/components/jotai-bindings-core.js.map +1 -1
- package/dist/components/json-schema-form-accordion-array.cjs +290 -0
- package/dist/components/json-schema-form-accordion-array.cjs.map +1 -0
- package/dist/components/json-schema-form-accordion-array.d.ts +7 -0
- package/dist/components/json-schema-form-accordion-array.d.ts.map +1 -0
- package/dist/components/json-schema-form-accordion-array.js +290 -0
- package/dist/components/json-schema-form-accordion-array.js.map +1 -0
- package/dist/components/json-schema-form-array.cjs +99 -110
- package/dist/components/json-schema-form-array.cjs.map +1 -1
- package/dist/components/json-schema-form-array.d.ts +1 -1
- package/dist/components/json-schema-form-array.d.ts.map +1 -1
- package/dist/components/json-schema-form-array.js +98 -109
- package/dist/components/json-schema-form-array.js.map +1 -1
- package/dist/components/json-schema-form-error-display.cjs +4 -2
- package/dist/components/json-schema-form-error-display.cjs.map +1 -1
- package/dist/components/json-schema-form-error-display.d.ts +4 -2
- package/dist/components/json-schema-form-error-display.d.ts.map +1 -1
- package/dist/components/json-schema-form-error-display.js +4 -2
- package/dist/components/json-schema-form-error-display.js.map +1 -1
- package/dist/components/json-schema-form-extensions.cjs +10 -0
- package/dist/components/json-schema-form-extensions.cjs.map +1 -0
- package/dist/components/json-schema-form-extensions.d.ts +8 -0
- package/dist/components/json-schema-form-extensions.d.ts.map +1 -0
- package/dist/components/json-schema-form-extensions.js +10 -0
- package/dist/components/json-schema-form-extensions.js.map +1 -0
- package/dist/components/json-schema-form-fields.cjs +25 -101
- package/dist/components/json-schema-form-fields.cjs.map +1 -1
- package/dist/components/json-schema-form-fields.d.ts +1 -32
- package/dist/components/json-schema-form-fields.d.ts.map +1 -1
- package/dist/components/json-schema-form-fields.js +28 -104
- package/dist/components/json-schema-form-fields.js.map +1 -1
- package/dist/components/json-schema-form-item-summary.cjs +131 -0
- package/dist/components/json-schema-form-item-summary.cjs.map +1 -0
- package/dist/components/json-schema-form-item-summary.d.ts +13 -0
- package/dist/components/json-schema-form-item-summary.d.ts.map +1 -0
- package/dist/components/json-schema-form-item-summary.js +131 -0
- package/dist/components/json-schema-form-item-summary.js.map +1 -0
- package/dist/components/json-schema-form-layout.cjs +156 -0
- package/dist/components/json-schema-form-layout.cjs.map +1 -0
- package/dist/components/json-schema-form-layout.d.ts +43 -0
- package/dist/components/json-schema-form-layout.d.ts.map +1 -0
- package/dist/components/json-schema-form-layout.js +156 -0
- package/dist/components/json-schema-form-layout.js.map +1 -0
- package/dist/components/json-schema-form-lookup-tree.cjs +149 -0
- package/dist/components/json-schema-form-lookup-tree.cjs.map +1 -0
- package/dist/components/json-schema-form-lookup-tree.d.ts +22 -0
- package/dist/components/json-schema-form-lookup-tree.d.ts.map +1 -0
- package/dist/components/json-schema-form-lookup-tree.js +149 -0
- package/dist/components/json-schema-form-lookup-tree.js.map +1 -0
- package/dist/components/json-schema-form-object.cjs +11 -4
- package/dist/components/json-schema-form-object.cjs.map +1 -1
- package/dist/components/json-schema-form-object.d.ts.map +1 -1
- package/dist/components/json-schema-form-object.js +11 -4
- package/dist/components/json-schema-form-object.js.map +1 -1
- package/dist/components/json-schema-form-render.cjs +53 -29
- package/dist/components/json-schema-form-render.cjs.map +1 -1
- package/dist/components/json-schema-form-render.d.ts.map +1 -1
- package/dist/components/json-schema-form-render.js +53 -29
- package/dist/components/json-schema-form-render.js.map +1 -1
- package/dist/components/json-schema-form-resolve.cjs +62 -13
- package/dist/components/json-schema-form-resolve.cjs.map +1 -1
- package/dist/components/json-schema-form-resolve.d.ts +1 -0
- package/dist/components/json-schema-form-resolve.d.ts.map +1 -1
- package/dist/components/json-schema-form-resolve.js +62 -13
- package/dist/components/json-schema-form-resolve.js.map +1 -1
- package/dist/components/json-schema-form-table-array.cjs +123 -0
- package/dist/components/json-schema-form-table-array.cjs.map +1 -0
- package/dist/components/json-schema-form-table-array.d.ts +7 -0
- package/dist/components/json-schema-form-table-array.d.ts.map +1 -0
- package/dist/components/json-schema-form-table-array.js +123 -0
- package/dist/components/json-schema-form-table-array.js.map +1 -0
- package/dist/components/json-schema-form-tone.cjs +34 -0
- package/dist/components/json-schema-form-tone.cjs.map +1 -0
- package/dist/components/json-schema-form-tone.d.ts +8 -0
- package/dist/components/json-schema-form-tone.d.ts.map +1 -0
- package/dist/components/json-schema-form-tone.js +34 -0
- package/dist/components/json-schema-form-tone.js.map +1 -0
- package/dist/components/json-schema-form-types.d.ts +88 -10
- package/dist/components/json-schema-form-types.d.ts.map +1 -1
- package/dist/components/json-schema-form-utils.cjs +47 -4
- package/dist/components/json-schema-form-utils.cjs.map +1 -1
- package/dist/components/json-schema-form-utils.d.ts +19 -4
- package/dist/components/json-schema-form-utils.d.ts.map +1 -1
- package/dist/components/json-schema-form-utils.js +47 -4
- package/dist/components/json-schema-form-utils.js.map +1 -1
- package/dist/components/jsonPathTree.cjs +189 -0
- package/dist/components/jsonPathTree.cjs.map +1 -0
- package/dist/components/jsonPathTree.d.ts +92 -0
- package/dist/components/jsonPathTree.d.ts.map +1 -0
- package/dist/components/jsonPathTree.js +189 -0
- package/dist/components/jsonPathTree.js.map +1 -0
- package/dist/components/secret-form-extension.cjs +30 -0
- package/dist/components/secret-form-extension.cjs.map +1 -0
- package/dist/components/secret-form-extension.d.ts +23 -0
- package/dist/components/secret-form-extension.d.ts.map +1 -0
- package/dist/components/secret-form-extension.js +30 -0
- package/dist/components/secret-form-extension.js.map +1 -0
- package/dist/components/tri-state.cjs +8 -0
- package/dist/components/tri-state.cjs.map +1 -0
- package/dist/components/tri-state.d.ts +5 -0
- package/dist/components/tri-state.d.ts.map +1 -0
- package/dist/components/tri-state.js +8 -0
- package/dist/components/tri-state.js.map +1 -0
- package/dist/components/useComboboxLayout.cjs +59 -0
- package/dist/components/useComboboxLayout.cjs.map +1 -0
- package/dist/components/useComboboxLayout.d.ts +5 -0
- package/dist/components/useComboboxLayout.d.ts.map +1 -0
- package/dist/components/useComboboxLayout.js +59 -0
- package/dist/components/useComboboxLayout.js.map +1 -0
- package/dist/components.cjs +37 -0
- package/dist/components.cjs.map +1 -1
- package/dist/components.d.ts +20 -4
- package/dist/components.d.ts.map +1 -1
- package/dist/components.js +38 -1
- package/dist/components.js.map +1 -1
- package/dist/data/Clicky.cjs +51 -2
- package/dist/data/Clicky.cjs.map +1 -1
- package/dist/data/Clicky.d.ts +10 -1
- package/dist/data/Clicky.d.ts.map +1 -1
- package/dist/data/Clicky.js +51 -2
- package/dist/data/Clicky.js.map +1 -1
- package/dist/data/DataTable.cjs +185 -53
- package/dist/data/DataTable.cjs.map +1 -1
- package/dist/data/DataTable.d.ts +63 -3
- package/dist/data/DataTable.d.ts.map +1 -1
- package/dist/data/DataTable.js +185 -53
- package/dist/data/DataTable.js.map +1 -1
- package/dist/data/LogsTable.cjs +10 -1
- package/dist/data/LogsTable.cjs.map +1 -1
- package/dist/data/LogsTable.d.ts +3 -1
- package/dist/data/LogsTable.d.ts.map +1 -1
- package/dist/data/LogsTable.js +10 -1
- package/dist/data/LogsTable.js.map +1 -1
- package/dist/data/TaskExecDetails.cjs +40 -0
- package/dist/data/TaskExecDetails.cjs.map +1 -0
- package/dist/data/TaskExecDetails.d.ts +5 -0
- package/dist/data/TaskExecDetails.d.ts.map +1 -0
- package/dist/data/TaskExecDetails.js +40 -0
- package/dist/data/TaskExecDetails.js.map +1 -0
- package/dist/data/TaskManager.cjs +99 -14
- package/dist/data/TaskManager.cjs.map +1 -1
- package/dist/data/TaskManager.d.ts.map +1 -1
- package/dist/data/TaskManager.js +100 -15
- package/dist/data/TaskManager.js.map +1 -1
- package/dist/data/TaskProgress.cjs +59 -14
- package/dist/data/TaskProgress.cjs.map +1 -1
- package/dist/data/TaskProgress.d.ts +2 -1
- package/dist/data/TaskProgress.d.ts.map +1 -1
- package/dist/data/TaskProgress.js +59 -14
- package/dist/data/TaskProgress.js.map +1 -1
- package/dist/data/TaskSnapshot.cjs.map +1 -1
- package/dist/data/TaskSnapshot.d.ts +12 -1
- package/dist/data/TaskSnapshot.d.ts.map +1 -1
- package/dist/data/TaskSnapshot.js.map +1 -1
- package/dist/data/TreeNode.cjs +3 -0
- package/dist/data/TreeNode.cjs.map +1 -1
- package/dist/data/TreeNode.d.ts.map +1 -1
- package/dist/data/TreeNode.js +3 -0
- package/dist/data/TreeNode.js.map +1 -1
- package/dist/data/ai/AdvancedChatConfig.cjs +289 -0
- package/dist/data/ai/AdvancedChatConfig.cjs.map +1 -0
- package/dist/data/ai/AdvancedChatConfig.d.ts +21 -0
- package/dist/data/ai/AdvancedChatConfig.d.ts.map +1 -0
- package/dist/data/ai/AdvancedChatConfig.js +289 -0
- package/dist/data/ai/AdvancedChatConfig.js.map +1 -0
- package/dist/data/ai/AdvancedCostsPanel.cjs +120 -0
- package/dist/data/ai/AdvancedCostsPanel.cjs.map +1 -0
- package/dist/data/ai/AdvancedCostsPanel.d.ts +16 -0
- package/dist/data/ai/AdvancedCostsPanel.d.ts.map +1 -0
- package/dist/data/ai/AdvancedCostsPanel.js +120 -0
- package/dist/data/ai/AdvancedCostsPanel.js.map +1 -0
- package/dist/data/ai/ChatWindow.catalogs.cjs +74 -0
- package/dist/data/ai/ChatWindow.catalogs.cjs.map +1 -0
- package/dist/data/ai/ChatWindow.catalogs.d.ts +16 -0
- package/dist/data/ai/ChatWindow.catalogs.d.ts.map +1 -0
- package/dist/data/ai/ChatWindow.catalogs.js +74 -0
- package/dist/data/ai/ChatWindow.catalogs.js.map +1 -0
- package/dist/data/ai/ChatWindow.cjs +78 -100
- 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 +80 -102
- package/dist/data/ai/ChatWindow.js.map +1 -1
- package/dist/data/ai/ChatWindow.preferences.cjs.map +1 -1
- package/dist/data/ai/ChatWindow.preferences.d.ts +2 -4
- package/dist/data/ai/ChatWindow.preferences.d.ts.map +1 -1
- package/dist/data/ai/ChatWindow.preferences.js.map +1 -1
- package/dist/data/ai/ChatWindow.runtime.cjs +120 -0
- package/dist/data/ai/ChatWindow.runtime.cjs.map +1 -0
- package/dist/data/ai/ChatWindow.runtime.d.ts +20 -0
- package/dist/data/ai/ChatWindow.runtime.d.ts.map +1 -0
- package/dist/data/ai/ChatWindow.runtime.js +120 -0
- package/dist/data/ai/ChatWindow.runtime.js.map +1 -0
- package/dist/data/ai/ChatWindow.thread.cjs +1 -1
- package/dist/data/ai/ChatWindow.thread.cjs.map +1 -1
- package/dist/data/ai/ChatWindow.thread.js +1 -1
- package/dist/data/ai/ChatWindow.thread.js.map +1 -1
- package/dist/data/ai/ChatWindow.tool-catalog.cjs +20 -0
- package/dist/data/ai/ChatWindow.tool-catalog.cjs.map +1 -1
- package/dist/data/ai/ChatWindow.tool-catalog.d.ts +17 -1
- package/dist/data/ai/ChatWindow.tool-catalog.d.ts.map +1 -1
- package/dist/data/ai/ChatWindow.tool-catalog.js +20 -0
- package/dist/data/ai/ChatWindow.tool-catalog.js.map +1 -1
- package/dist/data/ai/ChatWindow.types.d.ts +13 -5
- package/dist/data/ai/ChatWindow.types.d.ts.map +1 -1
- package/dist/data/ai/ChatWindowManager.cjs +3 -1
- package/dist/data/ai/ChatWindowManager.cjs.map +1 -1
- package/dist/data/ai/ChatWindowManager.d.ts.map +1 -1
- package/dist/data/ai/ChatWindowManager.js +3 -1
- package/dist/data/ai/ChatWindowManager.js.map +1 -1
- package/dist/data/ai/PromptPicker/PromptPicker.cjs +1 -1
- package/dist/data/ai/PromptPicker/PromptPicker.cjs.map +1 -1
- package/dist/data/ai/PromptPicker/PromptPicker.d.ts +1 -1
- package/dist/data/ai/PromptPicker/PromptPicker.d.ts.map +1 -1
- package/dist/data/ai/PromptPicker/PromptPicker.js +1 -1
- package/dist/data/ai/PromptPicker/PromptPicker.js.map +1 -1
- package/dist/data/ai/PromptRunEditor/index.cjs +2 -2
- package/dist/data/ai/PromptRunEditor/index.cjs.map +1 -1
- package/dist/data/ai/PromptRunEditor/index.d.ts +1 -1
- package/dist/data/ai/PromptRunEditor/index.d.ts.map +1 -1
- package/dist/data/ai/PromptRunEditor/index.js +2 -2
- package/dist/data/ai/PromptRunEditor/index.js.map +1 -1
- package/dist/data/ai/RuntimeModePicker.cjs +1 -1
- package/dist/data/ai/RuntimeModePicker.cjs.map +1 -1
- package/dist/data/ai/RuntimeModePicker.d.ts +1 -1
- package/dist/data/ai/RuntimeModePicker.d.ts.map +1 -1
- package/dist/data/ai/RuntimeModePicker.js +1 -1
- package/dist/data/ai/RuntimeModePicker.js.map +1 -1
- package/dist/data/ai/SessionInspector.files.cjs +26 -43
- package/dist/data/ai/SessionInspector.files.cjs.map +1 -1
- package/dist/data/ai/SessionInspector.files.d.ts.map +1 -1
- package/dist/data/ai/SessionInspector.files.js +26 -43
- package/dist/data/ai/SessionInspector.files.js.map +1 -1
- package/dist/data/ai/SessionInspector.hierarchy.cjs +1 -1
- package/dist/data/ai/SessionInspector.hierarchy.cjs.map +1 -1
- package/dist/data/ai/SessionInspector.hierarchy.js +1 -1
- package/dist/data/ai/SessionInspector.hierarchy.js.map +1 -1
- package/dist/data/ai/SessionInspector.model.cjs +1 -1
- package/dist/data/ai/SessionInspector.model.cjs.map +1 -1
- package/dist/data/ai/SessionInspector.model.js +1 -1
- package/dist/data/ai/SessionInspector.model.js.map +1 -1
- package/dist/data/ai/SessionViewer.rows.cjs +4 -16
- package/dist/data/ai/SessionViewer.rows.cjs.map +1 -1
- package/dist/data/ai/SessionViewer.rows.d.ts.map +1 -1
- package/dist/data/ai/SessionViewer.rows.js +4 -16
- package/dist/data/ai/SessionViewer.rows.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.cjs +12 -3
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.d.ts +1 -1
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.js +12 -3
- package/dist/data/ai/SpecRuntimeEditor/ModelSection.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/VerifySection.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/VerifySection.d.ts +1 -1
- package/dist/data/ai/SpecRuntimeEditor/VerifySection.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/VerifySection.js.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/fields.js +1 -1
- package/dist/data/ai/SpecRuntimeEditor/index.cjs.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/index.d.ts +2 -2
- package/dist/data/ai/SpecRuntimeEditor/index.d.ts.map +1 -1
- package/dist/data/ai/SpecRuntimeEditor/index.js.map +1 -1
- package/dist/data/ai/ThreadPicker.cjs +65 -3
- package/dist/data/ai/ThreadPicker.cjs.map +1 -1
- package/dist/data/ai/ThreadPicker.d.ts +11 -5
- package/dist/data/ai/ThreadPicker.d.ts.map +1 -1
- package/dist/data/ai/ThreadPicker.js +65 -3
- package/dist/data/ai/ThreadPicker.js.map +1 -1
- package/dist/data/ai/ToolPreferences.cjs +65 -685
- package/dist/data/ai/ToolPreferences.cjs.map +1 -1
- package/dist/data/ai/ToolPreferences.d.ts +15 -17
- package/dist/data/ai/ToolPreferences.d.ts.map +1 -1
- package/dist/data/ai/ToolPreferences.js +64 -683
- package/dist/data/ai/ToolPreferences.js.map +1 -1
- package/dist/data/ai/ToolPreferences.model.cjs +148 -0
- package/dist/data/ai/ToolPreferences.model.cjs.map +1 -0
- package/dist/data/ai/ToolPreferences.model.d.ts +31 -0
- package/dist/data/ai/ToolPreferences.model.d.ts.map +1 -0
- package/dist/data/ai/ToolPreferences.model.js +148 -0
- package/dist/data/ai/ToolPreferences.model.js.map +1 -0
- package/dist/data/ai/ToolPreferencesList.cjs +270 -0
- package/dist/data/ai/ToolPreferencesList.cjs.map +1 -0
- package/dist/data/ai/ToolPreferencesList.d.ts +18 -0
- package/dist/data/ai/ToolPreferencesList.d.ts.map +1 -0
- package/dist/data/ai/ToolPreferencesList.js +270 -0
- package/dist/data/ai/ToolPreferencesList.js.map +1 -0
- package/dist/data/ai/agent-action-icons.cjs.map +1 -1
- package/dist/data/ai/agent-action-icons.js.map +1 -1
- package/dist/data/ai/chat-window-context.cjs +4 -1
- package/dist/data/ai/chat-window-context.cjs.map +1 -1
- package/dist/data/ai/chat-window-context.d.ts +7 -0
- package/dist/data/ai/chat-window-context.d.ts.map +1 -1
- package/dist/data/ai/chat-window-context.js +4 -1
- package/dist/data/ai/chat-window-context.js.map +1 -1
- package/dist/data/ai/index.d.ts +6 -3
- package/dist/data/ai/index.d.ts.map +1 -1
- package/dist/data/ai/session-tones.cjs +67 -0
- package/dist/data/ai/session-tones.cjs.map +1 -0
- package/dist/data/ai/session-tones.d.ts +34 -0
- package/dist/data/ai/session-tones.d.ts.map +1 -0
- package/dist/data/ai/session-tones.js +67 -0
- package/dist/data/ai/session-tones.js.map +1 -0
- package/dist/data/ai/thread-costs.cjs +39 -0
- package/dist/data/ai/thread-costs.cjs.map +1 -0
- package/dist/data/ai/thread-costs.d.ts +62 -0
- package/dist/data/ai/thread-costs.d.ts.map +1 -0
- package/dist/data/ai/thread-costs.js +39 -0
- package/dist/data/ai/thread-costs.js.map +1 -0
- package/dist/data/cells/CellFilterActions.cjs +68 -0
- package/dist/data/cells/CellFilterActions.cjs.map +1 -0
- package/dist/data/cells/CellFilterActions.d.ts +15 -0
- package/dist/data/cells/CellFilterActions.d.ts.map +1 -0
- package/dist/data/cells/CellFilterActions.js +68 -0
- package/dist/data/cells/CellFilterActions.js.map +1 -0
- package/dist/data/chat/Chat.cjs +156 -113
- package/dist/data/chat/Chat.cjs.map +1 -1
- package/dist/data/chat/Chat.d.ts +24 -7
- package/dist/data/chat/Chat.d.ts.map +1 -1
- package/dist/data/chat/Chat.fixtures.cjs +48 -3
- package/dist/data/chat/Chat.fixtures.cjs.map +1 -1
- package/dist/data/chat/Chat.fixtures.d.ts +1 -1
- package/dist/data/chat/Chat.fixtures.d.ts.map +1 -1
- package/dist/data/chat/Chat.fixtures.js +48 -3
- package/dist/data/chat/Chat.fixtures.js.map +1 -1
- package/dist/data/chat/Chat.js +160 -117
- package/dist/data/chat/Chat.js.map +1 -1
- package/dist/data/chat/Chat.runtime.cjs +63 -0
- package/dist/data/chat/Chat.runtime.cjs.map +1 -0
- package/dist/data/chat/Chat.runtime.d.ts +16 -0
- package/dist/data/chat/Chat.runtime.d.ts.map +1 -0
- package/dist/data/chat/Chat.runtime.js +63 -0
- package/dist/data/chat/Chat.runtime.js.map +1 -0
- package/dist/data/chat/ChatRuntimeToolbar.cjs +62 -0
- package/dist/data/chat/ChatRuntimeToolbar.cjs.map +1 -0
- package/dist/data/chat/ChatRuntimeToolbar.d.ts +14 -0
- package/dist/data/chat/ChatRuntimeToolbar.d.ts.map +1 -0
- package/dist/data/chat/ChatRuntimeToolbar.js +62 -0
- package/dist/data/chat/ChatRuntimeToolbar.js.map +1 -0
- package/dist/data/chat/ToolCall.cjs +86 -24
- package/dist/data/chat/ToolCall.cjs.map +1 -1
- package/dist/data/chat/ToolCall.d.ts +12 -5
- package/dist/data/chat/ToolCall.d.ts.map +1 -1
- package/dist/data/chat/ToolCall.js +86 -24
- package/dist/data/chat/ToolCall.js.map +1 -1
- package/dist/data/chat/approval.cjs +49 -6
- package/dist/data/chat/approval.cjs.map +1 -1
- package/dist/data/chat/approval.d.ts +11 -4
- package/dist/data/chat/approval.d.ts.map +1 -1
- package/dist/data/chat/approval.js +49 -6
- package/dist/data/chat/approval.js.map +1 -1
- package/dist/data/chat/index.d.ts +5 -3
- package/dist/data/chat/index.d.ts.map +1 -1
- package/dist/data/chat/tool-render/ToolArgs.cjs +50 -0
- package/dist/data/chat/tool-render/ToolArgs.cjs.map +1 -0
- package/dist/data/chat/tool-render/ToolArgs.d.ts +7 -0
- package/dist/data/chat/tool-render/ToolArgs.d.ts.map +1 -0
- package/dist/data/chat/tool-render/ToolArgs.js +50 -0
- package/dist/data/chat/tool-render/ToolArgs.js.map +1 -0
- package/dist/data/chat/tool-render/ToolParams.cjs +155 -0
- package/dist/data/chat/tool-render/ToolParams.cjs.map +1 -0
- package/dist/data/chat/tool-render/ToolParams.d.ts +20 -0
- package/dist/data/chat/tool-render/ToolParams.d.ts.map +1 -0
- package/dist/data/chat/tool-render/ToolParams.js +155 -0
- package/dist/data/chat/tool-render/ToolParams.js.map +1 -0
- package/dist/data/chat/tool-render/ToolValue.cjs +140 -0
- package/dist/data/chat/tool-render/ToolValue.cjs.map +1 -0
- package/dist/data/chat/tool-render/ToolValue.d.ts +16 -0
- package/dist/data/chat/tool-render/ToolValue.d.ts.map +1 -0
- package/dist/data/chat/tool-render/ToolValue.js +140 -0
- package/dist/data/chat/tool-render/ToolValue.js.map +1 -0
- package/dist/data/chat/tool-render/adapter.cjs +48 -0
- package/dist/data/chat/tool-render/adapter.cjs.map +1 -0
- package/dist/data/chat/tool-render/adapter.d.ts +57 -0
- package/dist/data/chat/tool-render/adapter.d.ts.map +1 -0
- package/dist/data/chat/tool-render/adapter.js +48 -0
- package/dist/data/chat/tool-render/adapter.js.map +1 -0
- package/dist/data/chat/tool-render/context.cjs +16 -0
- package/dist/data/chat/tool-render/context.cjs.map +1 -0
- package/dist/data/chat/tool-render/context.d.ts +6 -0
- package/dist/data/chat/tool-render/context.d.ts.map +1 -0
- package/dist/data/chat/tool-render/context.js +16 -0
- package/dist/data/chat/tool-render/context.js.map +1 -0
- package/dist/data/chat/tool-render/defaults.cjs +45 -0
- package/dist/data/chat/tool-render/defaults.cjs.map +1 -0
- package/dist/data/chat/tool-render/defaults.d.ts +11 -0
- package/dist/data/chat/tool-render/defaults.d.ts.map +1 -0
- package/dist/data/chat/tool-render/defaults.js +45 -0
- package/dist/data/chat/tool-render/defaults.js.map +1 -0
- package/dist/data/chat/tool-render/index.d.ts +13 -0
- package/dist/data/chat/tool-render/index.d.ts.map +1 -0
- package/dist/data/chat/tool-render/known-tool-views.cjs +208 -0
- package/dist/data/chat/tool-render/known-tool-views.cjs.map +1 -0
- package/dist/data/chat/tool-render/known-tool-views.d.ts +10 -0
- package/dist/data/chat/tool-render/known-tool-views.d.ts.map +1 -0
- package/dist/data/chat/tool-render/known-tool-views.js +208 -0
- package/dist/data/chat/tool-render/known-tool-views.js.map +1 -0
- package/dist/data/chat/tool-render/known-tools.cjs +58 -0
- package/dist/data/chat/tool-render/known-tools.cjs.map +1 -0
- package/dist/data/chat/tool-render/known-tools.d.ts +4 -0
- package/dist/data/chat/tool-render/known-tools.d.ts.map +1 -0
- package/dist/data/chat/tool-render/known-tools.js +58 -0
- package/dist/data/chat/tool-render/known-tools.js.map +1 -0
- package/dist/data/chat/tool-render/normalize.cjs +42 -0
- package/dist/data/chat/tool-render/normalize.cjs.map +1 -0
- package/dist/data/chat/tool-render/normalize.d.ts +13 -0
- package/dist/data/chat/tool-render/normalize.d.ts.map +1 -0
- package/dist/data/chat/tool-render/normalize.js +42 -0
- package/dist/data/chat/tool-render/normalize.js.map +1 -0
- package/dist/data/chat/tool-render/registry.cjs +14 -0
- package/dist/data/chat/tool-render/registry.cjs.map +1 -0
- package/dist/data/chat/tool-render/registry.d.ts +7 -0
- package/dist/data/chat/tool-render/registry.d.ts.map +1 -0
- package/dist/data/chat/tool-render/registry.js +14 -0
- package/dist/data/chat/tool-render/registry.js.map +1 -0
- package/dist/data/chat/tool-render/schema.cjs +57 -0
- package/dist/data/chat/tool-render/schema.cjs.map +1 -0
- package/dist/data/chat/tool-render/schema.d.ts +28 -0
- package/dist/data/chat/tool-render/schema.d.ts.map +1 -0
- package/dist/data/chat/tool-render/schema.js +57 -0
- package/dist/data/chat/tool-render/schema.js.map +1 -0
- package/dist/data/chat/tool-render/shape.cjs +94 -0
- package/dist/data/chat/tool-render/shape.cjs.map +1 -0
- package/dist/data/chat/tool-render/shape.d.ts +39 -0
- package/dist/data/chat/tool-render/shape.d.ts.map +1 -0
- package/dist/data/chat/tool-render/shape.js +94 -0
- package/dist/data/chat/tool-render/shape.js.map +1 -0
- package/dist/data/chat/tool-render/summary.cjs +34 -0
- package/dist/data/chat/tool-render/summary.cjs.map +1 -0
- package/dist/data/chat/tool-render/summary.d.ts +8 -0
- package/dist/data/chat/tool-render/summary.d.ts.map +1 -0
- package/dist/data/chat/tool-render/summary.js +34 -0
- package/dist/data/chat/tool-render/summary.js.map +1 -0
- package/dist/data/chat/types.cjs.map +1 -1
- package/dist/data/chat/types.d.ts +7 -0
- package/dist/data/chat/types.d.ts.map +1 -1
- package/dist/data/chat/types.js.map +1 -1
- package/dist/data/chat/usage-snapshot.cjs +17 -0
- package/dist/data/chat/usage-snapshot.cjs.map +1 -0
- package/dist/data/chat/usage-snapshot.d.ts +21 -0
- package/dist/data/chat/usage-snapshot.d.ts.map +1 -0
- package/dist/data/chat/usage-snapshot.js +17 -0
- package/dist/data/chat/usage-snapshot.js.map +1 -0
- package/dist/data/data-table-filter-values.cjs +103 -0
- package/dist/data/data-table-filter-values.cjs.map +1 -0
- package/dist/data/data-table-filter-values.d.ts +34 -0
- package/dist/data/data-table-filter-values.d.ts.map +1 -0
- package/dist/data/data-table-filter-values.js +103 -0
- package/dist/data/data-table-filter-values.js.map +1 -0
- package/dist/data/data-table-server-filters.cjs +165 -0
- package/dist/data/data-table-server-filters.cjs.map +1 -0
- package/dist/data/data-table-server-filters.d.ts +128 -0
- package/dist/data/data-table-server-filters.d.ts.map +1 -0
- package/dist/data/data-table-server-filters.js +165 -0
- package/dist/data/data-table-server-filters.js.map +1 -0
- package/dist/data/query-browser/QueryBrowser.cjs +204 -155
- package/dist/data/query-browser/QueryBrowser.cjs.map +1 -1
- package/dist/data/query-browser/QueryBrowser.d.ts +2 -41
- package/dist/data/query-browser/QueryBrowser.d.ts.map +1 -1
- package/dist/data/query-browser/QueryBrowser.editor.cjs +88 -0
- package/dist/data/query-browser/QueryBrowser.editor.cjs.map +1 -0
- package/dist/data/query-browser/QueryBrowser.editor.d.ts +12 -0
- package/dist/data/query-browser/QueryBrowser.editor.d.ts.map +1 -0
- package/dist/data/query-browser/QueryBrowser.editor.js +88 -0
- package/dist/data/query-browser/QueryBrowser.editor.js.map +1 -0
- package/dist/data/query-browser/QueryBrowser.js +205 -156
- package/dist/data/query-browser/QueryBrowser.js.map +1 -1
- package/dist/data/query-browser/QueryBrowser.types.cjs +11 -0
- package/dist/data/query-browser/QueryBrowser.types.cjs.map +1 -0
- package/dist/data/query-browser/QueryBrowser.types.d.ts +92 -0
- package/dist/data/query-browser/QueryBrowser.types.d.ts.map +1 -0
- package/dist/data/query-browser/QueryBrowser.types.js +11 -0
- package/dist/data/query-browser/QueryBrowser.types.js.map +1 -0
- package/dist/data/query-browser/QueryBrowserDiagnosticsPanel.cjs +56 -0
- package/dist/data/query-browser/QueryBrowserDiagnosticsPanel.cjs.map +1 -0
- package/dist/data/query-browser/QueryBrowserDiagnosticsPanel.d.ts +5 -0
- package/dist/data/query-browser/QueryBrowserDiagnosticsPanel.d.ts.map +1 -0
- package/dist/data/query-browser/QueryBrowserDiagnosticsPanel.js +56 -0
- package/dist/data/query-browser/QueryBrowserDiagnosticsPanel.js.map +1 -0
- package/dist/data/query-browser/QueryBrowserResults.cjs +80 -0
- package/dist/data/query-browser/QueryBrowserResults.cjs.map +1 -0
- package/dist/data/query-browser/QueryBrowserResults.d.ts +16 -0
- package/dist/data/query-browser/QueryBrowserResults.d.ts.map +1 -0
- package/dist/data/query-browser/QueryBrowserResults.js +80 -0
- package/dist/data/query-browser/QueryBrowserResults.js.map +1 -0
- package/dist/data/query-browser/index.d.ts +2 -1
- package/dist/data/query-browser/index.d.ts.map +1 -1
- package/dist/data/runtime/ProviderStatusPanel.cjs +187 -0
- package/dist/data/runtime/ProviderStatusPanel.cjs.map +1 -0
- package/dist/data/runtime/ProviderStatusPanel.d.ts +10 -0
- package/dist/data/runtime/ProviderStatusPanel.d.ts.map +1 -0
- package/dist/data/runtime/ProviderStatusPanel.js +187 -0
- package/dist/data/runtime/ProviderStatusPanel.js.map +1 -0
- package/dist/data/runtime/RuntimeBar.cjs +147 -0
- package/dist/data/runtime/RuntimeBar.cjs.map +1 -0
- package/dist/data/{ai → runtime}/RuntimeBar.d.ts +8 -6
- package/dist/data/runtime/RuntimeBar.d.ts.map +1 -0
- package/dist/data/runtime/RuntimeBar.js +147 -0
- package/dist/data/runtime/RuntimeBar.js.map +1 -0
- package/dist/data/runtime/RuntimeBar.model.cjs.map +1 -0
- package/dist/data/{ai → runtime}/RuntimeBar.model.d.ts +2 -2
- package/dist/data/runtime/RuntimeBar.model.d.ts.map +1 -0
- package/dist/data/runtime/RuntimeBar.model.js.map +1 -0
- package/dist/data/{ai → runtime}/RuntimeBarCombo.cjs +25 -30
- package/dist/data/runtime/RuntimeBarCombo.cjs.map +1 -0
- package/dist/data/{ai → runtime}/RuntimeBarCombo.d.ts +4 -3
- package/dist/data/runtime/RuntimeBarCombo.d.ts.map +1 -0
- package/dist/data/{ai → runtime}/RuntimeBarCombo.js +25 -30
- package/dist/data/runtime/RuntimeBarCombo.js.map +1 -0
- package/dist/data/{ai/RuntimeBar.cjs → runtime/RuntimeBarSegments.cjs} +54 -120
- package/dist/data/runtime/RuntimeBarSegments.cjs.map +1 -0
- package/dist/data/runtime/RuntimeBarSegments.d.ts +25 -0
- package/dist/data/runtime/RuntimeBarSegments.d.ts.map +1 -0
- package/dist/data/{ai/RuntimeBar.js → runtime/RuntimeBarSegments.js} +58 -124
- package/dist/data/runtime/RuntimeBarSegments.js.map +1 -0
- package/dist/data/runtime/availability.cjs +11 -0
- package/dist/data/runtime/availability.cjs.map +1 -0
- package/dist/data/runtime/availability.d.ts +6 -0
- package/dist/data/runtime/availability.d.ts.map +1 -0
- package/dist/data/runtime/availability.js +11 -0
- package/dist/data/runtime/availability.js.map +1 -0
- package/dist/data/runtime/model-capabilities.cjs.map +1 -0
- package/dist/data/runtime/model-capabilities.d.ts.map +1 -0
- package/dist/data/runtime/model-capabilities.js.map +1 -0
- package/dist/data/runtime/provider-status.cjs +106 -0
- package/dist/data/runtime/provider-status.cjs.map +1 -0
- package/dist/data/runtime/provider-status.d.ts +24 -0
- package/dist/data/runtime/provider-status.d.ts.map +1 -0
- package/dist/data/runtime/provider-status.js +106 -0
- package/dist/data/runtime/provider-status.js.map +1 -0
- package/dist/data/{ai → runtime}/runtime-mode.cjs +119 -27
- package/dist/data/runtime/runtime-mode.cjs.map +1 -0
- package/dist/data/{ai → runtime}/runtime-mode.d.ts +7 -1
- package/dist/data/runtime/runtime-mode.d.ts.map +1 -0
- package/dist/data/{ai → runtime}/runtime-mode.js +120 -28
- package/dist/data/runtime/runtime-mode.js.map +1 -0
- package/dist/data/task-exec-details.cjs +9 -0
- package/dist/data/task-exec-details.cjs.map +1 -0
- package/dist/data/task-exec-details.d.ts +3 -0
- package/dist/data/task-exec-details.d.ts.map +1 -0
- package/dist/data/task-exec-details.js +9 -0
- package/dist/data/task-exec-details.js.map +1 -0
- package/dist/data/task-query-keys.cjs +26 -0
- package/dist/data/task-query-keys.cjs.map +1 -0
- package/dist/data/task-query-keys.d.ts +27 -0
- package/dist/data/task-query-keys.d.ts.map +1 -0
- package/dist/data/task-query-keys.js +26 -0
- package/dist/data/task-query-keys.js.map +1 -0
- package/dist/data/version-info.cjs +3 -3
- package/dist/data/version-info.js +3 -3
- package/dist/data.cjs +18 -0
- package/dist/data.cjs.map +1 -1
- package/dist/data.d.ts +6 -2
- package/dist/data.d.ts.map +1 -1
- package/dist/data.js +18 -0
- package/dist/data.js.map +1 -1
- package/dist/hooks/use-hotkey.cjs +6 -1
- package/dist/hooks/use-hotkey.cjs.map +1 -1
- package/dist/hooks/use-hotkey.d.ts.map +1 -1
- package/dist/hooks/use-hotkey.js +6 -1
- package/dist/hooks/use-hotkey.js.map +1 -1
- package/dist/hooks/use-task-run.cjs +7 -4
- package/dist/hooks/use-task-run.cjs.map +1 -1
- package/dist/hooks/use-task-run.d.ts +12 -0
- package/dist/hooks/use-task-run.d.ts.map +1 -1
- package/dist/hooks/use-task-run.js +7 -4
- package/dist/hooks/use-task-run.js.map +1 -1
- package/dist/icons/index.d.ts +1 -0
- package/dist/icons/index.d.ts.map +1 -1
- package/dist/icons/registry.cjs +692 -0
- package/dist/icons/registry.cjs.map +1 -0
- package/dist/icons/registry.d.ts +21 -0
- package/dist/icons/registry.d.ts.map +1 -0
- package/dist/icons/registry.js +692 -0
- package/dist/icons/registry.js.map +1 -0
- package/dist/icons.cjs +3 -0
- package/dist/icons.cjs.map +1 -1
- package/dist/icons.js +4 -1
- package/dist/icons.js.map +1 -1
- package/dist/index.cjs +65 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +67 -2
- package/dist/index.js.map +1 -1
- package/dist/layout/AppShell.cjs +92 -56
- package/dist/layout/AppShell.cjs.map +1 -1
- package/dist/layout/AppShell.d.ts +49 -1
- package/dist/layout/AppShell.d.ts.map +1 -1
- package/dist/layout/AppShell.js +92 -56
- package/dist/layout/AppShell.js.map +1 -1
- package/dist/layout/AppShell.nav.cjs +144 -19
- package/dist/layout/AppShell.nav.cjs.map +1 -1
- package/dist/layout/AppShell.nav.d.ts +6 -1
- package/dist/layout/AppShell.nav.d.ts.map +1 -1
- package/dist/layout/AppShell.nav.js +144 -19
- package/dist/layout/AppShell.nav.js.map +1 -1
- package/dist/layout/SplitPane.cjs +23 -7
- package/dist/layout/SplitPane.cjs.map +1 -1
- package/dist/layout/SplitPane.d.ts +3 -1
- package/dist/layout/SplitPane.d.ts.map +1 -1
- package/dist/layout/SplitPane.js +23 -7
- package/dist/layout/SplitPane.js.map +1 -1
- package/dist/lib/format.cjs +86 -4
- package/dist/lib/format.cjs.map +1 -1
- package/dist/lib/format.d.ts +69 -0
- package/dist/lib/format.d.ts.map +1 -1
- package/dist/lib/format.js +86 -4
- package/dist/lib/format.js.map +1 -1
- package/dist/lib/path-tree.cjs +69 -0
- package/dist/lib/path-tree.cjs.map +1 -0
- package/dist/lib/path-tree.d.ts +54 -0
- package/dist/lib/path-tree.d.ts.map +1 -0
- package/dist/lib/path-tree.js +69 -0
- package/dist/lib/path-tree.js.map +1 -0
- package/dist/monaco.d.ts +1 -0
- package/dist/monaco.d.ts.map +1 -1
- package/dist/overlay/DropdownMenuSubmenu.cjs +13 -7
- package/dist/overlay/DropdownMenuSubmenu.cjs.map +1 -1
- package/dist/overlay/DropdownMenuSubmenu.d.ts.map +1 -1
- package/dist/overlay/DropdownMenuSubmenu.js +13 -7
- package/dist/overlay/DropdownMenuSubmenu.js.map +1 -1
- package/dist/overlay/Tour.cjs +173 -0
- package/dist/overlay/Tour.cjs.map +1 -0
- package/dist/overlay/Tour.d.ts +61 -0
- package/dist/overlay/Tour.d.ts.map +1 -0
- package/dist/overlay/Tour.js +173 -0
- package/dist/overlay/Tour.js.map +1 -0
- package/dist/overlay/TourCard.cjs +108 -0
- package/dist/overlay/TourCard.cjs.map +1 -0
- package/dist/overlay/TourCard.d.ts +23 -0
- package/dist/overlay/TourCard.d.ts.map +1 -0
- package/dist/overlay/TourCard.js +108 -0
- package/dist/overlay/TourCard.js.map +1 -0
- package/dist/overlay/TourProvider.cjs +160 -0
- package/dist/overlay/TourProvider.cjs.map +1 -0
- package/dist/overlay/TourProvider.d.ts +31 -0
- package/dist/overlay/TourProvider.d.ts.map +1 -0
- package/dist/overlay/TourProvider.js +160 -0
- package/dist/overlay/TourProvider.js.map +1 -0
- package/dist/overlay/TourSpotlight.cjs +47 -0
- package/dist/overlay/TourSpotlight.cjs.map +1 -0
- package/dist/overlay/TourSpotlight.d.ts +12 -0
- package/dist/overlay/TourSpotlight.d.ts.map +1 -0
- package/dist/overlay/TourSpotlight.js +47 -0
- package/dist/overlay/TourSpotlight.js.map +1 -0
- package/dist/overlay/modalStack.cjs +18 -4
- package/dist/overlay/modalStack.cjs.map +1 -1
- package/dist/overlay/modalStack.d.ts +10 -2
- package/dist/overlay/modalStack.d.ts.map +1 -1
- package/dist/overlay/modalStack.js +19 -5
- package/dist/overlay/modalStack.js.map +1 -1
- package/dist/overlay/tour-anchor.cjs +114 -0
- package/dist/overlay/tour-anchor.cjs.map +1 -0
- package/dist/overlay/tour-anchor.d.ts +30 -0
- package/dist/overlay/tour-anchor.d.ts.map +1 -0
- package/dist/overlay/tour-anchor.js +114 -0
- package/dist/overlay/tour-anchor.js.map +1 -0
- package/dist/overlay/tour-context.cjs +12 -0
- package/dist/overlay/tour-context.cjs.map +1 -0
- package/dist/overlay/tour-context.d.ts +40 -0
- package/dist/overlay/tour-context.d.ts.map +1 -0
- package/dist/overlay/tour-context.js +12 -0
- package/dist/overlay/tour-context.js.map +1 -0
- package/dist/overlay/tour-geometry.cjs +65 -0
- package/dist/overlay/tour-geometry.cjs.map +1 -0
- package/dist/overlay/tour-geometry.d.ts +47 -0
- package/dist/overlay/tour-geometry.d.ts.map +1 -0
- package/dist/overlay/tour-geometry.js +65 -0
- package/dist/overlay/tour-geometry.js.map +1 -0
- package/dist/overlay/tour-model.cjs +79 -0
- package/dist/overlay/tour-model.cjs.map +1 -0
- package/dist/overlay/tour-model.d.ts +29 -0
- package/dist/overlay/tour-model.d.ts.map +1 -0
- package/dist/overlay/tour-model.js +79 -0
- package/dist/overlay/tour-model.js.map +1 -0
- package/dist/overlay/tour-progress.cjs +54 -0
- package/dist/overlay/tour-progress.cjs.map +1 -0
- package/dist/overlay/tour-progress.d.ts +40 -0
- package/dist/overlay/tour-progress.d.ts.map +1 -0
- package/dist/overlay/tour-progress.js +54 -0
- package/dist/overlay/tour-progress.js.map +1 -0
- package/dist/overlay/tour-types.d.ts +144 -0
- package/dist/overlay/tour-types.d.ts.map +1 -0
- package/dist/overlay/use-tour-anchor.cjs +43 -0
- package/dist/overlay/use-tour-anchor.cjs.map +1 -0
- package/dist/overlay/use-tour-anchor.d.ts +23 -0
- package/dist/overlay/use-tour-anchor.d.ts.map +1 -0
- package/dist/overlay/use-tour-anchor.js +43 -0
- package/dist/overlay/use-tour-anchor.js.map +1 -0
- package/dist/overlay/use-tour-rect.cjs +33 -0
- package/dist/overlay/use-tour-rect.cjs.map +1 -0
- package/dist/overlay/use-tour-rect.d.ts +12 -0
- package/dist/overlay/use-tour-rect.d.ts.map +1 -0
- package/dist/overlay/use-tour-rect.js +33 -0
- package/dist/overlay/use-tour-rect.js.map +1 -0
- package/dist/overlay/use-tour-step.cjs +66 -0
- package/dist/overlay/use-tour-step.cjs.map +1 -0
- package/dist/overlay/use-tour-step.d.ts +45 -0
- package/dist/overlay/use-tour-step.d.ts.map +1 -0
- package/dist/overlay/use-tour-step.js +66 -0
- package/dist/overlay/use-tour-step.js.map +1 -0
- package/dist/overlay/zIndex.cjs +8 -0
- package/dist/overlay/zIndex.cjs.map +1 -1
- package/dist/overlay/zIndex.d.ts +8 -0
- package/dist/overlay/zIndex.d.ts.map +1 -1
- package/dist/overlay/zIndex.js +8 -0
- package/dist/overlay/zIndex.js.map +1 -1
- package/dist/rpc/CommandOutput.cjs +8 -0
- package/dist/rpc/CommandOutput.cjs.map +1 -1
- package/dist/rpc/CommandOutput.d.ts +4 -1
- package/dist/rpc/CommandOutput.d.ts.map +1 -1
- package/dist/rpc/CommandOutput.js +8 -0
- package/dist/rpc/CommandOutput.js.map +1 -1
- package/dist/rpc/EntityExplorerApp.cjs +10 -16
- package/dist/rpc/EntityExplorerApp.cjs.map +1 -1
- package/dist/rpc/EntityExplorerApp.d.ts.map +1 -1
- package/dist/rpc/EntityExplorerApp.js +10 -16
- package/dist/rpc/EntityExplorerApp.js.map +1 -1
- package/dist/rpc/FilterForm.cjs +20 -0
- package/dist/rpc/FilterForm.cjs.map +1 -1
- package/dist/rpc/FilterForm.js +20 -0
- package/dist/rpc/FilterForm.js.map +1 -1
- package/dist/rpc/OperationActionBar.cjs +1 -1
- package/dist/rpc/OperationActionBar.cjs.map +1 -1
- package/dist/rpc/OperationActionBar.js +1 -1
- package/dist/rpc/OperationActionBar.js.map +1 -1
- package/dist/rpc/OperationCatalog.cjs +83 -7
- package/dist/rpc/OperationCatalog.cjs.map +1 -1
- package/dist/rpc/OperationCatalog.d.ts.map +1 -1
- package/dist/rpc/OperationCatalog.js +84 -8
- package/dist/rpc/OperationCatalog.js.map +1 -1
- package/dist/rpc/OperationResultView.cjs +2 -0
- package/dist/rpc/OperationResultView.cjs.map +1 -1
- package/dist/rpc/OperationResultView.d.ts +6 -0
- package/dist/rpc/OperationResultView.d.ts.map +1 -1
- package/dist/rpc/OperationResultView.js +2 -0
- package/dist/rpc/OperationResultView.js.map +1 -1
- package/dist/rpc/SchemaActionForm.cjs +2 -21
- package/dist/rpc/SchemaActionForm.cjs.map +1 -1
- package/dist/rpc/SchemaActionForm.d.ts.map +1 -1
- package/dist/rpc/SchemaActionForm.js +3 -22
- package/dist/rpc/SchemaActionForm.js.map +1 -1
- package/dist/rpc/apiClient.cjs +16 -2
- package/dist/rpc/apiClient.cjs.map +1 -1
- package/dist/rpc/apiClient.d.ts.map +1 -1
- package/dist/rpc/apiClient.js +16 -2
- package/dist/rpc/apiClient.js.map +1 -1
- package/dist/rpc/formMetadata.cjs +123 -49
- package/dist/rpc/formMetadata.cjs.map +1 -1
- package/dist/rpc/formMetadata.d.ts +14 -6
- package/dist/rpc/formMetadata.d.ts.map +1 -1
- package/dist/rpc/formMetadata.js +121 -47
- package/dist/rpc/formMetadata.js.map +1 -1
- package/dist/rpc/operationFilterSearch.cjs +23 -0
- package/dist/rpc/operationFilterSearch.cjs.map +1 -0
- package/dist/rpc/operationFilterSearch.d.ts +22 -0
- package/dist/rpc/operationFilterSearch.d.ts.map +1 -0
- package/dist/rpc/operationFilterSearch.js +23 -0
- package/dist/rpc/operationFilterSearch.js.map +1 -0
- package/dist/rpc/operationLookupFetcher.cjs +28 -0
- package/dist/rpc/operationLookupFetcher.cjs.map +1 -0
- package/dist/rpc/operationLookupFetcher.d.ts +17 -0
- package/dist/rpc/operationLookupFetcher.d.ts.map +1 -0
- package/dist/rpc/operationLookupFetcher.js +28 -0
- package/dist/rpc/operationLookupFetcher.js.map +1 -0
- package/dist/rpc/surfaceNav.cjs +77 -0
- package/dist/rpc/surfaceNav.cjs.map +1 -0
- package/dist/rpc/surfaceNav.d.ts +19 -0
- package/dist/rpc/surfaceNav.d.ts.map +1 -0
- package/dist/rpc/surfaceNav.js +77 -0
- package/dist/rpc/surfaceNav.js.map +1 -0
- package/dist/rpc/types.cjs.map +1 -1
- package/dist/rpc/types.d.ts +21 -2
- package/dist/rpc/types.d.ts.map +1 -1
- package/dist/rpc/types.js.map +1 -1
- package/dist/rpc.cjs +2 -0
- package/dist/rpc.cjs.map +1 -1
- package/dist/rpc.d.ts +1 -0
- package/dist/rpc.d.ts.map +1 -1
- package/dist/rpc.js +2 -0
- package/dist/rpc.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/utils.cjs +8 -0
- package/dist/utils.cjs.map +1 -1
- package/dist/utils.d.ts +2 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +10 -2
- package/dist/utils.js.map +1 -1
- package/package.json +1 -1
- package/dist/data/ai/RuntimeBar.cjs.map +0 -1
- package/dist/data/ai/RuntimeBar.d.ts.map +0 -1
- package/dist/data/ai/RuntimeBar.js.map +0 -1
- package/dist/data/ai/RuntimeBar.model.cjs.map +0 -1
- package/dist/data/ai/RuntimeBar.model.d.ts.map +0 -1
- package/dist/data/ai/RuntimeBar.model.js.map +0 -1
- package/dist/data/ai/RuntimeBarCombo.cjs.map +0 -1
- package/dist/data/ai/RuntimeBarCombo.d.ts.map +0 -1
- package/dist/data/ai/RuntimeBarCombo.js.map +0 -1
- package/dist/data/ai/model-capabilities.cjs.map +0 -1
- package/dist/data/ai/model-capabilities.d.ts.map +0 -1
- package/dist/data/ai/model-capabilities.js.map +0 -1
- package/dist/data/ai/runtime-mode.cjs.map +0 -1
- package/dist/data/ai/runtime-mode.d.ts.map +0 -1
- package/dist/data/ai/runtime-mode.js.map +0 -1
- /package/dist/data/{ai → runtime}/RuntimeBar.model.cjs +0 -0
- /package/dist/data/{ai → runtime}/RuntimeBar.model.js +0 -0
- /package/dist/data/{ai → runtime}/model-capabilities.cjs +0 -0
- /package/dist/data/{ai → runtime}/model-capabilities.d.ts +0 -0
- /package/dist/data/{ai → runtime}/model-capabilities.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiClient.js","sources":["../../src/rpc/apiClient.ts"],"sourcesContent":["import type { JsonSchemaObject } from \"../components/json-schema-form-types\";\nimport { stripLeadingSlashes, stripTrailingSlashes } from \"../lib/string\";\nimport type {\n ExecutionPagination,\n ExecutionResponse,\n OpenAPISpec,\n OperationLookupFilter,\n OperationLookupResponse,\n} from \"./types\";\nimport type { OperationsApiClient } from \"./useOperations\";\n\ntype MaybePromise<T> = T | Promise<T>;\n\nexport type OperationApiClientContext = {\n path: string;\n method: string;\n};\n\nexport type OperationDefaultParams = (context: {\n path: string;\n method: string;\n params: Record<string, string>;\n}) => MaybePromise<Record<string, string>>;\n\nexport type OperationHeadersProvider = (\n headers: Headers,\n context: OperationApiClientContext,\n) => MaybePromise<HeadersInit | void>;\n\nexport type CreateOperationsApiClientOptions = {\n baseUrl?: string;\n openApiPath?: string;\n credentials?: RequestCredentials;\n fetch?: typeof fetch;\n prepareHeaders?: OperationHeadersProvider;\n defaultParams?: OperationDefaultParams;\n};\n\nexport class OperationsApiClientError extends Error {\n status: number | undefined;\n method: string | undefined;\n url: string | undefined;\n responseBody: string | undefined;\n responseData: unknown;\n responseHeaders: Record<string, string> | undefined;\n\n constructor(\n message: string,\n options: {\n status?: number;\n method?: string;\n url?: string;\n responseBody?: string;\n responseData?: unknown;\n responseHeaders?: Record<string, string>;\n } = {},\n ) {\n super(message);\n this.name = \"OperationsApiClientError\";\n this.status = options.status;\n this.method = options.method;\n this.url = options.url;\n this.responseBody = options.responseBody;\n this.responseData = options.responseData;\n this.responseHeaders = options.responseHeaders;\n }\n}\n\nexport interface SharedOperationsApiClient extends OperationsApiClient {\n lookupFilterOptions(\n path: string,\n method: string,\n filterKey: string,\n query: string,\n extraParams?: Record<string, string>,\n ): Promise<OperationLookupFilter>;\n executeCommandBody(\n path: string,\n body: Record<string, unknown>,\n headers?: Record<string, string>,\n ): Promise<ExecutionResponse>;\n getSchema(path: string): Promise<JsonSchemaObject | undefined>;\n submitForm(\n path: string,\n method: string,\n body: Record<string, unknown>,\n headers?: Record<string, string>,\n ): Promise<ExecutionResponse>;\n}\n\nexport function createOperationsApiClient(\n options: CreateOperationsApiClientOptions = {},\n): SharedOperationsApiClient {\n const fetcher = options.fetch ?? fetch;\n const openApiPath = options.openApiPath ?? \"/api/openapi.json\";\n\n async function makeHeaders(\n base: HeadersInit | undefined,\n context: OperationApiClientContext,\n ): Promise<Headers> {\n const headers = new Headers(base);\n const prepared = await options.prepareHeaders?.(headers, context);\n return prepared ? new Headers(prepared) : headers;\n }\n\n async function request(\n path: string,\n method: string,\n init: Omit<RequestInit, \"method\" | \"headers\" | \"credentials\"> & {\n headers?: HeadersInit;\n requestUrl?: string;\n } = {},\n ): Promise<Response> {\n const url = joinUrl(options.baseUrl, path);\n const headers = await makeHeaders(init.headers, { path, method });\n return fetcher(url, {\n ...init,\n method,\n headers,\n ...(options.credentials ? { credentials: options.credentials } : {}),\n });\n }\n\n async function getOpenAPISpec(): Promise<OpenAPISpec> {\n const response = await request(openApiPath, \"GET\", {\n headers: { Accept: \"application/json\" },\n });\n const parsed = await readResponseBody(response, \"json\");\n if (!response.ok) {\n throw errorFromResponse(response, \"GET\", openApiPath, parsed);\n }\n return parsed.data as OpenAPISpec;\n }\n\n async function withDefaults(path: string, method: string, params: Record<string, string>) {\n return (await options.defaultParams?.({ path, method, params })) ?? params;\n }\n\n return {\n getOpenAPISpec,\n\n async executeCommand(path, method, params, headers) {\n const upper = method.toUpperCase();\n const resolved = resolvePathParams(path, params);\n const scoped = await withDefaults(resolved.path, upper, resolved.params);\n const accept = headerValue(headers, \"Accept\");\n\n if (upper === \"GET\") {\n const requestUrl = appendQuery(resolved.path, scoped);\n const response = await request(requestUrl, upper, {\n ...(headers ? { headers } : {}),\n requestUrl,\n });\n return parseExecutionResponse(response, await readResponseBody(response, responseKind(accept)), {\n method: upper,\n requestUrl,\n });\n }\n\n const response = await request(resolved.path, upper, {\n headers: { \"Content-Type\": \"application/json\", ...headers },\n body: JSON.stringify(scoped),\n });\n return parseExecutionResponse(response, await readResponseBody(response, responseKind(accept)), {\n method: upper,\n requestUrl: resolved.path,\n });\n },\n\n async executeCommandBody(path, body, headers) {\n const accept = headerValue(headers, \"Accept\");\n const response = await request(path, \"POST\", {\n headers: { \"Content-Type\": \"application/json\", ...headers },\n body: JSON.stringify(body),\n });\n return parseExecutionResponse(response, await readResponseBody(response, responseKind(accept)), {\n method: \"POST\",\n requestUrl: path,\n });\n },\n\n // getSchema fetches a resource's JSON Schema via content negotiation\n // (Accept: application/schema+json on the same endpoint). It returns\n // undefined when the resource serves no schema (the request falls through to\n // its data representation), so callers can fall back to a parameter form.\n async getSchema(path) {\n const response = await request(path, \"GET\", {\n headers: { Accept: \"application/schema+json\" },\n });\n if (!response.ok) return undefined;\n const contentType = response.headers.get(\"Content-Type\") || \"\";\n if (!contentType.toLowerCase().includes(\"schema\")) return undefined;\n const parsed = await readResponseBody(response, \"json\");\n const data = parsed.data;\n return data && typeof data === \"object\" ? (data as JsonSchemaObject) : undefined;\n },\n\n // submitForm sends a nested JSON body with the given HTTP method (POST to\n // create, PUT to update). Unlike executeCommand it preserves nested objects\n // and arrays — the server reads the raw body (clicky's RequestFromContext),\n // so connection `properties` and profile `provider`/`params`/`columns`\n // survive intact.\n async submitForm(path, method, body, headers) {\n const upper = method.toUpperCase();\n const response = await request(path, upper, {\n headers: { \"Content-Type\": \"application/json\", ...headers },\n body: JSON.stringify(body),\n });\n return parseExecutionResponse(response, await readResponseBody(response, \"json\"), {\n method: upper,\n requestUrl: path,\n });\n },\n\n async lookupFilters(path, method, params, headers) {\n const upper = method.toUpperCase();\n const resolved = resolvePathParams(path, params);\n\n if (upper === \"GET\") {\n const requestUrl = appendQuery(resolved.path, { ...resolved.params, __lookup: \"filters\" });\n const response = await request(requestUrl, \"GET\", {\n headers: { Accept: \"application/json+clicky\", ...headers },\n });\n if (response.status === 404) return { filters: {} };\n const parsed = await readResponseBody(response, \"json\");\n if (!response.ok) throw errorFromResponse(response, \"GET\", requestUrl, parsed);\n return (parsed.data as OperationLookupResponse | undefined) ?? { filters: {} };\n }\n\n const response = await request(appendQuery(resolved.path, { __lookup: \"filters\" }), upper, {\n headers: {\n Accept: \"application/json+clicky\",\n \"Content-Type\": \"application/json\",\n ...headers,\n },\n body: JSON.stringify(resolved.params),\n });\n if (response.status === 404) return { filters: {} };\n const parsed = await readResponseBody(response, \"json\");\n if (!response.ok) throw errorFromResponse(response, upper, resolved.path, parsed);\n return (parsed.data as OperationLookupResponse | undefined) ?? { filters: {} };\n },\n\n async lookupFilterOptions(path, method, filterKey, query, extraParams) {\n const upper = method.toUpperCase();\n const resolved = resolvePathParams(path, {});\n const queryParams = {\n ...extraParams,\n __lookup: \"filters\",\n __lookup_filter: filterKey,\n __lookup_q: query,\n };\n\n const requestPath = appendQuery(resolved.path, queryParams);\n const response = await request(requestPath, upper, {\n headers: { Accept: \"application/json+clicky\" },\n });\n const parsed = await readResponseBody(response, \"json\");\n if (!response.ok) throw errorFromResponse(response, upper, requestPath, parsed);\n return ((parsed.data as OperationLookupResponse | undefined)?.filters?.[filterKey] ??\n {}) as OperationLookupFilter;\n },\n };\n}\n\nfunction responseKind(accept?: string): \"json\" | \"text\" | \"blob\" {\n if (!accept) return \"json\";\n const normalized = accept.toLowerCase();\n if (normalized.includes(\"application/pdf\")) return \"blob\";\n if (\n normalized.includes(\"text/\") ||\n normalized.includes(\"application/x-yaml\") ||\n normalized.includes(\"application/yaml\")\n ) {\n return \"text\";\n }\n return \"json\";\n}\n\ntype ParsedBody = {\n data: unknown;\n text: string;\n blob?: Blob;\n contentType: string;\n};\n\nasync function readResponseBody(response: Response, kind: \"json\" | \"text\" | \"blob\"): Promise<ParsedBody> {\n const contentType = response.headers.get(\"Content-Type\") || \"\";\n if (kind === \"blob\") {\n const blob = await response.blob();\n return { data: undefined, text: \"[binary]\", blob, contentType };\n }\n\n const text = await response.text();\n if (kind === \"text\" || !shouldParseJson(text, contentType)) {\n return { data: text, text, contentType };\n }\n\n try {\n return { data: JSON.parse(text) as unknown, text, contentType };\n } catch {\n return { data: text, text, contentType };\n }\n}\n\nfunction parseExecutionResponse(\n response: Response,\n parsed: ParsedBody,\n context: { method: string; requestUrl: string },\n): ExecutionResponse {\n const headers = responseHeaders(response.headers);\n const data = parsed.data;\n const stdout =\n parsed.blob != null\n ? \"[binary]\"\n : typeof data === \"string\"\n ? data\n : parsed.text || JSON.stringify(data, null, 2);\n const clickyEnvelope = isClickyEnvelope(data);\n\n if (!response.ok && !clickyEnvelope) {\n throw errorFromResponse(response, context.method, context.requestUrl, parsed);\n }\n\n const clickyError = errorFromClickyEnvelope(data);\n const successHeader = headers[\"x-execution-success\"];\n const success = successHeader == null ? response.ok && !clickyError : successHeader !== \"false\";\n const exitCode = parseInt(headers[\"x-exit-code\"] ?? (success ? \"0\" : \"1\"), 10);\n const cli = headers[\"x-cli-command\"];\n const error = headers[\"x-error\"] || clickyError;\n const pagination = paginationFromHeaders(headers);\n\n return {\n success,\n stdout,\n output: stdout,\n exit_code: Number.isFinite(exitCode) ? exitCode : success ? 0 : 1,\n contentType: parsed.contentType || headers[\"content-type\"] || \"application/json\",\n requestUrl: context.requestUrl,\n responseHeaders: headers,\n ...(pagination ? { pagination } : {}),\n ...(cli ? { cli } : {}),\n ...(error ? { error } : {}),\n ...(parsed.blob ? { blob: parsed.blob } : {}),\n ...(parsed.blob == null && typeof data !== \"string\" ? { parsed: data } : {}),\n };\n}\n\nfunction errorFromResponse(\n response: Response,\n method: string,\n url: string,\n parsed: ParsedBody,\n): OperationsApiClientError {\n const headers = responseHeaders(response.headers);\n const message =\n headers[\"x-error\"] ||\n messageFromBody(parsed.data) ||\n `${method} ${url} failed with ${response.status}: ${\n parsed.text || response.statusText\n }`;\n return new OperationsApiClientError(message, {\n status: response.status,\n method,\n url,\n responseBody: parsed.text,\n responseData: parsed.data,\n responseHeaders: headers,\n });\n}\n\nfunction resolvePathParams(\n path: string,\n params: Record<string, string>,\n): { path: string; params: Record<string, string> } {\n const queryParams = { ...params };\n let resolvedPath = path;\n const placeholders = [...path.matchAll(/\\{([^{}]+)\\}/g)]\n .map((match) => match[1])\n .filter((name): name is string => Boolean(name));\n const argValues = parseArgsParam(params.args);\n let consumedArgs = false;\n const consumedDirectValues: string[] = [];\n\n for (const [index, name] of placeholders.entries()) {\n const directValue = queryParams[name];\n const fallbackValue = directValue || argValues[index];\n if (!fallbackValue) continue;\n\n resolvedPath = resolvedPath.replace(`{${name}}`, encodeURIComponent(fallbackValue));\n delete queryParams[name];\n if (!directValue && argValues[index]) consumedArgs = true;\n if (directValue) consumedDirectValues[index] = directValue;\n }\n\n const argsDuplicateResolvedPath =\n argValues.length > 0 &&\n argValues.length === consumedDirectValues.filter(Boolean).length &&\n argValues.every((value, index) => value === consumedDirectValues[index]);\n\n if (consumedArgs || argsDuplicateResolvedPath) {\n delete queryParams.args;\n }\n\n return { path: resolvedPath, params: stripRunnerParams(queryParams) };\n}\n\nfunction parseArgsParam(value: string | undefined): string[] {\n if (!value) return [];\n const trimmed = value.trim();\n if (!trimmed || trimmed === \"[]\" || trimmed.toLowerCase() === \"null\") return [];\n try {\n const parsed = JSON.parse(trimmed);\n if (Array.isArray(parsed)) return parsed.map(String).filter(Boolean);\n } catch {\n // Fall back to comma-delimited args below.\n }\n return trimmed\n .split(\",\")\n .map((part) => part.trim())\n .filter(Boolean);\n}\n\nfunction stripRunnerParams(params: Record<string, string>) {\n const next = { ...params };\n delete next.autoRun;\n delete next.__autoRun;\n return next;\n}\n\nfunction appendQuery(path: string, params: Record<string, string>) {\n const query = new URLSearchParams(pruneParams(params)).toString();\n if (!query) return path;\n return `${path}${path.includes(\"?\") ? \"&\" : \"?\"}${query}`;\n}\n\nfunction pruneParams(params: Record<string, string>) {\n return Object.fromEntries(Object.entries(params).filter(([, value]) => value !== \"\"));\n}\n\nfunction joinUrl(baseUrl: string | undefined, path: string) {\n if (!baseUrl || /^https?:\\/\\//i.test(path)) return path;\n return `${stripTrailingSlashes(baseUrl)}/${stripLeadingSlashes(path)}`;\n}\n\nfunction headerValue(headers: Record<string, string> | undefined, name: string) {\n const wanted = name.toLowerCase();\n for (const [key, value] of Object.entries(headers ?? {})) {\n if (key.toLowerCase() === wanted) return value;\n }\n return undefined;\n}\n\nfunction responseHeaders(headers: Headers): Record<string, string> {\n const out: Record<string, string> = {};\n headers.forEach((value, key) => {\n out[key.toLowerCase()] = value;\n });\n return out;\n}\n\nfunction paginationFromHeaders(headers: Record<string, string>): ExecutionPagination | undefined {\n const pagination: ExecutionPagination = {};\n const total = integerHeader(headers[\"x-total-count\"]);\n const limit = integerHeader(headers[\"x-page-limit\"]);\n const offset = integerHeader(headers[\"x-page-offset\"]);\n\n if (total !== undefined) pagination.total = total;\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n\n return Object.keys(pagination).length > 0 ? pagination : undefined;\n}\n\nfunction integerHeader(value: string | undefined): number | undefined {\n if (value == null || value.trim() === \"\") return undefined;\n const parsed = parseInt(value, 10);\n return Number.isFinite(parsed) ? parsed : undefined;\n}\n\nfunction shouldParseJson(text: string, contentType: string) {\n const trimmed = text.trim();\n return (\n trimmed !== \"\" &&\n (contentType.toLowerCase().includes(\"json\") ||\n trimmed.startsWith(\"{\") ||\n trimmed.startsWith(\"[\"))\n );\n}\n\nfunction isClickyEnvelope(data: unknown): boolean {\n if (!data || typeof data !== \"object\") return false;\n const body = data as Record<string, unknown>;\n return body.version != null && body.node != null && typeof body.node === \"object\";\n}\n\nfunction readClickyText(node: unknown): string | undefined {\n if (!node || typeof node !== \"object\") return undefined;\n const n = node as Record<string, unknown>;\n if (typeof n.plain === \"string\" && n.plain !== \"\") return n.plain;\n if (typeof n.text === \"string\" && n.text !== \"\") return n.text;\n if (Array.isArray(n.children)) {\n for (const child of n.children) {\n const text = readClickyText(child);\n if (text) return text;\n }\n }\n return undefined;\n}\n\nfunction errorFromClickyEnvelope(data: unknown): string | undefined {\n if (!data || typeof data !== \"object\") return undefined;\n const node = (data as Record<string, unknown>).node;\n if (!node || typeof node !== \"object\") return undefined;\n const n = node as Record<string, unknown>;\n if (n.kind !== \"map\" || !Array.isArray(n.fields)) return undefined;\n\n let errorText: string | undefined;\n let failed = false;\n for (const field of n.fields) {\n if (!field || typeof field !== \"object\") continue;\n const f = field as Record<string, unknown>;\n if (f.name === \"Error\") errorText = readClickyText(f.value);\n if (f.name === \"Success\" && readClickyText(f.value) === \"false\") failed = true;\n }\n return failed ? errorText : undefined;\n}\n\nfunction messageFromBody(data: unknown): string | undefined {\n if (!data || typeof data !== \"object\") return undefined;\n const body = data as Record<string, unknown>;\n if (typeof body.error === \"string\" && body.error) return body.error;\n if (typeof body.message === \"string\" && body.message) return body.message;\n return errorFromClickyEnvelope(data);\n}\n"],"names":["response","parsed"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"apiClient.js","sources":["../../src/rpc/apiClient.ts"],"sourcesContent":["import type { JsonSchemaObject } from \"../components/json-schema-form-types\";\nimport { stripLeadingSlashes, stripTrailingSlashes } from \"../lib/string\";\nimport type {\n ExecutionPagination,\n ExecutionResponse,\n OpenAPISpec,\n OperationLookupFilter,\n OperationLookupResponse,\n} from \"./types\";\nimport type { OperationsApiClient } from \"./useOperations\";\n\ntype MaybePromise<T> = T | Promise<T>;\n\nexport type OperationApiClientContext = {\n path: string;\n method: string;\n};\n\nexport type OperationDefaultParams = (context: {\n path: string;\n method: string;\n params: Record<string, string>;\n}) => MaybePromise<Record<string, string>>;\n\nexport type OperationHeadersProvider = (\n headers: Headers,\n context: OperationApiClientContext,\n) => MaybePromise<HeadersInit | void>;\n\nexport type CreateOperationsApiClientOptions = {\n baseUrl?: string;\n openApiPath?: string;\n credentials?: RequestCredentials;\n fetch?: typeof fetch;\n prepareHeaders?: OperationHeadersProvider;\n defaultParams?: OperationDefaultParams;\n};\n\nexport class OperationsApiClientError extends Error {\n status: number | undefined;\n method: string | undefined;\n url: string | undefined;\n responseBody: string | undefined;\n responseData: unknown;\n responseHeaders: Record<string, string> | undefined;\n\n constructor(\n message: string,\n options: {\n status?: number;\n method?: string;\n url?: string;\n responseBody?: string;\n responseData?: unknown;\n responseHeaders?: Record<string, string>;\n } = {},\n ) {\n super(message);\n this.name = \"OperationsApiClientError\";\n this.status = options.status;\n this.method = options.method;\n this.url = options.url;\n this.responseBody = options.responseBody;\n this.responseData = options.responseData;\n this.responseHeaders = options.responseHeaders;\n }\n}\n\nexport interface SharedOperationsApiClient extends OperationsApiClient {\n lookupFilterOptions(\n path: string,\n method: string,\n filterKey: string,\n query: string,\n extraParams?: Record<string, string>,\n ): Promise<OperationLookupFilter>;\n executeCommandBody(\n path: string,\n body: Record<string, unknown>,\n headers?: Record<string, string>,\n ): Promise<ExecutionResponse>;\n getSchema(path: string): Promise<JsonSchemaObject | undefined>;\n submitForm(\n path: string,\n method: string,\n body: Record<string, unknown>,\n headers?: Record<string, string>,\n ): Promise<ExecutionResponse>;\n}\n\nexport function createOperationsApiClient(\n options: CreateOperationsApiClientOptions = {},\n): SharedOperationsApiClient {\n const fetcher = options.fetch ?? fetch;\n const openApiPath = options.openApiPath ?? \"/api/openapi.json\";\n\n async function makeHeaders(\n base: HeadersInit | undefined,\n context: OperationApiClientContext,\n ): Promise<Headers> {\n const headers = new Headers(base);\n const prepared = await options.prepareHeaders?.(headers, context);\n return prepared ? new Headers(prepared) : headers;\n }\n\n async function request(\n path: string,\n method: string,\n init: Omit<RequestInit, \"method\" | \"headers\" | \"credentials\"> & {\n headers?: HeadersInit;\n requestUrl?: string;\n } = {},\n ): Promise<Response> {\n const url = joinUrl(options.baseUrl, path);\n const headers = await makeHeaders(init.headers, { path, method });\n return fetcher(url, {\n ...init,\n method,\n headers,\n ...(options.credentials ? { credentials: options.credentials } : {}),\n });\n }\n\n async function getOpenAPISpec(): Promise<OpenAPISpec> {\n const response = await request(openApiPath, \"GET\", {\n headers: { Accept: \"application/json\" },\n });\n const parsed = await readResponseBody(response, \"json\");\n if (!response.ok) {\n throw errorFromResponse(response, \"GET\", openApiPath, parsed);\n }\n return parsed.data as OpenAPISpec;\n }\n\n async function withDefaults(path: string, method: string, params: Record<string, string>) {\n return (await options.defaultParams?.({ path, method, params })) ?? params;\n }\n\n return {\n getOpenAPISpec,\n\n async executeCommand(path, method, params, headers) {\n const upper = method.toUpperCase();\n const resolved = resolvePathParams(path, params);\n const scoped = await withDefaults(resolved.path, upper, resolved.params);\n const accept = headerValue(headers, \"Accept\");\n\n if (upper === \"GET\") {\n const requestUrl = appendQuery(resolved.path, scoped);\n const response = await request(requestUrl, upper, {\n ...(headers ? { headers } : {}),\n requestUrl,\n });\n return parseExecutionResponse(response, await readResponseBody(response, responseKind(accept)), {\n method: upper,\n requestUrl,\n });\n }\n\n const response = await request(resolved.path, upper, {\n headers: { \"Content-Type\": \"application/json\", ...headers },\n body: JSON.stringify(scoped),\n });\n return parseExecutionResponse(response, await readResponseBody(response, responseKind(accept)), {\n method: upper,\n requestUrl: resolved.path,\n });\n },\n\n async executeCommandBody(path, body, headers) {\n const accept = headerValue(headers, \"Accept\");\n const response = await request(path, \"POST\", {\n headers: { \"Content-Type\": \"application/json\", ...headers },\n body: JSON.stringify(body),\n });\n return parseExecutionResponse(response, await readResponseBody(response, responseKind(accept)), {\n method: \"POST\",\n requestUrl: path,\n });\n },\n\n // getSchema fetches a resource's JSON Schema via content negotiation\n // (Accept: application/schema+json on the same endpoint). It returns\n // undefined when the resource serves no schema (the request falls through to\n // its data representation), so callers can fall back to a parameter form.\n async getSchema(path) {\n const response = await request(path, \"GET\", {\n headers: { Accept: \"application/schema+json\" },\n });\n if (!response.ok) return undefined;\n const contentType = response.headers.get(\"Content-Type\") || \"\";\n if (!contentType.toLowerCase().includes(\"schema\")) return undefined;\n const parsed = await readResponseBody(response, \"json\");\n const data = parsed.data;\n return data && typeof data === \"object\" ? (data as JsonSchemaObject) : undefined;\n },\n\n // submitForm sends a nested JSON body with the given HTTP method (POST to\n // create, PUT to update). Unlike executeCommand it preserves nested objects\n // and arrays — the server reads the raw body (clicky's RequestFromContext),\n // so connection `properties` and profile `provider`/`params`/`columns`\n // survive intact.\n async submitForm(path, method, body, headers) {\n const upper = method.toUpperCase();\n const response = await request(path, upper, {\n headers: { \"Content-Type\": \"application/json\", ...headers },\n body: JSON.stringify(body),\n });\n return parseExecutionResponse(response, await readResponseBody(response, \"json\"), {\n method: upper,\n requestUrl: path,\n });\n },\n\n async lookupFilters(path, method, params, headers) {\n const upper = method.toUpperCase();\n const resolved = resolvePathParams(path, params);\n\n if (upper === \"GET\") {\n const requestUrl = appendQuery(resolved.path, { ...resolved.params, __lookup: \"filters\" });\n const response = await request(requestUrl, \"GET\", {\n headers: { Accept: \"application/json+clicky\", ...headers },\n });\n if (response.status === 404) return { filters: {} };\n const parsed = await readResponseBody(response, \"json\");\n if (!response.ok) throw errorFromResponse(response, \"GET\", requestUrl, parsed);\n return (parsed.data as OperationLookupResponse | undefined) ?? { filters: {} };\n }\n\n const response = await request(appendQuery(resolved.path, { __lookup: \"filters\" }), upper, {\n headers: {\n Accept: \"application/json+clicky\",\n \"Content-Type\": \"application/json\",\n ...headers,\n },\n body: JSON.stringify(resolved.params),\n });\n if (response.status === 404) return { filters: {} };\n const parsed = await readResponseBody(response, \"json\");\n if (!response.ok) throw errorFromResponse(response, upper, resolved.path, parsed);\n return (parsed.data as OperationLookupResponse | undefined) ?? { filters: {} };\n },\n\n async lookupFilterOptions(path, method, filterKey, query, extraParams) {\n const upper = method.toUpperCase();\n // Resolved against the supplied params, as lookupFilters does: a lookup on\n // an operation with a templated path would otherwise request the literal\n // \"{id}\" and the sibling values that scope the search would be lost.\n const resolved = resolvePathParams(path, extraParams ?? {});\n const queryParams = {\n ...resolved.params,\n __lookup: \"filters\",\n __lookup_filter: filterKey,\n __lookup_q: query,\n };\n\n const requestPath = appendQuery(resolved.path, queryParams);\n const response = await request(requestPath, upper, {\n headers: { Accept: \"application/json+clicky\" },\n });\n const parsed = await readResponseBody(response, \"json\");\n if (!response.ok) throw errorFromResponse(response, upper, requestPath, parsed);\n return ((parsed.data as OperationLookupResponse | undefined)?.filters?.[filterKey] ??\n {}) as OperationLookupFilter;\n },\n };\n}\n\nfunction responseKind(accept?: string): \"json\" | \"text\" | \"blob\" {\n if (!accept) return \"json\";\n const normalized = accept.toLowerCase();\n if (normalized.includes(\"application/pdf\")) return \"blob\";\n if (\n normalized.includes(\"text/\") ||\n normalized.includes(\"application/x-yaml\") ||\n normalized.includes(\"application/yaml\")\n ) {\n return \"text\";\n }\n return \"json\";\n}\n\ntype ParsedBody = {\n data: unknown;\n text: string;\n blob?: Blob;\n contentType: string;\n};\n\nasync function readResponseBody(response: Response, kind: \"json\" | \"text\" | \"blob\"): Promise<ParsedBody> {\n const contentType = response.headers.get(\"Content-Type\") || \"\";\n if (kind === \"blob\") {\n const blob = await response.blob();\n return { data: undefined, text: \"[binary]\", blob, contentType };\n }\n\n const text = await response.text();\n if (kind === \"text\" || !shouldParseJson(text, contentType)) {\n return { data: text, text, contentType };\n }\n\n try {\n return { data: JSON.parse(text) as unknown, text, contentType };\n } catch {\n return { data: text, text, contentType };\n }\n}\n\nfunction parseExecutionResponse(\n response: Response,\n parsed: ParsedBody,\n context: { method: string; requestUrl: string },\n): ExecutionResponse {\n const headers = responseHeaders(response.headers);\n const data = parsed.data;\n const stdout =\n parsed.blob != null\n ? \"[binary]\"\n : typeof data === \"string\"\n ? data\n : parsed.text || JSON.stringify(data, null, 2);\n const clickyEnvelope = isClickyEnvelope(data);\n\n if (!response.ok && !clickyEnvelope) {\n throw errorFromResponse(response, context.method, context.requestUrl, parsed);\n }\n\n const clickyError = errorFromClickyEnvelope(data);\n const successHeader = headers[\"x-execution-success\"];\n const success = successHeader == null ? response.ok && !clickyError : successHeader !== \"false\";\n const exitCode = parseInt(headers[\"x-exit-code\"] ?? (success ? \"0\" : \"1\"), 10);\n const cli = headers[\"x-cli-command\"];\n const error = headers[\"x-error\"] || clickyError;\n const pagination = paginationFromHeaders(headers);\n\n return {\n success,\n stdout,\n output: stdout,\n exit_code: Number.isFinite(exitCode) ? exitCode : success ? 0 : 1,\n contentType: parsed.contentType || headers[\"content-type\"] || \"application/json\",\n requestUrl: context.requestUrl,\n responseHeaders: headers,\n ...(pagination ? { pagination } : {}),\n ...(cli ? { cli } : {}),\n ...(error ? { error } : {}),\n ...(parsed.blob ? { blob: parsed.blob } : {}),\n ...(parsed.blob == null && typeof data !== \"string\" ? { parsed: data } : {}),\n };\n}\n\nfunction errorFromResponse(\n response: Response,\n method: string,\n url: string,\n parsed: ParsedBody,\n): OperationsApiClientError {\n const headers = responseHeaders(response.headers);\n const message =\n headers[\"x-error\"] ||\n messageFromBody(parsed.data) ||\n `${method} ${url} failed with ${response.status}: ${\n parsed.text || response.statusText\n }`;\n return new OperationsApiClientError(message, {\n status: response.status,\n method,\n url,\n responseBody: parsed.text,\n responseData: parsed.data,\n responseHeaders: headers,\n });\n}\n\nfunction resolvePathParams(\n path: string,\n params: Record<string, string>,\n): { path: string; params: Record<string, string> } {\n const queryParams = { ...params };\n let resolvedPath = path;\n const placeholders = [...path.matchAll(/\\{([^{}]+)\\}/g)]\n .map((match) => match[1])\n .filter((name): name is string => Boolean(name));\n const argValues = parseArgsParam(params.args);\n let consumedArgs = false;\n const consumedDirectValues: string[] = [];\n\n for (const [index, name] of placeholders.entries()) {\n const directValue = queryParams[name];\n const fallbackValue = directValue || argValues[index];\n if (!fallbackValue) continue;\n\n resolvedPath = resolvedPath.replace(`{${name}}`, encodeURIComponent(fallbackValue));\n delete queryParams[name];\n if (!directValue && argValues[index]) consumedArgs = true;\n if (directValue) consumedDirectValues[index] = directValue;\n }\n\n const argsDuplicateResolvedPath =\n argValues.length > 0 &&\n argValues.length === consumedDirectValues.filter(Boolean).length &&\n argValues.every((value, index) => value === consumedDirectValues[index]);\n\n if (consumedArgs || argsDuplicateResolvedPath) {\n delete queryParams.args;\n }\n\n return { path: resolvedPath, params: stripRunnerParams(queryParams) };\n}\n\nfunction parseArgsParam(value: string | undefined): string[] {\n if (!value) return [];\n const trimmed = value.trim();\n if (!trimmed || trimmed === \"[]\" || trimmed.toLowerCase() === \"null\") return [];\n try {\n const parsed = JSON.parse(trimmed);\n if (Array.isArray(parsed)) return parsed.map(String).filter(Boolean);\n } catch {\n // Fall back to comma-delimited args below.\n }\n return trimmed\n .split(\",\")\n .map((part) => part.trim())\n .filter(Boolean);\n}\n\nfunction stripRunnerParams(params: Record<string, string>) {\n const next = { ...params };\n delete next.autoRun;\n delete next.__autoRun;\n return next;\n}\n\nfunction appendQuery(path: string, params: Record<string, string>) {\n const query = new URLSearchParams(pruneParams(params)).toString();\n if (!query) return path;\n return `${path}${path.includes(\"?\") ? \"&\" : \"?\"}${query}`;\n}\n\nfunction pruneParams(params: Record<string, string>) {\n return Object.fromEntries(Object.entries(params).filter(([, value]) => value !== \"\"));\n}\n\nfunction joinUrl(baseUrl: string | undefined, path: string) {\n if (!baseUrl || /^https?:\\/\\//i.test(path)) return path;\n return `${stripTrailingSlashes(baseUrl)}/${stripLeadingSlashes(path)}`;\n}\n\nfunction headerValue(headers: Record<string, string> | undefined, name: string) {\n const wanted = name.toLowerCase();\n for (const [key, value] of Object.entries(headers ?? {})) {\n if (key.toLowerCase() === wanted) return value;\n }\n return undefined;\n}\n\nfunction responseHeaders(headers: Headers): Record<string, string> {\n const out: Record<string, string> = {};\n headers.forEach((value, key) => {\n out[key.toLowerCase()] = value;\n });\n return out;\n}\n\nfunction paginationFromHeaders(headers: Record<string, string>): ExecutionPagination | undefined {\n const pagination: ExecutionPagination = {};\n const total = integerHeader(headers[\"x-total-count\"]);\n const limit = integerHeader(headers[\"x-page-limit\"]);\n const offset = integerHeader(headers[\"x-page-offset\"]);\n\n if (total !== undefined) pagination.total = total;\n if (limit !== undefined) pagination.limit = limit;\n if (offset !== undefined) pagination.offset = offset;\n\n const relation = headers[\"x-total-relation\"];\n if (relation === \"eq\" || relation === \"gte\") pagination.totalRelation = relation;\n\n const hasMore = booleanHeader(headers[\"x-has-more\"]);\n if (hasMore !== undefined) pagination.hasMore = hasMore;\n\n const cursor = headers[\"x-next-cursor\"];\n if (cursor != null && cursor.trim() !== \"\") pagination.nextCursor = cursor;\n\n if (booleanHeader(headers[\"x-truncated\"]) === true) pagination.truncated = true;\n\n return Object.keys(pagination).length > 0 ? pagination : undefined;\n}\n\nfunction booleanHeader(value: string | undefined): boolean | undefined {\n if (value == null || value.trim() === \"\") return undefined;\n const normalized = value.trim().toLowerCase();\n if (normalized === \"true\") return true;\n if (normalized === \"false\") return false;\n return undefined;\n}\n\nfunction integerHeader(value: string | undefined): number | undefined {\n if (value == null || value.trim() === \"\") return undefined;\n const parsed = parseInt(value, 10);\n return Number.isFinite(parsed) ? parsed : undefined;\n}\n\nfunction shouldParseJson(text: string, contentType: string) {\n const trimmed = text.trim();\n return (\n trimmed !== \"\" &&\n (contentType.toLowerCase().includes(\"json\") ||\n trimmed.startsWith(\"{\") ||\n trimmed.startsWith(\"[\"))\n );\n}\n\nfunction isClickyEnvelope(data: unknown): boolean {\n if (!data || typeof data !== \"object\") return false;\n const body = data as Record<string, unknown>;\n return body.version != null && body.node != null && typeof body.node === \"object\";\n}\n\nfunction readClickyText(node: unknown): string | undefined {\n if (!node || typeof node !== \"object\") return undefined;\n const n = node as Record<string, unknown>;\n if (typeof n.plain === \"string\" && n.plain !== \"\") return n.plain;\n if (typeof n.text === \"string\" && n.text !== \"\") return n.text;\n if (Array.isArray(n.children)) {\n for (const child of n.children) {\n const text = readClickyText(child);\n if (text) return text;\n }\n }\n return undefined;\n}\n\nfunction errorFromClickyEnvelope(data: unknown): string | undefined {\n if (!data || typeof data !== \"object\") return undefined;\n const node = (data as Record<string, unknown>).node;\n if (!node || typeof node !== \"object\") return undefined;\n const n = node as Record<string, unknown>;\n if (n.kind !== \"map\" || !Array.isArray(n.fields)) return undefined;\n\n let errorText: string | undefined;\n let failed = false;\n for (const field of n.fields) {\n if (!field || typeof field !== \"object\") continue;\n const f = field as Record<string, unknown>;\n if (f.name === \"Error\") errorText = readClickyText(f.value);\n if (f.name === \"Success\" && readClickyText(f.value) === \"false\") failed = true;\n }\n return failed ? errorText : undefined;\n}\n\nfunction messageFromBody(data: unknown): string | undefined {\n if (!data || typeof data !== \"object\") return undefined;\n const body = data as Record<string, unknown>;\n if (typeof body.error === \"string\" && body.error) return body.error;\n if (typeof body.message === \"string\" && body.message) return body.message;\n return errorFromClickyEnvelope(data);\n}\n"],"names":["response","parsed"],"mappings":"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"}
|
|
@@ -1,7 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
3
|
const react = require("react");
|
|
4
|
+
const dataTableFilterValues = require("../data/data-table-filter-values.cjs");
|
|
4
5
|
const types = require("./types.cjs");
|
|
6
|
+
function truncationProps(filter) {
|
|
7
|
+
if (!filter.truncated) return {};
|
|
8
|
+
return { truncated: true, ...filter.total !== void 0 ? { total: filter.total } : {} };
|
|
9
|
+
}
|
|
10
|
+
function searchProps(filter, key, search) {
|
|
11
|
+
if (!filter.truncated) return {};
|
|
12
|
+
return {
|
|
13
|
+
...truncationProps(filter),
|
|
14
|
+
...search ? { onSearch: (query) => search(key, query) } : {}
|
|
15
|
+
};
|
|
16
|
+
}
|
|
5
17
|
function titleCase(value) {
|
|
6
18
|
return value.split(/[-_]/).filter(Boolean).map((part) => part.charAt(0).toUpperCase() + part.slice(1)).join(" ");
|
|
7
19
|
}
|
|
@@ -29,25 +41,56 @@ function buildInitialParameterValues(parameters, method, lockedValues = {}, init
|
|
|
29
41
|
);
|
|
30
42
|
return { ...values, ...initialValues, ...lockedValues };
|
|
31
43
|
}
|
|
44
|
+
const OFFSET_DEPTH_LIMIT = 1e4;
|
|
32
45
|
function dataTablePaginationFromForm(pagination, response) {
|
|
33
|
-
var _a, _b
|
|
46
|
+
var _a, _b;
|
|
34
47
|
if (!pagination) return void 0;
|
|
35
48
|
const pageSize = positiveInt(pagination.limitValue) ?? ((_a = response == null ? void 0 : response.pagination) == null ? void 0 : _a.limit) ?? 25;
|
|
36
49
|
const offset = nonNegativeInt(pagination.offsetValue) ?? ((_b = response == null ? void 0 : response.pagination) == null ? void 0 : _b.offset) ?? 0;
|
|
37
50
|
const page = Math.floor(offset / pageSize);
|
|
51
|
+
const served = response == null ? void 0 : response.pagination;
|
|
52
|
+
const setCursor = pagination.setCursor;
|
|
53
|
+
const setOffset = pagination.setOffset;
|
|
38
54
|
return {
|
|
39
55
|
page,
|
|
40
56
|
pageSize,
|
|
41
|
-
...(
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
57
|
+
...(served == null ? void 0 : served.total) !== void 0 ? { total: served.total } : {},
|
|
58
|
+
...(served == null ? void 0 : served.totalRelation) !== void 0 ? { totalRelation: served.totalRelation } : {},
|
|
59
|
+
...(served == null ? void 0 : served.hasMore) !== void 0 ? { hasMore: served.hasMore } : {},
|
|
60
|
+
// Cursor mode needs both halves: a parameter to send the cursor on, and a
|
|
61
|
+
// cursor to send. An operation that declares one without the server minting
|
|
62
|
+
// the other pages by offset, which is correct and merely slower.
|
|
63
|
+
//
|
|
64
|
+
// Which mode applies is depth, not preference: a walk already under way
|
|
65
|
+
// continues, and a shallow page keeps its jump controls until the next one
|
|
66
|
+
// would cross OFFSET_DEPTH_LIMIT — the point past which the offset would be
|
|
67
|
+
// refused anyway.
|
|
68
|
+
...setCursor && (pagination.cursorValue || (served == null ? void 0 : served.nextCursor) && offset + pageSize >= OFFSET_DEPTH_LIMIT) ? {
|
|
69
|
+
cursor: {
|
|
70
|
+
...pagination.cursorValue ? { current: pagination.cursorValue } : {},
|
|
71
|
+
...(served == null ? void 0 : served.nextCursor) ? { next: served.nextCursor } : {},
|
|
72
|
+
onCursorChange: (next) => {
|
|
73
|
+
setOffset == null ? void 0 : setOffset("0");
|
|
74
|
+
setCursor(next ?? "");
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
} : {},
|
|
78
|
+
// Offered only when there is somewhere to step to. A surface with no offset
|
|
79
|
+
// parameter still counts and still resizes, but naming page two would be
|
|
80
|
+
// naming a page the server will refuse.
|
|
81
|
+
...setOffset ? {
|
|
82
|
+
onPageChange: (next) => {
|
|
83
|
+
if (positiveInt(pagination.limitValue) == null) {
|
|
84
|
+
pagination.setLimit(String(pageSize));
|
|
85
|
+
}
|
|
86
|
+
setCursor == null ? void 0 : setCursor("");
|
|
87
|
+
setOffset(String(Math.max(next, 0) * pageSize));
|
|
45
88
|
}
|
|
46
|
-
|
|
47
|
-
},
|
|
89
|
+
} : {},
|
|
48
90
|
onPageSizeChange: (next) => {
|
|
49
91
|
pagination.setLimit(String(next));
|
|
50
|
-
|
|
92
|
+
setCursor == null ? void 0 : setCursor("");
|
|
93
|
+
setOffset == null ? void 0 : setOffset("0");
|
|
51
94
|
}
|
|
52
95
|
};
|
|
53
96
|
}
|
|
@@ -88,9 +131,14 @@ function parametersToFormConfig(parameters, values, setValues, options = {}) {
|
|
|
88
131
|
var _a2;
|
|
89
132
|
return ((_a2 = p["x-clicky"]) == null ? void 0 : _a2.role) === "offset";
|
|
90
133
|
});
|
|
134
|
+
const cursorParam = parameters.find((p) => {
|
|
135
|
+
var _a2;
|
|
136
|
+
return ((_a2 = p["x-clicky"]) == null ? void 0 : _a2.role) === "cursor";
|
|
137
|
+
});
|
|
91
138
|
const paginationOmitNames = /* @__PURE__ */ new Set();
|
|
92
139
|
if (limitParam) paginationOmitNames.add(limitParam.name);
|
|
93
140
|
if (offsetParam) paginationOmitNames.add(offsetParam.name);
|
|
141
|
+
if (cursorParam) paginationOmitNames.add(cursorParam.name);
|
|
94
142
|
const searchParam = parameters.find(
|
|
95
143
|
(p) => {
|
|
96
144
|
var _a2;
|
|
@@ -99,6 +147,11 @@ function parametersToFormConfig(parameters, values, setValues, options = {}) {
|
|
|
99
147
|
);
|
|
100
148
|
const omitNames = new Set(paginationOmitNames);
|
|
101
149
|
if (searchParam) omitNames.add(searchParam.name);
|
|
150
|
+
const rewind = (next) => ({
|
|
151
|
+
...next,
|
|
152
|
+
...offsetParam ? { [offsetParam.name]: "0" } : {},
|
|
153
|
+
...cursorParam ? { [cursorParam.name]: "" } : {}
|
|
154
|
+
});
|
|
102
155
|
const roleRangeStart = parameters.find((p) => {
|
|
103
156
|
var _a2;
|
|
104
157
|
return ((_a2 = p["x-clicky"]) == null ? void 0 : _a2.role) === "time-from";
|
|
@@ -135,22 +188,56 @@ function parametersToFormConfig(parameters, values, setValues, options = {}) {
|
|
|
135
188
|
const onChange = (next) => {
|
|
136
189
|
if (disabled) return;
|
|
137
190
|
const stringValue = typeof next === "boolean" ? next ? "true" : "false" : next;
|
|
138
|
-
setValues((current) => ({ ...current, [param.name]: stringValue }));
|
|
191
|
+
setValues((current) => rewind({ ...current, [param.name]: stringValue }));
|
|
139
192
|
};
|
|
140
193
|
const schema = param.schema;
|
|
141
194
|
const lookupFilter = lookupFilters[param.name];
|
|
195
|
+
if ((lookupFilter == null ? void 0 : lookupFilter.type) === "date-range" && param.in === "query") {
|
|
196
|
+
const bounds = dataTableFilterValues.parseBoundsValue(value);
|
|
197
|
+
emitFilters.push({
|
|
198
|
+
key: param.name,
|
|
199
|
+
kind: "date-range",
|
|
200
|
+
label,
|
|
201
|
+
disabled,
|
|
202
|
+
...bounds.min !== void 0 ? { from: bounds.min } : {},
|
|
203
|
+
...bounds.max !== void 0 ? { to: bounds.max } : {},
|
|
204
|
+
...lookupFilter.presets ? { presets: lookupFilter.presets } : {},
|
|
205
|
+
timeEnabled: lookupFilter.timeEnabled ?? true,
|
|
206
|
+
...lookupFilter.timeZone ? { timeZone: lookupFilter.timeZone } : {},
|
|
207
|
+
...lookupFilter.timeZones ? { timeZones: lookupFilter.timeZones } : {},
|
|
208
|
+
onApply: (from, to) => {
|
|
209
|
+
if (disabled) return;
|
|
210
|
+
setValues(
|
|
211
|
+
(current) => rewind({ ...current, [param.name]: dataTableFilterValues.serializeBoundsValue({ min: from, max: to }) })
|
|
212
|
+
);
|
|
213
|
+
}
|
|
214
|
+
});
|
|
215
|
+
continue;
|
|
216
|
+
}
|
|
217
|
+
if ((lookupFilter == null ? void 0 : lookupFilter.type) === "value" && param.in === "query") {
|
|
218
|
+
emitFilters.push({
|
|
219
|
+
key: param.name,
|
|
220
|
+
kind: "text",
|
|
221
|
+
label,
|
|
222
|
+
value,
|
|
223
|
+
disabled,
|
|
224
|
+
...placeholderProp,
|
|
225
|
+
onChange: (next) => onChange(next)
|
|
226
|
+
});
|
|
227
|
+
continue;
|
|
228
|
+
}
|
|
142
229
|
if ((lookupFilter == null ? void 0 : lookupFilter.type) === "multi-filter" && param.in === "query") {
|
|
143
230
|
emitFilters.push({
|
|
144
231
|
key: param.name,
|
|
145
232
|
kind: "multi",
|
|
146
233
|
label,
|
|
147
|
-
value: parseMultiFilterValue(value),
|
|
234
|
+
value: dataTableFilterValues.parseMultiFilterValue(value),
|
|
148
235
|
disabled,
|
|
149
236
|
options: lookupOptionsToFieldOptions(lookupFilter),
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
[param.name]: serializeMultiFilterValue(next)
|
|
153
|
-
|
|
237
|
+
...searchProps(lookupFilter, param.name, options.lookupSearch),
|
|
238
|
+
onChange: (next) => setValues(
|
|
239
|
+
(current) => rewind({ ...current, [param.name]: dataTableFilterValues.serializeMultiFilterValue(next) })
|
|
240
|
+
)
|
|
154
241
|
});
|
|
155
242
|
continue;
|
|
156
243
|
}
|
|
@@ -186,11 +273,15 @@ function parametersToFormConfig(parameters, values, setValues, options = {}) {
|
|
|
186
273
|
key: param.name,
|
|
187
274
|
kind: "lookup-multi",
|
|
188
275
|
label,
|
|
189
|
-
value: splitCommaValues(value),
|
|
276
|
+
value: dataTableFilterValues.splitCommaValues(value),
|
|
190
277
|
disabled,
|
|
191
278
|
options: lookupOptionsToFieldOptions(lookupFilter),
|
|
279
|
+
// Reported, not searched: this control's onSearch hands the query back
|
|
280
|
+
// to the consumer to refetch and re-feed `options`, which is a
|
|
281
|
+
// different contract from the one searchProps satisfies.
|
|
282
|
+
...truncationProps(lookupFilter),
|
|
192
283
|
...placeholderProp,
|
|
193
|
-
onChange: (next) => setValues((current) => ({ ...current, [param.name]: next.join(",") }))
|
|
284
|
+
onChange: (next) => setValues((current) => rewind({ ...current, [param.name]: next.join(",") }))
|
|
194
285
|
});
|
|
195
286
|
continue;
|
|
196
287
|
}
|
|
@@ -226,20 +317,27 @@ function parametersToFormConfig(parameters, values, setValues, options = {}) {
|
|
|
226
317
|
value: searchValue,
|
|
227
318
|
onChange: (next) => {
|
|
228
319
|
if (searchDisabled) return;
|
|
229
|
-
setValues((current) => ({ ...current, [searchParam.name]: next }));
|
|
320
|
+
setValues((current) => rewind({ ...current, [searchParam.name]: next }));
|
|
230
321
|
},
|
|
231
322
|
...searchPlaceholder ? { placeholder: searchPlaceholder } : {},
|
|
232
323
|
ariaLabel: ((_c = lookupFilters[searchParam.name]) == null ? void 0 : _c.label) ?? titleCase(searchParam.name)
|
|
233
324
|
};
|
|
234
325
|
}
|
|
235
|
-
if (limitParam
|
|
326
|
+
if (limitParam) {
|
|
236
327
|
config.pagination = {
|
|
237
328
|
limitParam: limitParam.name,
|
|
238
|
-
offsetParam: offsetParam.name,
|
|
239
329
|
limitValue: values[limitParam.name] ?? "",
|
|
240
|
-
offsetValue: values[offsetParam.name] ?? "",
|
|
241
330
|
setLimit: (next) => setValues((current) => ({ ...current, [limitParam.name]: next })),
|
|
242
|
-
|
|
331
|
+
...offsetParam ? {
|
|
332
|
+
offsetParam: offsetParam.name,
|
|
333
|
+
offsetValue: values[offsetParam.name] ?? "",
|
|
334
|
+
setOffset: (next) => setValues((current) => ({ ...current, [offsetParam.name]: next }))
|
|
335
|
+
} : {},
|
|
336
|
+
...cursorParam ? {
|
|
337
|
+
cursorParam: cursorParam.name,
|
|
338
|
+
cursorValue: values[cursorParam.name] ?? "",
|
|
339
|
+
setCursor: (next) => setValues((current) => ({ ...current, [cursorParam.name]: next }))
|
|
340
|
+
} : {}
|
|
243
341
|
};
|
|
244
342
|
}
|
|
245
343
|
if (hasTimeRange && rangeStart != null && rangeEnd != null) {
|
|
@@ -249,11 +347,9 @@ function parametersToFormConfig(parameters, values, setValues, options = {}) {
|
|
|
249
347
|
config.timeRange = {
|
|
250
348
|
from: values[rangeStart.name] ?? "",
|
|
251
349
|
to: values[rangeEnd.name] ?? "",
|
|
252
|
-
onApply: (from, to) => setValues(
|
|
253
|
-
...current,
|
|
254
|
-
|
|
255
|
-
[rangeEnd.name]: to
|
|
256
|
-
})),
|
|
350
|
+
onApply: (from, to) => setValues(
|
|
351
|
+
(current) => rewind({ ...current, [rangeStart.name]: from, [rangeEnd.name]: to })
|
|
352
|
+
),
|
|
257
353
|
...(rangeMeta == null ? void 0 : rangeMeta.presets) ? { presets: rangeMeta.presets } : {},
|
|
258
354
|
timeEnabled: (rangeMeta == null ? void 0 : rangeMeta.timeEnabled) ?? false,
|
|
259
355
|
...(rangeMeta == null ? void 0 : rangeMeta.timeZone) ? { timeZone: rangeMeta.timeZone } : {},
|
|
@@ -272,27 +368,6 @@ function useDebouncedRecord(value, delayMs) {
|
|
|
272
368
|
}, [delayMs, value]);
|
|
273
369
|
return debounced;
|
|
274
370
|
}
|
|
275
|
-
function parseMultiFilterValue(value) {
|
|
276
|
-
const parsed = {};
|
|
277
|
-
for (const item of splitCommaValues(value)) {
|
|
278
|
-
if (item.startsWith("!") && item.length > 1) {
|
|
279
|
-
parsed[item.slice(1)] = "exclude";
|
|
280
|
-
} else {
|
|
281
|
-
parsed[item] = "include";
|
|
282
|
-
}
|
|
283
|
-
}
|
|
284
|
-
return parsed;
|
|
285
|
-
}
|
|
286
|
-
function serializeMultiFilterValue(value) {
|
|
287
|
-
return Object.entries(value).flatMap(([key, mode]) => {
|
|
288
|
-
if (mode === "include") return [key];
|
|
289
|
-
if (mode === "exclude") return [`!${key}`];
|
|
290
|
-
return [];
|
|
291
|
-
}).join(",");
|
|
292
|
-
}
|
|
293
|
-
function splitCommaValues(value) {
|
|
294
|
-
return value.split(",").map((item) => item.trim()).filter(Boolean);
|
|
295
|
-
}
|
|
296
371
|
function positiveInt(value) {
|
|
297
372
|
const parsed = parseInt(value ?? "", 10);
|
|
298
373
|
return Number.isFinite(parsed) && parsed > 0 ? parsed : void 0;
|
|
@@ -329,15 +404,14 @@ function clickyNodeToPlainText(node) {
|
|
|
329
404
|
if (node.text) return node.text;
|
|
330
405
|
return (node.children ?? []).map((child) => clickyNodeToPlainText(child)).join("");
|
|
331
406
|
}
|
|
407
|
+
exports.OFFSET_DEPTH_LIMIT = OFFSET_DEPTH_LIMIT;
|
|
332
408
|
exports.buildInitialParameterValues = buildInitialParameterValues;
|
|
333
409
|
exports.dataTablePaginationFromForm = dataTablePaginationFromForm;
|
|
334
410
|
exports.defaultValueForParameter = defaultValueForParameter;
|
|
335
411
|
exports.lookupOptionsToFieldOptions = lookupOptionsToFieldOptions;
|
|
336
412
|
exports.packParameterValues = packParameterValues;
|
|
337
413
|
exports.parametersToFormConfig = parametersToFormConfig;
|
|
338
|
-
exports.parseMultiFilterValue = parseMultiFilterValue;
|
|
339
414
|
exports.pruneParameterValues = pruneParameterValues;
|
|
340
|
-
exports.serializeMultiFilterValue = serializeMultiFilterValue;
|
|
341
415
|
exports.titleCase = titleCase;
|
|
342
416
|
exports.useDebouncedRecord = useDebouncedRecord;
|
|
343
417
|
//# sourceMappingURL=formMetadata.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formMetadata.cjs","sources":["../../src/rpc/formMetadata.ts"],"sourcesContent":["import { useEffect, useState, type Dispatch, type SetStateAction } from \"react\";\nimport type {\n FilterBarFilter,\n FilterBarMultiFilterMode,\n FilterBarRangeProps,\n FilterBarSearchProps,\n} from \"../components/FilterBar\";\nimport type { DataTablePagination } from \"../data/DataTable\";\nimport type {\n ExecutionResponse,\n OpenAPIParameter,\n OperationLookupFilter,\n OperationLookupResponse,\n} from \"./types\";\nimport { isPositionalParam, parameterPlaceholder } from \"./types\";\n\nexport type ParameterValues = Record<string, string>;\nexport type ParameterValuesSetter = Dispatch<SetStateAction<ParameterValues>>;\n\n// ParameterPagination plumbs limit/offset query parameters into the\n// DataTable's pagination footer. The UI exposes both as the\n// {pageSize, pageIndex} tuple but here we keep raw string limit/offset\n// values so the executor sees exactly what the operation declared.\nexport type ParameterPagination = {\n limitParam: string; // parameter name on the operation, e.g. \"limit\"\n offsetParam: string;\n limitValue: string;\n offsetValue: string;\n setLimit: (next: string) => void;\n setOffset: (next: string) => void;\n};\n\nexport type ParameterFormConfig = {\n filters: FilterBarFilter[];\n search?: FilterBarSearchProps;\n timeRange?: FilterBarRangeProps;\n pagination?: ParameterPagination;\n};\nexport type ParameterFormOptions = {\n includeLocations?: OpenAPIParameter[\"in\"][];\n lookup?: OperationLookupResponse | undefined;\n lockedValues?: ParameterValues | undefined;\n hideLocked?: boolean;\n};\n\nexport function titleCase(value: string) {\n return value\n .split(/[-_]/)\n .filter(Boolean)\n .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n .join(\" \");\n}\n\nexport function defaultValueForParameter(param: OpenAPIParameter, method: string): string {\n if (method.toUpperCase() === \"GET\" && param.in === \"query\" && !param.required) {\n return \"\";\n }\n const fallback = param.in === \"path\" ? \"\" : undefined;\n const value = param.schema?.default ?? fallback;\n if (typeof value === \"boolean\") {\n return value ? \"true\" : \"false\";\n }\n if (Array.isArray(value) || (value != null && typeof value === \"object\")) {\n return \"\";\n }\n if (value == null) {\n return \"\";\n }\n return String(value);\n}\n\nexport function buildInitialParameterValues(\n parameters: OpenAPIParameter[],\n method: string,\n lockedValues: ParameterValues = {},\n initialValues: ParameterValues = {},\n): ParameterValues {\n const values = Object.fromEntries(\n parameters.map((param) => [param.name, defaultValueForParameter(param, method)]),\n );\n return { ...values, ...initialValues, ...lockedValues };\n}\n\nexport function dataTablePaginationFromForm(\n pagination: ParameterPagination | undefined,\n response: Pick<ExecutionResponse, \"pagination\"> | null | undefined,\n): DataTablePagination | undefined {\n if (!pagination) return undefined;\n\n const pageSize = positiveInt(pagination.limitValue) ?? response?.pagination?.limit ?? 25;\n const offset = nonNegativeInt(pagination.offsetValue) ?? response?.pagination?.offset ?? 0;\n const page = Math.floor(offset / pageSize);\n\n return {\n page,\n pageSize,\n ...(response?.pagination?.total !== undefined ? { total: response.pagination.total } : {}),\n onPageChange: (next: number) => {\n if (positiveInt(pagination.limitValue) == null) {\n pagination.setLimit(String(pageSize));\n }\n pagination.setOffset(String(Math.max(next, 0) * pageSize));\n },\n onPageSizeChange: (next: number) => {\n pagination.setLimit(String(next));\n pagination.setOffset(\"0\");\n },\n };\n}\n\nexport function pruneParameterValues(values: ParameterValues) {\n return Object.fromEntries(Object.entries(values).filter(([, value]) => value !== \"\"));\n}\n\nexport function packParameterValues(\n values: ParameterValues,\n parameters: OpenAPIParameter[],\n): ParameterValues {\n const positionalNames = new Set(\n parameters\n .filter((param) => param.in !== \"path\" && isPositionalParam(param))\n .map((p) => p.name),\n );\n const params: ParameterValues = {};\n const args: string[] = [];\n\n for (const [key, value] of Object.entries(values)) {\n if (!value) continue;\n if (positionalNames.has(key)) {\n args.push(value);\n } else {\n params[key] = value;\n }\n }\n\n if (args.length > 0) {\n params.args = args.join(\",\");\n }\n\n return params;\n}\n\nexport function parametersToFormConfig(\n parameters: OpenAPIParameter[],\n values: ParameterValues,\n setValues: ParameterValuesSetter,\n options: ParameterFormOptions = {},\n): ParameterFormConfig {\n const emitFilters: FilterBarFilter[] = [];\n const lookupFilters = options.lookup?.filters ?? {};\n const includeLocations = new Set(options.includeLocations ?? [\"path\", \"query\", \"header\"]);\n const lockedValues = options.lockedValues ?? {};\n const hideLocked = options.hideLocked ?? false;\n\n // Pull limit/offset out of the filter loop entirely — they drive pagination,\n // not filter pills. Roles come from server-side `paramRole` (see\n // clicky/rpc/openapi.go); the older \"named limit on a GET\" heuristic is\n // intentionally not duplicated here so the server stays the single source\n // of truth for parameter classification.\n const limitParam = parameters.find((p) => p[\"x-clicky\"]?.role === \"limit\");\n const offsetParam = parameters.find((p) => p[\"x-clicky\"]?.role === \"offset\");\n const paginationOmitNames = new Set<string>();\n if (limitParam) paginationOmitNames.add(limitParam.name);\n if (offsetParam) paginationOmitNames.add(offsetParam.name);\n\n // The search-role param drives the FilterBar's dedicated search input rather\n // than a filter chip; pull it out of the chip loop the same way pagination is.\n const searchParam = parameters.find(\n (p) => p[\"x-clicky\"]?.role === \"search\" && includeLocations.has(p.in),\n );\n const omitNames = new Set(paginationOmitNames);\n if (searchParam) omitNames.add(searchParam.name);\n\n // Time-range first looks for server-stamped roles, then falls back to the\n // existing lookup-driven \"from\"/\"to\" detection so older specs keep working.\n const roleRangeStart = parameters.find((p) => p[\"x-clicky\"]?.role === \"time-from\");\n const roleRangeEnd = parameters.find((p) => p[\"x-clicky\"]?.role === \"time-to\");\n const rangeStart =\n roleRangeStart ??\n parameters.find(\n (param) =>\n includeLocations.has(param.in) &&\n param.in === \"query\" &&\n lookupFilters[param.name]?.type === \"from\",\n );\n const rangeEnd =\n roleRangeEnd ??\n parameters.find(\n (param) =>\n includeLocations.has(param.in) &&\n param.in === \"query\" &&\n lookupFilters[param.name]?.type === \"to\",\n );\n const hasTimeRange = rangeStart != null && rangeEnd != null;\n\n for (const param of parameters) {\n if (!includeLocations.has(param.in)) continue;\n if (omitNames.has(param.name)) continue;\n if (hasTimeRange && (param.name === rangeStart?.name || param.name === rangeEnd?.name)) {\n continue;\n }\n\n const disabled = Object.prototype.hasOwnProperty.call(lockedValues, param.name);\n if (disabled && hideLocked) continue;\n const value = disabled ? (lockedValues[param.name] ?? \"\") : (values[param.name] ?? \"\");\n const label = lookupFilters[param.name]?.label ?? titleCase(param.name);\n // Only an explicit placeholder is rendered — never synthesize one. The\n // field already carries `label`, so a fallback placeholder is redundant\n // and generic defaults (e.g. \"value-1, value-2\") read as fake data.\n const placeholder = parameterPlaceholder(param);\n const placeholderProp = placeholder !== undefined ? { placeholder } : {};\n const onChange = (next: string | boolean) => {\n if (disabled) return;\n const stringValue = typeof next === \"boolean\" ? (next ? \"true\" : \"false\") : next;\n setValues((current) => ({ ...current, [param.name]: stringValue }));\n };\n\n const schema = param.schema;\n const lookupFilter = lookupFilters[param.name];\n\n if (lookupFilter?.type === \"multi-filter\" && param.in === \"query\") {\n emitFilters.push({\n key: param.name,\n kind: \"multi\",\n label,\n value: parseMultiFilterValue(value),\n disabled,\n options: lookupOptionsToFieldOptions(lookupFilter),\n onChange: (next) =>\n setValues((current) => ({\n ...current,\n [param.name]: serializeMultiFilterValue(next),\n })),\n });\n continue;\n }\n\n if (schema?.enum) {\n emitFilters.push({\n key: param.name,\n kind: \"enum\",\n label,\n value,\n disabled,\n options: schema.enum.map((item) => ({\n value: String(item),\n label: String(item),\n })),\n onChange: (next) => onChange(next),\n });\n continue;\n }\n\n if (lookupFilter?.type === \"bool\" || schema?.type === \"boolean\") {\n emitFilters.push({\n key: param.name,\n kind: \"boolean\",\n label,\n value: value === \"true\",\n disabled,\n onChange: (next) => onChange(next),\n });\n continue;\n }\n\n if (lookupFilter != null && param.in === \"query\") {\n if (lookupFilter.multi) {\n emitFilters.push({\n key: param.name,\n kind: \"lookup-multi\",\n label,\n value: splitCommaValues(value),\n disabled,\n options: lookupOptionsToFieldOptions(lookupFilter),\n ...placeholderProp,\n onChange: (next) =>\n setValues((current) => ({ ...current, [param.name]: next.join(\",\") })),\n });\n continue;\n }\n\n emitFilters.push({\n key: param.name,\n kind: \"lookup\",\n label,\n value,\n disabled,\n options: lookupOptionsToFieldOptions(lookupFilter),\n ...placeholderProp,\n inputType:\n lookupFilter.type === \"number\"\n ? \"number\"\n : lookupFilter.type === \"date\"\n ? \"date\"\n : \"text\",\n onChange: (next) => onChange(next),\n });\n continue;\n }\n\n emitFilters.push({\n key: param.name,\n kind: \"text\",\n label,\n value,\n disabled,\n ...placeholderProp,\n onChange: (next) => onChange(next),\n });\n }\n\n const config: ParameterFormConfig = { filters: emitFilters };\n if (searchParam) {\n const searchDisabled = Object.prototype.hasOwnProperty.call(lockedValues, searchParam.name);\n const searchValue = searchDisabled\n ? (lockedValues[searchParam.name] ?? \"\")\n : (values[searchParam.name] ?? \"\");\n const searchPlaceholder = parameterPlaceholder(searchParam);\n config.search = {\n value: searchValue,\n onChange: (next) => {\n if (searchDisabled) return;\n setValues((current) => ({ ...current, [searchParam.name]: next }));\n },\n ...(searchPlaceholder ? { placeholder: searchPlaceholder } : {}),\n ariaLabel: lookupFilters[searchParam.name]?.label ?? titleCase(searchParam.name),\n };\n }\n if (limitParam && offsetParam) {\n config.pagination = {\n limitParam: limitParam.name,\n offsetParam: offsetParam.name,\n limitValue: values[limitParam.name] ?? \"\",\n offsetValue: values[offsetParam.name] ?? \"\",\n setLimit: (next) => setValues((current) => ({ ...current, [limitParam.name]: next })),\n setOffset: (next) => setValues((current) => ({ ...current, [offsetParam.name]: next })),\n };\n }\n if (hasTimeRange && rangeStart != null && rangeEnd != null) {\n const rangeStartMeta = lookupFilters[rangeStart.name];\n const rangeEndMeta = lookupFilters[rangeEnd.name];\n const rangeMeta = rangeStartMeta ?? rangeEndMeta;\n config.timeRange = {\n from: values[rangeStart.name] ?? \"\",\n to: values[rangeEnd.name] ?? \"\",\n onApply: (from, to) =>\n setValues((current) => ({\n ...current,\n [rangeStart.name]: from,\n [rangeEnd.name]: to,\n })),\n ...(rangeMeta?.presets ? { presets: rangeMeta.presets } : {}),\n timeEnabled: rangeMeta?.timeEnabled ?? false,\n ...(rangeMeta?.timeZone ? { timeZone: rangeMeta.timeZone } : {}),\n ...(rangeMeta?.timeZones ? { timeZones: rangeMeta.timeZones } : {}),\n ...(rangeStart.description ? { fromPlaceholder: rangeStart.description } : {}),\n ...(rangeEnd.description ? { toPlaceholder: rangeEnd.description } : {}),\n };\n }\n\n return config;\n}\n\nexport function useDebouncedRecord<T>(value: T, delayMs: number) {\n const [debounced, setDebounced] = useState(value);\n\n useEffect(() => {\n const timeoutId = window.setTimeout(() => setDebounced(value), delayMs);\n return () => window.clearTimeout(timeoutId);\n }, [delayMs, value]);\n\n return debounced;\n}\n\nexport function parseMultiFilterValue(value: string): Record<string, FilterBarMultiFilterMode> {\n const parsed: Record<string, FilterBarMultiFilterMode> = {};\n for (const item of splitCommaValues(value)) {\n if (item.startsWith(\"!\") && item.length > 1) {\n parsed[item.slice(1)] = \"exclude\";\n } else {\n parsed[item] = \"include\";\n }\n }\n return parsed;\n}\n\nexport function serializeMultiFilterValue(value: Record<string, FilterBarMultiFilterMode>): string {\n return Object.entries(value)\n .flatMap(([key, mode]) => {\n if (mode === \"include\") return [key];\n if (mode === \"exclude\") return [`!${key}`];\n return [];\n })\n .join(\",\");\n}\n\nfunction splitCommaValues(value: string) {\n return value\n .split(\",\")\n .map((item) => item.trim())\n .filter(Boolean);\n}\n\nfunction positiveInt(value: string | undefined): number | undefined {\n const parsed = parseInt(value ?? \"\", 10);\n return Number.isFinite(parsed) && parsed > 0 ? parsed : undefined;\n}\n\nfunction nonNegativeInt(value: string | undefined): number | undefined {\n const parsed = parseInt(value ?? \"\", 10);\n return Number.isFinite(parsed) && parsed >= 0 ? parsed : undefined;\n}\n\nexport function lookupOptionsToFieldOptions(filter: OperationLookupFilter) {\n const merged = new Map<string, { label?: string; title?: string }>();\n\n for (const [value, node] of Object.entries(filter.options ?? {})) {\n merged.set(value, {\n label: clickyNodeToPlainText(node) || value,\n title: clickyNodeToPlainText(node) || value,\n });\n }\n\n for (const [value, node] of Object.entries(filter.selected ?? {})) {\n if (!merged.has(value)) {\n merged.set(value, {\n label: clickyNodeToPlainText(node) || value,\n title: clickyNodeToPlainText(node) || value,\n });\n }\n }\n\n return Array.from(merged.entries()).map(([value, meta]) => ({\n value,\n label: meta.label ?? value,\n title: meta.title ?? value,\n }));\n}\n\ntype PlainTextClickyNode = {\n plain?: string;\n text?: string;\n children?: PlainTextClickyNode[];\n tooltip?: { plain?: string; text?: string };\n};\n\nfunction clickyNodeToPlainText(node: PlainTextClickyNode | null | undefined): string {\n if (node == null) return \"\";\n if (node.plain) return node.plain;\n if (node.text) return node.text;\n return (node.children ?? []).map((child) => clickyNodeToPlainText(child)).join(\"\");\n}\n"],"names":["isPositionalParam","_a","parameterPlaceholder","useState","useEffect"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"formMetadata.cjs","sources":["../../src/rpc/formMetadata.ts"],"sourcesContent":["import { useEffect, useState, type Dispatch, type SetStateAction } from \"react\";\nimport type {\n FilterBarFilter,\n FilterBarRangeProps,\n FilterBarSearchProps,\n} from \"../components/FilterBar\";\nimport type { DataTablePagination } from \"../data/DataTable\";\nimport {\n parseBoundsValue,\n parseMultiFilterValue,\n serializeBoundsValue,\n serializeMultiFilterValue,\n splitCommaValues,\n} from \"../data/data-table-filter-values\";\nimport type {\n ExecutionResponse,\n OpenAPIParameter,\n OperationLookupFilter,\n OperationLookupResponse,\n} from \"./types\";\nimport { isPositionalParam, parameterPlaceholder } from \"./types\";\n\nexport type ParameterValues = Record<string, string>;\nexport type ParameterValuesSetter = Dispatch<SetStateAction<ParameterValues>>;\n\n// ParameterPagination plumbs limit/offset query parameters into the\n// DataTable's pagination footer. The UI exposes both as the\n// {pageSize, pageIndex} tuple but here we keep raw string limit/offset\n// values so the executor sees exactly what the operation declared.\nexport type ParameterPagination = {\n limitParam: string; // parameter name on the operation, e.g. \"limit\"\n limitValue: string;\n setLimit: (next: string) => void;\n\n // Offset paging, when the operation declares an offset parameter. Absent for\n // a surface that cannot name a position past its first page — a profile with\n // no total order, say. Such a surface still sizes its page and still reports\n // how many rows it is showing of how many; it just cannot step.\n offsetParam?: string;\n offsetValue?: string;\n setOffset?: (next: string) => void;\n\n // Cursor paging, when the operation declares a cursor parameter. Present\n // alongside limit/offset rather than instead of them: an operation can serve\n // both, and which one a page uses is decided per request.\n cursorParam?: string;\n cursorValue?: string;\n setCursor?: (next: string) => void;\n};\n\nexport type ParameterFormConfig = {\n filters: FilterBarFilter[];\n search?: FilterBarSearchProps;\n timeRange?: FilterBarRangeProps;\n pagination?: ParameterPagination;\n};\n// LookupSearch fetches the options of one filter matching `query`, server-side.\n// It is what a truncated option set is reachable through: the head the lookup\n// returned is only the first page of a larger distinct set, and everything past\n// it is found by typing rather than by scrolling.\nexport type LookupSearch = (\n filterKey: string,\n query: string,\n) => Promise<{ value: string; label: string; title?: string }[]>;\n\nexport type ParameterFormOptions = {\n includeLocations?: OpenAPIParameter[\"in\"][];\n lookup?: OperationLookupResponse | undefined;\n lockedValues?: ParameterValues | undefined;\n hideLocked?: boolean;\n // Wired only into filters the server marked truncated: one that fully\n // enumerated needs no round trip to search what is already in the browser.\n lookupSearch?: LookupSearch | undefined;\n};\n\n// A truncated set has to say so even where nothing can search it: the footer\n// telling the user 350 values are missing is what stops a partial list reading\n// as the whole answer.\nfunction truncationProps(filter: OperationLookupFilter) {\n if (!filter.truncated) return {};\n return { truncated: true, ...(filter.total !== undefined ? { total: filter.total } : {}) };\n}\n\n// Server-side search applies only when the server said it withheld options. A\n// filter whose set arrived whole is searched in the browser, which is both\n// faster and exactly as complete.\nfunction searchProps(\n filter: OperationLookupFilter,\n key: string,\n search: LookupSearch | undefined,\n) {\n if (!filter.truncated) return {};\n return {\n ...truncationProps(filter),\n ...(search ? { onSearch: (query: string) => search(key, query) } : {}),\n };\n}\n\nexport function titleCase(value: string) {\n return value\n .split(/[-_]/)\n .filter(Boolean)\n .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n .join(\" \");\n}\n\nexport function defaultValueForParameter(param: OpenAPIParameter, method: string): string {\n if (method.toUpperCase() === \"GET\" && param.in === \"query\" && !param.required) {\n return \"\";\n }\n const fallback = param.in === \"path\" ? \"\" : undefined;\n const value = param.schema?.default ?? fallback;\n if (typeof value === \"boolean\") {\n return value ? \"true\" : \"false\";\n }\n if (Array.isArray(value) || (value != null && typeof value === \"object\")) {\n return \"\";\n }\n if (value == null) {\n return \"\";\n }\n return String(value);\n}\n\nexport function buildInitialParameterValues(\n parameters: OpenAPIParameter[],\n method: string,\n lockedValues: ParameterValues = {},\n initialValues: ParameterValues = {},\n): ParameterValues {\n const values = Object.fromEntries(\n parameters.map((param) => [param.name, defaultValueForParameter(param, method)]),\n );\n return { ...values, ...initialValues, ...lockedValues };\n}\n\n// OFFSET_DEPTH_LIMIT is where offset paging stops being available and a cursor\n// takes over. It exists because backends refuse a deep offset outright —\n// OpenSearch's default result window is 10,000 — so this is the one place that\n// decides the changeover rather than each surface discovering the refusal for\n// itself. Below it, page-number jumps stay available; past it there is nothing\n// to jump with, because a cursor names a position rather than a page.\nexport const OFFSET_DEPTH_LIMIT = 10_000;\n\nexport function dataTablePaginationFromForm(\n pagination: ParameterPagination | undefined,\n response: Pick<ExecutionResponse, \"pagination\"> | null | undefined,\n): DataTablePagination | undefined {\n if (!pagination) return undefined;\n\n const pageSize = positiveInt(pagination.limitValue) ?? response?.pagination?.limit ?? 25;\n const offset = nonNegativeInt(pagination.offsetValue) ?? response?.pagination?.offset ?? 0;\n const page = Math.floor(offset / pageSize);\n const served = response?.pagination;\n const setCursor = pagination.setCursor;\n const setOffset = pagination.setOffset;\n\n return {\n page,\n pageSize,\n ...(served?.total !== undefined ? { total: served.total } : {}),\n ...(served?.totalRelation !== undefined ? { totalRelation: served.totalRelation } : {}),\n ...(served?.hasMore !== undefined ? { hasMore: served.hasMore } : {}),\n // Cursor mode needs both halves: a parameter to send the cursor on, and a\n // cursor to send. An operation that declares one without the server minting\n // the other pages by offset, which is correct and merely slower.\n //\n // Which mode applies is depth, not preference: a walk already under way\n // continues, and a shallow page keeps its jump controls until the next one\n // would cross OFFSET_DEPTH_LIMIT — the point past which the offset would be\n // refused anyway.\n ...(setCursor &&\n (pagination.cursorValue ||\n (served?.nextCursor && offset + pageSize >= OFFSET_DEPTH_LIMIT))\n ? {\n cursor: {\n ...(pagination.cursorValue ? { current: pagination.cursorValue } : {}),\n ...(served?.nextCursor ? { next: served.nextCursor } : {}),\n onCursorChange: (next: string | undefined) => {\n // Offset and cursor are two disagreeing positions in one request,\n // so taking the cursor means dropping the offset.\n setOffset?.(\"0\");\n setCursor(next ?? \"\");\n },\n },\n }\n : {}),\n // Offered only when there is somewhere to step to. A surface with no offset\n // parameter still counts and still resizes, but naming page two would be\n // naming a page the server will refuse.\n ...(setOffset\n ? {\n onPageChange: (next: number) => {\n if (positiveInt(pagination.limitValue) == null) {\n pagination.setLimit(String(pageSize));\n }\n setCursor?.(\"\");\n setOffset(String(Math.max(next, 0) * pageSize));\n },\n }\n : {}),\n onPageSizeChange: (next: number) => {\n pagination.setLimit(String(next));\n // A cursor names a position in a page of the old size, so resizing the\n // page invalidates it and the walk restarts.\n setCursor?.(\"\");\n setOffset?.(\"0\");\n },\n };\n}\n\nexport function pruneParameterValues(values: ParameterValues) {\n return Object.fromEntries(Object.entries(values).filter(([, value]) => value !== \"\"));\n}\n\nexport function packParameterValues(\n values: ParameterValues,\n parameters: OpenAPIParameter[],\n): ParameterValues {\n const positionalNames = new Set(\n parameters\n .filter((param) => param.in !== \"path\" && isPositionalParam(param))\n .map((p) => p.name),\n );\n const params: ParameterValues = {};\n const args: string[] = [];\n\n for (const [key, value] of Object.entries(values)) {\n if (!value) continue;\n if (positionalNames.has(key)) {\n args.push(value);\n } else {\n params[key] = value;\n }\n }\n\n if (args.length > 0) {\n params.args = args.join(\",\");\n }\n\n return params;\n}\n\nexport function parametersToFormConfig(\n parameters: OpenAPIParameter[],\n values: ParameterValues,\n setValues: ParameterValuesSetter,\n options: ParameterFormOptions = {},\n): ParameterFormConfig {\n const emitFilters: FilterBarFilter[] = [];\n const lookupFilters = options.lookup?.filters ?? {};\n const includeLocations = new Set(options.includeLocations ?? [\"path\", \"query\", \"header\"]);\n const lockedValues = options.lockedValues ?? {};\n const hideLocked = options.hideLocked ?? false;\n\n // Pull limit/offset out of the filter loop entirely — they drive pagination,\n // not filter pills. Roles come from server-side `paramRole` (see\n // clicky/rpc/openapi.go); the older \"named limit on a GET\" heuristic is\n // intentionally not duplicated here so the server stays the single source\n // of truth for parameter classification.\n const limitParam = parameters.find((p) => p[\"x-clicky\"]?.role === \"limit\");\n const offsetParam = parameters.find((p) => p[\"x-clicky\"]?.role === \"offset\");\n // A cursor is an opaque server-minted token, so it is never a filter chip a\n // user could type into — it is only ever echoed back from a previous page.\n const cursorParam = parameters.find((p) => p[\"x-clicky\"]?.role === \"cursor\");\n const paginationOmitNames = new Set<string>();\n if (limitParam) paginationOmitNames.add(limitParam.name);\n if (offsetParam) paginationOmitNames.add(offsetParam.name);\n if (cursorParam) paginationOmitNames.add(cursorParam.name);\n\n // The search-role param drives the FilterBar's dedicated search input rather\n // than a filter chip; pull it out of the chip loop the same way pagination is.\n const searchParam = parameters.find(\n (p) => p[\"x-clicky\"]?.role === \"search\" && includeLocations.has(p.in),\n );\n const omitNames = new Set(paginationOmitNames);\n if (searchParam) omitNames.add(searchParam.name);\n\n // rewind returns the caller to the first page whenever the result set itself\n // changes. Both positions have to go: an offset into the old rows names\n // different rows in the new ones, and a cursor minted under the old filters\n // is rejected by the server outright rather than silently reinterpreted.\n const rewind = (next: ParameterValues): ParameterValues => ({\n ...next,\n ...(offsetParam ? { [offsetParam.name]: \"0\" } : {}),\n ...(cursorParam ? { [cursorParam.name]: \"\" } : {}),\n });\n\n // Time-range first looks for server-stamped roles, then falls back to the\n // existing lookup-driven \"from\"/\"to\" detection so older specs keep working.\n const roleRangeStart = parameters.find((p) => p[\"x-clicky\"]?.role === \"time-from\");\n const roleRangeEnd = parameters.find((p) => p[\"x-clicky\"]?.role === \"time-to\");\n const rangeStart =\n roleRangeStart ??\n parameters.find(\n (param) =>\n includeLocations.has(param.in) &&\n param.in === \"query\" &&\n lookupFilters[param.name]?.type === \"from\",\n );\n const rangeEnd =\n roleRangeEnd ??\n parameters.find(\n (param) =>\n includeLocations.has(param.in) &&\n param.in === \"query\" &&\n lookupFilters[param.name]?.type === \"to\",\n );\n const hasTimeRange = rangeStart != null && rangeEnd != null;\n\n for (const param of parameters) {\n if (!includeLocations.has(param.in)) continue;\n if (omitNames.has(param.name)) continue;\n if (hasTimeRange && (param.name === rangeStart?.name || param.name === rangeEnd?.name)) {\n continue;\n }\n\n const disabled = Object.prototype.hasOwnProperty.call(lockedValues, param.name);\n if (disabled && hideLocked) continue;\n const value = disabled ? (lockedValues[param.name] ?? \"\") : (values[param.name] ?? \"\");\n const label = lookupFilters[param.name]?.label ?? titleCase(param.name);\n // Only an explicit placeholder is rendered — never synthesize one. The\n // field already carries `label`, so a fallback placeholder is redundant\n // and generic defaults (e.g. \"value-1, value-2\") read as fake data.\n const placeholder = parameterPlaceholder(param);\n const placeholderProp = placeholder !== undefined ? { placeholder } : {};\n const onChange = (next: string | boolean) => {\n if (disabled) return;\n const stringValue = typeof next === \"boolean\" ? (next ? \"true\" : \"false\") : next;\n setValues((current) => rewind({ ...current, [param.name]: stringValue }));\n };\n\n const schema = param.schema;\n const lookupFilter = lookupFilters[param.name];\n\n // Both edges of a range travel under one parameter, so the control is built\n // from that parameter alone rather than from the from/to pair below.\n if (lookupFilter?.type === \"date-range\" && param.in === \"query\") {\n const bounds = parseBoundsValue(value);\n emitFilters.push({\n key: param.name,\n kind: \"date-range\",\n label,\n disabled,\n ...(bounds.min !== undefined ? { from: bounds.min } : {}),\n ...(bounds.max !== undefined ? { to: bounds.max } : {}),\n ...(lookupFilter.presets ? { presets: lookupFilter.presets } : {}),\n timeEnabled: lookupFilter.timeEnabled ?? true,\n ...(lookupFilter.timeZone ? { timeZone: lookupFilter.timeZone } : {}),\n ...(lookupFilter.timeZones ? { timeZones: lookupFilter.timeZones } : {}),\n onApply: (from: string, to: string) => {\n if (disabled) return;\n setValues((current) =>\n rewind({ ...current, [param.name]: serializeBoundsValue({ min: from, max: to }) }),\n );\n },\n });\n continue;\n }\n\n // An exact-value selection with nothing to enumerate. It shares the\n // multi-filter grammar, so the raw string is written through unchanged:\n // \"a,b\" is two values and \"!a\" excludes one, exactly as picking them would.\n if (lookupFilter?.type === \"value\" && param.in === \"query\") {\n emitFilters.push({\n key: param.name,\n kind: \"text\",\n label,\n value,\n disabled,\n ...placeholderProp,\n onChange: (next) => onChange(next),\n });\n continue;\n }\n\n if (lookupFilter?.type === \"multi-filter\" && param.in === \"query\") {\n emitFilters.push({\n key: param.name,\n kind: \"multi\",\n label,\n value: parseMultiFilterValue(value),\n disabled,\n options: lookupOptionsToFieldOptions(lookupFilter),\n ...searchProps(lookupFilter, param.name, options.lookupSearch),\n onChange: (next) =>\n setValues((current) =>\n rewind({ ...current, [param.name]: serializeMultiFilterValue(next) }),\n ),\n });\n continue;\n }\n\n if (schema?.enum) {\n emitFilters.push({\n key: param.name,\n kind: \"enum\",\n label,\n value,\n disabled,\n options: schema.enum.map((item) => ({\n value: String(item),\n label: String(item),\n })),\n onChange: (next) => onChange(next),\n });\n continue;\n }\n\n if (lookupFilter?.type === \"bool\" || schema?.type === \"boolean\") {\n emitFilters.push({\n key: param.name,\n kind: \"boolean\",\n label,\n value: value === \"true\",\n disabled,\n onChange: (next) => onChange(next),\n });\n continue;\n }\n\n if (lookupFilter != null && param.in === \"query\") {\n if (lookupFilter.multi) {\n emitFilters.push({\n key: param.name,\n kind: \"lookup-multi\",\n label,\n value: splitCommaValues(value),\n disabled,\n options: lookupOptionsToFieldOptions(lookupFilter),\n // Reported, not searched: this control's onSearch hands the query back\n // to the consumer to refetch and re-feed `options`, which is a\n // different contract from the one searchProps satisfies.\n ...truncationProps(lookupFilter),\n ...placeholderProp,\n onChange: (next) =>\n setValues((current) => rewind({ ...current, [param.name]: next.join(\",\") })),\n });\n continue;\n }\n\n emitFilters.push({\n key: param.name,\n kind: \"lookup\",\n label,\n value,\n disabled,\n options: lookupOptionsToFieldOptions(lookupFilter),\n ...placeholderProp,\n inputType:\n lookupFilter.type === \"number\"\n ? \"number\"\n : lookupFilter.type === \"date\"\n ? \"date\"\n : \"text\",\n onChange: (next) => onChange(next),\n });\n continue;\n }\n\n emitFilters.push({\n key: param.name,\n kind: \"text\",\n label,\n value,\n disabled,\n ...placeholderProp,\n onChange: (next) => onChange(next),\n });\n }\n\n const config: ParameterFormConfig = { filters: emitFilters };\n if (searchParam) {\n const searchDisabled = Object.prototype.hasOwnProperty.call(lockedValues, searchParam.name);\n const searchValue = searchDisabled\n ? (lockedValues[searchParam.name] ?? \"\")\n : (values[searchParam.name] ?? \"\");\n const searchPlaceholder = parameterPlaceholder(searchParam);\n config.search = {\n value: searchValue,\n onChange: (next) => {\n if (searchDisabled) return;\n setValues((current) => rewind({ ...current, [searchParam.name]: next }));\n },\n ...(searchPlaceholder ? { placeholder: searchPlaceholder } : {}),\n ariaLabel: lookupFilters[searchParam.name]?.label ?? titleCase(searchParam.name),\n };\n }\n // Gated on the limit alone. An operation that caps its rows can report how\n // many of how many it is showing and can resize the cap, both of which are\n // independent of being able to step to a second page — and gating the whole\n // footer on the offset is what made a surface without one report \"100 of 100\"\n // while the server was answering with a total of 12,558.\n if (limitParam) {\n config.pagination = {\n limitParam: limitParam.name,\n limitValue: values[limitParam.name] ?? \"\",\n setLimit: (next) => setValues((current) => ({ ...current, [limitParam.name]: next })),\n ...(offsetParam\n ? {\n offsetParam: offsetParam.name,\n offsetValue: values[offsetParam.name] ?? \"\",\n setOffset: (next: string) =>\n setValues((current) => ({ ...current, [offsetParam.name]: next })),\n }\n : {}),\n ...(cursorParam\n ? {\n cursorParam: cursorParam.name,\n cursorValue: values[cursorParam.name] ?? \"\",\n setCursor: (next: string) =>\n setValues((current) => ({ ...current, [cursorParam.name]: next })),\n }\n : {}),\n };\n }\n if (hasTimeRange && rangeStart != null && rangeEnd != null) {\n const rangeStartMeta = lookupFilters[rangeStart.name];\n const rangeEndMeta = lookupFilters[rangeEnd.name];\n const rangeMeta = rangeStartMeta ?? rangeEndMeta;\n config.timeRange = {\n from: values[rangeStart.name] ?? \"\",\n to: values[rangeEnd.name] ?? \"\",\n onApply: (from, to) =>\n setValues((current) =>\n rewind({ ...current, [rangeStart.name]: from, [rangeEnd.name]: to }),\n ),\n ...(rangeMeta?.presets ? { presets: rangeMeta.presets } : {}),\n timeEnabled: rangeMeta?.timeEnabled ?? false,\n ...(rangeMeta?.timeZone ? { timeZone: rangeMeta.timeZone } : {}),\n ...(rangeMeta?.timeZones ? { timeZones: rangeMeta.timeZones } : {}),\n ...(rangeStart.description ? { fromPlaceholder: rangeStart.description } : {}),\n ...(rangeEnd.description ? { toPlaceholder: rangeEnd.description } : {}),\n };\n }\n\n return config;\n}\n\nexport function useDebouncedRecord<T>(value: T, delayMs: number) {\n const [debounced, setDebounced] = useState(value);\n\n useEffect(() => {\n const timeoutId = window.setTimeout(() => setDebounced(value), delayMs);\n return () => window.clearTimeout(timeoutId);\n }, [delayMs, value]);\n\n return debounced;\n}\n\nfunction positiveInt(value: string | undefined): number | undefined {\n const parsed = parseInt(value ?? \"\", 10);\n return Number.isFinite(parsed) && parsed > 0 ? parsed : undefined;\n}\n\nfunction nonNegativeInt(value: string | undefined): number | undefined {\n const parsed = parseInt(value ?? \"\", 10);\n return Number.isFinite(parsed) && parsed >= 0 ? parsed : undefined;\n}\n\nexport function lookupOptionsToFieldOptions(filter: OperationLookupFilter) {\n const merged = new Map<string, { label?: string; title?: string }>();\n\n for (const [value, node] of Object.entries(filter.options ?? {})) {\n merged.set(value, {\n label: clickyNodeToPlainText(node) || value,\n title: clickyNodeToPlainText(node) || value,\n });\n }\n\n for (const [value, node] of Object.entries(filter.selected ?? {})) {\n if (!merged.has(value)) {\n merged.set(value, {\n label: clickyNodeToPlainText(node) || value,\n title: clickyNodeToPlainText(node) || value,\n });\n }\n }\n\n return Array.from(merged.entries()).map(([value, meta]) => ({\n value,\n label: meta.label ?? value,\n title: meta.title ?? value,\n }));\n}\n\ntype PlainTextClickyNode = {\n plain?: string;\n text?: string;\n children?: PlainTextClickyNode[];\n tooltip?: { plain?: string; text?: string };\n};\n\nfunction clickyNodeToPlainText(node: PlainTextClickyNode | null | undefined): string {\n if (node == null) return \"\";\n if (node.plain) return node.plain;\n if (node.text) return node.text;\n return (node.children ?? []).map((child) => clickyNodeToPlainText(child)).join(\"\");\n}\n"],"names":["isPositionalParam","_a","parameterPlaceholder","parseBoundsValue","serializeBoundsValue","parseMultiFilterValue","serializeMultiFilterValue","splitCommaValues","useState","useEffect"],"mappings":";;;;;AA8EA,SAAS,gBAAgB,QAA+B;AACtD,MAAI,CAAC,OAAO,UAAW,QAAO,CAAA;AAC9B,SAAO,EAAE,WAAW,MAAM,GAAI,OAAO,UAAU,SAAY,EAAE,OAAO,OAAO,MAAA,IAAU,CAAA,EAAC;AACxF;AAKA,SAAS,YACP,QACA,KACA,QACA;AACA,MAAI,CAAC,OAAO,UAAW,QAAO,CAAA;AAC9B,SAAO;AAAA,IACL,GAAG,gBAAgB,MAAM;AAAA,IACzB,GAAI,SAAS,EAAE,UAAU,CAAC,UAAkB,OAAO,KAAK,KAAK,MAAM,CAAA;AAAA,EAAC;AAExE;AAEO,SAAS,UAAU,OAAe;AACvC,SAAO,MACJ,MAAM,MAAM,EACZ,OAAO,OAAO,EACd,IAAI,CAAC,SAAS,KAAK,OAAO,CAAC,EAAE,gBAAgB,KAAK,MAAM,CAAC,CAAC,EAC1D,KAAK,GAAG;AACb;AAEO,SAAS,yBAAyB,OAAyB,QAAwB;;AACxF,MAAI,OAAO,kBAAkB,SAAS,MAAM,OAAO,WAAW,CAAC,MAAM,UAAU;AAC7E,WAAO;AAAA,EACT;AACA,QAAM,WAAW,MAAM,OAAO,SAAS,KAAK;AAC5C,QAAM,UAAQ,WAAM,WAAN,mBAAc,YAAW;AACvC,MAAI,OAAO,UAAU,WAAW;AAC9B,WAAO,QAAQ,SAAS;AAAA,EAC1B;AACA,MAAI,MAAM,QAAQ,KAAK,KAAM,SAAS,QAAQ,OAAO,UAAU,UAAW;AACxE,WAAO;AAAA,EACT;AACA,MAAI,SAAS,MAAM;AACjB,WAAO;AAAA,EACT;AACA,SAAO,OAAO,KAAK;AACrB;AAEO,SAAS,4BACd,YACA,QACA,eAAgC,CAAA,GAChC,gBAAiC,IAChB;AACjB,QAAM,SAAS,OAAO;AAAA,IACpB,WAAW,IAAI,CAAC,UAAU,CAAC,MAAM,MAAM,yBAAyB,OAAO,MAAM,CAAC,CAAC;AAAA,EAAA;AAEjF,SAAO,EAAE,GAAG,QAAQ,GAAG,eAAe,GAAG,aAAA;AAC3C;AAQO,MAAM,qBAAqB;AAE3B,SAAS,4BACd,YACA,UACiC;;AACjC,MAAI,CAAC,WAAY,QAAO;AAExB,QAAM,WAAW,YAAY,WAAW,UAAU,OAAK,0CAAU,eAAV,mBAAsB,UAAS;AACtF,QAAM,SAAS,eAAe,WAAW,WAAW,OAAK,0CAAU,eAAV,mBAAsB,WAAU;AACzF,QAAM,OAAO,KAAK,MAAM,SAAS,QAAQ;AACzC,QAAM,SAAS,qCAAU;AACzB,QAAM,YAAY,WAAW;AAC7B,QAAM,YAAY,WAAW;AAE7B,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,IAAI,iCAAQ,WAAU,SAAY,EAAE,OAAO,OAAO,MAAA,IAAU,CAAA;AAAA,IAC5D,IAAI,iCAAQ,mBAAkB,SAAY,EAAE,eAAe,OAAO,cAAA,IAAkB,CAAA;AAAA,IACpF,IAAI,iCAAQ,aAAY,SAAY,EAAE,SAAS,OAAO,QAAA,IAAY,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASlE,GAAI,cACH,WAAW,gBACT,iCAAQ,eAAc,SAAS,YAAY,sBAC1C;AAAA,MACE,QAAQ;AAAA,QACN,GAAI,WAAW,cAAc,EAAE,SAAS,WAAW,YAAA,IAAgB,CAAA;AAAA,QACnE,IAAI,iCAAQ,cAAa,EAAE,MAAM,OAAO,WAAA,IAAe,CAAA;AAAA,QACvD,gBAAgB,CAAC,SAA6B;AAG5C,iDAAY;AACZ,oBAAU,QAAQ,EAAE;AAAA,QACtB;AAAA,MAAA;AAAA,IACF,IAEF,CAAA;AAAA;AAAA;AAAA;AAAA,IAIJ,GAAI,YACA;AAAA,MACE,cAAc,CAAC,SAAiB;AAC9B,YAAI,YAAY,WAAW,UAAU,KAAK,MAAM;AAC9C,qBAAW,SAAS,OAAO,QAAQ,CAAC;AAAA,QACtC;AACA,+CAAY;AACZ,kBAAU,OAAO,KAAK,IAAI,MAAM,CAAC,IAAI,QAAQ,CAAC;AAAA,MAChD;AAAA,IAAA,IAEF,CAAA;AAAA,IACJ,kBAAkB,CAAC,SAAiB;AAClC,iBAAW,SAAS,OAAO,IAAI,CAAC;AAGhC,6CAAY;AACZ,6CAAY;AAAA,IACd;AAAA,EAAA;AAEJ;AAEO,SAAS,qBAAqB,QAAyB;AAC5D,SAAO,OAAO,YAAY,OAAO,QAAQ,MAAM,EAAE,OAAO,CAAC,CAAA,EAAG,KAAK,MAAM,UAAU,EAAE,CAAC;AACtF;AAEO,SAAS,oBACd,QACA,YACiB;AACjB,QAAM,kBAAkB,IAAI;AAAA,IAC1B,WACG,OAAO,CAAC,UAAU,MAAM,OAAO,UAAUA,wBAAkB,KAAK,CAAC,EACjE,IAAI,CAAC,MAAM,EAAE,IAAI;AAAA,EAAA;AAEtB,QAAM,SAA0B,CAAA;AAChC,QAAM,OAAiB,CAAA;AAEvB,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,MAAM,GAAG;AACjD,QAAI,CAAC,MAAO;AACZ,QAAI,gBAAgB,IAAI,GAAG,GAAG;AAC5B,WAAK,KAAK,KAAK;AAAA,IACjB,OAAO;AACL,aAAO,GAAG,IAAI;AAAA,IAChB;AAAA,EACF;AAEA,MAAI,KAAK,SAAS,GAAG;AACnB,WAAO,OAAO,KAAK,KAAK,GAAG;AAAA,EAC7B;AAEA,SAAO;AACT;AAEO,SAAS,uBACd,YACA,QACA,WACA,UAAgC,CAAA,GACX;;AACrB,QAAM,cAAiC,CAAA;AACvC,QAAM,kBAAgB,aAAQ,WAAR,mBAAgB,YAAW,CAAA;AACjD,QAAM,mBAAmB,IAAI,IAAI,QAAQ,oBAAoB,CAAC,QAAQ,SAAS,QAAQ,CAAC;AACxF,QAAM,eAAe,QAAQ,gBAAgB,CAAA;AAC7C,QAAM,aAAa,QAAQ,cAAc;AAOzC,QAAM,aAAa,WAAW,KAAK,CAAC;;AAAM,aAAAC,MAAA,EAAE,UAAU,MAAZ,gBAAAA,IAAe,UAAS;AAAA,GAAO;AACzE,QAAM,cAAc,WAAW,KAAK,CAAC;;AAAM,aAAAA,MAAA,EAAE,UAAU,MAAZ,gBAAAA,IAAe,UAAS;AAAA,GAAQ;AAG3E,QAAM,cAAc,WAAW,KAAK,CAAC;;AAAM,aAAAA,MAAA,EAAE,UAAU,MAAZ,gBAAAA,IAAe,UAAS;AAAA,GAAQ;AAC3E,QAAM,0CAA0B,IAAA;AAChC,MAAI,WAAY,qBAAoB,IAAI,WAAW,IAAI;AACvD,MAAI,YAAa,qBAAoB,IAAI,YAAY,IAAI;AACzD,MAAI,YAAa,qBAAoB,IAAI,YAAY,IAAI;AAIzD,QAAM,cAAc,WAAW;AAAA,IAC7B,CAAC,MAAA;;AAAM,eAAAA,MAAA,EAAE,UAAU,MAAZ,gBAAAA,IAAe,UAAS,YAAY,iBAAiB,IAAI,EAAE,EAAE;AAAA;AAAA,EAAA;AAEtE,QAAM,YAAY,IAAI,IAAI,mBAAmB;AAC7C,MAAI,YAAa,WAAU,IAAI,YAAY,IAAI;AAM/C,QAAM,SAAS,CAAC,UAA4C;AAAA,IAC1D,GAAG;AAAA,IACH,GAAI,cAAc,EAAE,CAAC,YAAY,IAAI,GAAG,IAAA,IAAQ,CAAA;AAAA,IAChD,GAAI,cAAc,EAAE,CAAC,YAAY,IAAI,GAAG,GAAA,IAAO,CAAA;AAAA,EAAC;AAKlD,QAAM,iBAAiB,WAAW,KAAK,CAAC;;AAAM,aAAAA,MAAA,EAAE,UAAU,MAAZ,gBAAAA,IAAe,UAAS;AAAA,GAAW;AACjF,QAAM,eAAe,WAAW,KAAK,CAAC;;AAAM,aAAAA,MAAA,EAAE,UAAU,MAAZ,gBAAAA,IAAe,UAAS;AAAA,GAAS;AAC7E,QAAM,aACJ,kBACA,WAAW;AAAA,IACT,CAAC,UAAA;;AACC,8BAAiB,IAAI,MAAM,EAAE,KAC7B,MAAM,OAAO,aACbA,MAAA,cAAc,MAAM,IAAI,MAAxB,gBAAAA,IAA2B,UAAS;AAAA;AAAA,EAAA;AAE1C,QAAM,WACJ,gBACA,WAAW;AAAA,IACT,CAAC,UAAA;;AACC,8BAAiB,IAAI,MAAM,EAAE,KAC7B,MAAM,OAAO,aACbA,MAAA,cAAc,MAAM,IAAI,MAAxB,gBAAAA,IAA2B,UAAS;AAAA;AAAA,EAAA;AAE1C,QAAM,eAAe,cAAc,QAAQ,YAAY;AAEvD,aAAW,SAAS,YAAY;AAC9B,QAAI,CAAC,iBAAiB,IAAI,MAAM,EAAE,EAAG;AACrC,QAAI,UAAU,IAAI,MAAM,IAAI,EAAG;AAC/B,QAAI,iBAAiB,MAAM,UAAS,yCAAY,SAAQ,MAAM,UAAS,qCAAU,QAAO;AACtF;AAAA,IACF;AAEA,UAAM,WAAW,OAAO,UAAU,eAAe,KAAK,cAAc,MAAM,IAAI;AAC9E,QAAI,YAAY,WAAY;AAC5B,UAAM,QAAQ,WAAY,aAAa,MAAM,IAAI,KAAK,KAAO,OAAO,MAAM,IAAI,KAAK;AACnF,UAAM,UAAQ,mBAAc,MAAM,IAAI,MAAxB,mBAA2B,UAAS,UAAU,MAAM,IAAI;AAItE,UAAM,cAAcC,MAAAA,qBAAqB,KAAK;AAC9C,UAAM,kBAAkB,gBAAgB,SAAY,EAAE,YAAA,IAAgB,CAAA;AACtE,UAAM,WAAW,CAAC,SAA2B;AAC3C,UAAI,SAAU;AACd,YAAM,cAAc,OAAO,SAAS,YAAa,OAAO,SAAS,UAAW;AAC5E,gBAAU,CAAC,YAAY,OAAO,EAAE,GAAG,SAAS,CAAC,MAAM,IAAI,GAAG,YAAA,CAAa,CAAC;AAAA,IAC1E;AAEA,UAAM,SAAS,MAAM;AACrB,UAAM,eAAe,cAAc,MAAM,IAAI;AAI7C,SAAI,6CAAc,UAAS,gBAAgB,MAAM,OAAO,SAAS;AAC/D,YAAM,SAASC,sBAAAA,iBAAiB,KAAK;AACrC,kBAAY,KAAK;AAAA,QACf,KAAK,MAAM;AAAA,QACX,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA,GAAI,OAAO,QAAQ,SAAY,EAAE,MAAM,OAAO,IAAA,IAAQ,CAAA;AAAA,QACtD,GAAI,OAAO,QAAQ,SAAY,EAAE,IAAI,OAAO,IAAA,IAAQ,CAAA;AAAA,QACpD,GAAI,aAAa,UAAU,EAAE,SAAS,aAAa,QAAA,IAAY,CAAA;AAAA,QAC/D,aAAa,aAAa,eAAe;AAAA,QACzC,GAAI,aAAa,WAAW,EAAE,UAAU,aAAa,SAAA,IAAa,CAAA;AAAA,QAClE,GAAI,aAAa,YAAY,EAAE,WAAW,aAAa,UAAA,IAAc,CAAA;AAAA,QACrE,SAAS,CAAC,MAAc,OAAe;AACrC,cAAI,SAAU;AACd;AAAA,YAAU,CAAC,YACT,OAAO,EAAE,GAAG,SAAS,CAAC,MAAM,IAAI,GAAGC,sBAAAA,qBAAqB,EAAE,KAAK,MAAM,KAAK,GAAA,CAAI,GAAG;AAAA,UAAA;AAAA,QAErF;AAAA,MAAA,CACD;AACD;AAAA,IACF;AAKA,SAAI,6CAAc,UAAS,WAAW,MAAM,OAAO,SAAS;AAC1D,kBAAY,KAAK;AAAA,QACf,KAAK,MAAM;AAAA,QACX,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA,GAAG;AAAA,QACH,UAAU,CAAC,SAAS,SAAS,IAAI;AAAA,MAAA,CAClC;AACD;AAAA,IACF;AAEA,SAAI,6CAAc,UAAS,kBAAkB,MAAM,OAAO,SAAS;AACjE,kBAAY,KAAK;AAAA,QACf,KAAK,MAAM;AAAA,QACX,MAAM;AAAA,QACN;AAAA,QACA,OAAOC,sBAAAA,sBAAsB,KAAK;AAAA,QAClC;AAAA,QACA,SAAS,4BAA4B,YAAY;AAAA,QACjD,GAAG,YAAY,cAAc,MAAM,MAAM,QAAQ,YAAY;AAAA,QAC7D,UAAU,CAAC,SACT;AAAA,UAAU,CAAC,YACT,OAAO,EAAE,GAAG,SAAS,CAAC,MAAM,IAAI,GAAGC,gDAA0B,IAAI,GAAG;AAAA,QAAA;AAAA,MACtE,CACH;AACD;AAAA,IACF;AAEA,QAAI,iCAAQ,MAAM;AAChB,kBAAY,KAAK;AAAA,QACf,KAAK,MAAM;AAAA,QACX,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA,SAAS,OAAO,KAAK,IAAI,CAAC,UAAU;AAAA,UAClC,OAAO,OAAO,IAAI;AAAA,UAClB,OAAO,OAAO,IAAI;AAAA,QAAA,EAClB;AAAA,QACF,UAAU,CAAC,SAAS,SAAS,IAAI;AAAA,MAAA,CAClC;AACD;AAAA,IACF;AAEA,SAAI,6CAAc,UAAS,WAAU,iCAAQ,UAAS,WAAW;AAC/D,kBAAY,KAAK;AAAA,QACf,KAAK,MAAM;AAAA,QACX,MAAM;AAAA,QACN;AAAA,QACA,OAAO,UAAU;AAAA,QACjB;AAAA,QACA,UAAU,CAAC,SAAS,SAAS,IAAI;AAAA,MAAA,CAClC;AACD;AAAA,IACF;AAEA,QAAI,gBAAgB,QAAQ,MAAM,OAAO,SAAS;AAChD,UAAI,aAAa,OAAO;AACtB,oBAAY,KAAK;AAAA,UACf,KAAK,MAAM;AAAA,UACX,MAAM;AAAA,UACN;AAAA,UACA,OAAOC,sBAAAA,iBAAiB,KAAK;AAAA,UAC7B;AAAA,UACA,SAAS,4BAA4B,YAAY;AAAA;AAAA;AAAA;AAAA,UAIjD,GAAG,gBAAgB,YAAY;AAAA,UAC/B,GAAG;AAAA,UACH,UAAU,CAAC,SACT,UAAU,CAAC,YAAY,OAAO,EAAE,GAAG,SAAS,CAAC,MAAM,IAAI,GAAG,KAAK,KAAK,GAAG,EAAA,CAAG,CAAC;AAAA,QAAA,CAC9E;AACD;AAAA,MACF;AAEA,kBAAY,KAAK;AAAA,QACf,KAAK,MAAM;AAAA,QACX,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA,QACA,SAAS,4BAA4B,YAAY;AAAA,QACjD,GAAG;AAAA,QACH,WACE,aAAa,SAAS,WAClB,WACA,aAAa,SAAS,SACpB,SACA;AAAA,QACR,UAAU,CAAC,SAAS,SAAS,IAAI;AAAA,MAAA,CAClC;AACD;AAAA,IACF;AAEA,gBAAY,KAAK;AAAA,MACf,KAAK,MAAM;AAAA,MACX,MAAM;AAAA,MACN;AAAA,MACA;AAAA,MACA;AAAA,MACA,GAAG;AAAA,MACH,UAAU,CAAC,SAAS,SAAS,IAAI;AAAA,IAAA,CAClC;AAAA,EACH;AAEA,QAAM,SAA8B,EAAE,SAAS,YAAA;AAC/C,MAAI,aAAa;AACf,UAAM,iBAAiB,OAAO,UAAU,eAAe,KAAK,cAAc,YAAY,IAAI;AAC1F,UAAM,cAAc,iBACf,aAAa,YAAY,IAAI,KAAK,KAClC,OAAO,YAAY,IAAI,KAAK;AACjC,UAAM,oBAAoBL,MAAAA,qBAAqB,WAAW;AAC1D,WAAO,SAAS;AAAA,MACd,OAAO;AAAA,MACP,UAAU,CAAC,SAAS;AAClB,YAAI,eAAgB;AACpB,kBAAU,CAAC,YAAY,OAAO,EAAE,GAAG,SAAS,CAAC,YAAY,IAAI,GAAG,KAAA,CAAM,CAAC;AAAA,MACzE;AAAA,MACA,GAAI,oBAAoB,EAAE,aAAa,kBAAA,IAAsB,CAAA;AAAA,MAC7D,aAAW,mBAAc,YAAY,IAAI,MAA9B,mBAAiC,UAAS,UAAU,YAAY,IAAI;AAAA,IAAA;AAAA,EAEnF;AAMA,MAAI,YAAY;AACd,WAAO,aAAa;AAAA,MAClB,YAAY,WAAW;AAAA,MACvB,YAAY,OAAO,WAAW,IAAI,KAAK;AAAA,MACvC,UAAU,CAAC,SAAS,UAAU,CAAC,aAAa,EAAE,GAAG,SAAS,CAAC,WAAW,IAAI,GAAG,OAAO;AAAA,MACpF,GAAI,cACA;AAAA,QACE,aAAa,YAAY;AAAA,QACzB,aAAa,OAAO,YAAY,IAAI,KAAK;AAAA,QACzC,WAAW,CAAC,SACV,UAAU,CAAC,aAAa,EAAE,GAAG,SAAS,CAAC,YAAY,IAAI,GAAG,OAAO;AAAA,MAAA,IAErE,CAAA;AAAA,MACJ,GAAI,cACA;AAAA,QACE,aAAa,YAAY;AAAA,QACzB,aAAa,OAAO,YAAY,IAAI,KAAK;AAAA,QACzC,WAAW,CAAC,SACV,UAAU,CAAC,aAAa,EAAE,GAAG,SAAS,CAAC,YAAY,IAAI,GAAG,OAAO;AAAA,MAAA,IAErE,CAAA;AAAA,IAAC;AAAA,EAET;AACA,MAAI,gBAAgB,cAAc,QAAQ,YAAY,MAAM;AAC1D,UAAM,iBAAiB,cAAc,WAAW,IAAI;AACpD,UAAM,eAAe,cAAc,SAAS,IAAI;AAChD,UAAM,YAAY,kBAAkB;AACpC,WAAO,YAAY;AAAA,MACjB,MAAM,OAAO,WAAW,IAAI,KAAK;AAAA,MACjC,IAAI,OAAO,SAAS,IAAI,KAAK;AAAA,MAC7B,SAAS,CAAC,MAAM,OACd;AAAA,QAAU,CAAC,YACT,OAAO,EAAE,GAAG,SAAS,CAAC,WAAW,IAAI,GAAG,MAAM,CAAC,SAAS,IAAI,GAAG,IAAI;AAAA,MAAA;AAAA,MAEvE,IAAI,uCAAW,WAAU,EAAE,SAAS,UAAU,QAAA,IAAY,CAAA;AAAA,MAC1D,cAAa,uCAAW,gBAAe;AAAA,MACvC,IAAI,uCAAW,YAAW,EAAE,UAAU,UAAU,SAAA,IAAa,CAAA;AAAA,MAC7D,IAAI,uCAAW,aAAY,EAAE,WAAW,UAAU,UAAA,IAAc,CAAA;AAAA,MAChE,GAAI,WAAW,cAAc,EAAE,iBAAiB,WAAW,YAAA,IAAgB,CAAA;AAAA,MAC3E,GAAI,SAAS,cAAc,EAAE,eAAe,SAAS,YAAA,IAAgB,CAAA;AAAA,IAAC;AAAA,EAE1E;AAEA,SAAO;AACT;AAEO,SAAS,mBAAsB,OAAU,SAAiB;AAC/D,QAAM,CAAC,WAAW,YAAY,IAAIM,MAAAA,SAAS,KAAK;AAEhDC,QAAAA,UAAU,MAAM;AACd,UAAM,YAAY,OAAO,WAAW,MAAM,aAAa,KAAK,GAAG,OAAO;AACtE,WAAO,MAAM,OAAO,aAAa,SAAS;AAAA,EAC5C,GAAG,CAAC,SAAS,KAAK,CAAC;AAEnB,SAAO;AACT;AAEA,SAAS,YAAY,OAA+C;AAClE,QAAM,SAAS,SAAS,SAAS,IAAI,EAAE;AACvC,SAAO,OAAO,SAAS,MAAM,KAAK,SAAS,IAAI,SAAS;AAC1D;AAEA,SAAS,eAAe,OAA+C;AACrE,QAAM,SAAS,SAAS,SAAS,IAAI,EAAE;AACvC,SAAO,OAAO,SAAS,MAAM,KAAK,UAAU,IAAI,SAAS;AAC3D;AAEO,SAAS,4BAA4B,QAA+B;AACzE,QAAM,6BAAa,IAAA;AAEnB,aAAW,CAAC,OAAO,IAAI,KAAK,OAAO,QAAQ,OAAO,WAAW,CAAA,CAAE,GAAG;AAChE,WAAO,IAAI,OAAO;AAAA,MAChB,OAAO,sBAAsB,IAAI,KAAK;AAAA,MACtC,OAAO,sBAAsB,IAAI,KAAK;AAAA,IAAA,CACvC;AAAA,EACH;AAEA,aAAW,CAAC,OAAO,IAAI,KAAK,OAAO,QAAQ,OAAO,YAAY,CAAA,CAAE,GAAG;AACjE,QAAI,CAAC,OAAO,IAAI,KAAK,GAAG;AACtB,aAAO,IAAI,OAAO;AAAA,QAChB,OAAO,sBAAsB,IAAI,KAAK;AAAA,QACtC,OAAO,sBAAsB,IAAI,KAAK;AAAA,MAAA,CACvC;AAAA,IACH;AAAA,EACF;AAEA,SAAO,MAAM,KAAK,OAAO,QAAA,CAAS,EAAE,IAAI,CAAC,CAAC,OAAO,IAAI,OAAO;AAAA,IAC1D;AAAA,IACA,OAAO,KAAK,SAAS;AAAA,IACrB,OAAO,KAAK,SAAS;AAAA,EAAA,EACrB;AACJ;AASA,SAAS,sBAAsB,MAAsD;AACnF,MAAI,QAAQ,KAAM,QAAO;AACzB,MAAI,KAAK,MAAO,QAAO,KAAK;AAC5B,MAAI,KAAK,KAAM,QAAO,KAAK;AAC3B,UAAQ,KAAK,YAAY,CAAA,GAAI,IAAI,CAAC,UAAU,sBAAsB,KAAK,CAAC,EAAE,KAAK,EAAE;AACnF;;;;;;;;;;;"}
|
|
@@ -1,16 +1,19 @@
|
|
|
1
1
|
import { Dispatch, SetStateAction } from 'react';
|
|
2
|
-
import { FilterBarFilter,
|
|
2
|
+
import { FilterBarFilter, FilterBarRangeProps, FilterBarSearchProps } from '../components/FilterBar';
|
|
3
3
|
import { DataTablePagination } from '../data/DataTable';
|
|
4
4
|
import { ExecutionResponse, OpenAPIParameter, OperationLookupFilter, OperationLookupResponse } from './types';
|
|
5
5
|
export type ParameterValues = Record<string, string>;
|
|
6
6
|
export type ParameterValuesSetter = Dispatch<SetStateAction<ParameterValues>>;
|
|
7
7
|
export type ParameterPagination = {
|
|
8
8
|
limitParam: string;
|
|
9
|
-
offsetParam: string;
|
|
10
9
|
limitValue: string;
|
|
11
|
-
offsetValue: string;
|
|
12
10
|
setLimit: (next: string) => void;
|
|
13
|
-
|
|
11
|
+
offsetParam?: string;
|
|
12
|
+
offsetValue?: string;
|
|
13
|
+
setOffset?: (next: string) => void;
|
|
14
|
+
cursorParam?: string;
|
|
15
|
+
cursorValue?: string;
|
|
16
|
+
setCursor?: (next: string) => void;
|
|
14
17
|
};
|
|
15
18
|
export type ParameterFormConfig = {
|
|
16
19
|
filters: FilterBarFilter[];
|
|
@@ -18,15 +21,22 @@ export type ParameterFormConfig = {
|
|
|
18
21
|
timeRange?: FilterBarRangeProps;
|
|
19
22
|
pagination?: ParameterPagination;
|
|
20
23
|
};
|
|
24
|
+
export type LookupSearch = (filterKey: string, query: string) => Promise<{
|
|
25
|
+
value: string;
|
|
26
|
+
label: string;
|
|
27
|
+
title?: string;
|
|
28
|
+
}[]>;
|
|
21
29
|
export type ParameterFormOptions = {
|
|
22
30
|
includeLocations?: OpenAPIParameter["in"][];
|
|
23
31
|
lookup?: OperationLookupResponse | undefined;
|
|
24
32
|
lockedValues?: ParameterValues | undefined;
|
|
25
33
|
hideLocked?: boolean;
|
|
34
|
+
lookupSearch?: LookupSearch | undefined;
|
|
26
35
|
};
|
|
27
36
|
export declare function titleCase(value: string): string;
|
|
28
37
|
export declare function defaultValueForParameter(param: OpenAPIParameter, method: string): string;
|
|
29
38
|
export declare function buildInitialParameterValues(parameters: OpenAPIParameter[], method: string, lockedValues?: ParameterValues, initialValues?: ParameterValues): ParameterValues;
|
|
39
|
+
export declare const OFFSET_DEPTH_LIMIT = 10000;
|
|
30
40
|
export declare function dataTablePaginationFromForm(pagination: ParameterPagination | undefined, response: Pick<ExecutionResponse, "pagination"> | null | undefined): DataTablePagination | undefined;
|
|
31
41
|
export declare function pruneParameterValues(values: ParameterValues): {
|
|
32
42
|
[k: string]: string;
|
|
@@ -34,8 +44,6 @@ export declare function pruneParameterValues(values: ParameterValues): {
|
|
|
34
44
|
export declare function packParameterValues(values: ParameterValues, parameters: OpenAPIParameter[]): ParameterValues;
|
|
35
45
|
export declare function parametersToFormConfig(parameters: OpenAPIParameter[], values: ParameterValues, setValues: ParameterValuesSetter, options?: ParameterFormOptions): ParameterFormConfig;
|
|
36
46
|
export declare function useDebouncedRecord<T>(value: T, delayMs: number): T;
|
|
37
|
-
export declare function parseMultiFilterValue(value: string): Record<string, FilterBarMultiFilterMode>;
|
|
38
|
-
export declare function serializeMultiFilterValue(value: Record<string, FilterBarMultiFilterMode>): string;
|
|
39
47
|
export declare function lookupOptionsToFieldOptions(filter: OperationLookupFilter): {
|
|
40
48
|
value: string;
|
|
41
49
|
label: string;
|