You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ma...@apache.org on 2026/02/28 01:26:41 UTC
(camel-karavan) branch main updated (55db2251 -> 6bf1dded)
This is an automated email from the ASF dual-hosted git repository.
marat pushed a change to branch main
in repository https://gitbox.apache.org/repos/asf/camel-karavan.git
from 55db2251 Fix docker build for 4.18.0
new 0dd7280c vscode karavan-core for 4.18.0
new 2a9f7e39 karavan-designer for vscode 4.18.0
new 84544d50 vscode syntax check
new 6bf1dded vscode syntax check
The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.../metadata/components.json | 0
.../metadata/kamelets.yaml | 0
.../metadata/spiBeans.json | 0
karavan-vscode/package-lock.json | 1882 ++++----
karavan-vscode/package.json | 29 +-
karavan-vscode/src/designerView.ts | 6 +-
karavan-vscode/src/integrationView.ts | 4 +-
karavan-vscode/src/jbang.ts | 2 +-
karavan-vscode/src/utils.ts | 8 +-
karavan-vscode/tsconfig.json | 9 +-
karavan-vscode/webpack.config.js | 10 +-
karavan-vscode/webview/App.tsx | 22 +-
karavan-vscode/webview/api/ErrorEventBus.ts | 25 -
karavan-vscode/webview/api/ProjectModels.ts | 267 --
karavan-vscode/webview/api/SearchModels.ts | 4 -
karavan-vscode/webview/api/SearchStore.ts | 21 -
.../webview/components/ContainerButton.tsx | 73 -
karavan-vscode/webview/components/MainToolbar.css | 489 --
karavan-vscode/webview/components/MainToolbar.tsx | 42 -
.../webview/components/ModalConfirmation.tsx | 58 -
karavan-vscode/webview/components/RightPanel.css | 29 -
karavan-vscode/webview/components/RightPanel.tsx | 29 -
.../webview/core/api/CamelDefinitionApi.ts | 3416 --------------
.../webview/core/api/CamelDefinitionApiExt.ts | 865 ----
.../webview/core/api/CamelDefinitionYaml.ts | 432 --
.../webview/core/api/CamelDefinitionYamlStep.ts | 4946 --------------------
karavan-vscode/webview/core/api/CamelUtil.ts | 390 --
karavan-vscode/webview/core/api/ComponentApi.ts | 370 --
.../webview/core/api/MainConfigurationApi.ts | 87 -
karavan-vscode/webview/core/api/TopologyUtils.ts | 588 ---
karavan-vscode/webview/core/contants.ts | 26 -
.../webview/core/model/CamelDefinition.ts | 3942 ----------------
karavan-vscode/webview/core/model/CamelMetadata.ts | 2929 ------------
.../webview/core/model/TopologyDefinition.ts | 185 -
.../webview/documentation/Documentation.css | 132 -
.../webview/documentation/DocumentationStore.ts | 57 -
.../documentation/components/ComponentCard.tsx | 68 -
.../documentation/components/ComponentModal.tsx | 160 -
.../documentation/components/ComponentsTab.tsx | 46 -
.../webview/documentation/eip/EipCard.tsx | 61 -
.../webview/documentation/eip/EipModal.tsx | 95 -
.../webview/documentation/eip/EipTab.tsx | 49 -
.../webview/documentation/kamelets/KameletCard.tsx | 70 -
.../documentation/kamelets/KameletModal.tsx | 96 -
.../webview/documentation/kamelets/KameletsTab.tsx | 47 -
karavan-vscode/webview/index.tsx | 2 +-
.../webview/integration-designer/DesignerStore.ts | 382 --
.../integration-designer/KaravanDesigner.css | 41 -
.../integration-designer/KaravanDesigner.tsx | 208 -
.../KaravanDesignerViewSwitch.tsx | 73 -
.../integration-designer/beans/BeanCard.tsx | 61 -
.../integration-designer/beans/BeansDesigner.tsx | 115 -
.../integration-designer/editor/CodeEditor.tsx | 69 -
.../integration-designer/icons/ComponentIcons.tsx | 1833 --------
.../integration-designer/icons/KaravanIcons.tsx | 667 ---
.../kamelet/KameletAnnotationsPanel.tsx | 84 -
.../kamelet/KameletDefinitionPropertyCard.tsx | 299 --
.../kamelet/KameletDefinitionsPanel.tsx | 126 -
.../kamelet/KameletDependenciesCard.tsx | 105 -
.../kamelet/KameletDesigner.tsx | 36 -
.../integration-designer/kamelet/KameletInput.tsx | 139 -
.../kamelet/KameletTypesOutCard.tsx | 105 -
.../property/DslProperties.css | 406 --
.../property/DslProperties.tsx | 269 --
.../property/MainPropertiesPanel.tsx | 88 -
.../property/PropertiesHeader.tsx | 362 --
.../integration-designer/property/PropertyStore.ts | 48 -
.../property/property/BeanProperties.tsx | 345 --
.../property/property/ComponentPropertyField.tsx | 512 --
.../property/ConfigurationSelectorModal.tsx | 366 --
.../property/property/DataFormatField.tsx | 164 -
.../property/property/DslPropertyField.tsx | 1057 -----
.../property/property/DslPropertyFieldSelect.tsx | 81 -
.../property/DslPropertyFieldSelectScrollable.tsx | 126 -
.../property/property/ExpressionField.tsx | 182 -
.../property/property/FileReferenceDropdown.tsx | 293 --
.../property/property/KameletPropertyField.tsx | 293 --
.../property/property/ObjectField.tsx | 89 -
.../property/PropertyPlaceholderDropdown.tsx | 196 -
.../property/property/PropertyUtil.tsx | 42 -
.../property/property/VariablesDropdown.tsx | 301 --
.../property/usePropertiesHook.tsx | 246 -
.../webview/integration-designer/rest/RestCard.tsx | 109 -
.../rest/RestConfigurationCard.tsx | 60 -
.../integration-designer/rest/RestDesigner.tsx | 238 -
.../integration-designer/rest/RestMethodCard.tsx | 68 -
.../rest/RestMethodSelector.tsx | 68 -
.../integration-designer/route/DslConnections.tsx | 509 --
.../route/element/DslElement.tsx | 330 --
.../route/element/DslElementHeader.tsx | 449 --
.../route/element/DslElementMoveModal.tsx | 89 -
.../route/element/RouteTemplateElement.tsx | 106 -
.../route/useRouteDesignerHook.tsx | 381 --
.../integration-designer/selector/DslCard.tsx | 110 -
.../integration-designer/selector/DslFastCard.tsx | 59 -
.../integration-designer/selector/DslSelector.tsx | 422 --
.../webview/integration-designer/utils/EventBus.ts | 121 -
.../integration-designer/utils/Notification.tsx | 56 -
.../CustomComponentFactory.tsx | 87 -
.../webview/integration-topology/CustomEdge.tsx | 40 -
.../webview/integration-topology/CustomNode.tsx | 141 -
.../webview/integration-topology/GetCustomMenu.tsx | 41 -
.../webview/integration-topology/TopologyApi.tsx | 657 ---
.../webview/integration-topology/TopologyBeans.tsx | 83 -
.../integration-topology/TopologyLegend.tsx | 43 -
.../webview/integration-topology/TopologyStore.ts | 168 -
.../webview/integration-topology/TopologyTab.tsx | 203 -
.../graph/TopologyDagreLayout.ts | 98 -
.../integration-topology/graph/TopologyGroup.ts | 3 -
.../integration-topology/graph/TopologyLink.ts | 72 -
.../integration-topology/graph/TopologyNode.ts | 4 -
.../webview/integration-topology/topology.css | 197 -
.../karavan-core/api/CamelDefinitionApi.ts | 0
.../karavan-core/api/CamelDefinitionApiExt.ts | 0
.../karavan-core/api/CamelDefinitionYaml.ts | 0
.../karavan-core/api/CamelDefinitionYamlStep.ts | 0
.../{core => karavan-core}/api/CamelDisplayUtil.ts | 0
.../webview}/karavan-core/api/CamelUtil.ts | 0
.../webview}/karavan-core/api/ComponentApi.ts | 0
.../{core => karavan-core}/api/KameletApi.ts | 0
.../karavan-core/api/MainConfigurationApi.ts | 0
.../{core => karavan-core}/api/ProjectModelApi.ts | 0
.../{core => karavan-core}/api/SpiBeanApi.ts | 0
.../{core => karavan-core}/api/TemplateApi.ts | 0
.../webview}/karavan-core/api/TopologyUtils.ts | 0
.../{core => karavan-core}/api/VariableUtil.ts | 0
.../webview}/karavan-core/contants.ts | 0
.../webview}/karavan-core/model/CamelDefinition.ts | 0
.../webview}/karavan-core/model/CamelMetadata.ts | 0
.../model/ComponentModels.ts | 0
.../model/IntegrationDefinition.ts | 0
.../{core => karavan-core}/model/KameletModels.ts | 0
.../model/MainConfigurationModel.ts | 0
.../{core => karavan-core}/model/ProjectModel.ts | 0
.../{core => karavan-core}/model/SpiBeanModels.ts | 0
.../karavan-core/model/TopologyDefinition.ts | 0
.../karavan/app/navigation/PlatformLogo.tsx | 0
.../webview}/karavan/app/theme/ThemeContext.tsx | 0
.../features/documentation/Documentation.css | 0
.../features}/documentation/DocumentationPage.tsx | 45 +-
.../documentation/components/ComponentCard.tsx | 0
.../documentation/components/ComponentModal.tsx | 0
.../documentation/components/ComponentsTab.tsx | 0
.../karavan/features/documentation/eip/EipCard.tsx | 0
.../features/documentation/eip/EipModal.tsx | 0
.../karavan/features/documentation/eip/EipTab.tsx | 0
.../documentation/kamelets/KameletCard.tsx | 0
.../documentation/kamelets/KameletModal.tsx | 0
.../documentation/kamelets/KameletsTab.tsx | 0
.../karavan/features/project/Project.types.ts | 0
.../karavan/features/project/ProjectContext.tsx | 0
.../karavan/features/project/ProjectTitle.tsx | 0
.../features/project/designer}/CodeStore.ts | 0
.../features/project/designer/DesignerStore.ts | 0
.../project/designer}/ErrorBoundaryWrapper.tsx | 0
.../features/project/designer/KaravanDesigner.css | 0
.../features/project/designer/KaravanDesigner.tsx | 0
.../project/designer/KaravanDesignerViewSwitch.tsx | 0
.../features/project/designer/beans/BeanCard.tsx | 0
.../project/designer/beans/BeansDesigner.tsx | 0
.../features/project/designer}/beans/bean.css | 0
.../project/designer/icons/ComponentIcons.tsx | 0
.../features/project/designer}/icons/EipIcons.tsx | 0
.../project/designer/icons/KaravanIcons.tsx | 0
.../project/designer}/icons/OtherIcons.tsx | 0
.../designer/kamelet/KameletAnnotationsPanel.tsx | 0
.../kamelet/KameletDefinitionPropertyCard.tsx | 0
.../designer/kamelet/KameletDefinitionsPanel.tsx | 0
.../designer/kamelet/KameletDependenciesCard.tsx | 0
.../project/designer/kamelet/KameletDesigner.tsx | 0
.../project/designer/kamelet/KameletInput.tsx | 0
.../designer/kamelet/KameletTypesOutCard.tsx | 0
.../features/project/designer}/kamelet/kamelet.css | 0
.../features/project/designer}/karavan.css | 0
.../project/designer/property/DslProperties.css | 0
.../project/designer/property/DslProperties.tsx | 0
.../designer/property/MainPropertiesPanel.tsx | 0
.../project/designer/property/PropertiesHeader.tsx | 0
.../project/designer/property/PropertyStore.ts | 0
.../property/expression/ExpressionBottomPanel.tsx | 0
.../property/expression/ExpressionContextModel.tsx | 0
.../property/expression/ExpressionEditor.css | 0
.../property/expression/ExpressionEditor.tsx | 6 +-
.../designer}/property/property/BeanProperties.css | 0
.../designer/property/property/BeanProperties.tsx | 0
.../property/property/ComponentPropertyField.css | 0
.../property/property/ComponentPropertyField.tsx | 0
.../property/ConfigurationSelectorModal.css | 0
.../property/ConfigurationSelectorModal.tsx | 0
.../designer/property/property/DataFormatField.tsx | 0
.../property/property/DslPropertyField.css | 0
.../property/property/DslPropertyField.tsx | 0
.../property/property/DslPropertyFieldSelect.tsx | 0
.../property/DslPropertyFieldSelectScrollable.tsx | 0
.../designer/property/property/ExpressionField.tsx | 0
.../property/property/FileReferenceDropdown.css | 0
.../property/property/FileReferenceDropdown.tsx | 0
.../property/property/KameletPropertyField.css | 0
.../property/property/KameletPropertyField.tsx | 0
.../designer/property/property/ObjectField.tsx | 0
.../property/PropertyPlaceholderDropdown.css | 0
.../property/PropertyPlaceholderDropdown.tsx | 0
.../designer/property/property/PropertyUtil.tsx | 0
.../property/property/VariablesDropdown.css | 0
.../property/property/VariablesDropdown.tsx | 0
.../designer/property/usePropertiesHook.tsx | 0
.../features/project/designer/rest/RestCard.tsx | 0
.../designer/rest/RestConfigurationCard.tsx | 0
.../project/designer/rest/RestDesigner.tsx | 0
.../project/designer/rest/RestMethodCard.tsx | 0
.../project/designer/rest/RestMethodSelector.tsx | 0
.../features/project/designer}/rest/rest.css | 0
.../project/designer}/route/DeleteConfirmation.tsx | 0
.../project/designer}/route/DslConnections.css | 0
.../project/designer/route/DslConnections.tsx | 0
.../project/designer}/route/RouteDesigner.css | 0
.../project/designer}/route/RouteDesigner.tsx | 0
.../project/designer}/route/element/DslElement.css | 0
.../project/designer/route/element/DslElement.tsx | 0
.../designer/route/element/DslElementHeader.tsx | 0
.../designer/route/element/DslElementMoveModal.tsx | 0
.../route/element/RouteTemplateElement.css | 0
.../route/element/RouteTemplateElement.tsx | 0
.../project/designer}/route/useResizeObserver.tsx | 0
.../designer/route/useRouteDesignerHook.tsx | 0
.../features/project/designer/selector/DslCard.tsx | 0
.../project/designer/selector/DslFastCard.tsx | 0
.../project/designer}/selector/DslPreferences.tsx | 0
.../project/designer}/selector/DslSelector.css | 0
.../project/designer/selector/DslSelector.tsx | 0
.../designer}/utils/CamelDefaultStepProperty.tsx | 0
.../features/project/designer}/utils/CamelUi.tsx | 31 +-
.../project/designer}/utils/DslMetaModel.ts | 0
.../project/designer}/utils/ElementIcon.css | 0
.../project/designer}/utils/ElementIcons.tsx | 0
.../features/project/designer/utils/EventBus.ts | 0
.../project/designer}/utils/InfrastructureAPI.ts | 0
.../project/designer}/utils/IntegrationHeader.tsx | 0
.../features/project/designer}/utils/MediaTypes.ts | 0
.../project/designer/utils/Notification.tsx | 0
.../project/designer}/utils/ValidatorUtils.ts | 0
.../project-topology/CustomComponentFactory.tsx | 0
.../project/project-topology/CustomEdge.tsx | 0
.../project/project-topology}/CustomGroup.tsx | 0
.../project/project-topology/CustomNode.tsx | 32 +-
.../project/project-topology/GetCustomMenu.tsx | 0
.../project/project-topology/TopologyApi.tsx | 0
.../project/project-topology}/TopologyBeans.css | 0
.../project/project-topology/TopologyBeans.tsx | 0
.../project/project-topology/TopologyElkLayout.ts | 0
.../project/project-topology}/TopologyLegend.css | 0
.../project/project-topology/TopologyLegend.tsx | 0
.../project/project-topology/TopologyTab.tsx | 0
.../project/project-topology/TopologyToolbar.tsx | 0
.../features/project/project-topology/topology.css | 0
.../project/project-topology}/useTopologyHook.tsx | 42 +-
.../webview}/karavan/models/AccessModels.ts | 0
.../webview}/karavan/models/ProjectModels.ts | 0
.../webview}/karavan/models/SearchModels.ts | 0
.../webview}/karavan/models/ServiceModels.ts | 0
.../webview}/karavan/models/SystemModels.ts | 0
.../shared/ui}/ContainerButton.css | 0
.../webview}/karavan/shared/ui/ContainerButton.tsx | 0
.../shared/ui}/ErrorBoundaryWrapper.tsx | 0
.../shared/ui}/FieldSelectScrollable.tsx | 0
.../shared/ui}/FieldSelectWithCreate.tsx | 0
.../webview}/karavan/shared/ui/MainToolbar.css | 0
.../webview}/karavan/shared/ui/MainToolbar.tsx | 0
.../karavan/shared/ui/ModalConfirmation.tsx | 0
.../webview}/karavan/shared/ui/PlatformLogos.css | 0
.../webview}/karavan/shared/ui/PlatformLogos.tsx | 0
.../webview}/karavan/shared/ui/RightPanel.css | 0
.../webview}/karavan/shared/ui/RightPanel.tsx | 0
.../webview}/karavan/stores/AccessStore.ts | 0
.../webview}/karavan/stores/DocumentationStore.ts | 0
.../{api => karavan/stores}/ProjectStore.ts | 158 +-
.../webview}/karavan/stores/TopologyStore.ts | 0
.../webview}/karavan/util/CodeUtils.ts | 0
.../webview}/karavan/util/ModalForm.css | 0
.../webview}/karavan/util/StringUtils.ts | 0
.../webview}/karavan/util/form-util.css | 0
.../webview}/karavan/util/useFormUtil.tsx | 0
karavan-vscode/webview/main/ThemeContext.tsx | 33 -
karavan-vscode/webview/util/StringUtils.ts | 280 --
284 files changed, 1006 insertions(+), 36510 deletions(-)
copy {karavan-app/src/main/resources => karavan-vscode}/metadata/components.json (100%)
copy {karavan-app/src/main/resources => karavan-vscode}/metadata/kamelets.yaml (100%)
copy {karavan-app/src/main/resources => karavan-vscode}/metadata/spiBeans.json (100%)
delete mode 100644 karavan-vscode/webview/api/ErrorEventBus.ts
delete mode 100644 karavan-vscode/webview/api/ProjectModels.ts
delete mode 100644 karavan-vscode/webview/api/SearchModels.ts
delete mode 100644 karavan-vscode/webview/api/SearchStore.ts
delete mode 100644 karavan-vscode/webview/components/ContainerButton.tsx
delete mode 100644 karavan-vscode/webview/components/MainToolbar.css
delete mode 100644 karavan-vscode/webview/components/MainToolbar.tsx
delete mode 100644 karavan-vscode/webview/components/ModalConfirmation.tsx
delete mode 100644 karavan-vscode/webview/components/RightPanel.css
delete mode 100644 karavan-vscode/webview/components/RightPanel.tsx
delete mode 100644 karavan-vscode/webview/core/api/CamelDefinitionApi.ts
delete mode 100644 karavan-vscode/webview/core/api/CamelDefinitionApiExt.ts
delete mode 100644 karavan-vscode/webview/core/api/CamelDefinitionYaml.ts
delete mode 100644 karavan-vscode/webview/core/api/CamelDefinitionYamlStep.ts
delete mode 100644 karavan-vscode/webview/core/api/CamelUtil.ts
delete mode 100644 karavan-vscode/webview/core/api/ComponentApi.ts
delete mode 100644 karavan-vscode/webview/core/api/MainConfigurationApi.ts
delete mode 100644 karavan-vscode/webview/core/api/TopologyUtils.ts
delete mode 100644 karavan-vscode/webview/core/contants.ts
delete mode 100644 karavan-vscode/webview/core/model/CamelDefinition.ts
delete mode 100644 karavan-vscode/webview/core/model/CamelMetadata.ts
delete mode 100644 karavan-vscode/webview/core/model/TopologyDefinition.ts
delete mode 100644 karavan-vscode/webview/documentation/Documentation.css
delete mode 100644 karavan-vscode/webview/documentation/DocumentationStore.ts
delete mode 100644 karavan-vscode/webview/documentation/components/ComponentCard.tsx
delete mode 100644 karavan-vscode/webview/documentation/components/ComponentModal.tsx
delete mode 100644 karavan-vscode/webview/documentation/components/ComponentsTab.tsx
delete mode 100644 karavan-vscode/webview/documentation/eip/EipCard.tsx
delete mode 100644 karavan-vscode/webview/documentation/eip/EipModal.tsx
delete mode 100644 karavan-vscode/webview/documentation/eip/EipTab.tsx
delete mode 100644 karavan-vscode/webview/documentation/kamelets/KameletCard.tsx
delete mode 100644 karavan-vscode/webview/documentation/kamelets/KameletModal.tsx
delete mode 100644 karavan-vscode/webview/documentation/kamelets/KameletsTab.tsx
delete mode 100644 karavan-vscode/webview/integration-designer/DesignerStore.ts
delete mode 100644 karavan-vscode/webview/integration-designer/KaravanDesigner.css
delete mode 100644 karavan-vscode/webview/integration-designer/KaravanDesigner.tsx
delete mode 100644 karavan-vscode/webview/integration-designer/KaravanDesignerViewSwitch.tsx
delete mode 100644 karavan-vscode/webview/integration-designer/beans/BeanCard.tsx
delete mode 100644 karavan-vscode/webview/integration-designer/beans/BeansDesigner.tsx
delete mode 100644 karavan-vscode/webview/integration-designer/editor/CodeEditor.tsx
delete mode 100644 karavan-vscode/webview/integration-designer/icons/ComponentIcons.tsx
delete mode 100644 karavan-vscode/webview/integration-designer/icons/KaravanIcons.tsx
delete mode 100644 karavan-vscode/webview/integration-designer/kamelet/KameletAnnotationsPanel.tsx
delete mode 100644 karavan-vscode/webview/integration-designer/kamelet/KameletDefinitionPropertyCard.tsx
delete mode 100644 karavan-vscode/webview/integration-designer/kamelet/KameletDefinitionsPanel.tsx
delete mode 100644 karavan-vscode/webview/integration-designer/kamelet/KameletDependenciesCard.tsx
delete mode 100644 karavan-vscode/webview/integration-designer/kamelet/KameletDesigner.tsx
delete mode 100644 karavan-vscode/webview/integration-designer/kamelet/KameletInput.tsx
delete mode 100644 karavan-vscode/webview/integration-designer/kamelet/KameletTypesOutCard.tsx
delete mode 100644 karavan-vscode/webview/integration-designer/property/DslProperties.css
delete mode 100644 karavan-vscode/webview/integration-designer/property/DslProperties.tsx
delete mode 100644 karavan-vscode/webview/integration-designer/property/MainPropertiesPanel.tsx
delete mode 100644 karavan-vscode/webview/integration-designer/property/PropertiesHeader.tsx
delete mode 100644 karavan-vscode/webview/integration-designer/property/PropertyStore.ts
delete mode 100644 karavan-vscode/webview/integration-designer/property/property/BeanProperties.tsx
delete mode 100644 karavan-vscode/webview/integration-designer/property/property/ComponentPropertyField.tsx
delete mode 100644 karavan-vscode/webview/integration-designer/property/property/ConfigurationSelectorModal.tsx
delete mode 100644 karavan-vscode/webview/integration-designer/property/property/DataFormatField.tsx
delete mode 100644 karavan-vscode/webview/integration-designer/property/property/DslPropertyField.tsx
delete mode 100644 karavan-vscode/webview/integration-designer/property/property/DslPropertyFieldSelect.tsx
delete mode 100644 karavan-vscode/webview/integration-designer/property/property/DslPropertyFieldSelectScrollable.tsx
delete mode 100644 karavan-vscode/webview/integration-designer/property/property/ExpressionField.tsx
delete mode 100644 karavan-vscode/webview/integration-designer/property/property/FileReferenceDropdown.tsx
delete mode 100644 karavan-vscode/webview/integration-designer/property/property/KameletPropertyField.tsx
delete mode 100644 karavan-vscode/webview/integration-designer/property/property/ObjectField.tsx
delete mode 100644 karavan-vscode/webview/integration-designer/property/property/PropertyPlaceholderDropdown.tsx
delete mode 100644 karavan-vscode/webview/integration-designer/property/property/PropertyUtil.tsx
delete mode 100644 karavan-vscode/webview/integration-designer/property/property/VariablesDropdown.tsx
delete mode 100644 karavan-vscode/webview/integration-designer/property/usePropertiesHook.tsx
delete mode 100644 karavan-vscode/webview/integration-designer/rest/RestCard.tsx
delete mode 100644 karavan-vscode/webview/integration-designer/rest/RestConfigurationCard.tsx
delete mode 100644 karavan-vscode/webview/integration-designer/rest/RestDesigner.tsx
delete mode 100644 karavan-vscode/webview/integration-designer/rest/RestMethodCard.tsx
delete mode 100644 karavan-vscode/webview/integration-designer/rest/RestMethodSelector.tsx
delete mode 100644 karavan-vscode/webview/integration-designer/route/DslConnections.tsx
delete mode 100644 karavan-vscode/webview/integration-designer/route/element/DslElement.tsx
delete mode 100644 karavan-vscode/webview/integration-designer/route/element/DslElementHeader.tsx
delete mode 100644 karavan-vscode/webview/integration-designer/route/element/DslElementMoveModal.tsx
delete mode 100644 karavan-vscode/webview/integration-designer/route/element/RouteTemplateElement.tsx
delete mode 100644 karavan-vscode/webview/integration-designer/route/useRouteDesignerHook.tsx
delete mode 100644 karavan-vscode/webview/integration-designer/selector/DslCard.tsx
delete mode 100644 karavan-vscode/webview/integration-designer/selector/DslFastCard.tsx
delete mode 100644 karavan-vscode/webview/integration-designer/selector/DslSelector.tsx
delete mode 100644 karavan-vscode/webview/integration-designer/utils/EventBus.ts
delete mode 100644 karavan-vscode/webview/integration-designer/utils/Notification.tsx
delete mode 100644 karavan-vscode/webview/integration-topology/CustomComponentFactory.tsx
delete mode 100644 karavan-vscode/webview/integration-topology/CustomEdge.tsx
delete mode 100644 karavan-vscode/webview/integration-topology/CustomNode.tsx
delete mode 100644 karavan-vscode/webview/integration-topology/GetCustomMenu.tsx
delete mode 100644 karavan-vscode/webview/integration-topology/TopologyApi.tsx
delete mode 100644 karavan-vscode/webview/integration-topology/TopologyBeans.tsx
delete mode 100644 karavan-vscode/webview/integration-topology/TopologyLegend.tsx
delete mode 100644 karavan-vscode/webview/integration-topology/TopologyStore.ts
delete mode 100644 karavan-vscode/webview/integration-topology/TopologyTab.tsx
delete mode 100644 karavan-vscode/webview/integration-topology/graph/TopologyDagreLayout.ts
delete mode 100644 karavan-vscode/webview/integration-topology/graph/TopologyGroup.ts
delete mode 100644 karavan-vscode/webview/integration-topology/graph/TopologyLink.ts
delete mode 100644 karavan-vscode/webview/integration-topology/graph/TopologyNode.ts
delete mode 100644 karavan-vscode/webview/integration-topology/topology.css
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan-core/api/CamelDefinitionApi.ts (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan-core/api/CamelDefinitionApiExt.ts (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan-core/api/CamelDefinitionYaml.ts (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan-core/api/CamelDefinitionYamlStep.ts (100%)
rename karavan-vscode/webview/{core => karavan-core}/api/CamelDisplayUtil.ts (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan-core/api/CamelUtil.ts (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan-core/api/ComponentApi.ts (100%)
rename karavan-vscode/webview/{core => karavan-core}/api/KameletApi.ts (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan-core/api/MainConfigurationApi.ts (100%)
rename karavan-vscode/webview/{core => karavan-core}/api/ProjectModelApi.ts (100%)
rename karavan-vscode/webview/{core => karavan-core}/api/SpiBeanApi.ts (100%)
rename karavan-vscode/webview/{core => karavan-core}/api/TemplateApi.ts (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan-core/api/TopologyUtils.ts (100%)
rename karavan-vscode/webview/{core => karavan-core}/api/VariableUtil.ts (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan-core/contants.ts (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan-core/model/CamelDefinition.ts (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan-core/model/CamelMetadata.ts (100%)
rename karavan-vscode/webview/{core => karavan-core}/model/ComponentModels.ts (100%)
rename karavan-vscode/webview/{core => karavan-core}/model/IntegrationDefinition.ts (100%)
rename karavan-vscode/webview/{core => karavan-core}/model/KameletModels.ts (100%)
rename karavan-vscode/webview/{core => karavan-core}/model/MainConfigurationModel.ts (100%)
rename karavan-vscode/webview/{core => karavan-core}/model/ProjectModel.ts (100%)
rename karavan-vscode/webview/{core => karavan-core}/model/SpiBeanModels.ts (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan-core/model/TopologyDefinition.ts (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/app/navigation/PlatformLogo.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/app/theme/ThemeContext.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/documentation/Documentation.css (100%)
rename karavan-vscode/webview/{ => karavan/features}/documentation/DocumentationPage.tsx (77%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/documentation/components/ComponentCard.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/documentation/components/ComponentModal.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/documentation/components/ComponentsTab.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/documentation/eip/EipCard.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/documentation/eip/EipModal.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/documentation/eip/EipTab.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/documentation/kamelets/KameletCard.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/documentation/kamelets/KameletModal.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/documentation/kamelets/KameletsTab.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/Project.types.ts (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/ProjectContext.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/ProjectTitle.tsx (100%)
rename karavan-vscode/webview/{integration-designer => karavan/features/project/designer}/CodeStore.ts (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/DesignerStore.ts (100%)
rename karavan-vscode/webview/{integration-designer => karavan/features/project/designer}/ErrorBoundaryWrapper.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/KaravanDesigner.css (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/KaravanDesigner.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/KaravanDesignerViewSwitch.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/beans/BeanCard.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/beans/BeansDesigner.tsx (100%)
rename karavan-vscode/webview/{integration-designer => karavan/features/project/designer}/beans/bean.css (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/icons/ComponentIcons.tsx (100%)
rename karavan-vscode/webview/{integration-designer => karavan/features/project/designer}/icons/EipIcons.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/icons/KaravanIcons.tsx (100%)
rename karavan-vscode/webview/{integration-designer => karavan/features/project/designer}/icons/OtherIcons.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/kamelet/KameletAnnotationsPanel.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/kamelet/KameletDefinitionPropertyCard.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/kamelet/KameletDefinitionsPanel.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/kamelet/KameletDependenciesCard.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/kamelet/KameletDesigner.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/kamelet/KameletInput.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/kamelet/KameletTypesOutCard.tsx (100%)
rename karavan-vscode/webview/{integration-designer => karavan/features/project/designer}/kamelet/kamelet.css (100%)
rename karavan-vscode/webview/{integration-designer => karavan/features/project/designer}/karavan.css (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/property/DslProperties.css (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/property/DslProperties.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/property/MainPropertiesPanel.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/property/PropertiesHeader.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/property/PropertyStore.ts (100%)
rename karavan-vscode/webview/{integration-designer => karavan/features/project/designer}/property/expression/ExpressionBottomPanel.tsx (100%)
rename karavan-vscode/webview/{integration-designer => karavan/features/project/designer}/property/expression/ExpressionContextModel.tsx (100%)
rename karavan-vscode/webview/{integration-designer => karavan/features/project/designer}/property/expression/ExpressionEditor.css (100%)
rename karavan-vscode/webview/{integration-designer => karavan/features/project/designer}/property/expression/ExpressionEditor.tsx (95%)
rename karavan-vscode/webview/{integration-designer => karavan/features/project/designer}/property/property/BeanProperties.css (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/property/property/BeanProperties.tsx (100%)
rename karavan-vscode/webview/{integration-designer => karavan/features/project/designer}/property/property/ComponentPropertyField.css (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/property/property/ComponentPropertyField.tsx (100%)
rename karavan-vscode/webview/{integration-designer => karavan/features/project/designer}/property/property/ConfigurationSelectorModal.css (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/property/property/ConfigurationSelectorModal.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/property/property/DataFormatField.tsx (100%)
rename karavan-vscode/webview/{integration-designer => karavan/features/project/designer}/property/property/DslPropertyField.css (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/property/property/DslPropertyField.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/property/property/DslPropertyFieldSelect.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/property/property/DslPropertyFieldSelectScrollable.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/property/property/ExpressionField.tsx (100%)
rename karavan-vscode/webview/{integration-designer => karavan/features/project/designer}/property/property/FileReferenceDropdown.css (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/property/property/FileReferenceDropdown.tsx (100%)
rename karavan-vscode/webview/{integration-designer => karavan/features/project/designer}/property/property/KameletPropertyField.css (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/property/property/KameletPropertyField.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/property/property/ObjectField.tsx (100%)
rename karavan-vscode/webview/{integration-designer => karavan/features/project/designer}/property/property/PropertyPlaceholderDropdown.css (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/property/property/PropertyPlaceholderDropdown.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/property/property/PropertyUtil.tsx (100%)
rename karavan-vscode/webview/{integration-designer => karavan/features/project/designer}/property/property/VariablesDropdown.css (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/property/property/VariablesDropdown.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/property/usePropertiesHook.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/rest/RestCard.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/rest/RestConfigurationCard.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/rest/RestDesigner.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/rest/RestMethodCard.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/rest/RestMethodSelector.tsx (100%)
rename karavan-vscode/webview/{integration-designer => karavan/features/project/designer}/rest/rest.css (100%)
rename karavan-vscode/webview/{integration-designer => karavan/features/project/designer}/route/DeleteConfirmation.tsx (100%)
rename karavan-vscode/webview/{integration-designer => karavan/features/project/designer}/route/DslConnections.css (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/route/DslConnections.tsx (100%)
rename karavan-vscode/webview/{integration-designer => karavan/features/project/designer}/route/RouteDesigner.css (100%)
rename karavan-vscode/webview/{integration-designer => karavan/features/project/designer}/route/RouteDesigner.tsx (100%)
rename karavan-vscode/webview/{integration-designer => karavan/features/project/designer}/route/element/DslElement.css (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/route/element/DslElement.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/route/element/DslElementHeader.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/route/element/DslElementMoveModal.tsx (100%)
rename karavan-vscode/webview/{integration-designer => karavan/features/project/designer}/route/element/RouteTemplateElement.css (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/route/element/RouteTemplateElement.tsx (100%)
rename karavan-vscode/webview/{integration-designer => karavan/features/project/designer}/route/useResizeObserver.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/route/useRouteDesignerHook.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/selector/DslCard.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/selector/DslFastCard.tsx (100%)
rename karavan-vscode/webview/{integration-designer => karavan/features/project/designer}/selector/DslPreferences.tsx (100%)
rename karavan-vscode/webview/{integration-designer => karavan/features/project/designer}/selector/DslSelector.css (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/selector/DslSelector.tsx (100%)
rename karavan-vscode/webview/{integration-designer => karavan/features/project/designer}/utils/CamelDefaultStepProperty.tsx (100%)
rename karavan-vscode/webview/{integration-designer => karavan/features/project/designer}/utils/CamelUi.tsx (99%)
rename karavan-vscode/webview/{integration-designer => karavan/features/project/designer}/utils/DslMetaModel.ts (100%)
rename karavan-vscode/webview/{integration-designer => karavan/features/project/designer}/utils/ElementIcon.css (100%)
rename karavan-vscode/webview/{integration-designer => karavan/features/project/designer}/utils/ElementIcons.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/utils/EventBus.ts (100%)
rename karavan-vscode/webview/{integration-designer => karavan/features/project/designer}/utils/InfrastructureAPI.ts (100%)
rename karavan-vscode/webview/{integration-designer => karavan/features/project/designer}/utils/IntegrationHeader.tsx (100%)
rename karavan-vscode/webview/{integration-designer => karavan/features/project/designer}/utils/MediaTypes.ts (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/designer/utils/Notification.tsx (100%)
rename karavan-vscode/webview/{integration-designer => karavan/features/project/designer}/utils/ValidatorUtils.ts (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/project-topology/CustomComponentFactory.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/project-topology/CustomEdge.tsx (100%)
rename karavan-vscode/webview/{integration-topology => karavan/features/project/project-topology}/CustomGroup.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/project-topology/CustomNode.tsx (81%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/project-topology/GetCustomMenu.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/project-topology/TopologyApi.tsx (100%)
rename karavan-vscode/webview/{integration-topology => karavan/features/project/project-topology}/TopologyBeans.css (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/project-topology/TopologyBeans.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/project-topology/TopologyElkLayout.ts (100%)
rename karavan-vscode/webview/{integration-topology => karavan/features/project/project-topology}/TopologyLegend.css (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/project-topology/TopologyLegend.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/project-topology/TopologyTab.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/project-topology/TopologyToolbar.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/features/project/project-topology/topology.css (100%)
rename karavan-vscode/webview/{integration-topology => karavan/features/project/project-topology}/useTopologyHook.tsx (74%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/models/AccessModels.ts (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/models/ProjectModels.ts (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/models/SearchModels.ts (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/models/ServiceModels.ts (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/models/SystemModels.ts (100%)
rename karavan-vscode/webview/{components => karavan/shared/ui}/ContainerButton.css (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/shared/ui/ContainerButton.tsx (100%)
rename karavan-vscode/webview/{components => karavan/shared/ui}/ErrorBoundaryWrapper.tsx (100%)
rename karavan-vscode/webview/{components => karavan/shared/ui}/FieldSelectScrollable.tsx (100%)
rename karavan-vscode/webview/{components => karavan/shared/ui}/FieldSelectWithCreate.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/shared/ui/MainToolbar.css (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/shared/ui/MainToolbar.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/shared/ui/ModalConfirmation.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/shared/ui/PlatformLogos.css (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/shared/ui/PlatformLogos.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/shared/ui/RightPanel.css (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/shared/ui/RightPanel.tsx (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/stores/AccessStore.ts (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/stores/DocumentationStore.ts (100%)
rename karavan-vscode/webview/{api => karavan/stores}/ProjectStore.ts (71%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/stores/TopologyStore.ts (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/util/CodeUtils.ts (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/util/ModalForm.css (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/util/StringUtils.ts (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/util/form-util.css (100%)
copy {karavan-app/src/main/webui/src => karavan-vscode/webview}/karavan/util/useFormUtil.tsx (100%)
delete mode 100644 karavan-vscode/webview/main/ThemeContext.tsx
delete mode 100644 karavan-vscode/webview/util/StringUtils.ts
(camel-karavan) 02/04: karavan-designer for vscode 4.18.0
Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
marat pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-karavan.git
commit 2a9f7e395dbc4a06c48d7753a8570f57d54bf896
Author: Marat Gubaidullin <ma...@talismancloud.io>
AuthorDate: Fri Feb 27 19:25:25 2026 -0500
karavan-designer for vscode 4.18.0
---
.../webview/integration-designer/DesignerStore.ts | 16 +-
.../integration-designer/KaravanDesigner.css | 14 +-
.../integration-designer/KaravanDesigner.tsx | 29 ++-
.../KaravanDesignerViewSwitch.tsx | 82 +++-----
.../integration-designer/beans/BeanCard.tsx | 4 +-
.../integration-designer/beans/BeansDesigner.tsx | 10 +-
.../integration-designer/editor/CodeEditor.tsx | 69 -------
.../integration-designer/icons/ComponentIcons.tsx | 8 +-
.../integration-designer/icons/KaravanIcons.tsx | 160 ++++++++++-----
.../kamelet/KameletAnnotationsPanel.tsx | 2 +-
.../kamelet/KameletDefinitionPropertyCard.tsx | 6 +-
.../kamelet/KameletDefinitionsPanel.tsx | 6 +-
.../kamelet/KameletDependenciesCard.tsx | 4 +-
.../kamelet/KameletDesigner.tsx | 5 +-
.../integration-designer/kamelet/KameletInput.tsx | 2 +-
.../kamelet/KameletTypesOutCard.tsx | 4 +-
.../property/DslProperties.css | 2 +-
.../property/DslProperties.tsx | 27 ++-
.../property/MainPropertiesPanel.tsx | 40 +---
.../property/PropertiesHeader.tsx | 14 +-
.../integration-designer/property/PropertyStore.ts | 6 +-
.../property/expression/ExpressionEditor.tsx | 7 +-
.../property/property/BeanProperties.tsx | 16 +-
.../property/property/ComponentPropertyField.tsx | 21 +-
.../property/ConfigurationSelectorModal.tsx | 4 +-
.../property/property/DataFormatField.tsx | 17 +-
.../property/property/DslPropertyField.tsx | 42 ++--
.../property/property/DslPropertyFieldSelect.tsx | 6 +-
.../property/DslPropertyFieldSelectScrollable.tsx | 4 +-
.../property/property/ExpressionField.tsx | 12 +-
.../property/property/FileReferenceDropdown.tsx | 2 +-
.../property/property/KameletPropertyField.tsx | 6 +-
.../property/property/ObjectField.tsx | 10 +-
.../property/PropertyPlaceholderDropdown.tsx | 6 +-
.../property/property/PropertyUtil.tsx | 6 +-
.../property/property/VariablesDropdown.tsx | 4 +-
.../property/usePropertiesHook.tsx | 28 +--
.../webview/integration-designer/rest/RestCard.tsx | 6 +-
.../rest/RestConfigurationCard.tsx | 6 +-
.../integration-designer/rest/RestDesigner.tsx | 29 +--
.../integration-designer/rest/RestMethodCard.tsx | 4 +-
.../rest/RestMethodSelector.tsx | 2 -
.../integration-designer/route/DslConnections.tsx | 10 +-
.../route/element/DslElement.tsx | 6 +-
.../route/element/DslElementHeader.tsx | 20 +-
.../route/element/DslElementMoveModal.tsx | 2 +-
.../route/element/RouteTemplateElement.tsx | 8 +-
.../route/useRouteDesignerHook.tsx | 29 +--
.../integration-designer/selector/DslCard.tsx | 14 +-
.../integration-designer/selector/DslFastCard.tsx | 8 +-
.../integration-designer/selector/DslSelector.tsx | 22 +-
.../webview/integration-designer/utils/CamelUi.tsx | 60 +++---
.../webview/integration-designer/utils/EventBus.ts | 11 +-
.../integration-designer/utils/Notification.tsx | 2 +-
.../CustomComponentFactory.tsx | 8 +-
.../webview/integration-topology/CustomEdge.tsx | 2 +-
.../webview/integration-topology/CustomNode.tsx | 147 +++++++++-----
.../webview/integration-topology/GetCustomMenu.tsx | 28 ++-
.../webview/integration-topology/TopologyApi.tsx | 165 ++++++++-------
.../webview/integration-topology/TopologyBeans.tsx | 16 +-
.../integration-topology/TopologyElkLayout.ts | 222 +++++++++++++++++++++
.../integration-topology/TopologyLegend.tsx | 11 +-
.../webview/integration-topology/TopologyStore.ts | 168 ----------------
.../webview/integration-topology/TopologyTab.tsx | 84 ++++----
.../integration-topology/TopologyToolbar.tsx | 102 ++++++++++
.../graph/TopologyDagreLayout.ts | 98 ---------
.../integration-topology/graph/TopologyGroup.ts | 3 -
.../integration-topology/graph/TopologyLink.ts | 72 -------
.../integration-topology/graph/TopologyNode.ts | 4 -
.../webview/integration-topology/topology.css | 67 ++++---
.../integration-topology/useTopologyHook.tsx | 43 ++--
71 files changed, 1063 insertions(+), 1117 deletions(-)
diff --git a/karavan-vscode/webview/integration-designer/DesignerStore.ts b/karavan-vscode/webview/integration-designer/DesignerStore.ts
index 3e9187ca..335a4bc5 100644
--- a/karavan-vscode/webview/integration-designer/DesignerStore.ts
+++ b/karavan-vscode/webview/integration-designer/DesignerStore.ts
@@ -15,12 +15,12 @@
* limitations under the License.
*/
-import {CamelElement, Integration, IntegrationFile} from "@/core/model/IntegrationDefinition";
+import {CamelElement, Integration, IntegrationFile} from "@karavan-core/model/IntegrationDefinition";
import {DslPosition, EventBus} from "./utils/EventBus";
import {createWithEqualityFn} from "zustand/traditional";
import {shallow} from "zustand/shallow";
-import {BeanFactoryDefinition} from "@/core/model/CamelDefinition";
-import {DslMetaModel} from "@/integration-designer/utils/DslMetaModel";
+import {BeanFactoryDefinition} from "@karavan-core/model/CamelDefinition";
+import {DslMetaModel} from "@features/project/designer/utils/DslMetaModel";
interface IntegrationState {
integration: Integration;
@@ -197,6 +197,10 @@ export const useConnectionsStore = createWithEqualityFn<ConnectionsState>((set)
}
}), shallow)
+
+export const DesignerViewSwitchOptions = ["routes", "rest", "beans", "kamelet"] as const;
+export type DesignerViewSwitchOption = typeof DesignerViewSwitchOptions[number];
+
type DesignerState = {
designerSwitch: boolean
isDebugging: boolean
@@ -222,7 +226,7 @@ type DesignerState = {
propertyPlaceholders: [string, string][]
parameterPlaceholders: [string, string][], // route template parameters
beans: BeanFactoryDefinition[],
- tab?: "routes" | "rest" | "beans" | "kamelet",
+ tab?: DesignerViewSwitchOption,
stepDoubleClicked: boolean,
}
@@ -274,7 +278,7 @@ type DesignerAction = {
setPropertyPlaceholders: (propertyPlaceholders: [string, string][]) => void;
setParameterPlaceholders: (parameterPlaceholders: [string, string][]) => void;
setBeans: (beans: BeanFactoryDefinition[]) => void;
- setTab: (tab?: "routes" | "rest" | "beans" | "kamelet") => void;
+ setTab: (tab?: DesignerViewSwitchOption) => void;
setDesignerSwitch: (designerSwitch: boolean) => void;
setStepDoubleClicked: (stepDoubleClicked: boolean) => void;
}
@@ -370,7 +374,7 @@ export const useDesignerStore = createWithEqualityFn<DesignerState & DesignerAct
return {beans: [...beans]};
})
},
- setTab: (tab?: "routes" | "rest" | "beans" | "kamelet") => {
+ setTab: (tab?: DesignerViewSwitchOption) => {
set({tab: tab})
},
setDesignerSwitch: (designerSwitch: boolean) => {
diff --git a/karavan-vscode/webview/integration-designer/KaravanDesigner.css b/karavan-vscode/webview/integration-designer/KaravanDesigner.css
index eb7b3e34..19898c41 100644
--- a/karavan-vscode/webview/integration-designer/KaravanDesigner.css
+++ b/karavan-vscode/webview/integration-designer/KaravanDesigner.css
@@ -26,16 +26,8 @@
.karavan .karavan-designer-view-switcher {
position: absolute;
- right: 0;
- top: 0;
- padding-right: 8px;
+ width: 125px;
+ right: 1px;
+ top: 1px;
z-index: 100;
-}
-
-.karavan-designer-view-switcher-dropdown button {
- padding: 0 12px 0 8px;
-}
-
-.karavan-designer-view-switcher-dropdown .pf-v6-c-menu__item-icon {
- transform: scale(0.5);
}
\ No newline at end of file
diff --git a/karavan-vscode/webview/integration-designer/KaravanDesigner.tsx b/karavan-vscode/webview/integration-designer/KaravanDesigner.tsx
index 1e91ff03..eda53963 100644
--- a/karavan-vscode/webview/integration-designer/KaravanDesigner.tsx
+++ b/karavan-vscode/webview/integration-designer/KaravanDesigner.tsx
@@ -17,9 +17,9 @@
import React, {useEffect, useState} from 'react';
import './KaravanDesigner.css';
import {RouteDesigner} from "./route/RouteDesigner";
-import {CamelDefinitionYaml} from "@/core/api/CamelDefinitionYaml";
-import {Integration, IntegrationFile} from "@/core/model/IntegrationDefinition";
-import {CamelUtil} from "@/core/api/CamelUtil";
+import {CamelDefinitionYaml} from "@karavan-core/api/CamelDefinitionYaml";
+import {Integration, IntegrationFile} from "@karavan-core/model/IntegrationDefinition";
+import {CamelUtil} from "@karavan-core/api/CamelUtil";
import {CamelUi} from "./utils/CamelUi";
import {useDesignerStore, useIntegrationStore} from "./DesignerStore";
import {shallow} from "zustand/shallow";
@@ -28,12 +28,12 @@ import {EventBus, IntegrationUpdate} from "./utils/EventBus";
import {RestDesigner} from "./rest/RestDesigner";
import {BeansDesigner} from "./beans/BeansDesigner";
import {KameletDesigner} from "./kamelet/KameletDesigner";
-import {BeanFactoryDefinition, RouteDefinition, RouteTemplateDefinition} from "@/core/model/CamelDefinition";
+import {BeanFactoryDefinition, RouteDefinition, RouteTemplateDefinition} from "@karavan-core/model/CamelDefinition";
import {ErrorBoundaryState, ErrorBoundaryWrapper} from "./ErrorBoundaryWrapper";
-import {Panel, PanelGroup, PanelResizeHandle} from 'react-resizable-panels';
-import {MainPropertiesPanel} from "./property/MainPropertiesPanel";
-import {CamelDefinitionApiExt} from "@/core/api/CamelDefinitionApiExt";
-import {KaravanDesignerViewSwitch} from "@/integration-designer/KaravanDesignerViewSwitch";
+import {Group, Panel, Separator} from 'react-resizable-panels';
+import {CamelDefinitionApiExt} from "@karavan-core/api/CamelDefinitionApiExt";
+import {KaravanDesignerViewSwitch} from "@features/project/designer/KaravanDesignerViewSwitch";
+import {MainPropertiesPanel} from "@features/project/designer/property/MainPropertiesPanel";
interface Props {
onSave: (filename: string, yaml: string, propertyOnly: boolean) => void
@@ -50,7 +50,6 @@ interface Props {
propertyPlaceholders: [string, string][]
beans: BeanFactoryDefinition[]
files: IntegrationFile[]
- mainRightPanel?: React.ReactNode
}
export function KaravanDesigner(props: Props) {
@@ -192,17 +191,17 @@ export function KaravanDesigner(props: Props) {
return (
(tab !== 'kamelet')
- ? <PanelGroup direction="horizontal">
+ ? <Group orientation="horizontal">
<Panel minSize={10} defaultSize={70}>
{getMainPart()}
</Panel>
- <PanelResizeHandle className='resize-handler'/>
+ <Separator className='resize-handler'/>
<Panel minSize={10} defaultSize={30}>
- {props.mainRightPanel || <MainPropertiesPanel/>}
+ <MainPropertiesPanel/>
</Panel>
- </PanelGroup>
- : <PanelGroup direction="horizontal">
+ </Group>
+ : <Group orientation="horizontal">
{getMainPart()}
- </PanelGroup>
+ </Group>
)
}
\ No newline at end of file
diff --git a/karavan-vscode/webview/integration-designer/KaravanDesignerViewSwitch.tsx b/karavan-vscode/webview/integration-designer/KaravanDesignerViewSwitch.tsx
index 623df87e..49a825e2 100644
--- a/karavan-vscode/webview/integration-designer/KaravanDesignerViewSwitch.tsx
+++ b/karavan-vscode/webview/integration-designer/KaravanDesignerViewSwitch.tsx
@@ -1,73 +1,45 @@
import React from 'react';
-import {Dropdown, DropdownItem, DropdownList, MenuToggle, MenuToggleElement} from '@patternfly/react-core';
-import EllipsisVIcon from "@patternfly/react-icons/dist/esm/icons/ellipsis-v-icon";
-import {useDesignerStore, useIntegrationStore} from "@/integration-designer/DesignerStore";
+import {Menu, MenuContent, MenuItem, MenuList} from '@patternfly/react-core';
+import {DesignerViewSwitchOption, DesignerViewSwitchOptions, useDesignerStore, useIntegrationStore} from "@features/project/designer/DesignerStore";
import {shallow} from "zustand/shallow";
-import {getDesignerIcon} from "@/integration-designer/icons/KaravanIcons";
+import {getDesignerIcon} from "@features/project/designer/icons/KaravanIcons";
export function KaravanDesignerViewSwitch() {
- const [setSelectedStep, setTab] = useDesignerStore((s) => [s.setSelectedStep, s.setTab], shallow)
+ const [setSelectedStep, setTab, tab] = useDesignerStore((s) => [s.setSelectedStep, s.setTab, s.tab], shallow)
const [integration] = useIntegrationStore((s) => [s.integration], shallow)
const isKamelet = integration.type === 'kamelet';
- const [isToggleOpen, setIsToggleOpen] = React.useState(false);
-
- const onToggleClick = () => {
- setIsToggleOpen(!isToggleOpen);
- };
-
- const onSelect = (_event: React.MouseEvent<Element, MouseEvent> | undefined, value: string | number | undefined) => {
- // eslint-disable-next-line no-console
- setIsToggleOpen(false);
- };
-
- function selectTab(tab: "routes" | "rest" | "beans" | "kamelet") {
- if (["routes", "rest", "beans", "kamelet"].includes(tab)) {
- setTab(tab);
+ const onSelect = (_event: React.MouseEvent<Element, MouseEvent> | undefined, itemId: number | string | undefined) => {
+ const item = itemId as string; // eslint-disable-next-line no-console
+ if (DesignerViewSwitchOptions.includes(item as DesignerViewSwitchOption)) {
+ setTab(item as DesignerViewSwitchOption);
} else {
- setTab(undefined); // Handle unexpected values
+ setTab(undefined);
}
setSelectedStep(undefined);
+ };
+
+ function getMenuItem(name: string, title: string) {
+ return (
+ <MenuItem isSelected={tab === name} itemId={name} key={name} icon={getDesignerIcon(name)}>
+ {title}
+ </MenuItem>
+ )
}
return (
<div className="karavan-designer-view-switcher">
- <Dropdown
- onSelect={onSelect}
- popperProps={{position: 'right'}}
- toggle={(toggleRef: React.Ref<MenuToggleElement>) => (
- <MenuToggle
- ref={toggleRef}
- onClick={onToggleClick}
- variant="plain"
- isExpanded={isToggleOpen}
- aria-label="Action list single group kebab"
- icon={<EllipsisVIcon/>}
- />
- )}
- isOpen={isToggleOpen}
- onOpenChange={(isOpen: boolean) => setIsToggleOpen(isOpen)}
- >
- <DropdownList className="karavan-designer-view-switcher-dropdown">
- {isKamelet &&
- <DropdownItem value={0} key="kamelet" icon={getDesignerIcon('kamelet')} onClick={(ev) => selectTab('kamelet')}>
- Kamelet Definitions
- </DropdownItem>
- }
- <DropdownItem value={1} key="routes" icon={getDesignerIcon('routes')} onClick={(ev) => selectTab('routes')}>
- Routes
- </DropdownItem>
- {!isKamelet &&
- <DropdownItem value={2} key="rest" icon={getDesignerIcon('rest')} onClick={(ev) => selectTab('rest')}>
- REST
- </DropdownItem>
- }
- <DropdownItem value={3} key="beans" icon={getDesignerIcon('beans')} onClick={(ev) => selectTab('beans')}>
- Beans
- </DropdownItem>
- </DropdownList>
- </Dropdown>
+ <Menu onSelect={onSelect} activeItemId={tab}>
+ <MenuContent>
+ <MenuList>
+ {isKamelet && getMenuItem("kamelet", "Kamelet Definitions")}
+ {getMenuItem("routes", "Routes")}
+ {!isKamelet && getMenuItem("rest", "REST")}
+ {getMenuItem("beans", "Beans")}
+ </MenuList>
+ </MenuContent>
+ </Menu>
</div>
)
}
diff --git a/karavan-vscode/webview/integration-designer/beans/BeanCard.tsx b/karavan-vscode/webview/integration-designer/beans/BeanCard.tsx
index 6266ebed..1400b213 100644
--- a/karavan-vscode/webview/integration-designer/beans/BeanCard.tsx
+++ b/karavan-vscode/webview/integration-designer/beans/BeanCard.tsx
@@ -19,9 +19,9 @@ import {
Button, Flex, FlexItem
} from '@patternfly/react-core';
import './bean.css';
-import {BeanFactoryDefinition} from "@/core/model/CamelDefinition";
+import {BeanFactoryDefinition} from "@karavan-core/model/CamelDefinition";
import {DeleteElementIcon} from "../utils/ElementIcons";
-import {CamelElement} from "@/core/model/IntegrationDefinition";
+import {CamelElement} from "@karavan-core/model/IntegrationDefinition";
interface Props {
bean: BeanFactoryDefinition
diff --git a/karavan-vscode/webview/integration-designer/beans/BeansDesigner.tsx b/karavan-vscode/webview/integration-designer/beans/BeansDesigner.tsx
index 92a96543..5cd1a6bf 100644
--- a/karavan-vscode/webview/integration-designer/beans/BeansDesigner.tsx
+++ b/karavan-vscode/webview/integration-designer/beans/BeansDesigner.tsx
@@ -15,17 +15,17 @@
* limitations under the License.
*/
import React, {useEffect} from 'react';
-import {Button, Flex, FlexItem, Gallery, GalleryItem, Modal, ModalBody, ModalFooter, ModalHeader, PageSection} from '@patternfly/react-core';
+import {Button, Flex, FlexItem, Gallery, GalleryItem, PageSection} from '@patternfly/react-core';
import './bean.css';
-import {BeanFactoryDefinition} from "@/core/model/CamelDefinition";
+import {BeanFactoryDefinition} from "@karavan-core/model/CamelDefinition";
import {CamelUi} from "../utils/CamelUi";
import PlusIcon from "@patternfly/react-icons/dist/esm/icons/plus-icon";
-import {CamelDefinitionApiExt} from "@/core/api/CamelDefinitionApiExt";
-import {CamelUtil} from "@/core/api/CamelUtil";
+import {CamelDefinitionApiExt} from "@karavan-core/api/CamelDefinitionApiExt";
+import {CamelUtil} from "@karavan-core/api/CamelUtil";
import {BeanCard} from "./BeanCard";
import {useDesignerStore, useIntegrationStore} from "../DesignerStore";
import {shallow} from "zustand/shallow";
-import {ModalConfirmation} from "@/components/ModalConfirmation";
+import {ModalConfirmation} from "@shared/ui/ModalConfirmation";
export function BeansDesigner() {
diff --git a/karavan-vscode/webview/integration-designer/editor/CodeEditor.tsx b/karavan-vscode/webview/integration-designer/editor/CodeEditor.tsx
deleted file mode 100644
index 11da14be..00000000
--- a/karavan-vscode/webview/integration-designer/editor/CodeEditor.tsx
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-import React, {useEffect, useState} from 'react';
-// import '@/monaco-setup';
-import Editor from "@monaco-editor/react";
-import {shallow} from "zustand/shallow";
-import {useDesignerStore, useIntegrationStore} from "../DesignerStore";
-import {CamelDefinitionYaml} from "@/core/api/CamelDefinitionYaml";
-import {CamelUtil} from "@/core/api/CamelUtil";
-
-export function CodeEditor () {
-
- const [integration, setIntegration] = useIntegrationStore((s) => [s.integration, s.setIntegration], shallow);
- const [setNotification, badge] = useDesignerStore((s) => [s.setNotification, s.notificationBadge], shallow)
- const [code, setCode] = useState<string>('');
-
- useEffect(() => {
- try {
- const clone = CamelUtil.cloneIntegration(integration);
- const c = CamelDefinitionYaml.integrationToYaml(clone);
- setCode(c);
- } catch (e: any) {
- const message: string = e?.message ? e.message : e.reason;
- setNotification(true, ['Error in YAML, Integration can not be saved!', message]);
- }
- return () => {
- setNotification(false, ['', '']);
- }
- }, []);
-
- function onChange(value: string | undefined) {
- if (value) {
- try {
- const i = CamelDefinitionYaml.yamlToIntegration(integration.metadata.name, value);
- setIntegration(i, false);
- setNotification(false, ['', '']);
- } catch (e: any) {
- const message: string = e?.message ? e.message : e.reason;
- setNotification(true, ['Error in YAML, Integration can not be saved!' ,message]);
- }
- }
- }
-
- return (
- <Editor
- height="100vh"
- defaultLanguage={'yaml'}
- theme={'light'}
- value={code}
- className={'code-editor'}
- defaultValue={code}
- onChange={(value, ev) => onChange(value)}
- />
- )
-}
diff --git a/karavan-vscode/webview/integration-designer/icons/ComponentIcons.tsx b/karavan-vscode/webview/integration-designer/icons/ComponentIcons.tsx
index 92998a43..284ab55a 100644
--- a/karavan-vscode/webview/integration-designer/icons/ComponentIcons.tsx
+++ b/karavan-vscode/webview/integration-designer/icons/ComponentIcons.tsx
@@ -582,12 +582,12 @@ export function CassandraIcon() {
);
}
-export function ActivemqIcon() {
+export function ActivemqIcon(width: number = 32, height: number = 32) {
return (
<svg
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 30.803 44.324"
- className="icon" width="32px" height="32px">
+ className="icon" width={width} height={width}>
<defs>
<filter
id="a"
@@ -868,13 +868,13 @@ export function ActivemqIcon() {
);
}
-export function KafkaIcon() {
+export function KafkaIcon(width: number = 32, height: number = 32) {
return (
<svg
xmlns="http://www.w3.org/2000/svg"
preserveAspectRatio="xMidYMid"
viewBox="-78.5 0 413 413"
- className="icon" width="32px" height="32px">
+ className="icon" width={width} height={width}>
<path
fill="#1A1919"
d="M87.932 36.714c-4.55-4.571-10.896-7.394-17.951-7.394-7.029 0-13.326 2.823-17.822 7.394h-.13c-4.535 4.55-7.358 10.9-7.358 17.93 0 7.055 2.823 13.352 7.359 17.875l.129.102c4.496 4.55 10.793 7.346 17.822 7.346 7.055 0 13.402-2.797 17.951-7.346L88 72.52c4.558-4.523 7.354-10.82 7.354-17.876 0-7.029-2.796-13.38-7.354-17.929h-.067Zm-17.951 346.64a25.504 25.504 0 0 0 17.951-7.368l.067-.134c4.558-4.487 7.354-10.838 7.354-17.817 0-7.056-2.796-13.38-7.354-17.952h-.067c-4.55-4.625 [...]
diff --git a/karavan-vscode/webview/integration-designer/icons/KaravanIcons.tsx b/karavan-vscode/webview/integration-designer/icons/KaravanIcons.tsx
index b3629ce9..71f4a62b 100644
--- a/karavan-vscode/webview/integration-designer/icons/KaravanIcons.tsx
+++ b/karavan-vscode/webview/integration-designer/icons/KaravanIcons.tsx
@@ -260,10 +260,10 @@ export function CamelIcon(props?: (React.SVGProps<SVGSVGElement>) | undefined) {
);
}
-export function getDesignerIcon(icon: string): ReactElement {
+export function getDesignerIcon(icon: string, className?: string): ReactElement {
if (icon === 'kamelet') return (
<svg
- className="top-icon" id="icon"
+ className={`top-icon ${className}`} id="icon"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 32 32"
width="32px" height="32px"
@@ -282,7 +282,7 @@ export function getDesignerIcon(icon: string): ReactElement {
)
if (icon === 'code') return (
<svg
-
+ className={`top-icon ${className}`}
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
@@ -296,7 +296,7 @@ export function getDesignerIcon(icon: string): ReactElement {
</svg>
)
if (icon === 'routes') return (
- <svg className="top-icon" width="32px" height="32px" viewBox="0 0 32 32" id="icon">
+ <svg className={`top-icon ${className}`} width="32px" height="32px" viewBox="0 0 32 32" id="icon">
<path
d="M29,10H24v2h5v6H22v2h3v2.142a4,4,0,1,0,2,0V20h2a2.0027,2.0027,0,0,0,2-2V12A2.0023,2.0023,0,0,0,29,10ZM28,26a2,2,0,1,1-2-2A2.0027,2.0027,0,0,1,28,26Z"/>
<path
@@ -307,7 +307,7 @@ export function getDesignerIcon(icon: string): ReactElement {
height="32"/>
</svg>)
if (icon === 'route') return (
- <svg className="top-icon" width="32px" height="32px" viewBox="0 0 32 32" id="icon">
+ <svg className={`top-icon ${className}`} width="32px" height="32px" viewBox="0 0 32 32" id="icon">
<title>{"category"}</title>
<path
d="M27 22.141V18a2 2 0 0 0-2-2h-8v-4h2a2.002 2.002 0 0 0 2-2V4a2.002 2.002 0 0 0-2-2h-6a2.002 2.002 0 0 0-2 2v6a2.002 2.002 0 0 0 2 2h2v4H7a2 2 0 0 0-2 2v4.142a4 4 0 1 0 2 0V18h8v4.142a4 4 0 1 0 2 0V18h8v4.141a4 4 0 1 0 2 0ZM13 4h6l.001 6H13ZM8 26a2 2 0 1 1-2-2 2.002 2.002 0 0 1 2 2Zm10 0a2 2 0 1 1-2-2 2.003 2.003 0 0 1 2 2Zm8 2a2 2 0 1 1 2-2 2.002 2.002 0 0 1-2 2Z"/>
@@ -321,7 +321,7 @@ export function getDesignerIcon(icon: string): ReactElement {
</svg>
)
if (icon === 'rest') return (
- <svg className="top-icon" viewBox="0 0 32 32" width="32px" height="32px">
+ <svg className={`top-icon ${className}`} viewBox="0 0 32 32" width="32px" height="32px">
<g className="layer">
<title>Layer 1</title>
<path
@@ -334,7 +334,7 @@ export function getDesignerIcon(icon: string): ReactElement {
</svg>
)
if (icon === 'beans') return (
- <svg className="top-icon" width="32px" height="32px" viewBox="0 0 32 32" id="icon">
+ <svg className={`top-icon ${className}`} width="32px" height="32px" viewBox="0 0 32 32" id="icon">
<title>data--1</title>
<rect x="15" y="6" width="13" height="2"/>
<rect x="15" y="24" width="13" height="2"/>
@@ -349,7 +349,7 @@ export function getDesignerIcon(icon: string): ReactElement {
</svg>
)
if (icon === 'dependencies') return (
- <svg className="top-icon" width="32px" height="32px" viewBox="0 0 32 32" id="icon">
+ <svg className={`top-icon ${className}`} width="32px" height="32px" viewBox="0 0 32 32" id="icon">
<title>application</title>
<path d="M16,18H6a2,2,0,0,1-2-2V6A2,2,0,0,1,6,4H16a2,2,0,0,1,2,2V16A2,2,0,0,1,16,18ZM6,6V16H16V6Z"
transform="translate(0 0)"/>
@@ -365,7 +365,7 @@ export function getDesignerIcon(icon: string): ReactElement {
</svg>
)
if (icon === 'error') return (
- <svg className="top-icon" width="36px" height="36px" viewBox="0 0 36 36" version="1.1"
+ <svg className={`top-icon ${className}`} width="36px" height="36px" viewBox="0 0 36 36" version="1.1"
preserveAspectRatio="xMidYMid meet">
<circle className="clr-i-outline clr-i-outline-path-1" cx="18" cy="26.06" r="1.33"/>
<path className="clr-i-outline clr-i-outline-path-2"
@@ -375,7 +375,7 @@ export function getDesignerIcon(icon: string): ReactElement {
<rect x="0" y="0" width="36" height="36" fillOpacity="0"/>
</svg>)
if (icon === 'exception') return (
- <svg className="top-icon" width="32px" height="32px" viewBox="0 0 32 32" id="icon">
+ <svg className={`top-icon ${className}`} width="32px" height="32px" viewBox="0 0 32 32" id="icon">
<title>misuse--alt</title>
<polygon
points="21.41 23 16 17.591 10.59 23 9 21.41 14.409 16 9 10.591 10.591 9 16 14.409 21.409 9 23 10.591 17.591 16 23 21.41 21.41 23"/>
@@ -385,7 +385,7 @@ export function getDesignerIcon(icon: string): ReactElement {
height="32"/>
</svg>)
if (icon === 'routeConfiguration') return (
- <svg className="top-icon" width="32" height="32" viewBox="0 0 32 32">
+ <svg className={`top-icon ${className}`} width="32" height="32" viewBox="0 0 32 32">
<path
d="M28.83 21.17L25 17.37l.67-.67a1 1 0 000-1.41l-6-6a1 1 0 00-1.41 0l-.79.79-6.76-6.79a1 1 0 00-1.41 0l-4 4-.12.15-4 6a1 1 0 00.12 1.26l3 3a1 1 0 001.42 0L10 13.41l2.09 2.09-4.8 4.79a1 1 0 000 1.41l2 2a1 1 0 00.71.3 1 1 0 00.52-.15l4.33-2.6 2.44 2.45a1 1 0 001.41 0l.67-.7 3.79 3.83a4 4 0 005.66-5.66zM10 10.58l-5 5-1.71-1.71 3.49-5.24L10 5.41l6.09 6.09-2.59 2.58zm8 11l-2.84-2.84-5 3-.74-.74L19 11.41 23.59 16zm9.42 3.83a2 2 0 01-2.83 0l-3.8-3.79 2.83-2.83 3.8 3.79a2 2 0 010 [...]
<path
@@ -395,7 +395,7 @@ export function getDesignerIcon(icon: string): ReactElement {
></path>
</svg>)
if (icon === 'yaml') return (
- <svg className="top-icon" x="0px" y="0px" width="32px" height="32px"
+ <svg className={`top-icon ${className}`} x="0px" y="0px" width="32px" height="32px"
viewBox="0 0 32 32">
<style type="text/css">{".st0{fill:none;}"}</style>
<title>document</title>
@@ -406,7 +406,7 @@ export function getDesignerIcon(icon: string): ReactElement {
<rect className="st0" width="32" height="32"/>
</svg>)
if (icon === 'code') return (
- <svg className="top-icon" width="32px" height="32px" viewBox="0 0 32 32" id="icon">
+ <svg className={`top-icon ${className}`} width="32px" height="32px" viewBox="0 0 32 32" id="icon">
<title>code</title>
<polygon points="31 16 24 23 22.59 21.59 28.17 16 22.59 10.41 24 9 31 16"/>
<polygon points="1 16 8 9 9.41 10.41 3.83 16 9.41 21.59 8 23 1 16"/>
@@ -535,30 +535,93 @@ export function JKubeIcon(className?: string) {
)
}
-export function AsyncApiIcon({ className = '' }) {
+export function AsyncApiIcon({className = ''}) {
return (
- <svg
- width='40'
- height='40'
- className={className || 'inline-block'}
- x='0'
- y='0'
- version='1.1'
- viewBox='0 0 277 276'
- xmlSpace='preserve'
- >
- <image
- width='277'
- height='276'
- x='0'
- y='0'
- href='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAARUAAAEUCAYAAAAFsqJHAAAABGdBTUEAALGPC/xhBQAAACBjSFJN AAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAAAA CXBIWXMAABYlAAAWJQFJUiTwAAAAB3RJTUUH5gcGCwkBMRK1zQAAOrNJREFUeNrtnXmcXGWZ73/P qeosvSfpTqdJlCwsIyCkAVESxQSJCIIEVJQRJHFFr3fEC8zn3rkzkujMHddrUGfGuQQIjKMsOoIb i0qCShAREiBhCQk0CaT39Frdna6u89w/3vVUV0Iv1X2qu5/vJ/lU16lTVe+pqvM7z/Y+L2GKwsyL ASwHcCyAJQAqACzW/wGgUv8XhHzTof/X6/v1AF4FsFNv30lEHXEPcryguAeQD5i [...]
- ></image>
+ <svg className={"h-10 mt-0.5 w-auto " + className} width="165" height="36" viewBox="0 0 165 36" fill="none" xmlns="http://www.w3.org/2000/svg">
+ <defs>
+ <linearGradient id="gradient1" x1="33.0317" y1="3.3661" x2="4.57364" y2="32.1761" gradientUnits="userSpaceOnUse">
+ <stop stop-color="#2DCCFD"></stop>
+ <stop offset="100%" stop-color="#AD20E2"></stop>
+ </linearGradient>
+ <linearGradient id="gradient2" x1="33.0317" y1="32.6313" x2="4.571" y2="3.82126" gradientUnits="userSpaceOnUse">
+ <stop stop-color="#A829E2"></stop>
+ <stop offset="5%" stop-color="#A829E2" stop-opacity="84%"></stop>
+ <stop offset="11%" stop-color="#A829E2" stop-opacity="67%"></stop>
+ <stop offset="18%" stop-color="#A829E2" stop-opacity="51%"></stop>
+ <stop offset="25%" stop-color="#A829E2" stop-opacity="38%"></stop>
+ <stop offset="33%" stop-color="#A829E2" stop-opacity="28%"></stop>
+ <stop offset="43%" stop-color="#A829E2" stop-opacity="20%"></stop>
+ <stop offset="54%" stop-color="#A829E2" stop-opacity="14%"></stop>
+ <stop offset="68%" stop-color="#A829E2" stop-opacity="11%"></stop>
+ <stop offset="100%" stop-color="#A829E2" stop-opacity="10%"></stop>
+ </linearGradient>
+ <linearGradient id="gradient3" x1="3.41005" y1="32.6313" x2="31.8682" y2="3.82129" gradientUnits="userSpaceOnUse">
+ <stop stop-color="#E50E99"></stop>
+ <stop offset="100%" stop-color="#A829E2" stop-opacity="10%"></stop>
+ </linearGradient>
+ <linearGradient id="gradient4" x1="33.0317" y1="3.36871" x2="4.57097" y2="32.1761" gradientUnits="userSpaceOnUse">
+ <stop stop-color="#21D4FD"></stop>
+ <stop offset="3%" stop-color="#27CDFC" stop-opacity="96%"></stop>
+ <stop offset="23%" stop-color="#4E9CF4" stop-opacity="70%"></stop>
+ <stop offset="43%" stop-color="#6E73EE" stop-opacity="49%"></stop>
+ <stop offset="61%" stop-color="#8753E9" stop-opacity="32%"></stop>
+ <stop offset="77%" stop-color="#993CE5" stop-opacity="20%"></stop>
+ <stop offset="90%" stop-color="#A42EE3" stop-opacity="13%"></stop>
+ <stop offset="100%" stop-color="#A829E2" stop-opacity="10%"></stop>
+ </linearGradient>
+ </defs>
+ <path
+ d="M63.9815 27.6971H61.4524L59.3704 22.3187H50.4894L48.4074 27.6971H45.9074L53.5529 8.30026H56.3783L63.9815 27.6971ZM51.3386 20.1182H58.5079L54.9074 10.5635L51.3386 20.1182Z"
+ fill="#0C0928"></path>
+ <path
+ d="M71.7037 27.9925C70.3161 28.0052 68.9453 27.6926 67.7037 27.0804C66.5264 26.5139 65.5472 25.6129 64.8915 24.4931L66.9154 23.0531C67.3281 23.9309 67.9957 24.6678 68.8333 25.17C69.7573 25.7002 70.8129 25.9645 71.881 25.9331C72.9392 25.9331 73.7566 25.7345 74.3519 25.332C74.5772 25.1976 74.771 25.0172 74.9202 24.8029C75.0695 24.5887 75.1707 24.3455 75.2173 24.0895C75.2639 23.8335 75.2547 23.5707 75.1903 23.3185C75.1259 23.0663 75.0078 22.8306 74.8439 22.6271C74.5741 22.27 [...]
+ fill="#0C0928"></path>
+ <path
+ d="M90.3703 13.0018H92.9285L85.9391 30.1668C85.642 30.9811 85.2258 31.748 84.7037 32.4431C84.3138 32.9574 83.8037 33.3707 83.2169 33.6479C82.6214 33.9034 81.9771 34.0291 81.328 34.0164C80.6995 34.0219 80.0743 33.9275 79.4762 33.7367C78.939 33.565 78.4321 33.312 77.9735 32.9867L78.6269 30.9299C78.9951 31.2671 79.424 31.5331 79.8915 31.7139C80.3125 31.8803 80.7609 31.9689 81.2143 31.9753C81.7379 31.9722 82.2474 31.8077 82.6719 31.5049C83.127 31.1913 83.5432 30.5545 83.9206 [...]
+ fill="#0C0928"></path>
+ <path
+ d="M94.9735 27.6971V13.0018H97.0502L97.2566 16.2947L96.8703 15.9707C97.1438 15.2501 97.5819 14.6017 98.1507 14.0759C98.6824 13.5968 99.3148 13.2398 100.003 13.0306C100.711 12.8158 101.449 12.7075 102.19 12.7091C103.193 12.6965 104.187 12.9017 105.101 13.3102C105.966 13.7045 106.695 14.3405 107.198 15.1396C107.727 15.9637 107.992 17.0091 107.992 18.2757V27.6841H105.611V19.1146C105.611 17.4891 105.258 16.3566 104.553 15.7172C103.842 15.079 102.91 14.7371 101.95 14.7633C101. [...]
+ fill="#0C0928"></path>
+ <path
+ d="M117.251 12.7091C118.181 12.6912 119.105 12.851 119.974 13.1795C120.741 13.4831 121.436 13.9436 122.011 14.5307C122.599 15.1392 123.072 15.8474 123.407 16.6214L121.148 17.6668C120.895 16.8219 120.393 16.0705 119.706 15.5081C118.978 14.983 118.091 14.7185 117.19 14.758C116.291 14.7331 115.404 14.9625 114.632 15.4192C113.903 15.8776 113.332 16.5437 112.995 17.3297C112.243 19.2646 112.243 21.4057 112.995 23.3405C113.329 24.1319 113.9 24.8032 114.632 25.264C115.404 25.7207 [...]
+ fill="#0C0928"></path>
+ <path
+ d="M143.659 27.6971H140.296L138.423 22.614H130.183L128.307 27.6971H125.034L132.442 8.30026H136.251L143.659 27.6971ZM131.074 20.0555H137.526L134.312 11.0052L131.074 20.0555Z"
+ fill="#0C0928"></path>
+ <path
+ d="M152.992 8.30024C154.248 8.26933 155.494 8.52043 156.638 9.03462C157.616 9.49485 158.441 10.2199 159.019 11.1254C159.584 12.1193 159.881 13.2402 159.881 14.3804C159.881 15.5205 159.584 16.6415 159.019 17.6354C158.443 18.5428 157.617 19.2684 156.638 19.7262C155.495 20.2425 154.248 20.4945 152.992 20.4631H148.619V27.6919H145.444V8.30024H152.992ZM152.487 17.7635C153.898 17.7635 154.934 17.4743 155.595 16.8958C156.257 16.3174 156.589 15.4802 156.593 14.3843C156.593 13.2692 [...]
+ fill="#0C0928"></path>
+ <path d="M165 8.30026V27.6971H161.825V8.30026H165Z" fill="#0C0928"></path>
+ <path
+ d="M27.8228 0H8.61905C3.85888 0 0 3.8121 0 8.51456V27.4854C0 32.1879 3.85888 36 8.61905 36H27.8228C32.5829 36 36.4418 32.1879 36.4418 27.4854V8.51456C36.4418 3.8121 32.5829 0 27.8228 0Z"
+ fill="url(#gradient1)"></path>
+ <path
+ d="M27.8228 0H8.61905C3.85888 0 0 3.8121 0 8.51456V27.4854C0 32.1879 3.85888 36 8.61905 36H27.8228C32.5829 36 36.4418 32.1879 36.4418 27.4854V8.51456C36.4418 3.8121 32.5829 0 27.8228 0Z"
+ fill="url(#gradient2)"></path>
+ <path
+ d="M27.8228 0H8.61905C3.85888 0 0 3.8121 0 8.51456V27.4854C0 32.1879 3.85888 36 8.61905 36H27.8228C32.5829 36 36.4418 32.1879 36.4418 27.4854V8.51456C36.4418 3.8121 32.5829 0 27.8228 0Z"
+ fill="url(#gradient3)"></path>
+ <path
+ d="M27.8228 0H8.61905C3.85888 0 0 3.8121 0 8.51456V27.4854C0 32.1879 3.85888 36 8.61905 36H27.8228C32.5829 36 36.4418 32.1879 36.4418 27.4854V8.51456C36.4418 3.8121 32.5829 0 27.8228 0Z"
+ fill="url(#gradient4)"></path>
+ <path d="M11.7645 14.1988L10.6799 15.6754L19.1508 21.749L19.209 21.7908L20.2936 20.3142L11.8227 14.2406L11.7645 14.1988Z" fill="white"></path>
+ <path d="M17.2989 14.2406L17.2407 14.1988L16.1561 15.6754L24.627 21.749L24.6852 21.7908L25.7698 20.3142L17.2989 14.2406Z" fill="white"></path>
+ <path
+ d="M18.2275 6.64075C13.6349 6.64075 9.89948 9.46064 9.89948 12.9261V12.9966H11.7513V12.9261C11.7513 10.4668 14.6614 8.46492 18.2328 8.46492C21.8042 8.46492 24.7143 10.4668 24.7143 12.9261V12.9966H26.5661V12.9261C26.5556 9.46064 22.8201 6.64075 18.2275 6.64075Z"
+ fill="white"></path>
+ <path
+ d="M24.6958 23.0714C24.6958 25.5306 21.7857 27.5325 18.2116 27.5325C14.6376 27.5325 11.7301 25.5306 11.7301 23.0714V23.0008H9.8783V23.0714C9.8783 26.5368 13.6137 29.3567 18.2063 29.3567C22.7989 29.3567 26.5344 26.5368 26.5344 23.0714V23.0008H24.6825L24.6958 23.0714Z"
+ fill="white"></path>
</svg>
);
}
-export function OpenApiIcon(className?: string, height?: number | string | undefined, width?: number | string | undefined) {
+type OpenApiIconProps = React.SVGProps<SVGSVGElement> & {
+ className?: string, height?: number | string | undefined, width?: number | string | undefined, fill?: string
+};
+
+export function OpenApiIcon(props: OpenApiIconProps) {
+ const { className, height, width, fill } = props;
return (
<svg
xmlns="http://www.w3.org/2000/svg"
@@ -569,95 +632,86 @@ export function OpenApiIcon(className?: string, height?: number | string | undef
className={className}
>
<path
- fill="#93d500"
+ fill={fill ?? "#93d500"}
d="M74.909 189.069H45.352c.005.144.009.289.017.433.012.278.032.555.049.833.008.119.013.238.022.356.023.322.051.642.08.962l.02.215a46.218 46.218 0 0 0 .126 1.168 43.62 43.62 0 0 0 .154 1.158c.339 2.356.848 4.69 1.527 6.984.003.01.007.019.009.029a43.315 43.315 0 0 0 .373 1.203c.105.323.215.645.325.968.029.081.056.163.086.244.099.279.2.558.304.837l.143.378.27.691c.069.173.141.346.213.519.074.18.15.359.226.54.094.22.192.439.289.658l.175.391c.12.263.244.526.368.787.041.084.08. [...]
style={{
- fill: "#ec7a08",
fillOpacity: 1,
}}
transform="translate(-45.308 -124.66)"
/>
<path
- fill="#4d5a31"
+ fill={fill ?? "#4d5a31"}
d="m82.173 202.638-.071.071-20.819 20.82c.107.1.213.201.323.298.194.176.392.351.589.523.102.091.202.181.304.269.236.204.474.403.711.602l.192.16a47.32 47.32 0 0 0 .917.737 62.01 62.01 0 0 0 .928.711 50.044 50.044 0 0 0 3.895 2.633l.139.085c.255.153.51.304.767.453l.471.268c.148.086.296.168.446.251a63.783 63.783 0 0 0 .927.499c.757.396 1.527.764 2.303 1.118l.739-1.794 10.471-25.429.039-.094a20.195 20.195 0 0 1-3.271-2.181z"
style={{
- fill: "#06c",
fillOpacity: 1,
}}
transform="translate(-45.308 -124.66)"
/>
<path
- fill="#6ba43a"
+ fill={fill ?? "#6ba43a"}
d="M80.005 200.564a20.653 20.653 0 0 1-1.767-2.28 21.467 21.467 0 0 1-.54-.843l-25.275 15.226c.388.645.793 1.273 1.206 1.894l.041.065.015.023c.014.02.026.042.04.063l.004.006.101.148.006.009.003.004c.439.649.89 1.288 1.355 1.91l.031.04.03.039a45.939 45.939 0 0 0 1.351 1.715l.158.191c.2.239.4.477.604.713.087.101.178.202.266.302.174.198.346.395.524.59.097.107.198.215.297.322l.135.146c.13.14.259.28.39.419.052.055.107.109.16.164.23.24.462.48.699.716l20.85-20.85a17.977 17.977 0 [...]
style={{
- fill: "#ac5608",
fillOpacity: 1,
}}
transform="translate(-45.308 -124.66)"
/>
<path
- fill="#4d5a31"
+ fill={fill ?? "#4d5a31"}
d="M107.642 202.627c-.229.185-.461.366-.697.54l.052.087 15.202 25.235c.704-.46 1.4-.934 2.08-1.432a50.463 50.463 0 0 0 4.267-3.527l-20.821-20.821z"
style={{
- fill: "#06c",
fillOpacity: 1,
}}
transform="translate(-45.308 -124.66)"
/>
<path
- fill="#93d500"
+ fill={fill ?? "#93d500"}
d="m74.961 105.035-.006.003.015-.008a.024.024 0 0 1-.009.005zM75.004 105.012c.066-.039.133-.072.198-.112-.065.04-.132.075-.198.112z"
/>
<path
- fill="#93d500"
+ fill={fill ?? "#93d500"}
d="m119.99 228.696-.516-.856-14.19-23.555c-.287.173-.581.329-.874.487a20.15 20.15 0 0 1-9.528 2.404c-1.936 0-3.871-.28-5.742-.838-.319-.095-.63-.22-.945-.332-.315-.111-.634-.207-.944-.335l-10.464 25.412-.41.996-.351.853-.002.004.082.031.086.033h.001l.002.001.02.008c.247.101.496.188.744.285.311.121.622.244.934.358.159.058.317.126.476.182h.001a49.947 49.947 0 0 0 10.119 2.422c.135.016.269.035.404.054l.424.046c.266.03.531.061.798.087l.198.017c.327.031.654.059.979.082.111.008 [...]
style={{
- fill: "#ec7a08",
fillOpacity: 1,
}}
transform="translate(-45.308 -124.66)"
/>
<path
- fill="#4d5a31"
+ fill={fill ?? "#4d5a31"}
d="M59.838 151.994c-.237.237-.461.482-.692.722-.231.24-.466.479-.692.723a49.743 49.743 0 0 0-4.212 5.22c-.061.085-.122.174-.182.261a49.018 49.018 0 0 0-1.008 1.522 49.48 49.48 0 0 0-7.7 24.627c-.013.333-.02.667-.027 1-.007.333-.017.667-.017 1h29.488c0-.334.031-.666.048-1 .017-.334.022-.668.055-1a20.013 20.013 0 0 1 4.447-10.739c.21-.256.447-.496.672-.743.224-.247.432-.504.671-.742zM120.681 144.675l-.122-.073c-.259-.159-.521-.312-.783-.465-.152-.088-.304-.173-.457-.26-.154 [...]
style={{
- fill: "#06c",
fillOpacity: 1,
}}
transform="translate(-45.308 -124.66)"
/>
<path
- fill="#6ba43a"
+ fill={fill ?? "#6ba43a"}
d="M93.914 137.485c-.333.007-.667.008-1 .021a49.856 49.856 0 0 0-6.233.643l-.136.023c-.29.05-.577.103-.865.157-.163.031-.327.061-.49.094-.17.034-.339.069-.508.106-.28.058-.56.119-.84.184l-.153.034a49.891 49.891 0 0 0-11.898 4.438h-.001c-.245.13-.484.277-.728.411-.292.16-.582.325-.872.491-.215.124-.434.238-.648.366l-.007.004h-.001l-.045.026c-.056.034-.114.062-.17.096l.003.005.516.857 14.705 24.412c.287-.173.581-.33.874-.487.295-.159.594-.308.895-.451a20.051 20.051 0 0 1 7. [...]
style={{
- fill: "#ac5608",
fillOpacity: 1,
}}
transform="translate(-45.308 -124.66)"
/>
<path
- fill="#4d5a31"
+ fill={fill ?? "#4d5a31"}
d="M144.458 184.631a53.77 53.77 0 0 0-.048-.795c-.008-.132-.015-.263-.026-.397a41.966 41.966 0 0 0-.077-.934c-.006-.081-.014-.161-.021-.242a60.396 60.396 0 0 0-.111-1.043l-.01-.084-.005-.04c-.046-.375-.096-.75-.149-1.124-.001-.011-.002-.025-.005-.035a49.558 49.558 0 0 0-1.524-6.972l-.014-.044c-.107-.356-.216-.71-.328-1.063-.015-.046-.031-.093-.045-.14a66.772 66.772 0 0 0-.412-1.212 50.701 50.701 0 0 0-.714-1.892c-.072-.18-.144-.357-.218-.534-.072-.176-.146-.35-.22-.526a80 [...]
style={{
- fill: "#06c",
fillOpacity: 1,
}}
transform="translate(-45.308 -124.66)"
/>
<path
- fill="#6ba43a"
+ fill={fill ?? "#6ba43a"}
d="M115.03 187.069c0 .334-.031.666-.048 1-.016.334-.022.668-.055 1a20.022 20.022 0 0 1-4.446 10.74c-.21.256-.447.496-.672.743-.224.247-.432.504-.671.742l20.851 20.85c.237-.237.46-.482.691-.723.231-.241.466-.479.691-.723a49.783 49.783 0 0 0 4.224-5.236l.148-.214c.155-.223.306-.448.458-.673.133-.201.266-.402.395-.605.064-.097.128-.198.19-.295a49.46 49.46 0 0 0 7.685-24.607c.013-.333.02-.667.027-1 .007-.333.017-.666.017-1H115.03Z"
style={{
- fill: "#ac5608",
fillOpacity: 1,
}}
transform="translate(-45.308 -124.66)"
/>
<path
- fill="#424143"
+ fill={fill ?? "#424143"}
d="M153.276 128.706c-5.395-5.395-14.142-5.395-19.536 0-4.304 4.303-5.164 10.736-2.601 15.902L101.048 174.7c-5.166-2.562-11.599-1.703-15.903 2.6-5.395 5.395-5.394 14.142 0 19.537 5.396 5.395 14.143 5.393 19.538-.001 4.303-4.303 5.162-10.736 2.599-15.903l30.091-30.091c5.167 2.562 11.599 1.703 15.902-2.601 5.395-5.392 5.395-14.14.001-19.535z"
style={{
- fill: "#424143",
+ fill: fill ?? "#424143",
fillOpacity: 1,
}}
transform="translate(-45.308 -124.66)"
diff --git a/karavan-vscode/webview/integration-designer/kamelet/KameletAnnotationsPanel.tsx b/karavan-vscode/webview/integration-designer/kamelet/KameletAnnotationsPanel.tsx
index c7fb2374..f0d4a062 100644
--- a/karavan-vscode/webview/integration-designer/kamelet/KameletAnnotationsPanel.tsx
+++ b/karavan-vscode/webview/integration-designer/kamelet/KameletAnnotationsPanel.tsx
@@ -22,7 +22,7 @@ import {
CardTitle,
Form, Grid,
} from '@patternfly/react-core';
-import '../karavan.css';
+import '@features/project/designer/karavan.css';
import './kamelet.css';
import {useIntegrationStore} from "../DesignerStore";
import {shallow} from "zustand/shallow";
diff --git a/karavan-vscode/webview/integration-designer/kamelet/KameletDefinitionPropertyCard.tsx b/karavan-vscode/webview/integration-designer/kamelet/KameletDefinitionPropertyCard.tsx
index da4d2843..148b98c3 100644
--- a/karavan-vscode/webview/integration-designer/kamelet/KameletDefinitionPropertyCard.tsx
+++ b/karavan-vscode/webview/integration-designer/kamelet/KameletDefinitionPropertyCard.tsx
@@ -19,11 +19,11 @@ import {Button, Card, CardBody, CardTitle, Flex, FlexItem, FormGroup, FormSelect
import './kamelet.css';
import {useIntegrationStore} from "../DesignerStore";
import {shallow} from "zustand/shallow";
-import {DefinitionProperty} from "@/core/model/IntegrationDefinition";
-import {CamelUtil} from "@/core/api/CamelUtil";
+import {DefinitionProperty} from "@karavan-core/model/IntegrationDefinition";
+import {CamelUtil} from "@karavan-core/api/CamelUtil";
import {PlusCircleIcon} from '@patternfly/react-icons';
import {KameletInput} from './KameletInput';
-import {ModalConfirmation} from "@/components/ModalConfirmation";
+import {ModalConfirmation} from "@shared/ui/ModalConfirmation";
interface Props {
index: number
diff --git a/karavan-vscode/webview/integration-designer/kamelet/KameletDefinitionsPanel.tsx b/karavan-vscode/webview/integration-designer/kamelet/KameletDefinitionsPanel.tsx
index a59d756b..f7e0affa 100644
--- a/karavan-vscode/webview/integration-designer/kamelet/KameletDefinitionsPanel.tsx
+++ b/karavan-vscode/webview/integration-designer/kamelet/KameletDefinitionsPanel.tsx
@@ -16,14 +16,14 @@
*/
import React from 'react';
import {Button, Card, CardBody, CardTitle, Flex, FlexItem, Form, Grid,} from '@patternfly/react-core';
-import '../karavan.css';
+import '@features/project/designer/karavan.css';
import './kamelet.css';
import {useIntegrationStore} from "../DesignerStore";
import {shallow} from "zustand/shallow";
import {PlusCircleIcon} from '@patternfly/react-icons';
import {KameletDefinitionPropertyCard} from "./KameletDefinitionPropertyCard";
-import {CamelUtil} from "@/core/api/CamelUtil";
-import {DefinitionProperty} from "@/core/model/IntegrationDefinition";
+import {CamelUtil} from "@karavan-core/api/CamelUtil";
+import {DefinitionProperty} from "@karavan-core/model/IntegrationDefinition";
import {KameletDependenciesCard} from "./KameletDependenciesCard";
import {KameletInput} from './KameletInput';
diff --git a/karavan-vscode/webview/integration-designer/kamelet/KameletDependenciesCard.tsx b/karavan-vscode/webview/integration-designer/kamelet/KameletDependenciesCard.tsx
index f12d174b..2c218858 100644
--- a/karavan-vscode/webview/integration-designer/kamelet/KameletDependenciesCard.tsx
+++ b/karavan-vscode/webview/integration-designer/kamelet/KameletDependenciesCard.tsx
@@ -16,12 +16,12 @@
*/
import React from 'react';
import {Button, Card, CardBody, CardTitle, FormGroup, FormHelperText, HelperText, HelperTextItem, Label, LabelGroup,} from '@patternfly/react-core';
-import '../karavan.css';
+import '@features/project/designer/karavan.css';
import './kamelet.css';
import {useIntegrationStore} from "../DesignerStore";
import {shallow} from "zustand/shallow";
import {PlusCircleIcon} from '@patternfly/react-icons';
-import {CamelUtil} from "@/core/api/CamelUtil";
+import {CamelUtil} from "@karavan-core/api/CamelUtil";
export function KameletDependenciesCard() {
diff --git a/karavan-vscode/webview/integration-designer/kamelet/KameletDesigner.tsx b/karavan-vscode/webview/integration-designer/kamelet/KameletDesigner.tsx
index 4fa65747..f045f8b4 100644
--- a/karavan-vscode/webview/integration-designer/kamelet/KameletDesigner.tsx
+++ b/karavan-vscode/webview/integration-designer/kamelet/KameletDesigner.tsx
@@ -15,10 +15,7 @@
* limitations under the License.
*/
import React from 'react';
-import {
- PageSection,
-} from '@patternfly/react-core';
-import '../karavan.css';
+import '@features/project/designer/karavan.css';
import './kamelet.css';
import {KameletAnnotationsPanel} from "./KameletAnnotationsPanel";
import {KameletDefinitionsPanel} from "./KameletDefinitionsPanel";
diff --git a/karavan-vscode/webview/integration-designer/kamelet/KameletInput.tsx b/karavan-vscode/webview/integration-designer/kamelet/KameletInput.tsx
index c6ef9ad6..6dd58f38 100644
--- a/karavan-vscode/webview/integration-designer/kamelet/KameletInput.tsx
+++ b/karavan-vscode/webview/integration-designer/kamelet/KameletInput.tsx
@@ -28,7 +28,7 @@ import {
capitalize,
TextArea
} from "@patternfly/react-core";
-import '../karavan.css';
+import '@features/project/designer/karavan.css';
import './kamelet.css';
interface Props {
diff --git a/karavan-vscode/webview/integration-designer/kamelet/KameletTypesOutCard.tsx b/karavan-vscode/webview/integration-designer/kamelet/KameletTypesOutCard.tsx
index 23e74090..bb2fde3a 100644
--- a/karavan-vscode/webview/integration-designer/kamelet/KameletTypesOutCard.tsx
+++ b/karavan-vscode/webview/integration-designer/kamelet/KameletTypesOutCard.tsx
@@ -16,12 +16,12 @@
*/
import React from 'react';
import {Button, Card, CardBody, CardTitle, FormGroup, FormHelperText, HelperText, HelperTextItem, Label, LabelGroup,} from '@patternfly/react-core';
-import '../karavan.css';
+import '@features/project/designer/karavan.css';
import './kamelet.css';
import {useIntegrationStore} from "../DesignerStore";
import {shallow} from "zustand/shallow";
import {PlusCircleIcon} from '@patternfly/react-icons';
-import {CamelUtil} from "@/core/api/CamelUtil";
+import {CamelUtil} from "@karavan-core/api/CamelUtil";
export function KameletTypesOutCard() {
diff --git a/karavan-vscode/webview/integration-designer/property/DslProperties.css b/karavan-vscode/webview/integration-designer/property/DslProperties.css
index cf7ef7ab..cd8b3f6a 100644
--- a/karavan-vscode/webview/integration-designer/property/DslProperties.css
+++ b/karavan-vscode/webview/integration-designer/property/DslProperties.css
@@ -189,7 +189,7 @@
.karavan .properties .input-group .pf-v6-c-text-input-group__utilities {
align-items: flex-end;
- margin-top: auto;
+ margin: auto;
}
.karavan .properties .chip .pf-v6-c-button {
diff --git a/karavan-vscode/webview/integration-designer/property/DslProperties.tsx b/karavan-vscode/webview/integration-designer/property/DslProperties.tsx
index 3aeec0ba..edc0e5e9 100644
--- a/karavan-vscode/webview/integration-designer/property/DslProperties.tsx
+++ b/karavan-vscode/webview/integration-designer/property/DslProperties.tsx
@@ -14,7 +14,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-import React, {useEffect, useState, ReactElement} from 'react';
+import React, {ReactElement, useEffect, useState} from 'react';
import {
Button,
Content,
@@ -32,23 +32,22 @@ import {
import './DslProperties.css';
import {DataFormatField} from "./property/DataFormatField";
import {DslPropertyField} from "./property/DslPropertyField";
-import {CamelDefinitionApiExt} from "@/core/api/CamelDefinitionApiExt";
+import {CamelDefinitionApiExt} from "@karavan-core/api/CamelDefinitionApiExt";
import {CamelUi} from "../utils/CamelUi";
-import {CamelMetadataApi, DataFormats, PropertyMeta} from "@/core/model/CamelMetadata";
+import {CamelMetadataApi, DataFormats, PropertyMeta} from "@karavan-core/model/CamelMetadata";
import {IntegrationHeader} from "../utils/IntegrationHeader";
import CloneIcon from "@patternfly/react-icons/dist/esm/icons/clone-icon";
import {useDesignerStore, useIntegrationStore} from "../DesignerStore";
import {shallow} from "zustand/shallow";
import {usePropertiesHook} from "./usePropertiesHook";
-import {CamelDisplayUtil} from "@/core/api/CamelDisplayUtil";
+import {CamelDisplayUtil} from "@karavan-core/api/CamelDisplayUtil";
import {PropertiesHeader} from "./PropertiesHeader";
import {PropertyUtil} from "./property/PropertyUtil";
import {usePropertiesStore} from "./PropertyStore";
import TimesIcon from "@patternfly/react-icons/dist/esm/icons/times-icon";
-import {RouteTemplateDefinition} from "@/core/model/CamelDefinition";
+import {RouteTemplateDefinition} from "@karavan-core/model/CamelDefinition";
interface Props {
- designerType: 'routes' | 'rest' | 'beans',
expressionEditor: React.ComponentType<any>;
}
@@ -63,10 +62,10 @@ export function DslProperties(props: Props) {
onParametersChange,
onExpressionChange
} =
- usePropertiesHook(props.designerType);
+ usePropertiesHook();
- const [selectedStep, setParameterPlaceholders]
- = useDesignerStore((s) => [s.selectedStep, s.setParameterPlaceholders], shallow)
+ const [selectedStep, setParameterPlaceholders, tab]
+ = useDesignerStore((s) => [s.selectedStep, s.setParameterPlaceholders, s.tab], shallow)
const [propertyFilter, changedOnly, requiredOnly, setChangedOnly, sensitiveOnly, setSensitiveOnly, setPropertyFilter, setRequiredOnly]
= usePropertiesStore((s) => [s.propertyFilter, s.changedOnly, s.requiredOnly, s.setChangedOnly, s.sensitiveOnly, s.setSensitiveOnly, s.setPropertyFilter, s.setRequiredOnly], shallow)
@@ -74,9 +73,9 @@ export function DslProperties(props: Props) {
const [showAdvanced, setShowAdvanced] = useState<boolean>(false);
useEffect(() => {
- setRequiredOnly(false);
- setChangedOnly(false);
- setSensitiveOnly(false);
+ // setRequiredOnly(false);
+ // setChangedOnly(false);
+ // setSensitiveOnly(false);
setPropertyFilter('');
getRouteTemplateParameters()
}, [selectedStep?.uuid])
@@ -110,7 +109,7 @@ export function DslProperties(props: Props) {
}
function getPropertiesHeader(): ReactElement {
- if (props.designerType === 'routes') return <PropertiesHeader designerType={props.designerType}/>
+ if (tab === 'routes') return <PropertiesHeader/>
else return getClonableElementHeader();
}
@@ -223,7 +222,7 @@ export function DslProperties(props: Props) {
aria-label="filter by name"
/>
<TextInputGroupUtilities>
- <Button icon={<TimesIcon aria-hidden={true}/>} variant="plain" onClick={_ => setPropertyFilter('')}/>
+ <Button icon={<TimesIcon aria-hidden={true}/>} isInline variant="link" onClick={_ => setPropertyFilter('')}/>
</TextInputGroupUtilities>
</TextInputGroup>
)
diff --git a/karavan-vscode/webview/integration-designer/property/MainPropertiesPanel.tsx b/karavan-vscode/webview/integration-designer/property/MainPropertiesPanel.tsx
index 49b2d8d8..41fdeec5 100644
--- a/karavan-vscode/webview/integration-designer/property/MainPropertiesPanel.tsx
+++ b/karavan-vscode/webview/integration-designer/property/MainPropertiesPanel.tsx
@@ -14,38 +14,22 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
-import React, {useEffect, useState} from 'react';
-import {Tab, Tabs, TabTitleIcon, TabTitleText,} from '@patternfly/react-core';
-import './DslProperties.css';
-import {DslProperties} from "./DslProperties";
-import {getDesignerIcon} from "../icons/KaravanIcons";
-import {useDesignerStore} from "../DesignerStore";
-import {shallow} from "zustand/shallow";
-import { ExpressionEditor } from './expression/ExpressionEditor';
+import React from 'react';
+import {Tab, Tabs, TabTitleText,} from '@patternfly/react-core';
+import '@features/project/designer/property/DslProperties.css';
export function MainPropertiesPanel() {
- const [tab] = useDesignerStore((s) => [s.tab], shallow)
-
- const [lastStatus, setLastStatus] = useState<boolean>(false);
const [activeTabKey, setActiveTabKey] = React.useState<string | number>();
const handleTabClick = (event: React.MouseEvent<any> | React.KeyboardEvent | MouseEvent, tabIndex: string | number) => {
setActiveTabKey(tabIndex);
};
- useEffect(() => {
- if (!lastStatus) {
- setActiveTabKey('properties');
- setLastStatus(true);
- }
- }, [])
function getTab(title: string, icon: string, error: boolean = false) {
const color = error ? "red" : "initial";
return (
<div className="top-menu-item" style={{color: color}}>
- <TabTitleIcon>{getDesignerIcon(icon)}</TabTitleIcon>
<TabTitleText>{title}</TabTitleText>
</div>
)
@@ -53,9 +37,8 @@ export function MainPropertiesPanel() {
function getPropertiesPanelTabs() {
return (
- <div className={"main-tabs-wrapper"}>
- <Tabs className="main-tabs"
- activeKey={activeTabKey}
+ <div>
+ <Tabs activeKey={activeTabKey}
onSelect={handleTabClick}
isFilled
aria-label="PropertyTypes"
@@ -67,22 +50,11 @@ export function MainPropertiesPanel() {
)
}
- function getPropertiesPanel() {
- if (tab === "routes") {
- return <DslProperties designerType={"routes"} expressionEditor={ExpressionEditor}/>
- } else if (tab === "rest") {
- return <DslProperties designerType={"rest"} expressionEditor={ExpressionEditor}/>
- } else if (tab === "beans") {
- return <DslProperties designerType={"beans"} expressionEditor={ExpressionEditor}/>
- } else {
- return <></>
- }
- }
return (
<div className='main-properties'>
{getPropertiesPanelTabs()}
- {activeTabKey === 'properties' && getPropertiesPanel() }
</div>
)
+
}
diff --git a/karavan-vscode/webview/integration-designer/property/PropertiesHeader.tsx b/karavan-vscode/webview/integration-designer/property/PropertiesHeader.tsx
index d9a39d48..d5b5ed35 100644
--- a/karavan-vscode/webview/integration-designer/property/PropertiesHeader.tsx
+++ b/karavan-vscode/webview/integration-designer/property/PropertiesHeader.tsx
@@ -41,19 +41,15 @@ import {CamelUi} from "../utils/CamelUi";
import {useDesignerStore} from "../DesignerStore";
import {shallow} from "zustand/shallow";
import {usePropertiesHook} from "./usePropertiesHook";
-import {CamelDisplayUtil} from "@/core/api/CamelDisplayUtil";
+import {CamelDisplayUtil} from "@karavan-core/api/CamelDisplayUtil";
import {EllipsisVIcon} from '@patternfly/react-icons';
-import {ComponentApi} from "@/core/api/ComponentApi";
-import {CamelMetadataApi} from "@/core/model/CamelMetadata";
+import {ComponentApi} from "@karavan-core/api/ComponentApi";
+import {CamelMetadataApi} from "@karavan-core/model/CamelMetadata";
import {useRouteDesignerHook} from "../route/useRouteDesignerHook";
-interface Props {
- designerType: 'routes' | 'rest' | 'beans'
-}
-
-export function PropertiesHeader(props: Props) {
+export function PropertiesHeader() {
- const {saveAsRoute, convertStep, onPropertyChange} = usePropertiesHook(props.designerType);
+ const {saveAsRoute, convertStep, onPropertyChange} = usePropertiesHook();
const {openSelectorToReplaceFrom} = useRouteDesignerHook();
const [selectedStep] = useDesignerStore((s) => [s.selectedStep], shallow)
diff --git a/karavan-vscode/webview/integration-designer/property/PropertyStore.ts b/karavan-vscode/webview/integration-designer/property/PropertyStore.ts
index 3515ec0a..51149e1e 100644
--- a/karavan-vscode/webview/integration-designer/property/PropertyStore.ts
+++ b/karavan-vscode/webview/integration-designer/property/PropertyStore.ts
@@ -17,6 +17,8 @@
import {createWithEqualityFn} from "zustand/traditional";
import {shallow} from "zustand/shallow";
+export const NO_INFRA_BUTTON_PROPERTIES = ["uri", "id", "description", "group", "note"]
+
interface PropertiesState {
propertyFilter: string;
setPropertyFilter: (propertyFilter: string) => void
@@ -29,8 +31,8 @@ interface PropertiesState {
}
export const usePropertiesStore = createWithEqualityFn<PropertiesState>((set, get) => ({
- requiredOnly: false,
- changedOnly: false,
+ requiredOnly: true,
+ changedOnly: true,
sensitiveOnly: false,
propertyFilter: '',
setPropertyFilter: (propertyFilter: string) => {
diff --git a/karavan-vscode/webview/integration-designer/property/expression/ExpressionEditor.tsx b/karavan-vscode/webview/integration-designer/property/expression/ExpressionEditor.tsx
index dca824e6..457b8eb5 100644
--- a/karavan-vscode/webview/integration-designer/property/expression/ExpressionEditor.tsx
+++ b/karavan-vscode/webview/integration-designer/property/expression/ExpressionEditor.tsx
@@ -15,18 +15,19 @@
* limitations under the License.
*/
import React, {useEffect, useState} from 'react';
-// import '@/monaco-setup';
+import '@shared/monaco-setup';
import Editor from "@monaco-editor/react";
-import {ExpressionBottomPanel} from "./ExpressionBottomPanel";
import './ExpressionEditor.css'
import {ExpressionFunctions, ExpressionVariables} from "./ExpressionContextModel";
-import {useTheme} from "@/main/ThemeContext";
+import {useTheme} from "@app/theme/ThemeContext";
interface Props {
customCode: any,
onChange: (value: string |undefined) => void,
title: string,
dslLanguage?: [string, string, string],
+ dark?: boolean,
+ name?: string
}
export function ExpressionEditor(props: Props) {
diff --git a/karavan-vscode/webview/integration-designer/property/property/BeanProperties.tsx b/karavan-vscode/webview/integration-designer/property/property/BeanProperties.tsx
index 20bf35e0..ad8f9f31 100644
--- a/karavan-vscode/webview/integration-designer/property/property/BeanProperties.tsx
+++ b/karavan-vscode/webview/integration-designer/property/property/BeanProperties.tsx
@@ -29,9 +29,9 @@ import {
ValidatedOptions,
} from '@patternfly/react-core';
import './BeanProperties.css';
-import {BeanFactoryDefinition,} from "@/core/model/CamelDefinition";
-import {CamelUtil} from "@/core/api/CamelUtil";
-import {SensitiveKeys} from "@/core/model/CamelMetadata";
+import {BeanFactoryDefinition,} from "@karavan-core/model/CamelDefinition";
+import {CamelUtil} from "@karavan-core/api/CamelUtil";
+import {SensitiveKeys} from "@karavan-core/model/CamelMetadata";
import {v4 as uuidv4} from "uuid";
import {CogIcon, DockerIcon, PlusCircleIcon, TimesIcon} from '@patternfly/react-icons';
import {ConfigurationSelectorModal} from "./ConfigurationSelectorModal";
@@ -246,13 +246,13 @@ export function BeanProperties (props: Props) {
}}/>
</InputGroupItem>
</InputGroup>
- <Button icon={<TimesIcon/>} variant="link" className="delete-button" onClick={e => constructorDeleted(i)}>
+ <Button icon={<TimesIcon/>} isInline variant="link" className="delete-button" onClick={e => constructorDeleted(i)}>
</Button>
</div>
)
})}
- <Button icon={<PlusCircleIcon/>} variant="link" className="add-button" onClick={e => constructorChanged(uuidv4(), constructors.size, '')}>
+ <Button icon={<PlusCircleIcon/>} isInline variant="link" className="add-button" onClick={e => constructorChanged(uuidv4(), constructors.size, '')}>
Add argument</Button>
</>
)
@@ -292,7 +292,7 @@ export function BeanProperties (props: Props) {
}}
/>
<TextInputGroupUtilities>
- <Button icon={<TimesIcon aria-hidden={true}/>} variant="plain" className='button-clear' onClick={_ => {
+ <Button icon={<TimesIcon aria-hidden={true}/>} isInline variant="link" className='button-clear' onClick={_ => {
propertyChanged(i, key,'');
}} />
</TextInputGroupUtilities>
@@ -324,11 +324,11 @@ export function BeanProperties (props: Props) {
{/* }}/>*/}
{/* </InputGroupItem>*/}
{/*</InputGroup>*/}
- <Button icon={<TimesIcon/>} variant="link" className="delete-button" onClick={e => propertyDeleted(i)}></Button>
+ <Button icon={<TimesIcon/>} isInline variant="link" className="delete-button" onClick={e => propertyDeleted(i)}></Button>
</div>
)
})}
- <Button icon={<PlusCircleIcon/>} variant="link" className="add-button" onClick={e => propertyChanged(uuidv4(), '', '')}>
+ <Button icon={<PlusCircleIcon/>} isInline variant="link" className="add-button" onClick={e => propertyChanged(uuidv4(), '', '')}>
Add property</Button>
</>
)
diff --git a/karavan-vscode/webview/integration-designer/property/property/ComponentPropertyField.tsx b/karavan-vscode/webview/integration-designer/property/property/ComponentPropertyField.tsx
index 97ed229d..b645364c 100644
--- a/karavan-vscode/webview/integration-designer/property/property/ComponentPropertyField.tsx
+++ b/karavan-vscode/webview/integration-designer/property/property/ComponentPropertyField.tsx
@@ -37,25 +37,26 @@ import {
ValidatedOptions
} from '@patternfly/react-core';
import './ComponentPropertyField.css';
-import {ComponentProperty} from "@/core/model/ComponentModels";
+import {ComponentProperty} from "@karavan-core/model/ComponentModels";
import {CamelUi, RouteToCreate} from "../../utils/CamelUi";
-import {CamelElement} from "@/core/model/IntegrationDefinition";
-import {ToDefinition} from "@/core/model/CamelDefinition";
+import {CamelElement} from "@karavan-core/model/IntegrationDefinition";
+import {ToDefinition} from "@karavan-core/model/CamelDefinition";
import {ConfigurationSelectorModal} from "./ConfigurationSelectorModal";
import {InfrastructureAPI} from "../../utils/InfrastructureAPI";
import {CogIcon, PlusIcon, TimesIcon} from '@patternfly/react-icons';
import {usePropertiesHook} from "../usePropertiesHook";
import {useDesignerStore, useIntegrationStore} from "../../DesignerStore";
import {shallow} from "zustand/shallow";
-import {INTERNAL_COMPONENTS} from "@/core/api/ComponentApi";
+import {INTERNAL_COMPONENTS} from "@karavan-core/api/ComponentApi";
import {PropertyUtil} from "./PropertyUtil";
import {isSensitiveFieldValid} from "../../utils/ValidatorUtils";
import ExclamationCircleIcon from "@patternfly/react-icons/dist/esm/icons/exclamation-circle-icon";
import {CamelDefaultStepProperty} from "../../utils/CamelDefaultStepProperty";
import {FileReferenceDropdown} from "./FileReferenceDropdown";
-import {FieldSelectWithCreate} from "@/components/FieldSelectWithCreate";
-import {FieldSelectScrollable} from "@/components/FieldSelectScrollable";
-import {CamelMetadataApi} from "@/core/model/CamelMetadata";
+import {FieldSelectWithCreate} from "@shared/ui/FieldSelectWithCreate";
+import {FieldSelectScrollable} from "@shared/ui/FieldSelectScrollable";
+import {CamelMetadataApi} from "@karavan-core/model/CamelMetadata";
+import {NO_INFRA_BUTTON_PROPERTIES} from "@features/project/designer/property/PropertyStore";
const prefix = "parameters";
const beanPrefix = "#bean:";
@@ -329,7 +330,7 @@ export function ComponentPropertyField(props: Props) {
}
function getStringInput(property: ComponentProperty) {
- const noInfraSelectorButton = ["uri", "id", "description", "group"].includes(property.name);
+ const noInfraSelectorButton = NO_INFRA_BUTTON_PROPERTIES.includes(property.name);
return <InputGroup className={valueChangedClassName}>
<TextInputGroup>
<TextInputGroupMain
@@ -346,7 +347,7 @@ export function ComponentPropertyField(props: Props) {
}}
/>
<TextInputGroupUtilities>
- <Button icon={<TimesIcon aria-hidden={true}/>} variant="plain" className='button-clear' onClick={_ => {
+ <Button icon={<TimesIcon aria-hidden={true}/>} isInline variant="link" className='button-clear' onClick={_ => {
parametersChanged(property.name, '');
setTextValue('');
setCheckChanges(true);
@@ -377,7 +378,7 @@ export function ComponentPropertyField(props: Props) {
/>
<TextInputGroupUtilities>
<Content component={ContentVariants.p}>{property.type}</Content>
- <Button icon={<TimesIcon aria-hidden={true}/>} variant="plain" className='button-clear' onClick={_ => {
+ <Button icon={<TimesIcon aria-hidden={true}/>} isInline variant="link" className='button-clear' onClick={_ => {
parametersChanged(property.name, '');
setTextValue('');
setCheckChanges(true);
diff --git a/karavan-vscode/webview/integration-designer/property/property/ConfigurationSelectorModal.tsx b/karavan-vscode/webview/integration-designer/property/property/ConfigurationSelectorModal.tsx
index 132aacae..a8a0d51b 100644
--- a/karavan-vscode/webview/integration-designer/property/property/ConfigurationSelectorModal.tsx
+++ b/karavan-vscode/webview/integration-designer/property/property/ConfigurationSelectorModal.tsx
@@ -22,7 +22,7 @@ import {useDesignerStore} from "../../DesignerStore";
import {shallow} from "zustand/shallow";
import {ExpressionEditor} from "../expression/ExpressionEditor";
import './ConfigurationSelectorModal.css'
-import {useCodeStore} from "@/integration-designer/CodeStore";
+import {useCodeStore} from "@features/project/designer/CodeStore";
const SYNTAX_EXAMPLES = [
{key: 'property:', value: 'group.property', description: 'Application property'},
@@ -337,7 +337,7 @@ export function ConfigurationSelectorModal(props: Props) {
<Content component={'h3'}>{'Set from'}</Content>
</div>
<div style={{width: '300px'}}>
- {tabIndex !== 'editor' && searchInput()}
+ {tabIndex !== 'editor' && searchInput()}
</div>
<ToggleGroup>
{tabs.map(tab =>
diff --git a/karavan-vscode/webview/integration-designer/property/property/DataFormatField.tsx b/karavan-vscode/webview/integration-designer/property/property/DataFormatField.tsx
index 17b52c3e..f1cb0865 100644
--- a/karavan-vscode/webview/integration-designer/property/property/DataFormatField.tsx
+++ b/karavan-vscode/webview/integration-designer/property/property/DataFormatField.tsx
@@ -15,20 +15,17 @@
* limitations under the License.
*/
import React, {useState} from 'react';
-import {
- ExpandableSection, SelectOptionProps
-} from '@patternfly/react-core';
-import {CamelMetadataApi, PropertyMeta} from "@/core/model/CamelMetadata";
-import {CamelDefinitionApiExt} from "@/core/api/CamelDefinitionApiExt";
-import {DataFormatDefinition} from "@/core/model/CamelDefinition";
-import {Integration, CamelElement} from "@/core/model/IntegrationDefinition";
-import {CamelDefinitionApi} from "@/core/api/CamelDefinitionApi";
+import {ExpandableSection, SelectOptionProps} from '@patternfly/react-core';
+import {CamelMetadataApi, DataFormats, PropertyMeta} from "@karavan-core/model/CamelMetadata";
+import {CamelDefinitionApiExt} from "@karavan-core/api/CamelDefinitionApiExt";
+import {DataFormatDefinition} from "@karavan-core/model/CamelDefinition";
+import {CamelElement, Integration} from "@karavan-core/model/IntegrationDefinition";
+import {CamelDefinitionApi} from "@karavan-core/api/CamelDefinitionApi";
import {DslPropertyField} from "./DslPropertyField";
-import {DataFormats} from "@/core/model/CamelMetadata";
import {usePropertiesStore} from "../PropertyStore";
import {shallow} from "zustand/shallow";
import {PropertyUtil} from "./PropertyUtil";
-import {FieldSelectScrollable} from "@/components/FieldSelectScrollable";
+import {FieldSelectScrollable} from "@shared/ui/FieldSelectScrollable";
interface Props {
dslName: string,
diff --git a/karavan-vscode/webview/integration-designer/property/property/DslPropertyField.tsx b/karavan-vscode/webview/integration-designer/property/property/DslPropertyField.tsx
index d0be682e..a12a9cbb 100644
--- a/karavan-vscode/webview/integration-designer/property/property/DslPropertyField.tsx
+++ b/karavan-vscode/webview/integration-designer/property/property/DslPropertyField.tsx
@@ -42,38 +42,38 @@ import {
} from '@patternfly/react-core';
import './DslPropertyField.css';
import {CogIcon, ExclamationCircleIcon, PlusCircleIcon, PlusIcon, TimesCircleIcon, TimesIcon} from '@patternfly/react-icons';
-import {CamelUtil} from "@/core/api/CamelUtil";
-import {CamelMetadataApi, PropertyMeta} from "@/core/model/CamelMetadata";
-import {CamelDefinitionApiExt} from "@/core/api/CamelDefinitionApiExt";
+import {CamelUtil} from "@karavan-core/api/CamelUtil";
+import {CamelMetadataApi, PropertyMeta} from "@karavan-core/model/CamelMetadata";
+import {CamelDefinitionApiExt} from "@karavan-core/api/CamelDefinitionApiExt";
import {ExpressionField} from "./ExpressionField";
import {CamelUi, RouteToCreate} from "../../utils/CamelUi";
import {ComponentPropertyField} from "./ComponentPropertyField";
-import {CamelElement} from "@/core/model/IntegrationDefinition";
+import {CamelElement} from "@karavan-core/model/IntegrationDefinition";
import {KameletPropertyField} from "./KameletPropertyField";
import {ObjectField} from "./ObjectField";
-import {CamelDefinitionApi} from "@/core/api/CamelDefinitionApi";
-import {ComponentProperty} from "@/core/model/ComponentModels";
+import {CamelDefinitionApi} from "@karavan-core/api/CamelDefinitionApi";
+import {ComponentProperty} from "@karavan-core/model/ComponentModels";
import {ConfigurationSelectorModal} from "./ConfigurationSelectorModal";
import {InfrastructureAPI} from "../../utils/InfrastructureAPI";
import {shallow} from "zustand/shallow";
-import {BeanFactoryDefinition, DataFormatDefinition, ExpressionDefinition} from "@/core/model/CamelDefinition";
-import {TemplateApi} from "@/core/api/TemplateApi";
+import {BeanFactoryDefinition, DataFormatDefinition, ExpressionDefinition} from "@karavan-core/model/CamelDefinition";
+import {TemplateApi} from "@karavan-core/api/TemplateApi";
import {BeanProperties} from "./BeanProperties";
import {PropertyPlaceholderDropdown} from "./PropertyPlaceholderDropdown";
import {VariablesDropdown} from "./VariablesDropdown";
-import {SpiBeanApi} from "@/core/api/SpiBeanApi";
+import {SpiBeanApi} from "@karavan-core/api/SpiBeanApi";
import {PropertyUtil} from "./PropertyUtil";
-import {usePropertiesStore} from "../PropertyStore";
-import {Property} from "@/core/model/KameletModels";
+import {NO_INFRA_BUTTON_PROPERTIES, usePropertiesStore} from "../PropertyStore";
+import {Property} from "@karavan-core/model/KameletModels";
import {isSensitiveFieldValid} from "../../utils/ValidatorUtils";
import {EventBus} from "../../utils/EventBus";
import {CamelDefaultStepProperty} from "../../utils/CamelDefaultStepProperty";
-import {useDesignerStore, useIntegrationStore} from "@/integration-designer/DesignerStore";
-import {DslPropertyFieldSelect} from "@/integration-designer/property/property/DslPropertyFieldSelect";
-import {MEDIA_TYPES} from "@/integration-designer/utils/MediaTypes";
-import {DslPropertyFieldSelectScrollable} from "@/integration-designer/property/property/DslPropertyFieldSelectScrollable";
-import {FieldSelectWithCreate} from "@/components/FieldSelectWithCreate";
-import {FileReferenceDropdown} from "@/integration-designer/property/property/FileReferenceDropdown";
+import {useDesignerStore, useIntegrationStore} from "@features/project/designer/DesignerStore";
+import {DslPropertyFieldSelect} from "@features/project/designer/property/property/DslPropertyFieldSelect";
+import {MEDIA_TYPES} from "@features/project/designer/utils/MediaTypes";
+import {DslPropertyFieldSelectScrollable} from "@features/project/designer/property/property/DslPropertyFieldSelectScrollable";
+import {FieldSelectWithCreate} from "@shared/ui/FieldSelectWithCreate";
+import {FileReferenceDropdown} from "@features/project/designer/property/property/FileReferenceDropdown";
const beanPrefix = "#bean:";
const classPrefix = "#class:";
@@ -342,7 +342,7 @@ export function DslPropertyField(props: Props) {
}
function getStringInput(property: PropertyMeta) {
- const noInfraSelectorButton = ["uri", "id", "description", "group"].includes(property.name);
+ const noInfraSelectorButton = NO_INFRA_BUTTON_PROPERTIES.includes(property.name);
const isNumber = ['integer', 'number', 'duration'].includes(property.type);
const uriReadOnly = isUriReadOnly(property);
return (
@@ -374,7 +374,7 @@ export function DslPropertyField(props: Props) {
}}
/>
<TextInputGroupUtilities>
- <Button icon={<TimesIcon aria-hidden={true}/>} variant="plain" className='button-clear' onClick={_ => {
+ <Button icon={<TimesIcon aria-hidden={true}/>} isInline variant="link" className='button-clear' onClick={_ => {
propertyChanged(property.name, '');
setTextValue('');
setCheckChanges(true);
@@ -423,7 +423,7 @@ export function DslPropertyField(props: Props) {
placeholder='Select bean'
onPropertyChange={(_, val) => propertyChanged(property.name, val)}
utilities={[
- <Tooltip position="bottom-end" content={"Open Java Class"}>
+ <Tooltip key={property?.name} position="bottom-end" content={"Open Java Class"}>
<Button icon={<PlusIcon/>} isDisabled={value === undefined || value?.length === 0} variant="plain"
onClick={e => showCode(value, property.javaType)}>
</Button>
@@ -566,7 +566,7 @@ export function DslPropertyField(props: Props) {
}}
/>
<TextInputGroupUtilities>
- <Button icon={<TimesIcon aria-hidden={true}/>} variant="plain" className='button-clear' onClick={_ => {
+ <Button icon={<TimesIcon aria-hidden={true}/>} isInline variant="link" className='button-clear' onClick={_ => {
propertyChanged(property.name, '');
setTextValue('');
setCheckChanges(true);
diff --git a/karavan-vscode/webview/integration-designer/property/property/DslPropertyFieldSelect.tsx b/karavan-vscode/webview/integration-designer/property/property/DslPropertyFieldSelect.tsx
index 203adacf..17c01245 100644
--- a/karavan-vscode/webview/integration-designer/property/property/DslPropertyFieldSelect.tsx
+++ b/karavan-vscode/webview/integration-designer/property/property/DslPropertyFieldSelect.tsx
@@ -16,7 +16,7 @@
*/
import React, {ReactElement, useState} from 'react';
import {Button, MenuToggle, MenuToggleElement, Select, SelectList, SelectOption, SelectOptionProps, TextInputGroup, TextInputGroupUtilities, Tooltip} from '@patternfly/react-core';
-import {PropertyMeta} from "@/core/model/CamelMetadata";
+import {PropertyMeta} from "@karavan-core/model/CamelMetadata";
import {RouteToCreate} from "../../utils/CamelUi";
import {PropertyUtil} from "./PropertyUtil";
import TimesIcon from "@patternfly/react-icons/dist/esm/icons/times-icon";
@@ -68,8 +68,8 @@ export function DslPropertyFieldSelect(props: Props) {
</SelectList>
</Select>
<TextInputGroupUtilities>
- <Tooltip key={0} position="bottom" content={"Clear"}>
- <Button icon={<TimesIcon/>} variant="plain"
+ <Tooltip key={property?.name} position="bottom" content={"Clear"}>
+ <Button icon={<TimesIcon/>} isInline variant="link"
onClick={e => onPropertyChange?.(property.name, undefined)}
aria-label="Delete"
/>
diff --git a/karavan-vscode/webview/integration-designer/property/property/DslPropertyFieldSelectScrollable.tsx b/karavan-vscode/webview/integration-designer/property/property/DslPropertyFieldSelectScrollable.tsx
index 7290d025..1f8d9907 100644
--- a/karavan-vscode/webview/integration-designer/property/property/DslPropertyFieldSelectScrollable.tsx
+++ b/karavan-vscode/webview/integration-designer/property/property/DslPropertyFieldSelectScrollable.tsx
@@ -27,7 +27,7 @@ import {
TextInputGroupMain,
TextInputGroupUtilities
} from '@patternfly/react-core';
-import {PropertyMeta} from "@/core/model/CamelMetadata";
+import {PropertyMeta} from "@karavan-core/model/CamelMetadata";
import {RouteToCreate} from "../../utils/CamelUi";
import {PropertyUtil} from "./PropertyUtil";
import TimesIcon from "@patternfly/react-icons/dist/esm/icons/times-icon";
@@ -114,7 +114,7 @@ export function DslPropertyFieldSelectScrollable(props: Props) {
</DropdownList>
</Dropdown>
<TextInputGroupUtilities>
- <Button icon={<TimesIcon/>} variant="plain"
+ <Button icon={<TimesIcon/>} isInline variant="link"
onClick={e => {
onPropertyChange?.(property.name, undefined)
setInputValue(undefined)
diff --git a/karavan-vscode/webview/integration-designer/property/property/ExpressionField.tsx b/karavan-vscode/webview/integration-designer/property/property/ExpressionField.tsx
index 77bd1b47..2e93752a 100644
--- a/karavan-vscode/webview/integration-designer/property/property/ExpressionField.tsx
+++ b/karavan-vscode/webview/integration-designer/property/property/ExpressionField.tsx
@@ -16,17 +16,17 @@
*/
import React, {useState} from 'react';
import {ExpandableSection, FormGroup, FormGroupLabelHelp, Popover, SelectOptionProps} from '@patternfly/react-core';
-import {CamelMetadataApi, Languages, PropertyMeta} from "@/core/model/CamelMetadata";
-import {CamelDefinitionApiExt} from "@/core/api/CamelDefinitionApiExt";
-import {ExpressionDefinition} from "@/core/model/CamelDefinition";
-import {CamelElement} from "@/core/model/IntegrationDefinition";
-import {CamelDefinitionApi} from "@/core/api/CamelDefinitionApi";
+import {CamelMetadataApi, Languages, PropertyMeta} from "@karavan-core/model/CamelMetadata";
+import {CamelDefinitionApiExt} from "@karavan-core/api/CamelDefinitionApiExt";
+import {ExpressionDefinition} from "@karavan-core/model/CamelDefinition";
+import {CamelElement} from "@karavan-core/model/IntegrationDefinition";
+import {CamelDefinitionApi} from "@karavan-core/api/CamelDefinitionApi";
import {DslPropertyField} from "./DslPropertyField";
import {CamelUi} from "../../utils/CamelUi";
import {usePropertiesStore} from "../PropertyStore";
import {shallow} from "zustand/shallow";
import {PropertyUtil} from "./PropertyUtil";
-import {DslPropertyFieldSelectScrollable} from "@/integration-designer/property/property/DslPropertyFieldSelectScrollable";
+import {DslPropertyFieldSelectScrollable} from "@features/project/designer/property/property/DslPropertyFieldSelectScrollable";
interface Props {
property: PropertyMeta,
diff --git a/karavan-vscode/webview/integration-designer/property/property/FileReferenceDropdown.tsx b/karavan-vscode/webview/integration-designer/property/property/FileReferenceDropdown.tsx
index c3706bff..d7b21093 100644
--- a/karavan-vscode/webview/integration-designer/property/property/FileReferenceDropdown.tsx
+++ b/karavan-vscode/webview/integration-designer/property/property/FileReferenceDropdown.tsx
@@ -230,7 +230,7 @@ export const FileReferenceDropdown: React.FC<FileReferenceDropdownProps> = ({
aria-controls="file-reference-dropdown-listbox"
/>
<TextInputGroupUtilities {...(!inputValue ? { style: { display: 'none' } } : {})}>
- <Button icon={<TimesIcon aria-hidden />} variant="plain" onClick={onClearButtonClick} aria-label="Clear input value" />
+ <Button icon={<TimesIcon aria-hidden />} isInline variant="link" onClick={onClearButtonClick} aria-label="Clear input value" />
</TextInputGroupUtilities>
</TextInputGroup>
</MenuToggle>
diff --git a/karavan-vscode/webview/integration-designer/property/property/KameletPropertyField.tsx b/karavan-vscode/webview/integration-designer/property/property/KameletPropertyField.tsx
index 490fe98b..4fcbafa4 100644
--- a/karavan-vscode/webview/integration-designer/property/property/KameletPropertyField.tsx
+++ b/karavan-vscode/webview/integration-designer/property/property/KameletPropertyField.tsx
@@ -35,11 +35,11 @@ import {
} from '@patternfly/react-core';
import './KameletPropertyField.css';
import {CogIcon, ExclamationCircleIcon, TimesIcon} from '@patternfly/react-icons';
-import {Property} from "@/core/model/KameletModels";
+import {Property} from "@karavan-core/model/KameletModels";
import {ConfigurationSelectorModal} from "./ConfigurationSelectorModal";
import {usePropertiesHook} from "../usePropertiesHook";
import {isSensitiveFieldValid} from "../../utils/ValidatorUtils";
-import {FieldSelectScrollable} from "@/components/FieldSelectScrollable";
+import {FieldSelectScrollable} from "@shared/ui/FieldSelectScrollable";
interface Props {
property: Property,
@@ -206,7 +206,7 @@ export function KameletPropertyField(props: Props) {
}}
/>
<TextInputGroupUtilities>
- <Button icon={<TimesIcon aria-hidden={true}/>} variant="plain" className='button-clear' onClick={_ => {
+ <Button icon={<TimesIcon aria-hidden={true}/>} isInline variant="link" className='button-clear' onClick={_ => {
parametersChanged(property.id, '');
setTextValue('');
setCheckChanges(true);
diff --git a/karavan-vscode/webview/integration-designer/property/property/ObjectField.tsx b/karavan-vscode/webview/integration-designer/property/property/ObjectField.tsx
index 522ccfde..374eee6e 100644
--- a/karavan-vscode/webview/integration-designer/property/property/ObjectField.tsx
+++ b/karavan-vscode/webview/integration-designer/property/property/ObjectField.tsx
@@ -18,11 +18,11 @@ import React, {useState} from 'react';
import {DslPropertyField} from "./DslPropertyField";
import {
ExpressionDefinition,
-} from "@/core/model/CamelDefinition";
-import {CamelElement} from "@/core/model/IntegrationDefinition";
-import {CamelDefinitionApiExt} from "@/core/api/CamelDefinitionApiExt";
-import {CamelUtil} from "@/core/api/CamelUtil";
-import { PropertyMeta} from "@/core/model/CamelMetadata";
+} from "@karavan-core/model/CamelDefinition";
+import {CamelElement} from "@karavan-core/model/IntegrationDefinition";
+import {CamelDefinitionApiExt} from "@karavan-core/api/CamelDefinitionApiExt";
+import {CamelUtil} from "@karavan-core/api/CamelUtil";
+import { PropertyMeta} from "@karavan-core/model/CamelMetadata";
import {RouteToCreate} from "../../utils/CamelUi";
interface Props {
diff --git a/karavan-vscode/webview/integration-designer/property/property/PropertyPlaceholderDropdown.tsx b/karavan-vscode/webview/integration-designer/property/property/PropertyPlaceholderDropdown.tsx
index eefc349f..4a2af9c9 100644
--- a/karavan-vscode/webview/integration-designer/property/property/PropertyPlaceholderDropdown.tsx
+++ b/karavan-vscode/webview/integration-designer/property/property/PropertyPlaceholderDropdown.tsx
@@ -32,14 +32,14 @@ import {
TextInput
} from '@patternfly/react-core';
import './PropertyPlaceholderDropdown.css';
-import {ComponentProperty} from "@/core/model/ComponentModels";
+import {ComponentProperty} from "@karavan-core/model/ComponentModels";
import {useDesignerStore} from "../../DesignerStore";
import {shallow} from "zustand/shallow";
import {EllipsisVIcon, PlusIcon} from '@patternfly/react-icons';
import {InfrastructureAPI} from "../../utils/InfrastructureAPI";
-import {PropertyMeta} from "@/core/model/CamelMetadata";
+import {PropertyMeta} from "@karavan-core/model/CamelMetadata";
import {RouteToCreate} from "../../utils/CamelUi";
-import {Property} from "@/core/model/KameletModels";
+import {Property} from "@karavan-core/model/KameletModels";
const SYNTAX_EXAMPLES = [
{key: 'property:', value: 'group.property', description: 'Application property'},
diff --git a/karavan-vscode/webview/integration-designer/property/property/PropertyUtil.tsx b/karavan-vscode/webview/integration-designer/property/property/PropertyUtil.tsx
index 8eed8134..91e0ea1b 100644
--- a/karavan-vscode/webview/integration-designer/property/property/PropertyUtil.tsx
+++ b/karavan-vscode/webview/integration-designer/property/property/PropertyUtil.tsx
@@ -14,9 +14,9 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-import {PropertyMeta} from "@/core/model/CamelMetadata";
-import {ComponentProperty} from "@/core/model/ComponentModels";
-import {Property} from "@/core/model/KameletModels";
+import {PropertyMeta} from "@karavan-core/model/CamelMetadata";
+import {ComponentProperty} from "@karavan-core/model/ComponentModels";
+import {Property} from "@karavan-core/model/KameletModels";
export class PropertyUtil {
diff --git a/karavan-vscode/webview/integration-designer/property/property/VariablesDropdown.tsx b/karavan-vscode/webview/integration-designer/property/property/VariablesDropdown.tsx
index b6caa4f8..d1ddc97a 100644
--- a/karavan-vscode/webview/integration-designer/property/property/VariablesDropdown.tsx
+++ b/karavan-vscode/webview/integration-designer/property/property/VariablesDropdown.tsx
@@ -32,7 +32,7 @@ import {
ToggleGroupItem
} from '@patternfly/react-core';
import {TimesIcon} from '@patternfly/react-icons';
-import {GLOBAL, ROUTE} from "@/core/api/VariableUtil";
+import {GLOBAL, ROUTE} from "@karavan-core/api/VariableUtil";
interface VariablesDropdownProps {
initialValue?: string;
@@ -230,7 +230,7 @@ export const VariablesDropdown: React.FC<VariablesDropdownProps> = ({
aria-controls="variables-dropdown-listbox"
/>
<TextInputGroupUtilities {...(!inputValue ? {style: {display: 'none'}} : {})}>
- <Button icon={<TimesIcon aria-hidden/>} variant="plain" onClick={onClearButtonClick} aria-label="Clear input value"/>
+ <Button icon={<TimesIcon aria-hidden/>} isInline variant="link" onClick={onClearButtonClick} aria-label="Clear input value"/>
</TextInputGroupUtilities>
</TextInputGroup>
</MenuToggle>
diff --git a/karavan-vscode/webview/integration-designer/property/usePropertiesHook.tsx b/karavan-vscode/webview/integration-designer/property/usePropertiesHook.tsx
index df101aac..045a1f46 100644
--- a/karavan-vscode/webview/integration-designer/property/usePropertiesHook.tsx
+++ b/karavan-vscode/webview/integration-designer/property/usePropertiesHook.tsx
@@ -14,31 +14,31 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-import '../karavan.css';
-import {CamelUtil} from "@/core/api/CamelUtil";
-import {DataFormatDefinition, ExpressionDefinition, ToDefinition,} from "@/core/model/CamelDefinition";
-import {CamelElement} from "@/core/model/IntegrationDefinition";
-import {CamelDefinitionApiExt} from "@/core/api/CamelDefinitionApiExt";
-import {CamelDefinitionApi} from "@/core/api/CamelDefinitionApi";
+import '@features/project/designer/karavan.css';
+import {CamelUtil} from "@karavan-core/api/CamelUtil";
+import {DataFormatDefinition, ExpressionDefinition, ToDefinition,} from "@karavan-core/model/CamelDefinition";
+import {CamelElement} from "@karavan-core/model/IntegrationDefinition";
+import {CamelDefinitionApiExt} from "@karavan-core/api/CamelDefinitionApiExt";
+import {CamelDefinitionApi} from "@karavan-core/api/CamelDefinitionApi";
import {CamelUi, RouteToCreate} from "../utils/CamelUi";
import {useDesignerStore, useIntegrationStore} from "../DesignerStore";
import {shallow} from "zustand/shallow";
-import {CamelMetadataApi} from "@/core/model/CamelMetadata";
+import {CamelMetadataApi} from "@karavan-core/model/CamelMetadata";
import {EventBus} from "../utils/EventBus";
-import {INTERNAL_COMPONENTS} from "@/core/api/ComponentApi";
+import {INTERNAL_COMPONENTS} from "@karavan-core/api/ComponentApi";
-export function usePropertiesHook(designerType: 'routes' | 'rest' | 'beans' = 'routes') {
+export function usePropertiesHook() {
const [integration, setIntegration] = useIntegrationStore((state) => [state.integration, state.setIntegration], shallow)
- const [selectedStep, setSelectedStep, setSelectedUuids] = useDesignerStore((s) =>
- [s.selectedStep, s.setSelectedStep, s.setSelectedUuids], shallow)
+ const [selectedStep, setSelectedStep, setSelectedUuids, tab] = useDesignerStore((s) =>
+ [s.selectedStep, s.setSelectedStep, s.setSelectedUuids, s.tab], shallow)
function onPropertyUpdate(element: CamelElement, newRoute?: RouteToCreate) {
- if (designerType === 'routes') {
+ if (tab === 'routes') {
onRoutePropertyUpdate(element, newRoute);
- } else if (designerType === 'rest') {
+ } else if (tab === 'rest') {
onRestPropertyUpdate(element, newRoute);
- } else if (designerType === 'beans') {
+ } else if (tab === 'beans') {
onBeanPropertyUpdate(element, newRoute);
}
}
diff --git a/karavan-vscode/webview/integration-designer/rest/RestCard.tsx b/karavan-vscode/webview/integration-designer/rest/RestCard.tsx
index a589579b..456ccbcb 100644
--- a/karavan-vscode/webview/integration-designer/rest/RestCard.tsx
+++ b/karavan-vscode/webview/integration-designer/rest/RestCard.tsx
@@ -19,9 +19,9 @@ import {
Button, Tooltip
} from '@patternfly/react-core';
import './rest.css';
-import '../karavan.css';
-import {CamelElement, Integration} from "@/core/model/IntegrationDefinition";
-import {GetDefinition, RestDefinition} from "@/core/model/CamelDefinition";
+import '@features/project/designer/karavan.css';
+import {CamelElement, Integration} from "@karavan-core/model/IntegrationDefinition";
+import {GetDefinition, RestDefinition} from "@karavan-core/model/CamelDefinition";
import {RestMethodCard} from "./RestMethodCard";
import {AddElementIcon, DeleteElementIcon} from "../utils/ElementIcons";
diff --git a/karavan-vscode/webview/integration-designer/rest/RestConfigurationCard.tsx b/karavan-vscode/webview/integration-designer/rest/RestConfigurationCard.tsx
index ffa64008..db201045 100644
--- a/karavan-vscode/webview/integration-designer/rest/RestConfigurationCard.tsx
+++ b/karavan-vscode/webview/integration-designer/rest/RestConfigurationCard.tsx
@@ -17,9 +17,9 @@
import React from 'react';
import {Button} from '@patternfly/react-core';
import './rest.css';
-import '../karavan.css';
-import {CamelElement} from "@/core/model/IntegrationDefinition";
-import {RestConfigurationDefinition} from "@/core/model/CamelDefinition";
+import '@features/project/designer/karavan.css';
+import {CamelElement} from "@karavan-core/model/IntegrationDefinition";
+import {RestConfigurationDefinition} from "@karavan-core/model/CamelDefinition";
import {DeleteElementIcon} from "../utils/ElementIcons";
interface Props {
diff --git a/karavan-vscode/webview/integration-designer/rest/RestDesigner.tsx b/karavan-vscode/webview/integration-designer/rest/RestDesigner.tsx
index e967adf4..6f51e0ad 100644
--- a/karavan-vscode/webview/integration-designer/rest/RestDesigner.tsx
+++ b/karavan-vscode/webview/integration-designer/rest/RestDesigner.tsx
@@ -15,37 +15,24 @@
* limitations under the License.
*/
import React, {useEffect} from 'react';
-import {
- Button,
- Flex,
- FlexItem,
- Gallery,
- GalleryItem, Modal,
- ModalBody,
- ModalHeader,
- PageSection
-} from '@patternfly/react-core';
+import {Button, Flex, FlexItem, Gallery, GalleryItem, Modal, ModalBody, ModalHeader, PageSection} from '@patternfly/react-core';
import './rest.css';
-import '../karavan.css';
-import {CamelElement} from "@/core/model/IntegrationDefinition";
+import '@features/project/designer/karavan.css';
+import {CamelElement} from "@karavan-core/model/IntegrationDefinition";
import {RestCard} from "./RestCard";
import PlusIcon from "@patternfly/react-icons/dist/esm/icons/plus-icon";
-import {
- RestConfigurationDefinition,
- RestContextRefDefinition,
- RestDefinition
-} from "@/core/model/CamelDefinition";
-import {CamelUtil} from "@/core/api/CamelUtil";
-import {CamelDefinitionApiExt} from "@/core/api/CamelDefinitionApiExt";
+import {RestConfigurationDefinition, RestContextRefDefinition, RestDefinition} from "@karavan-core/model/CamelDefinition";
+import {CamelUtil} from "@karavan-core/api/CamelUtil";
+import {CamelDefinitionApiExt} from "@karavan-core/api/CamelDefinitionApiExt";
import {RestMethodSelector} from "./RestMethodSelector";
import {DslMetaModel} from "../utils/DslMetaModel";
-import {CamelDefinitionApi} from "@/core/api/CamelDefinitionApi";
+import {CamelDefinitionApi} from "@karavan-core/api/CamelDefinitionApi";
import {RestConfigurationCard} from "./RestConfigurationCard";
import {v4 as uuidv4} from "uuid";
import {useDesignerStore, useIntegrationStore, useSelectorStore} from "../DesignerStore";
import {shallow} from "zustand/shallow";
-import {ModalConfirmation} from "@/components/ModalConfirmation";
+import {ModalConfirmation} from "@shared/ui/ModalConfirmation";
export function RestDesigner() {
diff --git a/karavan-vscode/webview/integration-designer/rest/RestMethodCard.tsx b/karavan-vscode/webview/integration-designer/rest/RestMethodCard.tsx
index e2913776..e4d30051 100644
--- a/karavan-vscode/webview/integration-designer/rest/RestMethodCard.tsx
+++ b/karavan-vscode/webview/integration-designer/rest/RestMethodCard.tsx
@@ -16,8 +16,8 @@
*/
import React from 'react';
import {Button} from '@patternfly/react-core';
-import '../karavan.css';
-import {CamelElement} from "@/core/model/IntegrationDefinition";
+import '@features/project/designer/karavan.css';
+import {CamelElement} from "@karavan-core/model/IntegrationDefinition";
import {useDesignerStore} from "../DesignerStore";
import {shallow} from "zustand/shallow";
import {DeleteElementIcon} from "../utils/ElementIcons";
diff --git a/karavan-vscode/webview/integration-designer/rest/RestMethodSelector.tsx b/karavan-vscode/webview/integration-designer/rest/RestMethodSelector.tsx
index 1702925f..a4e525ea 100644
--- a/karavan-vscode/webview/integration-designer/rest/RestMethodSelector.tsx
+++ b/karavan-vscode/webview/integration-designer/rest/RestMethodSelector.tsx
@@ -18,8 +18,6 @@ import React from 'react';
import {Badge, Card, CardBody, CardFooter, CardHeader, Content, Gallery} from '@patternfly/react-core';
import {CamelUi} from "../utils/CamelUi";
import {DslMetaModel} from "../utils/DslMetaModel";
-import {useDesignerStore} from "../DesignerStore";
-import {shallow} from "zustand/shallow";
interface Props {
onMethodSelect: (method: DslMetaModel) => void
diff --git a/karavan-vscode/webview/integration-designer/route/DslConnections.tsx b/karavan-vscode/webview/integration-designer/route/DslConnections.tsx
index 612f176b..0ebbc6d6 100644
--- a/karavan-vscode/webview/integration-designer/route/DslConnections.tsx
+++ b/karavan-vscode/webview/integration-designer/route/DslConnections.tsx
@@ -20,14 +20,14 @@ import {DslPosition, EventBus} from "../utils/EventBus";
import {CamelUi} from "../utils/CamelUi";
import {useConnectionsStore, useDesignerStore, useIntegrationStore} from "../DesignerStore";
import {shallow} from "zustand/shallow";
-import {CamelDefinitionApiExt} from "@/core/api/CamelDefinitionApiExt";
-import {IncomingLink, TopologyUtils} from "@/core/api/TopologyUtils";
-import {CamelElement} from "@/core/model/IntegrationDefinition";
+import {CamelDefinitionApiExt} from "@karavan-core/api/CamelDefinitionApiExt";
+import {IncomingLink, TopologyUtils} from "@karavan-core/api/TopologyUtils";
+import {CamelElement} from "@karavan-core/model/IntegrationDefinition";
import {v4 as uuidv4} from "uuid";
import {Button, Tooltip} from "@patternfly/react-core";
import {InfrastructureAPI} from "../utils/InfrastructureAPI";
-import {getIntegrations} from "@/integration-topology/TopologyApi";
-import {ComponentApi, INTERNAL_COMPONENTS} from "@/core/api/ComponentApi";
+import {getIntegrations} from "@features/project/project-topology/TopologyApi";
+import {ComponentApi, INTERNAL_COMPONENTS} from "@karavan-core/api/ComponentApi";
const overlapGap: number = 40;
const DIAMETER: number = 34;
diff --git a/karavan-vscode/webview/integration-designer/route/element/DslElement.tsx b/karavan-vscode/webview/integration-designer/route/element/DslElement.tsx
index e96bc0a8..d2bbd7de 100644
--- a/karavan-vscode/webview/integration-designer/route/element/DslElement.tsx
+++ b/karavan-vscode/webview/integration-designer/route/element/DslElement.tsx
@@ -16,10 +16,10 @@
*/
import React, {CSSProperties, useState} from 'react';
import './DslElement.css';
-import {CamelElement} from "@/core/model/IntegrationDefinition";
+import {CamelElement} from "@karavan-core/model/IntegrationDefinition";
import {EventBus} from "../../utils/EventBus";
-import {CamelDefinitionApiExt, ChildElement} from "@/core/api/CamelDefinitionApiExt";
-import {CamelDisplayUtil} from "@/core/api/CamelDisplayUtil";
+import {CamelDefinitionApiExt, ChildElement} from "@karavan-core/api/CamelDefinitionApiExt";
+import {CamelDisplayUtil} from "@karavan-core/api/CamelDisplayUtil";
import {useDesignerStore, useIntegrationStore} from "../../DesignerStore";
import {shallow} from "zustand/shallow";
import {useRouteDesignerHook} from "../useRouteDesignerHook";
diff --git a/karavan-vscode/webview/integration-designer/route/element/DslElementHeader.tsx b/karavan-vscode/webview/integration-designer/route/element/DslElementHeader.tsx
index 9bb36a78..3476b848 100644
--- a/karavan-vscode/webview/integration-designer/route/element/DslElementHeader.tsx
+++ b/karavan-vscode/webview/integration-designer/route/element/DslElementHeader.tsx
@@ -16,23 +16,23 @@
*/
import React, {CSSProperties, ReactElement, useCallback, useMemo, useRef} from 'react';
import {Content, Tooltip,} from '@patternfly/react-core';
-import '../../karavan.css';
+import '@features/project/designer/karavan.css';
import './DslElement.css';
-import {CamelElement} from "@/core/model/IntegrationDefinition";
+import {CamelElement} from "@karavan-core/model/IntegrationDefinition";
import {CamelUi} from "../../utils/CamelUi";
-import {CamelDefinitionApiExt, ChildElement} from "@/core/api/CamelDefinitionApiExt";
-import {CamelUtil} from "@/core/api/CamelUtil";
-import {CamelDisplayUtil} from "@/core/api/CamelDisplayUtil";
+import {CamelDefinitionApiExt, ChildElement} from "@karavan-core/api/CamelDefinitionApiExt";
+import {CamelUtil} from "@karavan-core/api/CamelUtil";
+import {CamelDisplayUtil} from "@karavan-core/api/CamelDisplayUtil";
import {useDesignerStore, useIntegrationStore} from "../../DesignerStore";
import {shallow} from "zustand/shallow";
import {useRouteDesignerHook} from "../useRouteDesignerHook";
import {AddElementIcon, CopyElementIcon, DeleteElementIcon, DisableStepIcon, EnableStepIcon, InsertElementIcon} from "../../utils/ElementIcons";
-import {RouteConfigurationDefinition} from "@/core/model/CamelDefinition";
+import {RouteConfigurationDefinition} from "@karavan-core/model/CamelDefinition";
import {AutoStartupFalseIcon, ErrorHandlerIcon} from "../../icons/OtherIcons";
import {usePropertiesHook} from "../../property/usePropertiesHook";
interface Props {
- headerRef: React.Ref<HTMLDivElement> | undefined
+ headerRef?: React.Ref<HTMLDivElement>;
step: CamelElement,
parent: CamelElement | undefined,
nextStep: CamelElement | undefined,
@@ -67,7 +67,7 @@ export function DslElementHeader(props: Props) {
const disabled = (step as any).disabled === true;
const autoStartup = (step as any).autoStartup === undefined || (step as any).autoStartup === true;
- const localHeaderRef = useRef<HTMLDivElement>(null);
+ const localHeaderRef = useRef<HTMLDivElement | null>(null);
// Merge any incoming ref into our local ref
const mergedRef = useCallback(
@@ -245,8 +245,8 @@ export function DslElementHeader(props: Props) {
const showDisableButton = Object.getOwnPropertyNames(step).includes('disabled')
const showAutoStartupButton = Object.getOwnPropertyNames(step).includes('autoStartup')
const headerClasses = getHeaderClasses();
- const childrenInfo = getChildrenInfo(step) || [];
- const hasWideChildrenElement = getHasWideChildrenElement(childrenInfo)
+ const childrenInfo = getChildrenInfo(step);
+ const hasWideChildrenElement = childrenInfo ? getHasWideChildrenElement(childrenInfo) : false;
return (
<div className={"dsl-element " + headerClasses} style={getHeaderStyle()} ref={mergedRef}>
{!['RouteConfigurationDefinition', 'RouteTemplateDefinition', 'RouteDefinition'].includes(step.dslName) &&
diff --git a/karavan-vscode/webview/integration-designer/route/element/DslElementMoveModal.tsx b/karavan-vscode/webview/integration-designer/route/element/DslElementMoveModal.tsx
index e55f9f15..d53b151c 100644
--- a/karavan-vscode/webview/integration-designer/route/element/DslElementMoveModal.tsx
+++ b/karavan-vscode/webview/integration-designer/route/element/DslElementMoveModal.tsx
@@ -25,7 +25,7 @@ import {
import {useDesignerStore, useIntegrationStore} from "../../DesignerStore";
import {shallow} from "zustand/shallow";
import {useRouteDesignerHook} from "../useRouteDesignerHook";
-import {CamelDefinitionApiExt} from "@/core/api/CamelDefinitionApiExt";
+import {CamelDefinitionApiExt} from "@karavan-core/api/CamelDefinitionApiExt";
export function DslElementMoveModal() {
diff --git a/karavan-vscode/webview/integration-designer/route/element/RouteTemplateElement.tsx b/karavan-vscode/webview/integration-designer/route/element/RouteTemplateElement.tsx
index 9d3da4ad..599d1171 100644
--- a/karavan-vscode/webview/integration-designer/route/element/RouteTemplateElement.tsx
+++ b/karavan-vscode/webview/integration-designer/route/element/RouteTemplateElement.tsx
@@ -15,16 +15,16 @@
* limitations under the License.
*/
import React from 'react';
-import '../../karavan.css';
+import '@features/project/designer/karavan.css';
import './RouteTemplateElement.css';
-import {CamelElement} from "@/core/model/IntegrationDefinition";
-import {ChildElement, CamelDefinitionApiExt} from "@/core/api/CamelDefinitionApiExt";
+import {CamelElement} from "@karavan-core/model/IntegrationDefinition";
+import {ChildElement, CamelDefinitionApiExt} from "@karavan-core/api/CamelDefinitionApiExt";
import {useDesignerStore} from "../../DesignerStore";
import {shallow} from "zustand/shallow";
import {useRouteDesignerHook} from "../useRouteDesignerHook";
import {DslElementHeader} from "./DslElementHeader";
import {DslElement} from "./DslElement";
-import {RouteDefinition, RouteTemplateDefinition} from "@/core/model/CamelDefinition";
+import {RouteDefinition, RouteTemplateDefinition} from "@karavan-core/model/CamelDefinition";
interface Props {
step: CamelElement,
diff --git a/karavan-vscode/webview/integration-designer/route/useRouteDesignerHook.tsx b/karavan-vscode/webview/integration-designer/route/useRouteDesignerHook.tsx
index 435e2d4b..5104fdfa 100644
--- a/karavan-vscode/webview/integration-designer/route/useRouteDesignerHook.tsx
+++ b/karavan-vscode/webview/integration-designer/route/useRouteDesignerHook.tsx
@@ -15,9 +15,9 @@
* limitations under the License.
*/
import React from 'react';
-import '../karavan.css';
+import '@features/project/designer/karavan.css';
import {DslMetaModel} from "../utils/DslMetaModel";
-import {CamelUtil} from "@/core/api/CamelUtil";
+import {CamelUtil} from "@karavan-core/api/CamelUtil";
import {
ChoiceDefinition,
FromDefinition,
@@ -27,17 +27,19 @@ import {
MarshalDefinition,
RouteConfigurationDefinition,
RouteDefinition,
+ RouteTemplateDefinition,
SplitDefinition,
UnmarshalDefinition
-} from "@/core/model/CamelDefinition";
-import {CamelElement, MetadataLabels} from "@/core/model/IntegrationDefinition";
-import {CamelDefinitionApiExt} from "@/core/api/CamelDefinitionApiExt";
-import {CamelDefinitionApi} from "@/core/api/CamelDefinitionApi";
+} from "@karavan-core/model/CamelDefinition";
+import {CamelElement, MetadataLabels} from "@karavan-core/model/IntegrationDefinition";
+import {CamelDefinitionApiExt} from "@karavan-core/api/CamelDefinitionApiExt";
+import {CamelDefinitionApi} from "@karavan-core/api/CamelDefinitionApi";
import {EventBus} from "../utils/EventBus";
-import {CamelDisplayUtil} from "@/core/api/CamelDisplayUtil";
+import {CamelDisplayUtil} from "@karavan-core/api/CamelDisplayUtil";
import {useDesignerStore, useIntegrationStore, useSelectorStore} from "../DesignerStore";
import {shallow} from "zustand/shallow";
import {v4 as uuidv4} from 'uuid';
+import {CamelUi} from "@features/project/designer/utils/CamelUi";
export function useRouteDesignerHook() {
@@ -331,11 +333,14 @@ export function useRouteDesignerHook() {
const createRouteTemplate = (dsl: DslMetaModel) => {
const clone = CamelUtil.cloneIntegration(integration);
- const route = CamelDefinitionApi.createRouteDefinition({
- from: new FromDefinition({uri: dsl.uri}),
- nodePrefixId: 'route-' + uuidv4().substring(0, 3)
- });
- const routeTemplate = CamelDefinitionApi.createRouteTemplateDefinition({route: route});
+ const keys = dsl.properties ? Object.keys(dsl.properties) : [];
+ const key = keys.at(0);
+ const routeId = dsl.properties?.[key] + "Route";
+ const templateId = dsl.properties?.[key] + "RouteTemplate";
+ const route = CamelUi.createRouteFromComponent(dsl.uri, dsl.properties, '');
+ route.id = routeId
+ route.nodePrefixId = routeId
+ const routeTemplate = CamelDefinitionApi.createRouteTemplateDefinition({id: templateId, route: route});
const i = CamelDefinitionApiExt.addRouteTemplateToIntegration(clone, routeTemplate);
setIntegration(i, false);
setSelectedStep(routeTemplate);
diff --git a/karavan-vscode/webview/integration-designer/selector/DslCard.tsx b/karavan-vscode/webview/integration-designer/selector/DslCard.tsx
index f0934cf4..ce6a2c15 100644
--- a/karavan-vscode/webview/integration-designer/selector/DslCard.tsx
+++ b/karavan-vscode/webview/integration-designer/selector/DslCard.tsx
@@ -19,13 +19,13 @@ import {Badge, capitalize, Card, CardBody, CardFooter, CardHeader, Content, Form
import './DslSelector.css';
import '../property/property/ComponentPropertyField.css';
import {CamelUi} from "../utils/CamelUi";
-import {DslMetaModel} from "@/integration-designer/utils/DslMetaModel";
-import {KameletApi} from "@/core/api/KameletApi";
-import {ComponentApi} from "@/core/api/ComponentApi";
-import {useSelectorStore} from "@/integration-designer/DesignerStore";
-import {ComponentPropertyField} from "@/integration-designer/property/property/ComponentPropertyField";
-import {ExpressionEditor} from "@/integration-designer/property/expression/ExpressionEditor";
-import {ComponentProperty} from "@/core/model/ComponentModels";
+import {DslMetaModel} from "@features/project/designer/utils/DslMetaModel";
+import {KameletApi} from "@karavan-core/api/KameletApi";
+import {ComponentApi} from "@karavan-core/api/ComponentApi";
+import {useSelectorStore} from "@features/project/designer/DesignerStore";
+import {ComponentPropertyField} from "@features/project/designer/property/property/ComponentPropertyField";
+import {ExpressionEditor} from "@features/project/designer/property/expression/ExpressionEditor";
+import {ComponentProperty} from "@karavan-core/model/ComponentModels";
interface Props {
dsl: DslMetaModel,
diff --git a/karavan-vscode/webview/integration-designer/selector/DslFastCard.tsx b/karavan-vscode/webview/integration-designer/selector/DslFastCard.tsx
index be3d1ae8..2ecd0161 100644
--- a/karavan-vscode/webview/integration-designer/selector/DslFastCard.tsx
+++ b/karavan-vscode/webview/integration-designer/selector/DslFastCard.tsx
@@ -15,13 +15,7 @@
* limitations under the License.
*/
import React from 'react';
-import {
- Button,
- Card,
- CardBody,
- CardHeader,
- Content,
-} from '@patternfly/react-core';
+import {Button, Content,} from '@patternfly/react-core';
import './DslSelector.css';
import {CamelUi} from "../utils/CamelUi";
import {DslMetaModel} from "../utils/DslMetaModel";
diff --git a/karavan-vscode/webview/integration-designer/selector/DslSelector.tsx b/karavan-vscode/webview/integration-designer/selector/DslSelector.tsx
index 8b00d8fa..7337f865 100644
--- a/karavan-vscode/webview/integration-designer/selector/DslSelector.tsx
+++ b/karavan-vscode/webview/integration-designer/selector/DslSelector.tsx
@@ -40,17 +40,17 @@ import {CamelUi} from "../utils/CamelUi";
import {DslMetaModel} from "../utils/DslMetaModel";
import {useSelectorStore} from "../DesignerStore";
import {shallow} from "zustand/shallow";
-import {ComponentApi} from '@/core/api/ComponentApi';
-import {KameletApi} from '@/core/api/KameletApi';
+import {ComponentApi} from '@karavan-core/api/ComponentApi';
+import {KameletApi} from '@karavan-core/api/KameletApi';
import TimesIcon from "@patternfly/react-icons/dist/esm/icons/times-icon";
import {addPreferredElement, deletePreferredElement, getPreferredElements} from "./DslPreferences";
import {DslFastCard} from "./DslFastCard";
import {DslCard} from "./DslCard";
import {useDebounceValue} from 'usehooks-ts';
import {v4 as uuidv4} from "uuid";
-import {toSpecialRouteId} from "@/integration-designer/utils/ValidatorUtils";
-import {FILE_WORDS_SEPARATOR, KARAVAN_DOT_EXTENSION} from "@/core/contants";
-import {useFilesStore} from "@/api/ProjectStore";
+import {toSpecialRouteId} from "@features/project/designer/utils/ValidatorUtils";
+import {FILE_WORDS_SEPARATOR, KARAVAN_DOT_EXTENSION} from "@karavan-core/contants";
+import {useFilesStore} from "@stores/ProjectStore";
import ExclamationCircleIcon from "@patternfly/react-icons/dist/esm/icons/exclamation-circle-icon";
interface Props {
@@ -62,10 +62,10 @@ interface Props {
export function DslSelector(props: Props) {
const [showSelector, showSteps, parentId, parentDsl, setShowSelector, showProperties, selectedDsl,
- selectedPosition, selectedToggles, addSelectedToggle, deleteSelectedToggle, setShowProperties, setSelectedDsl] =
+ selectedPosition, selectedToggles, addSelectedToggle, deleteSelectedToggle, setShowProperties, setSelectedDsl, isRouteTemplate] =
useSelectorStore((s) =>
[s.showSelector, s.showSteps, s.parentId, s.parentDsl, s.setShowSelector, s.showProperties, s.selectedDsl,
- s.selectedPosition, s.selectedToggles, s.addSelectedToggle, s.deleteSelectedToggle, s.setShowProperties, s.setSelectedDsl], shallow)
+ s.selectedPosition, s.selectedToggles, s.addSelectedToggle, s.deleteSelectedToggle, s.setShowProperties, s.setSelectedDsl, s.isRouteTemplate], shallow)
const files = useFilesStore((s) => s.files);
const [fileName, setFileName] = useState<string>();
@@ -105,8 +105,12 @@ export function DslSelector(props: Props) {
function generateRouteFileName(dsl: DslMetaModel): string {
const paramsUri = generateParamUri(dsl);
- const fullUri = `${FILE_WORDS_SEPARATOR}${paramsUri}`
- return toSpecialRouteId(`from${FILE_WORDS_SEPARATOR}${fullUri}`);
+ const fullUri = `${FILE_WORDS_SEPARATOR}${paramsUri}`;
+ if (isRouteTemplate) {
+ return toSpecialRouteId(`${FILE_WORDS_SEPARATOR}${fullUri}-route-template`);
+ } else {
+ return toSpecialRouteId(`${FILE_WORDS_SEPARATOR}${fullUri}`);
+ }
}
useEffect(() => {
diff --git a/karavan-vscode/webview/integration-designer/utils/CamelUi.tsx b/karavan-vscode/webview/integration-designer/utils/CamelUi.tsx
index 398a6796..6d0cf54b 100644
--- a/karavan-vscode/webview/integration-designer/utils/CamelUi.tsx
+++ b/karavan-vscode/webview/integration-designer/utils/CamelUi.tsx
@@ -14,15 +14,15 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-import {KameletApi} from "@/core/api/KameletApi";
-import {KameletModel} from "@/core/model/KameletModels";
+import {KameletApi} from "@karavan-core/api/KameletApi";
+import {KameletModel} from "@karavan-core/model/KameletModels";
import {DslMetaModel} from "./DslMetaModel";
-import {ComponentApi} from "@/core/api/ComponentApi";
-import {CamelMetadataApi} from "@/core/model/CamelMetadata";
-import {CamelUtil} from "@/core/api/CamelUtil";
-import {CamelDefinitionApiExt} from "@/core/api/CamelDefinitionApiExt";
-import {BeanFactoryDefinition, FromDefinition, RouteConfigurationDefinition, RouteDefinition, RouteTemplateDefinition, ToDefinition} from "@/core/model/CamelDefinition";
-import {CamelElement, Integration, IntegrationFile} from "@/core/model/IntegrationDefinition";
+import {ComponentApi} from "@karavan-core/api/ComponentApi";
+import {CamelMetadataApi} from "@karavan-core/model/CamelMetadata";
+import {CamelUtil} from "@karavan-core/api/CamelUtil";
+import {CamelDefinitionApiExt} from "@karavan-core/api/CamelDefinitionApiExt";
+import {BeanFactoryDefinition, FromDefinition, RouteConfigurationDefinition, RouteDefinition, RouteTemplateDefinition, ToDefinition} from "@karavan-core/model/CamelDefinition";
+import {CamelElement, Integration, IntegrationFile} from "@karavan-core/model/IntegrationDefinition";
import {
ActivemqIcon,
AmqpIcon,
@@ -101,15 +101,16 @@ import {
ToIcon,
} from "../icons/EipIcons";
import React, {ReactElement} from "react";
-import {TopologyUtils} from "@/core/api/TopologyUtils";
-import {getIntegrations} from "@/integration-topology/TopologyApi";
+import {TopologyUtils} from "@karavan-core/api/TopologyUtils";
+import {getIntegrations} from "@features/project/project-topology/TopologyApi";
import {toKebabCase, toSpecialRouteId} from "./ValidatorUtils";
-import {ProjectFile} from "@/api/ProjectModels";
-import {CamelDefinitionYaml} from "@/core/api/CamelDefinitionYaml";
+import {ProjectFile} from "@models/ProjectModels";
+import {CamelDefinitionYaml} from "@karavan-core/api/CamelDefinitionYaml";
import {EventBus} from "./EventBus";
-import {CamelDefinitionApi} from "@/core/api/CamelDefinitionApi";
+import {KaravanApi} from "@api/KaravanApi";
+import {CamelDefinitionApi} from "@karavan-core/api/CamelDefinitionApi";
import {capitalize} from "@patternfly/react-core";
-import {FILE_WORDS_SEPARATOR} from "@/core/contants";
+import {FILE_WORDS_SEPARATOR} from "@karavan-core/contants";
const StepElements: string[] = [
"AggregateDefinition",
@@ -273,20 +274,19 @@ export class CamelUi {
static createNewRoute = (projectId:string, componentName: string, parameters: any = {}, expression: string, after:(file: ProjectFile) => void): void => {
try {
const stringWithParams = CamelUi.createFullStringWithParameters(componentName, parameters);
- const name = `from-${stringWithParams}`;
const newRoute = CamelUi.createRouteFromComponent(componentName, parameters, expression);
const newIntegration = Integration.createNew(stringWithParams, 'plain');
newIntegration.spec.flows = [newRoute];
const code = CamelDefinitionYaml.integrationToYaml(newIntegration);
- const fileName = name + '.camel.yaml';
+ const fileName = stringWithParams + '.camel.yaml';
const file = new ProjectFile(fileName, projectId, code, Date.now());
- // KaravanApi.saveProjectFile(file, (result, newFile) => {
- // if (result) {
- // after(newFile);
- // } else {
- // EventBus.sendAlert('Error creating file', 'Error: ' +newFile?.toString());
- // }
- // });
+ KaravanApi.saveProjectFile(file, (result, newFile) => {
+ if (result) {
+ after(newFile);
+ } else {
+ EventBus.sendAlert('Error creating file', 'Error: ' +newFile?.toString());
+ }
+ });
} catch (err: any){
console.error(err)
}
@@ -295,13 +295,13 @@ export class CamelUi {
static createNewFile = (projectId:string, fileName: string, code: string = '', after:(file: ProjectFile) => void): void => {
try {
const file = new ProjectFile(fileName, projectId, code, Date.now());
- // KaravanApi.saveProjectFile(file, (result, newFile) => {
- // if (result) {
- // after(newFile);
- // } else {
- // EventBus.sendAlert('Error creating file', 'Error: ' +newFile?.toString());
- // }
- // });
+ KaravanApi.saveProjectFile(file, (result, newFile) => {
+ if (result) {
+ after(newFile);
+ } else {
+ EventBus.sendAlert('Error creating file', 'Error: ' +newFile?.toString());
+ }
+ });
} catch (err: any){
console.error(err)
}
diff --git a/karavan-vscode/webview/integration-designer/utils/EventBus.ts b/karavan-vscode/webview/integration-designer/utils/EventBus.ts
index b130df33..9fcd7d53 100644
--- a/karavan-vscode/webview/integration-designer/utils/EventBus.ts
+++ b/karavan-vscode/webview/integration-designer/utils/EventBus.ts
@@ -15,7 +15,7 @@
* limitations under the License.
*/
import {Subject} from 'rxjs';
-import {CamelElement, Integration} from "@/core/model/IntegrationDefinition";
+import {CamelElement, Integration} from "@karavan-core/model/IntegrationDefinition";
import {v4 as uuidv4} from "uuid";
export class DslPosition {
@@ -115,7 +115,12 @@ export const EventBus = {
sendCommand: (command: string, data?: any) => commands.next(new Command(command, data)),
onCommand: () => commands.asObservable(),
- sendAlert: (title: string, text: string, variant: 'success' | 'danger' | 'warning' | 'info' | 'custom' = 'success') =>
- alerts.next(new ToastMessage(title, text, variant)),
+ sendAlert: (title: string, text: string | string[], variant: 'success' | 'danger' | 'warning' | 'info' | 'custom' = 'success') => {
+ if (Array.isArray(text)) {
+ text.forEach(line => alerts.next(new ToastMessage(title, line, variant)))
+ } else {
+ alerts.next(new ToastMessage(title, text, variant))
+ }
+ },
onAlert: () => alerts.asObservable(),
}
diff --git a/karavan-vscode/webview/integration-designer/utils/Notification.tsx b/karavan-vscode/webview/integration-designer/utils/Notification.tsx
index 33052697..a8dc05ae 100644
--- a/karavan-vscode/webview/integration-designer/utils/Notification.tsx
+++ b/karavan-vscode/webview/integration-designer/utils/Notification.tsx
@@ -17,7 +17,7 @@
import React, {useEffect, useState} from 'react';
import {Alert, AlertActionCloseButton, AlertGroup,} from '@patternfly/react-core';
-import '../karavan.css';
+import '@features/project/designer/karavan.css';
import {EventBus, ToastMessage} from "./EventBus";
export function Notification () {
diff --git a/karavan-vscode/webview/integration-topology/CustomComponentFactory.tsx b/karavan-vscode/webview/integration-topology/CustomComponentFactory.tsx
index 9e01f4f4..ef7af5bb 100644
--- a/karavan-vscode/webview/integration-topology/CustomComponentFactory.tsx
+++ b/karavan-vscode/webview/integration-topology/CustomComponentFactory.tsx
@@ -34,10 +34,10 @@ import {
withSelection,
withTargetDrag,
} from '@patternfly/react-topology';
-import CustomNode from "./CustomNode";
-import CustomEdge from "./CustomEdge";
-import CustomGroup from "./CustomGroup";
-import {getCustomMenu} from "./GetCustomMenu";
+import CustomGroup from "@features/project/project-topology/CustomGroup";
+import {getCustomMenu} from "@features/project/project-topology/GetCustomMenu";
+import CustomNode from "@features/project/project-topology/CustomNode";
+import CustomEdge from "@features/project/project-topology/CustomEdge";
const CONNECTOR_TARGET_DROP = 'connector-target-drop';
diff --git a/karavan-vscode/webview/integration-topology/CustomEdge.tsx b/karavan-vscode/webview/integration-topology/CustomEdge.tsx
index 9fab2ca1..a516114e 100644
--- a/karavan-vscode/webview/integration-topology/CustomEdge.tsx
+++ b/karavan-vscode/webview/integration-topology/CustomEdge.tsx
@@ -32,7 +32,7 @@ const CustomEdge: React.FC<any> = observer(({ element, ...rest }) => {
endTerminalSize={10}
endTerminalStatus={data?.endTerminalStatus || NodeStatus.default}
tagStatus={data?.endTerminalStatus || NodeStatus.default}
- tag={data.label}
+ tag={data?.label}
{...rest}
/>
)
diff --git a/karavan-vscode/webview/integration-topology/CustomNode.tsx b/karavan-vscode/webview/integration-topology/CustomNode.tsx
index 0d251517..60266fd8 100644
--- a/karavan-vscode/webview/integration-topology/CustomNode.tsx
+++ b/karavan-vscode/webview/integration-topology/CustomNode.tsx
@@ -1,36 +1,36 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
import * as React from 'react';
-import {RegionsIcon} from '@patternfly/react-icons';
-import {DefaultNode, observer, WithContextMenuProps} from '@patternfly/react-topology';
-import {AsyncApiIcon, BeanIcon, getDesignerIcon, OpenApiIcon} from "@/integration-designer/icons/KaravanIcons";
-import {CamelUi} from "@/integration-designer/utils/CamelUi";
-import './topology.css';
-import {RouteDefinition} from "@/core/model/CamelDefinition";
-import {AutoStartupFalseIcon, ErrorHandlerIcon} from "@/integration-designer/icons/OtherIcons";
-import {useTopologyHook} from "./useTopologyHook";
-
-export const COLOR_ORANGE = '#ef9234';
-export const COLOR_BLUE = '#2b9af3';
-export const COLOR_GREEN = '#6ec664';
+import {useRef} from 'react';
+import {LockedIcon, RegionsIcon} from '@patternfly/react-icons';
+import {Decorator, DEFAULT_DECORATOR_RADIUS, DefaultNode, getDefaultShapeDecoratorCenter, observer, TopologyQuadrant, WithContextMenuProps} from '@patternfly/react-topology';
+import {BeanIcon, getDesignerIcon, OpenApiIcon} from "@features/project/designer/icons/KaravanIcons";
+import {CamelUi} from "@features/project/designer/utils/CamelUi";
+import '@features/project/project-topology/topology.css';
+import {RouteDefinition} from "@karavan-core/model/CamelDefinition";
+import {AutoStartupFalseIcon, ErrorHandlerIcon} from "@features/project/designer/icons/OtherIcons";
+import {runInAction} from "mobx";
+import {SvgIcon} from "@shared/icons/SvgIcon";
+import {useTopologyHook} from "@features/project/project-topology/useTopologyHook";
+import {Category, IntentRequestScaleIn, IntentRequestScaleOut} from "@carbon/icons-react";
function getIcon(data: any) {
- if (['route', 'rest', 'routeConfiguration'].includes(data.icon)) {
+ if (['route'].includes(data.icon)) {
+ return (
+ <g transform={`translate(14, 14) scale(2)`} className='icon-wrapper'>
+ <Category/>
+ {data?.generatedFromAsyncApi &&
+ <g transform={`translate(9, -2)`}>
+ {SvgIcon({icon: 'asyncapi', width: 14, height: 14})}
+ </g>
+ }
+ </g>
+ )
+ } else if (['routeConfiguration'].includes(data.icon)) {
+ return (
+ <g transform={`translate(8, 8) scale(0.75)`}>
+ {getDesignerIcon(data.icon)}
+ </g>
+ )
+ } else if (['rest'].includes(data.icon)) {
return (
<g transform={`translate(14, 14)`}>
{getDesignerIcon(data.icon)}
@@ -51,13 +51,31 @@ function getIcon(data: any) {
} else if (data.icon === 'openapi') {
return (
<g transform={`translate(14, 14)`}>
- {OpenApiIcon('', 32, 32)}
+ <OpenApiIcon width={32} height={32} />
</g>
)
} else if (data.icon === 'asyncapi') {
return (
- <g transform={`translate(11, 11)`}>
- {AsyncApiIcon({})}
+ <g transform={`translate(14, 14)`}>
+ {SvgIcon({icon: 'asyncapi', width: 32, height: 32})}
+ </g>
+ )
+ } else if (data.icon === 'send') {
+ return (
+ <g rotate={45} transform={`translate(14, 14) scale(2)`}>
+ <IntentRequestScaleOut style={{fill: "var(--pf-t--global--text--color--subtle)"}}/>
+ <g transform={`translate(12, -2)`}>
+ {SvgIcon({icon: 'asyncapi', width: 6, height: 6})}
+ </g>
+ </g>
+ )
+ } else if (data.icon === 'receive') {
+ return (
+ <g rotate={45} transform={`translate(14, 14) scale(2)`}>
+ <IntentRequestScaleIn style={{fill: "var(--pf-t--global--text--color--subtle)"}}/>
+ <g transform={`translate(12, -2)`}>
+ {SvgIcon({icon: 'asyncapi', width: 6, height: 6})}
+ </g>
</g>
)
}
@@ -67,7 +85,7 @@ function getIcon(data: any) {
function isDisable(data: any) {
if ((data && data?.step?.dslName === 'RouteDefinition')) {
const route: RouteDefinition = data?.step;
- const autoStartup = route?.autoStartup === false;
+ const autoStartup = route?.autoStartup === false;
return autoStartup;
} else if (data?.type === 'step' && data?.outgoing && data?.disabled) {
return true;
@@ -76,10 +94,11 @@ function isDisable(data: any) {
}
function getAttachments(data: any) {
+ const showStats = data?.showStats;
if (data && data?.step?.dslName === 'RouteDefinition') {
const route: RouteDefinition = data?.step;
const routeId = route?.id;
- const errorHandler = route?.errorHandler !== undefined;
+ const errorHandler = route?.errorHandler !== undefined;
return (
<g>
<g className="pf-topology__node__label__badge auto-start" transform="translate(-4, -4)">
@@ -99,42 +118,60 @@ function getAttachments(data: any) {
}
}
-const CustomNode: React.FC<any & WithContextMenuProps> = observer(({element, onContextMenu, contextMenuOpen, ...rest}) => {
- const {selectFile} = useTopologyHook(undefined);
-
+const CustomNode: React.FC<any & WithContextMenuProps> = observer(({element, onContextMenu, contextMenuOpen, selected, ...rest}) => {
+ const {selectFile, project} = useTopologyHook(undefined);
+ const decoratorRef = useRef(null);
const data = element.getData();
- const badge: string = ['API', 'RT'].includes(data.badge) ? data.badge : data.badge?.substring(0, 1).toUpperCase();
+ const badge: string = ['API', 'RT', 'TR'].includes(data.badge) ? data.badge : data.badge?.substring(0, 1).toUpperCase();
let colorClass = 'route';
+ let label = element.getLabel();
if (badge === 'C') {
colorClass = 'component'
} else if (badge === 'K') {
colorClass = 'kamelet';
+ label = element.getLabel()?.replace('kamelet:', '');
}
- const label: string = badge === 'K' ? element.getLabel().replace('kamelet:', '') : element.getLabel();
if (label?.length > 30) {
- element.setLabel(label?.substring(0, 30) + '...');
+ runInAction(() => {
+ element.setLabel(label?.substring(0, 30) + '...');
+ });
}
const disableClass = isDisable(data) ? 'disable-node' : '';
+ const { x, y } = getDefaultShapeDecoratorCenter("lowerRight" as TopologyQuadrant, element);
+
+ const decorator = (
+ <Decorator
+ radius={DEFAULT_DECORATOR_RADIUS}
+ showBackground
+ className="gen-route-decorator"
+ icon= {<LockedIcon width={14}/>}
+ x={x - DEFAULT_DECORATOR_RADIUS / 2}
+ y={y - DEFAULT_DECORATOR_RADIUS / 2}
+ innerRef={decoratorRef}
+ />
+ );
+
return (
<g onDoubleClick={event => {
event.stopPropagation();
selectFile(data.fileName)
}}>
- <DefaultNode
- showStatusDecorator
- className={"common-node common-node-" + badge + " topology-color-" + colorClass + " " + disableClass}
- scaleLabel={true}
- element={element}
- onContextMenu={onContextMenu}
- contextMenuOpen={contextMenuOpen}
- attachments={getAttachments(data)}
- hideContextMenuKebab={false}
- {...rest}
- on
- >
- {getIcon(data)}
- </DefaultNode>
+ <DefaultNode
+ showStatusDecorator
+ className={"common-node common-node-" + badge + " topology-color-" + colorClass + " " + disableClass}
+ scaleLabel={true}
+ element={element}
+ onContextMenu={onContextMenu}
+ contextMenuOpen={contextMenuOpen}
+ attachments={getAttachments(data)}
+ hideContextMenuKebab={false}
+ labelIconPadding={1}
+ label={label}
+ {...rest}
+ >
+ {getIcon(data)}
+ </DefaultNode>
</g>
)
})
diff --git a/karavan-vscode/webview/integration-topology/GetCustomMenu.tsx b/karavan-vscode/webview/integration-topology/GetCustomMenu.tsx
index 01bc9dd9..d8efab26 100644
--- a/karavan-vscode/webview/integration-topology/GetCustomMenu.tsx
+++ b/karavan-vscode/webview/integration-topology/GetCustomMenu.tsx
@@ -28,7 +28,33 @@ export function getCustomMenu(element: GraphElement, groupNames: string[]) {
</ContextMenuItem>
);
if (data?.type === 'route') {
-
+ result.push(
+ <ContextMenuItem key={element.getId()}
+ onClick={() => data?.setDisabled?.(data?.fileName, data?.routeId, !(data?.autoStartup))}>
+ {data?.autoStartup === false ? 'Enable' : 'Disable'}
+ </ContextMenuItem>
+ );
+ result.push(
+ <ContextMenuItem key={element.getId() + '-delete'} onClick={() => {
+ data?.deleteRoute?.(data?.fileName, data?.step.id);
+ }}>
+ {'Delete'}
+ </ContextMenuItem>
+ );
+ if (groupNames.length > 0) {
+ result.push(
+ <ContextSubMenuItem label='Groups' key={element.getId() + '-groups'} children={
+ groupNames.filter(g => !g.startsWith("karavan-")).map(groupName => {
+ return (
+ <ContextMenuItem key={`${element.getId()}-groups-${groupName}`} isSelected={data.routeGroup === groupName} onClick={() => data?.setRouteGroup?.(data?.fileName, data?.routeId, groupName)}
+ >
+ {groupName}
+ </ContextMenuItem>
+ )
+ })
+ }/>
+ )
+ }
} else if (data?.type === 'step' && data?.outgoing) {
result.push(
<ContextMenuItem key={element.getId() + '-step'}
diff --git a/karavan-vscode/webview/integration-topology/TopologyApi.tsx b/karavan-vscode/webview/integration-topology/TopologyApi.tsx
index 91084667..f5d87cba 100644
--- a/karavan-vscode/webview/integration-topology/TopologyApi.tsx
+++ b/karavan-vscode/webview/integration-topology/TopologyApi.tsx
@@ -1,24 +1,7 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
import {EdgeAnimationSpeed, EdgeModel, EdgeStyle, Model, NodeModel, NodeShape, NodeStatus,} from '@patternfly/react-topology';
-import {Integration, IntegrationFile} from "@/core/model/IntegrationDefinition";
-import {CamelDefinitionYaml} from "@/core/api/CamelDefinitionYaml";
-import {TopologyUtils} from "@/core/api/TopologyUtils";
+import {Integration, IntegrationFile} from "@karavan-core/model/IntegrationDefinition";
+import {CamelDefinitionYaml} from "@karavan-core/api/CamelDefinitionYaml";
+import {TopologyUtils} from "@karavan-core/api/TopologyUtils";
import {
TopologyAsyncApiNode,
TopologyIncomingNode,
@@ -27,9 +10,9 @@ import {
TopologyRestNode,
TopologyRouteConfigurationNode,
TopologyRouteNode
-} from "@/core/model/TopologyDefinition";
-import {INTERNAL_COMPONENTS} from "@/core/api/ComponentApi";
-import {EventBus} from "@/integration-designer/utils/EventBus";
+} from "@karavan-core/model/TopologyDefinition";
+import {INTERNAL_COMPONENTS} from "@karavan-core/api/ComponentApi";
+import {EventBus} from "@features/project/designer/utils/EventBus";
const NODE_DIAMETER_ROUTE = 60;
const NODE_DIAMETER_INOUT = NODE_DIAMETER_ROUTE / 1.5;
@@ -53,10 +36,10 @@ export function getIncomingNodes(tins: TopologyIncomingNode[]): NodeModel[] {
return {
id: tin.id,
type: 'node',
- label: tin.title,
+ label: getUriLabel(tin.uniqueUri),
width: NODE_DIAMETER_INOUT,
height: NODE_DIAMETER_INOUT,
- shape: NodeShape.ellipse,
+ shape: NodeShape.circle,
status: NodeStatus.default,
data: {
isAlternate: false,
@@ -70,8 +53,9 @@ export function getIncomingNodes(tins: TopologyIncomingNode[]): NodeModel[] {
});
}
-export function getRoutes(tins: TopologyRouteNode[]): NodeModel[] {
+export function getRoutes(tins: TopologyRouteNode[], tasyncapis: TopologyAsyncApiNode, showStats?: boolean): NodeModel[] {
return tins.map(tin => {
+ const oper = tasyncapis?.operations?.find(o => o.operationId === tin.routeId)
const node: NodeModel = {
id: tin.id,
type: 'node',
@@ -82,7 +66,7 @@ export function getRoutes(tins: TopologyRouteNode[]): NodeModel[] {
status: NodeStatus.default,
data: {
isAlternate: false,
- badge: tin.templateId !== undefined ? 'RT' : 'R',
+ badge: (tin.templateId !== undefined ? 'RT' : 'R'),
type: 'route',
icon: 'route',
step: tin.route,
@@ -91,7 +75,9 @@ export function getRoutes(tins: TopologyRouteNode[]): NodeModel[] {
fileName: tin.fileName,
templateId: tin.templateId,
templateTitle: tin.templateTitle,
- autoStartup: tin.route.autoStartup !== false
+ generatedFromAsyncApi: oper?.operationId === tin.routeId,
+ autoStartup: tin.route.autoStartup !== false,
+ showStats: showStats,
}
}
return node;
@@ -104,9 +90,9 @@ export function getRouteConfigurations(trcs: TopologyRouteConfigurationNode[]):
id: tin.id,
type: 'node',
label: tin.title,
- width: NODE_DIAMETER_ROUTE,
- height: NODE_DIAMETER_ROUTE,
- shape: NodeShape.rect,
+ width: NODE_DIAMETER_INOUT,
+ height: NODE_DIAMETER_INOUT,
+ shape: NodeShape.octagon,
status: NodeStatus.default,
data: {
isAlternate: false,
@@ -126,10 +112,10 @@ export function getOutgoingNodes(tons: TopologyOutgoingNode[]): NodeModel[] {
const node: NodeModel = {
id: tin.id,
type: 'node',
- label: tin.title,
+ label: getUriLabel(tin.uniqueUri),
width: NODE_DIAMETER_INOUT,
height: NODE_DIAMETER_INOUT,
- shape: NodeShape.ellipse,
+ shape: NodeShape.circle,
status: NodeStatus.default,
data: {
isAlternate: false,
@@ -205,6 +191,12 @@ export function getExternalEdges(tons: TopologyOutgoingNode[], tins: TopologyInc
return result;
}
+function getUriLabel(uniqueUri: string) {
+ const parts = uniqueUri.split('=');
+ const name = parts[1];
+ return `${name}`
+}
+
export function getUniqueUriNodes(tons: TopologyOutgoingNode[], tins: TopologyIncomingNode[], troutes: TopologyRouteNode[]): NodeModel[] {
const result: Map<string, NodeModel> = new Map();
@@ -214,7 +206,7 @@ export function getUniqueUriNodes(tons: TopologyOutgoingNode[], tins: TopologyIn
const node: NodeModel = result.get(uniqueUri) ?? {
id: uniqueUri,
type: 'node',
- label: '',
+ label: getUriLabel(uniqueUri),
width: NODE_DIAMETER_INOUT,
height: NODE_DIAMETER_INOUT,
shape: NodeShape.circle,
@@ -226,6 +218,7 @@ export function getUniqueUriNodes(tons: TopologyOutgoingNode[], tins: TopologyIn
badge: ton.connectorType,
step: ton.step,
fileName: ton.fileName,
+ uniqueUri: uniqueUri,
outgoing: true,
incomingIds: [],
outgoingIds: [],
@@ -251,12 +244,13 @@ export function getUniqueUriNodes(tons: TopologyOutgoingNode[], tins: TopologyIn
const node: NodeModel = result.get(uniqueUri) ?? {
id: uniqueUri,
type: 'node',
- label: '',
+ label: getUriLabel(uniqueUri),
width: NODE_DIAMETER_INOUT,
height: NODE_DIAMETER_INOUT,
shape: NodeShape.circle,
status: NodeStatus.default,
data: {
+ uniqueUri: uniqueUri,
isAlternate: false,
icon: 'element',
type: 'step',
@@ -343,7 +337,7 @@ export function getRestNodes(tins: TopologyRestNode[]): NodeModel[] {
});
}
-export function getOpenApiNodes(topenapis: TopologyOpenApiNode[]): NodeModel[] {
+export function getOpenApiNodes(topenapis: TopologyOpenApiNode[], showStats?: boolean): NodeModel[] {
return topenapis.map(topenapi => {
return {
id: topenapi.fileName,
@@ -361,40 +355,33 @@ export function getOpenApiNodes(topenapis: TopologyOpenApiNode[]): NodeModel[] {
// step: tin.rest,
fileName: topenapi.fileName,
secondaryLabel: topenapi.title,
- }
- }
- });
-}
-export function getAsyncApiNodes(tasyncapis: TopologyAsyncApiNode[]): NodeModel[] {
- return tasyncapis.map(tasyncapi => {
- return {
- id: tasyncapi.fileName,
- type: 'node',
- label: tasyncapi.title,
- width: NODE_DIAMETER_ROUTE,
- height: NODE_DIAMETER_ROUTE,
- shape: NodeShape.hexagon,
- status: NodeStatus.default,
- data: {
- isAlternate: false,
- badge: 'AsyncAPI',
- icon: 'asyncapi',
- type: 'asyncapi',
- // step: tin.rest,
- fileName: tasyncapi.fileName,
- secondaryLabel: tasyncapi.title,
+ showStats: showStats,
}
}
});
}
-export function getOpenApiEdges(topenapis: TopologyOpenApiNode[], tins: TopologyIncomingNode[]): EdgeModel[] {
+
+export function getOpenApiEdges(topenapis: TopologyOpenApiNode[], tins: TopologyIncomingNode[], trcs: TopologyRestNode[]): EdgeModel[] {
const result: EdgeModel[] = [];
topenapis.forEach(topenapi => {
+
+ trcs.filter(t => t.rest?.openApi !== undefined).forEach(trc => {
+ const edgeRest: EdgeModel = {
+ id: 'rest-openapi-' + topenapi.fileName + '-' + trc.id,
+ type: 'edge',
+ source: trc.id,
+ target: topenapi.fileName,
+ edgeStyle: EdgeStyle.solid,
+ animationSpeed: EdgeAnimationSpeed.none
+ }
+ result.push(edgeRest);
+ })
+
topenapi.operations.filter(o => o.operationId?.length > 0)
.forEach((operation, index, array) => {
const target = TopologyUtils.getRouteIdByUri(tins, 'direct:' + operation.operationId);
- const node: EdgeModel = {
+ const edge: EdgeModel = {
id: 'incoming-' + operation.path + '-' + operation.method + '-' + index,
type: 'edge',
source: topenapi.fileName,
@@ -405,9 +392,10 @@ export function getOpenApiEdges(topenapis: TopologyOpenApiNode[], tins: Topology
label: `${operation.method} ${operation.path} `
}
}
- if (target) result.push(node);
+ if (target) result.push(edge);
})
});
+
return result;
}
@@ -454,11 +442,10 @@ export function getInternalEdges(tons: TopologyOutgoingNode[], tins: TopologyInc
}
if (target) result.push(node);
} else {
- const uri: string = (ton.step as any).uri;
+ const uri: string = step.uri;
const component = uri?.split(":")?.[0];
+ const name = step.parameters.name || step.parameters.address;
if (INTERNAL_COMPONENTS.includes(component)) {
- const step = (ton.step as any);
- const name = step.parameters.name || step.parameters.address;
const target = TopologyUtils.getRouteIdByUriAndName(tins, uri, name);
const node: EdgeModel = {
id: 'internal-' + ton.id + '-' + index,
@@ -478,26 +465,18 @@ export function getInternalEdges(tons: TopologyOutgoingNode[], tins: TopologyInc
return result;
}
-export function getSimpleModel(files: IntegrationFile[], showGroups: boolean, openApiJson?: string, asyncApiJson?: string): Model {
- return getModel(files, showGroups, (fileName: string) => {
- }, (fileName, elementId, disabled) => {
- }, (fileName, routeId) => {
- }, (fileName, routeId, groupName) => {
- }, openApiJson, asyncApiJson)
-}
-
-export function getModel(files: IntegrationFile[], showGroups: boolean,
+export function getModel(projectId: string, files: IntegrationFile[], showGroups: boolean,
selectFile: (fileName: string) => void,
setDisabled: (fileName: string, elementId: string, disabled: boolean) => void,
deleteRoute: (fileName: string, routeId: string) => void,
setRouteGroup: (fileName: string, routeId: string, groupName: string) => void,
- openApiJson?: string, asyncApiJson?: string): Model {
+ openApiJson?: string, asyncApiJson?: string, showStats?: boolean): Model {
+ const tasyncapis = asyncApiJson ? [TopologyUtils.findTopologyAsyncApiNodes(asyncApiJson, projectId)] : [];
const integrations = getIntegrations(files);
- const tins = TopologyUtils.findTopologyIncomingNodes(integrations);
const troutes = TopologyUtils.findTopologyRouteNodes(integrations);
- const tons = TopologyUtils.findTopologyRouteOutgoingNodes(integrations);
+ const tins: any[] = TopologyUtils.findTopologyRoutesIncomingNodes(troutes);
+ const tons: any[]= TopologyUtils.findTopologyRoutesOutgoingNodes(troutes);
const topenapis = openApiJson ? [TopologyUtils.findTopologyOpenApiNodes(openApiJson)] : [];
- const tasyncapis = asyncApiJson ? [TopologyUtils.findTopologyAsyncApiNodes(asyncApiJson)] : [];
const trestns = TopologyUtils.findTopologyRestNodes(integrations) || [];
@@ -507,9 +486,9 @@ export function getModel(files: IntegrationFile[], showGroups: boolean,
const nodes: NodeModel[] = [];
nodes.push(...getRestNodes(trestns))
- nodes.push(...getOpenApiNodes(topenapis))
- nodes.push(...getAsyncApiNodes(tasyncapis))
- nodes.push(...getRoutes(troutes))
+ nodes.push(...getOpenApiNodes(topenapis, showStats))
+ // nodes.push(...getAsyncApiNodes(tasyncapis))
+ nodes.push(...getRoutes(troutes, tasyncapis?.at(0), showStats))
nodes.push(...getRouteConfigurations(trcs))
const uriNodes = getUniqueUriNodes(tons, tins, troutes);
if (showGroups) {
@@ -529,7 +508,8 @@ export function getModel(files: IntegrationFile[], showGroups: boolean,
edges.push(...uriEdges);
}
edges.push(...getRestEdges(trestns, tins));
- edges.push(...getOpenApiEdges(topenapis, tins));
+ edges.push(...getOpenApiEdges(topenapis, tins, trestns));
+ // edges.push(...getAsyncApiEdges(tasyncapis));
edges.push(...getInternalEdges(tons, tins));
edges.push(...getInternalEdges(trcons, tins));
@@ -555,7 +535,20 @@ export function getModel(files: IntegrationFile[], showGroups: boolean,
})
}
+ const asyncReceive: string[] = [];
+ const asyncSend: string[] = [];
+ // tasyncapis.forEach((asyn, i) => {
+ // asyn.operations.forEach((operation) => {
+ // if (operation.action === "send") {
+ // asyncSend.push(`asyncapi-operation-${operation.operationId}`);
+ // } else {
+ // asyncReceive.push(`asyncapi-operation-${operation.operationId}`);
+ // }
+ // })
+ // });
+
const children1 = [
+ ...asyncReceive,
...tins.filter(i => i.type === 'external').map(i => i.id),
...(!hasOpenApi ? trestns.map(i => i.id) : []),
];
@@ -570,7 +563,10 @@ export function getModel(files: IntegrationFile[], showGroups: boolean,
}
})
- const children2 = [...tons.filter(i => i.type === 'external').map(i => i.id)];
+ const children2 = [
+ ...asyncSend,
+ ...tons.filter(i => i.type === 'external').map(i => i.id)
+ ];
groups.push({
id: 'karavan-producer-group',
children: children2,
@@ -581,6 +577,7 @@ export function getModel(files: IntegrationFile[], showGroups: boolean,
padding: 20,
},
})
+
} else {
// edges.push(...externalEdges);
}
@@ -603,7 +600,7 @@ export function getModel(files: IntegrationFile[], showGroups: boolean,
// routeGroups.set(groupName, children);
// })
- Array.from(routeGroups.keys()).forEach(groupName => {
+ routeGroups.keys().forEach(groupName => {
groups.push({
id: groupName,
children: routeGroups.get(groupName) ?? [],
@@ -633,7 +630,7 @@ export function getModel(files: IntegrationFile[], showGroups: boolean,
// children: externalGroups.get(groupName) ?? [],
// type: 'group',
// group: true,
- // label: '',
+ //
// style: {
// padding: 20,
// },
diff --git a/karavan-vscode/webview/integration-topology/TopologyBeans.tsx b/karavan-vscode/webview/integration-topology/TopologyBeans.tsx
index 8f2acad3..e5bf40f2 100644
--- a/karavan-vscode/webview/integration-topology/TopologyBeans.tsx
+++ b/karavan-vscode/webview/integration-topology/TopologyBeans.tsx
@@ -17,21 +17,15 @@
import * as React from 'react';
import './TopologyBeans.css';
-import {
- Button,
- Card,
- CardBody,
- CardTitle,
- Label,
-} from "@patternfly/react-core";
-import {TopologyUtils} from "@/core/api/TopologyUtils";
-import {useFilesStore} from "@/api/ProjectStore";
+import {Button, Card, CardBody, CardTitle, Label,} from "@patternfly/react-core";
+import {TopologyUtils} from "@karavan-core/api/TopologyUtils";
+import {useFilesStore} from "@stores/ProjectStore";
import {shallow} from "zustand/shallow";
-import {IntegrationFile} from "@/core/model/IntegrationDefinition";
+import {IntegrationFile} from "@karavan-core/model/IntegrationDefinition";
import {getIntegrations} from "./TopologyApi";
import JavaIcon from "@patternfly/react-icons/dist/js/icons/java-icon";
import {useTopologyHook} from "./useTopologyHook";
-import {camelIcon, CamelUi} from "@/integration-designer/utils/CamelUi";
+import {camelIcon, CamelUi} from "@features/project/designer/utils/CamelUi";
export function TopologyBeans() {
diff --git a/karavan-vscode/webview/integration-topology/TopologyElkLayout.ts b/karavan-vscode/webview/integration-topology/TopologyElkLayout.ts
new file mode 100644
index 00000000..972d3a0e
--- /dev/null
+++ b/karavan-vscode/webview/integration-topology/TopologyElkLayout.ts
@@ -0,0 +1,222 @@
+import {BaseLayout, Graph, GRAPH_LAYOUT_END_EVENT, Layout, LayoutOptions, Node} from '@patternfly/react-topology';
+import ELK, {ElkExtendedEdge, ElkNode} from 'elkjs/lib/elk.bundled';
+import Point from "@patternfly/react-topology/src/geom/Point";
+import Dimensions from "@patternfly/react-topology/src/geom/Dimensions";
+
+// --- CONFIGURATION ---
+const getRootOptions = (): any => {
+ return {
+ 'elk.algorithm': 'layered',
+ 'elk.direction': 'DOWN',
+ "elk.edgeRouting" : "ORTHOGONAL",
+ "elk.separateConnectedComponents": "true",
+ 'elk.spacing.nodeNode': '75',
+ 'elk.spacing.edgeNode': '75',
+ 'elk.portConstraints': 'FREE',
+ "elk.hierarchyHandling": "INCLUDE_CHILDREN",
+
+ "elk.layered.thoroughness": "100",
+ 'elk.layered.nodePlacement.bk.fixedAlignment': 'BALANCED',
+ 'elk.layered.unnecessaryBendpoints': 'false',
+ 'elk.layered.spacing.edgeEdgeBetweenLayers': '20',
+ // 'elk.layered.layering.strategy': 'NETWORK_SIMPLEX',
+ 'elk.layered.nodePlacement.strategy': 'NETWORK_SIMPLEX',
+ "elk.layered.compaction.postCompaction.strategy": "EDGE_LENGTH",
+ // "elk.layered.crossingMinimization.strategy": "LAYER_SWEEP",
+ // "elk.layered.crossingMinimization.greedySwitch.type": "TWO_SIDED",
+ 'elk.layered.spacing.nodeNodeBetweenLayers': '60',
+ 'elk.layered.spacing.edgeNodeBetweenLayers': '20',
+ 'elk.layered.cycleBreaking.strategy': 'GREEDY',
+ };
+};
+
+const GROUP_OPTIONS = {
+ 'elk.padding': '[top=40,left=40,bottom=40,right=40]',
+ 'elk.portConstraints': 'FREE',
+ "elk.layered.crossingMinimization.strategy": "LAYER_SWEEP",
+ 'elk.layered.layering.strategy': 'NETWORK_SIMPLEX',
+ 'elk.layered.nodePlacement.strategy': 'NETWORK_SIMPLEX',
+};
+
+const NODE_OPTIONS = {
+ 'elk.portConstraints': 'FREE',
+};
+
+const EDGE_OPTIONS = {
+ 'elk.priority': '10',
+ 'elk.layered.priority.direction': '0',
+ 'elk.layered.priority.straightness': '2000',
+ 'elk.edgeRouting': 'ORTHOGONAL',
+};
+
+
+export class TopologyElkLayout extends BaseLayout implements Layout {
+ private elk: InstanceType<typeof ELK>;
+
+ constructor(graph: Graph, options?: Partial<LayoutOptions>) {
+ super(graph, options);
+ this.elk = new ELK();
+ }
+
+ protected startLayout(graph: Graph): void {
+ const elkGraph = this.createElkGraph(graph);
+
+ this.elk.layout(elkGraph)
+ .then((layoutedGraph) => {
+ this.applyLayout(layoutedGraph);
+ // Optional: Update edge bend points if your PF version supports it
+ // this.updateEdgeSegments(layoutedGraph, graph);
+
+ graph.getController().fireEvent(GRAPH_LAYOUT_END_EVENT, { graph });
+ })
+ .catch((err) => console.error('ELK Layout Failed:', err));
+ }
+
+ // --- MAPPING INPUT ---
+
+ private createElkGraph(graph: Graph): ElkNode {
+ return {
+ id: 'root',
+ layoutOptions: getRootOptions(),
+ children: graph.getNodes().map(node => this.mapNodeToElk(node)),
+ edges: this.mapEdgesToElk(graph)
+ };
+ }
+
+ private estimatedLabelWidth(text: string) {
+ // ~7px per char + padding; adjust to your font
+ return Math.min(120, Math.max(20, 64 + text.length * 7));
+ }
+
+ private mapNodeToElk(node: Node): ElkNode {
+ const children = node.getNodes().sort((a, b) => Math.random() - 0.5);
+ const isGroup = node.isGroup();
+ const dims = node.getDimensions();
+
+ const ICON_W = 75; // your circle/icon area
+
+ const label = node.getLabel?.() ?? node.getId(); // however you get label
+ const width = Math.max(ICON_W, this.estimatedLabelWidth(label));
+ const height = Math.max(60, dims.height || 60);
+
+ if (!isGroup) {
+ return {
+ id: node.getId(),
+ width: width,
+ height: height,
+ layoutOptions: NODE_OPTIONS,
+ };
+ } else {
+ return {
+ id: node.getId(),
+ children: children.map(child => this.mapNodeToElk(child)),
+ layoutOptions: GROUP_OPTIONS
+ };
+ }
+ }
+
+ private mapEdgesToElk(graph: Graph): ElkExtendedEdge[] {
+ // We map ALL edges at the root.
+ // Since we use 'INCLUDE_CHILDREN', ELK handles the hierarchy routing automatically.
+ return graph.getEdges().map(edge => {
+ const s = edge.getSource().getId();
+ const t = edge.getTarget().getId();
+ return ({
+ id: edge.getId(),
+ sources: [`${s}`],
+ targets: [`${t}`],
+ layoutOptions: EDGE_OPTIONS,
+ });
+ });
+ }
+
+ // --- APPLYING OUTPUT ---
+
+ private getNode(id: string): Node | undefined {
+ // Helper to find node even if nested deep in groups
+ return this.graph.getNodes().find(n => n.getId() === id)
+ || this.graph.getNodes().flatMap(n => n.getNodes()).find(n => n.getId() === id);
+ }
+
+ private applyLayout(elkNode: ElkNode, parentX = 0, parentY = 0) {
+ if (elkNode.id !== 'root') {
+ const pfNode = this.getNode(elkNode.id);
+ if (pfNode) {
+ // ELK coordinates are relative to parent.
+ // PF usually wants absolute, so we accumulate parent offsets.
+ const absoluteX = (elkNode.x ?? 0) + parentX;
+ const absoluteY = (elkNode.y ?? 0) + parentY;
+
+ pfNode.setPosition(new Point(absoluteX, absoluteY));
+
+ if (pfNode.isGroup() && elkNode.width && elkNode.height) {
+ pfNode.setDimensions(new Dimensions(elkNode.width, elkNode.height));
+ }
+ }
+ }
+
+ // Recurse with current node's absolute position as the new parent offset
+ if (elkNode.children) {
+ const currentX = (elkNode.id === 'root') ? 0 : (elkNode.x ?? 0) + parentX;
+ const currentY = (elkNode.id === 'root') ? 0 : (elkNode.y ?? 0) + parentY;
+
+ elkNode.children.forEach((child) => {
+ this.applyLayout(child, currentX, currentY);
+ });
+ }
+ }
+
+ /**
+ * Optional: ELK calculates complex routes to avoid nodes.
+ * If we don't apply these bend points, the frontend just draws a straight line
+ * between the new node positions, ignoring ELK's hard work.
+ */
+ private updateEdgeSegments(elkNode: ElkNode, graph: Graph) {
+ const allElkEdges: ElkExtendedEdge[] = [];
+ const collectEdges = (node: ElkNode) => {
+ if (node.edges) allElkEdges.push(...node.edges);
+ if (node.children) node.children.forEach(collectEdges);
+ };
+ collectEdges(elkNode);
+
+ allElkEdges.forEach(elkEdge => {
+ const pfEdge = graph.getEdges().find(e => e.getId() === elkEdge.id);
+ if (!pfEdge || !elkEdge.sections || elkEdge.sections.length === 0) return;
+
+ const section = elkEdge.sections[0];
+ const bendPoints = section.bendPoints || [];
+
+ if (bendPoints.length > 0) {
+ // Check if these bendpoints actually create a deviation from a straight line
+ // This prevents "jittery" lines that are 99% straight
+ const start = section.startPoint;
+ const end = section.endPoint;
+
+ const isMeaningful = bendPoints.some(bp => {
+ const distToStraightLine = this.pointToLineDistance(bp, start, end);
+ return distToStraightLine > 2; // Threshold in pixels
+ });
+
+ if (isMeaningful) {
+ // Map ELK points to PatternFly Points
+ const bends = bendPoints.map(bp => new Point(bp.x, bp.y));
+ pfEdge.setBendpoints(bends);
+ } else {
+ pfEdge.setBendpoints([]);
+ }
+ } else {
+ pfEdge.setBendpoints([]);
+ }
+ });
+ }
+
+// Helper to detect if a bendpoint is just a point on a straight line
+ private pointToLineDistance(p: {x: number, y: number}, a: {x: number, y: number}, b: {x: number, y: number}) {
+ const numerator = Math.abs((b.y - a.y) * p.x - (b.x - a.x) * p.y + b.x * a.y - b.y * a.x);
+ const denominator = Math.sqrt(Math.pow(b.y - a.y, 2) + Math.pow(b.x - a.x, 2));
+ return denominator === 0 ? 0 : numerator / denominator;
+ }
+
+ protected updateLayout(): void {}
+ protected stopSimulation(): void {}
+}
\ No newline at end of file
diff --git a/karavan-vscode/webview/integration-topology/TopologyLegend.tsx b/karavan-vscode/webview/integration-topology/TopologyLegend.tsx
index 319a4793..eaaaccb3 100644
--- a/karavan-vscode/webview/integration-topology/TopologyLegend.tsx
+++ b/karavan-vscode/webview/integration-topology/TopologyLegend.tsx
@@ -17,13 +17,8 @@
import * as React from 'react';
import './TopologyLegend.css';
-import {
- Card,
- CardBody,
- CardTitle,
- Label,
-} from "@patternfly/react-core";
-import {getDesignerIcon, OpenApiIcon} from "@/integration-designer/icons/KaravanIcons";
+import {Card, CardBody, CardTitle, Label,} from "@patternfly/react-core";
+import {getDesignerIcon, OpenApiIcon} from "@features/project/designer/icons/KaravanIcons";
export function TopologyLegend () {
@@ -32,7 +27,7 @@ export function TopologyLegend () {
<CardTitle>Legend</CardTitle>
<CardBody className='card-body'>
<Label className='orange' icon={<div style={{display: 'flex'}}>{getDesignerIcon('route')}</div>}>Route</Label>
- <Label className='orange' icon={<div style={{display: 'flex', gap: '6px'}}>{OpenApiIcon()}</div>}>OpenAPI</Label>
+ <Label className='orange' icon={<div style={{display: 'flex', gap: '6px'}}><OpenApiIcon/></div>}>OpenAPI</Label>
<Label className='orange' icon={<div style={{display: 'flex'}}>{getDesignerIcon('rest')}</div>}>REST</Label>
<Label className='orange route-template'>Route Template</Label>
<Label className='blue'>Component</Label>
diff --git a/karavan-vscode/webview/integration-topology/TopologyStore.ts b/karavan-vscode/webview/integration-topology/TopologyStore.ts
deleted file mode 100644
index 1ab486bd..00000000
--- a/karavan-vscode/webview/integration-topology/TopologyStore.ts
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import {ErrorEventBus} from "@/api/ErrorEventBus";
-import {ProjectFile} from "@/api/ProjectModels";
-import {useFilesStore, useProjectStore} from "@/api/ProjectStore";
-import {createWithEqualityFn} from "zustand/traditional";
-
-type Position = { x: number; y: number };
-type ModelMap = Map<string, Position>;
-export type LayoutManager = 'auto' | 'manual'
-const SAVE_DEBOUNCE_MS = 500;
-
-function debounce<F extends (...args: any[]) => any>(func: F, waitFor: number) {
- let timeout: ReturnType<typeof setTimeout> | null = null;
-
- const debounced = (...args: Parameters<F>) => {
- if (timeout !== null) {
- clearTimeout(timeout);
- }
- timeout = setTimeout(() => func(...args), waitFor);
- };
-
- // Add a cancel method to the debounced function
- debounced.cancel = () => {
- if (timeout !== null) {
- clearTimeout(timeout);
- }
- };
-
- return debounced;
-}
-
-interface TopologyState {
- fileName?: string
- setFileName: (fileName?: string) => void
- modelMap: ModelMap;
- setModelMap: (modelMap: ModelMap) => Promise<void>;
- setNodePosition: (id: string, position: Position) => void;
- saveNow: () => void; // Expose a way to save immediately if needed
- showGroups: boolean
- setShowGroups: (showGroups: boolean) => void
- straightEdges: boolean
- setStraightEdges: (straightEdges: boolean) => void
- showBeans: boolean
- setShowBeans: (showBeans: boolean) => void
- showLegend: boolean
- setShowLegend: (showLegend: boolean) => void
- layout: LayoutManager
- setLayout: (layout: LayoutManager) => void
-}
-
-export const useTopologyStore = createWithEqualityFn<TopologyState>((set, get) => {
-
- const saveTopologyApi = (mapToSave: ModelMap): Promise<void> => {
- return new Promise((resolve, reject) => {
- const projectId = useProjectStore.getState().project.projectId;
- const files = useFilesStore.getState().files;
- let file = files.find(f => f.name === 'topology.json');
-
- const obj = Object.fromEntries(mapToSave.entries());
- const code = JSON.stringify(obj, null, 2);
-
- const onSuccess = (newFile: ProjectFile) => {
- // useFilesStore.getState().upsertFile(newFile);
- resolve();
- };
-
- const onError = (errorData: any) => {
- ErrorEventBus.sendApiError(errorData);
- reject(new Error("Failed to save topology file."));
- };
-
- });
- };
-
- const debouncedSave = debounce(() => {
- const currentMap = get().modelMap;
- if (currentMap.size > 0) {
- saveTopologyApi(currentMap);
- }
- }, SAVE_DEBOUNCE_MS);
-
-
- return {
- setFileName: (fileName?: string) => {
- set((state: TopologyState) => {
- return {fileName: fileName};
- });
- },
- modelMap: new Map<string, Position>(),
- setModelMap: async (newModelMap: ModelMap) => {
- set({ modelMap: newModelMap });
- try {
- if (get().layout === 'manual') {
- await saveTopologyApi(newModelMap);
- }
- } catch (error) {
- // Optional: Handle error, e.g., show a notification or revert state
- console.error("Failed to save the new model map.", error);
- }
- },
-
- setNodePosition: (id: string, position: Position) => {
- // Update state immutably for predictable re-renders
- const newModelMap = new Map(get().modelMap);
- newModelMap.set(id, position);
- set({ modelMap: newModelMap });
-
- // Trigger the debounced save
- if (get().layout === 'manual') {
- debouncedSave();
- }
- },
-
- saveNow: () => {
- // You might want to cancel any pending debounced calls first if your debounce lib supports it.
- debouncedSave.cancel(); // Cancel any pending debounced save
- const currentMap = get().modelMap;
- if(currentMap.size > 0) {
- saveTopologyApi(currentMap);
- }
- },
-
- showGroups: false,
- setShowGroups: (showGroups: boolean) => {
- set({showGroups: showGroups});
- },
- straightEdges: true,
- setStraightEdges: (straightEdges: boolean) => {
- set((state: TopologyState) => {
- return {straightEdges: straightEdges};
- });
- },
- showBeans: false,
- setShowBeans: (showBeans: boolean) => {
- set((state: TopologyState) => {
- return {showBeans: showBeans};
- });
- },
- showLegend: false,
- setShowLegend: (showLegend: boolean) => {
- set((state: TopologyState) => {
- return {showLegend: showLegend};
- });
- },
- layout: 'auto',
- setLayout: (layout: LayoutManager) => {
- set((state: TopologyState) => {
- return {layout: layout};
- });
- }
- }
-});
diff --git a/karavan-vscode/webview/integration-topology/TopologyTab.tsx b/karavan-vscode/webview/integration-topology/TopologyTab.tsx
index fcb659bf..9d100619 100644
--- a/karavan-vscode/webview/integration-topology/TopologyTab.tsx
+++ b/karavan-vscode/webview/integration-topology/TopologyTab.tsx
@@ -33,37 +33,38 @@ import {
VisualizationProvider,
VisualizationSurface,
} from '@patternfly/react-topology';
-import {getCustomComponentFactory} from "./CustomComponentFactory";
+import {getCustomComponentFactory} from "@features/project/project-topology/CustomComponentFactory";
import {shallow} from "zustand/shallow";
-import {useTopologyStore} from "./TopologyStore";
-import {useDesignerStore} from "@/integration-designer/DesignerStore";
-import {IntegrationFile} from "@/core/model/IntegrationDefinition";
-import {TopologyBeans} from "./TopologyBeans";
-import {getModel} from "./TopologyApi";
-import {useTopologyHook} from "./useTopologyHook";
-import {TopologyLegend} from "./TopologyLegend";
-import {ModalConfirmation, ModalConfirmationProps} from "@/components/ModalConfirmation";
+import {useTopologyStore} from "@stores/TopologyStore";
+import {useDesignerStore} from "@features/project/designer/DesignerStore";
+import {IntegrationFile} from "@karavan-core/model/IntegrationDefinition";
+import {TopologyBeans} from "@features/project/project-topology/TopologyBeans";
+import {getModel} from "@features/project/project-topology/TopologyApi";
+import {useTopologyHook} from "@features/project/project-topology/useTopologyHook";
+import {TopologyLegend} from "@features/project/project-topology/TopologyLegend";
+import {ModalConfirmation, ModalConfirmationProps} from "@shared/ui/ModalConfirmation";
import {EyeIcon, EyeSlashIcon} from '@patternfly/react-icons';
-import {ArrowDown, GroupObjects, JumpLink, UngroupObjects} from '@carbon/icons-react';
+import {ArrayNumbers, GroupObjects, UngroupObjects} from '@carbon/icons-react';
+import {useFilesStore, useProjectStore} from "@stores/ProjectStore";
import {NODE_POSITIONED_EVENT} from "@patternfly/react-topology/src/types";
-import {TopologyDagreLayout} from "@/integration-topology/graph/TopologyDagreLayout";
-import {ASYNCAPI_FILE_NAME_JSON, OPENAPI_FILE_NAME_JSON} from "@/core/contants";
+import {OPENAPI_FILE_NAME_JSON} from "@karavan-core/contants";
+import {runInAction} from "mobx";
+import {TopologyToolbar} from "@features/project/project-topology/TopologyToolbar";
+import {TopologyElkLayout} from "@features/project/project-topology/TopologyElkLayout";
interface Props {
- files: IntegrationFile[],
- openApiJson?: string
asyncApiJson?: string
- hideToolbar: boolean,
}
export function TopologyTab(props: Props) {
- const { files, hideToolbar } = props;
- const [modelMap, setModelMap, setFileName, layout, showGroups, setShowGroups,
- showBeans, setShowBeans, showLegend, setShowLegend, straightEdges, setStraightEdges] = useTopologyStore((s) =>
- [s.modelMap, s.setModelMap, s.setFileName, s.layout, s.showGroups, s.setShowGroups,
- s.showBeans, s.setShowBeans, s.showLegend, s.setShowLegend, s.straightEdges, s.setStraightEdges]);
+ const {asyncApiJson } = props;
+ const [setFileName, showGroups, setShowGroups, showBeans, setShowBeans, showLegend, setShowLegend]
+ = useTopologyStore((s) => [s.setFileName, s.showGroups, s.setShowGroups, s.showBeans, s.setShowBeans, s.showLegend, s.setShowLegend]);
+ const [showStats, setShowStats] = useTopologyStore((s) => [s.showStats, s.setShowStats]);
const [setSelectedStep] = useDesignerStore((s) => [s.setSelectedStep], shallow)
+ const [files] = useFilesStore((s) => [s.files], shallow);
+ const [project] = useProjectStore((s) => [s.project], shallow);
const [confirmationProps, setConfirmationProps] = useState<ModalConfirmationProps>();
const {selectFile, setDisabled, deleteRoute, setRouteGroup} = useTopologyHook(setConfirmationProps);
@@ -71,11 +72,8 @@ export function TopologyTab(props: Props) {
.filter(f => f.name.endsWith('.camel.yaml'))
// .filter(f => search === '' || filedFound.includes(f.name))
.map(f => new IntegrationFile(f.name, f.code));
- const codes = files.map(f => f.code).join("");
const openApiFile = files.filter(f => f.name === OPENAPI_FILE_NAME_JSON)?.at(0);
const openApiJson = openApiFile?.code;
- const asyncApiFile = files.filter(f => f.name === ASYNCAPI_FILE_NAME_JSON)?.at(0);
- const asyncApiJson = asyncApiFile?.code;
function setTopologySelected(model: Model, ids: string []) {
if (ids.length > 0) {
@@ -94,11 +92,12 @@ export function TopologyTab(props: Props) {
}
const customLayoutFactory: LayoutFactory = (type: string, graph: Graph): Layout => {
- return new TopologyDagreLayout(graph, {}, straightEdges);
+ // return new TopologyDagreLayout(graph, {}, straightEdges);
+ return new TopologyElkLayout(graph, {});
};
const controller = React.useMemo(() => {
- const model = getModel(camelFiles, showGroups, selectFile, setDisabled, deleteRoute, setRouteGroup, openApiJson, asyncApiJson);
+ const model = getModel(project.projectId, camelFiles, showGroups, selectFile, setDisabled, deleteRoute, setRouteGroup, openApiJson, asyncApiJson, showStats);
const controller = new Visualization();
controller.registerLayoutFactory((type, graph) => customLayoutFactory(type, graph));
@@ -106,21 +105,15 @@ export function TopologyTab(props: Props) {
controller.addEventListener(SELECTION_EVENT, args => setTopologySelected(model, args));
controller.addEventListener(GRAPH_LAYOUT_END_EVENT, () => {
- controller.getGraph().fit(80);
+ runInAction(() => {
+ controller.getGraph().fit(90);
+ });
});
controller.addEventListener(NODE_POSITIONED_EVENT, (args: any) => {
});
controller.fromModel(model, false);
return controller;
- }, [files, showGroups, straightEdges, layout]);
-
- function saveModelMap(graph: Graph) {
- const newModelMap: Map<string, { x: number, y: number }> = new Map();
- graph.getNodes().forEach((node: any) => {
- newModelMap.set(node.getId(), {x: node.position?.x, y: node.position?.y})
- });
- setModelMap(newModelMap);
- }
+ }, [files, showGroups, asyncApiJson, showStats]);
function getButtonTitle(title: string, icon: React.ReactNode) {
return (
@@ -153,36 +146,31 @@ export function TopologyTab(props: Props) {
controller.getGraph().layout();
}),
customButtons: [
- {
- id: 'straightEdges',
- icon: straightEdges ? getButtonTitle('Edges', <ArrowDown className='carbon'/> ) : getButtonTitle('Edges', <JumpLink className='carbon'/>),
- tooltip: 'Switch Straight/Right-Angle Edges',
- callback: id => setStraightEdges(!straightEdges)
- },
{
id: 'showGroups',
icon: showGroups ? getButtonTitle('Grouped', <GroupObjects className='carbon'/> ) : getButtonTitle('Ungrouped', <UngroupObjects className='carbon'/>) ,
tooltip: 'Switch Ungrouped/Grouped',
callback: id => setShowGroups(!showGroups)
},
- // {
- // id: 'layout',
- // icon: layout === 'manual' ? getButtonTitle('Manual', <HandPointUpIcon/>) : getButtonTitle('Auto', <RobotIcon/>),
- // tooltip: 'Switch Auto/Manual Layout',
- // callback: id => setLayout(layout === 'auto' ? 'manual' : 'auto')
- // },
{
id: 'showBeans',
icon: showBeans ? getButtonTitle('Beans', <EyeIcon/>) : getButtonTitle('Beans', <EyeSlashIcon/>),
tooltip: 'Show/Hide Beans',
callback: id => setShowBeans(!showBeans)
+ },
+ {
+ id: "stats",
+ icon: <ArrayNumbers className='carbon'/>,
+ tooltip: showStats ? "Hide stats" : "Show stats",
+ callback: (id: any) => setShowStats(!showStats),
}
],
});
- }, [controller, showLegend, showBeans, straightEdges, showGroups, layout]);
+ }, [controller, showLegend, showBeans, showGroups]);
return (
<>
+ <TopologyToolbar/>
<TopologyView
className="topology-panel"
controlBar={
diff --git a/karavan-vscode/webview/integration-topology/TopologyToolbar.tsx b/karavan-vscode/webview/integration-topology/TopologyToolbar.tsx
new file mode 100644
index 00000000..ead29fef
--- /dev/null
+++ b/karavan-vscode/webview/integration-topology/TopologyToolbar.tsx
@@ -0,0 +1,102 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import * as React from 'react';
+import {MouseEventHandler, ReactElement} from 'react';
+import {Button} from '@patternfly/react-core';
+import {shallow} from "zustand/shallow";
+import {useAppConfigStore} from '@stores/ProjectStore';
+import {useTopologyHook} from '@features/project/project-topology/useTopologyHook';
+import {useRouteDesignerHook} from "@features/project/designer/route/useRouteDesignerHook";
+import {APPLICATION_PROPERTIES, DOCKER_COMPOSE, DOCKER_STACK} from "@models/ProjectModels";
+import {ProjectTitle} from "@features/project/ProjectTitle";
+import {useProjectFunctions} from "@features/project/ProjectContext";
+import {AddLarge} from "@carbon/icons-react";
+
+export function TopologyToolbar() {
+
+ const [config] = useAppConfigStore((s) => [s.config], shallow);
+ const isDev = config.environment === 'dev';
+
+ const {
+ createNewBean,
+ createRouteConfiguration,
+ createOpenApi,
+ createNewKamelet,
+ project
+ } = useProjectFunctions();
+ const {openSelector} = useRouteDesignerHook();
+
+ const {selectFile} = useTopologyHook();
+
+ function getInfraButton(): ReactElement {
+ const isKubernetes = config.infrastructure === 'kubernetes';
+ const swarmMode = config.swarmMode;
+ const fileName = isKubernetes
+ ? 'deployment.jkube.yaml'
+ : (swarmMode ? DOCKER_STACK : DOCKER_COMPOSE);
+
+ return (
+ <div>
+ <Button variant={"tertiary"}
+ className='bean-button'
+ // icon={<OutlinedFileAltIcon/>}
+ onClick={() => {
+ selectFile(fileName)
+ }}
+ >
+ {isKubernetes ? "Deployment" : "Compose"}
+ </Button>
+ </div>
+ )
+ }
+
+ function getButton(caption: string,
+ variant?: 'primary' | 'secondary' | 'tertiary' | 'danger' | 'warning' | 'link' | 'plain' | 'control' | 'stateful',
+ icon?: ReactElement,
+ onClick?: MouseEventHandler<any> | undefined): ReactElement {
+ return (
+ <div>
+ <Button className="dev-action-button "
+ isDisabled={!isDev}
+ icon={icon}
+ variant={variant}
+ onClick={onClick}
+ >
+ {caption}
+ </Button>
+ </div>
+ )
+ }
+
+
+ return (
+ <div className='topology-toolbar'>
+ <div className="group-switch">
+ <ProjectTitle/>
+ </div>
+
+ {getButton("Route", 'primary', <AddLarge className='carbon'/>, event => openSelector(undefined, undefined))}
+ {getButton("Route Configuration", 'secondary', <AddLarge className='carbon'/>, event => createRouteConfiguration())}
+ {getButton("Route Template", 'secondary', <AddLarge className='carbon'/>, event => openSelector(undefined, undefined, true, undefined, true))}
+ {getButton("Kamelet", 'tertiary', <AddLarge className='carbon'/>, event => createNewKamelet())}
+ {getButton("Bean", 'tertiary', <AddLarge className='carbon'/>, event => createNewBean())}
+ {getButton("Properties", 'tertiary', undefined, event => selectFile(APPLICATION_PROPERTIES))}
+ {getInfraButton()}
+ </div>
+ )
+}
\ No newline at end of file
diff --git a/karavan-vscode/webview/integration-topology/graph/TopologyDagreLayout.ts b/karavan-vscode/webview/integration-topology/graph/TopologyDagreLayout.ts
deleted file mode 100644
index a34dc751..00000000
--- a/karavan-vscode/webview/integration-topology/graph/TopologyDagreLayout.ts
+++ /dev/null
@@ -1,98 +0,0 @@
-import {BaseLayout, Edge, Graph, GRAPH_LAYOUT_END_EVENT, Layout, LAYOUT_DEFAULTS, LayoutLink, LayoutNode, Node} from "@patternfly/react-topology";
-import {LayoutOptions} from "@patternfly/react-topology/src/layouts/LayoutOptions";
-import dagre from "@dagrejs/dagre";
-import {DagreNode} from "@patternfly/react-topology/dist/esm/layouts/DagreNode";
-import {LayoutGroup} from "@patternfly/react-topology/dist/esm/layouts/LayoutGroup";
-import {BendpointConfig, TopologyLink} from "@/integration-topology/graph/TopologyLink";
-import {TopologyGroup} from "@/integration-topology/graph/TopologyGroup";
-
-export type DagreLayoutOptions = LayoutOptions & dagre.GraphLabel & { ignoreGroups?: boolean };
-
-export class TopologyDagreLayout extends BaseLayout implements Layout {
-
- protected dagreOptions: DagreLayoutOptions;
- private bendpointConfig: BendpointConfig;
-
- constructor(graph: Graph, options?: Partial<DagreLayoutOptions>, straightEdges?: boolean) {
- super(graph, options);
- this.dagreOptions = {
- ...this.options,
- layoutOnDrag: false,
- marginx: 0,
- marginy: 0,
- rankdir: 'TB',
- ranker: "network-simplex",
- nodesep: 20,
- edgesep: 20,
- ranksep: 10,
- ...options
- };
- this.bendpointConfig = {
- avoidNodes: !straightEdges,
- };
- }
-
- protected createLayoutNode(node: Node, nodeDistance: number, index: number) {
- return new DagreNode(node, nodeDistance, index);
- }
-
- protected createLayoutLink(edge: Edge, source: LayoutNode, target: LayoutNode, isFalse: boolean): LayoutLink {
- return new TopologyLink(edge, source, target, isFalse, this.bendpointConfig);
- }
-
- protected createLayoutGroup(node: Node, padding: number, index: number): LayoutGroup {
- return new TopologyGroup(node, padding, index);
- }
-
- protected updateEdgeBendpoints(edges: TopologyLink[]): void {
- edges.forEach((edge) => {
- const link = edge as TopologyLink;
- link.updateBendpoints(edges);
- });
- }
-
- protected getFauxEdges(): LayoutLink[] {
- return [];
- }
-
- protected startLayout(graph: Graph, initialRun: boolean, addingNodes: boolean): void {
- if (initialRun || addingNodes) {
- const dagreGraph = new dagre.graphlib.Graph({ compound: true });
- const options = { ...this.dagreOptions };
- Object.keys(LAYOUT_DEFAULTS).forEach((key) => delete (options as any)[key]);
- dagreGraph.setGraph(options);
-
- if (!this.dagreOptions.ignoreGroups) {
- this.groups.forEach((group) => {
- dagreGraph.setNode(group.id, group);
- dagreGraph.setParent(group.id, group.element.getParent().getId());
- });
- }
-
- this.nodes?.forEach((node) => {
- const updateNode = (node as DagreNode).getUpdatableNode();
- dagreGraph.setNode(node.id, updateNode);
- if (!this.dagreOptions.ignoreGroups) {
- dagreGraph.setParent(node.id, node.element.getParent().getId());
- }
- });
-
- this.edges?.forEach((dagreEdge) => {
- dagreGraph.setEdge(dagreEdge.source.id, dagreEdge.target.id, dagreEdge);
- });
-
- dagre.layout(dagreGraph);
- this.nodes.forEach((node) => {
- (node as DagreNode).updateToNode(dagreGraph.node(node.id));
- });
-
- this.updateEdgeBendpoints(this.edges as TopologyLink[]);
- }
-
- if (this.dagreOptions.layoutOnDrag) {
- this.forceSimulation.useForceSimulation(this.nodes, this.edges, this.getFixedNodeDistance);
- } else {
- this.graph.getController().fireEvent(GRAPH_LAYOUT_END_EVENT, { graph: this.graph });
- }
- }
-}
diff --git a/karavan-vscode/webview/integration-topology/graph/TopologyGroup.ts b/karavan-vscode/webview/integration-topology/graph/TopologyGroup.ts
deleted file mode 100644
index 5c945fa3..00000000
--- a/karavan-vscode/webview/integration-topology/graph/TopologyGroup.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-import {LayoutGroup} from "@patternfly/react-topology/dist/esm/layouts/LayoutGroup";
-
-export class TopologyGroup extends LayoutGroup {}
\ No newline at end of file
diff --git a/karavan-vscode/webview/integration-topology/graph/TopologyLink.ts b/karavan-vscode/webview/integration-topology/graph/TopologyLink.ts
deleted file mode 100644
index 68de9a23..00000000
--- a/karavan-vscode/webview/integration-topology/graph/TopologyLink.ts
+++ /dev/null
@@ -1,72 +0,0 @@
-import {action, LayoutLink, Point} from "@patternfly/react-topology";
-
-export interface BendpointConfig {
- maxBendpoints?: number;
- avoidNodes?: boolean;
- bendpointSpacing?: number;
-}
-
-export class TopologyLink extends LayoutLink {
- private config: BendpointConfig;
- public points?: { x: number; y: number }[];
-
- constructor(element: any, source: any, target: any, isFalse: boolean, config: BendpointConfig = {}) {
- super(element, source, target, isFalse);
- this.config = {
- maxBendpoints: 8,
- avoidNodes: true,
- bendpointSpacing: 5,
- ...config
- };
- }
-
- updateBendpoints(edges: LayoutLink []): void {
- if (this.points && !this.isFalse && this.points.length > 2) {
- // this.element.setBendpoints(this.points.slice(1, -1).map((point: any) => new Point(point.x, point.y)));
- if (!this.config.avoidNodes) {
- action(() => this.element.setBendpoints([]))();
- return;
- }
- const bendpoints = this.calculateNodeAvoidingBendpoints(edges);
- action(() => this.element.setBendpoints(bendpoints))();
- }
- }
-
- private calculateNodeAvoidingBendpoints(edges: LayoutLink []): Point[] {
- const sourcePoint = this.source.element.getBounds().getCenter();
- const targetPoint = this.target.element.getBounds().getCenter();
-
- // Simple orthogonal routing to avoid nodes
- const bendpoints: Point[] = [];
- const maxBendpoints = this.config.maxBendpoints || 4;
-
- if (maxBendpoints > 0) {
- const dx = targetPoint.x - sourcePoint.x;
- const dy = targetPoint.y - sourcePoint.y;
-
- // Create orthogonal path with up to maxBendpoints
- if (Math.abs(dx) > Math.abs(dy)) {
- // Horizontal-first routing
- const midX = sourcePoint.x + dx * 0.5;
- bendpoints.push(new Point(midX, sourcePoint.y));
- if (maxBendpoints > 1) {
- bendpoints.push(new Point(midX, targetPoint.y));
- }
- } else {
- // Vertical-first routing
- const midY = sourcePoint.y + dy * 0.7;
- bendpoints.push(new Point(sourcePoint.x, midY));
- if (maxBendpoints > 1) {
- bendpoints.push(new Point(targetPoint.x, midY));
- }
- }
- }
-
- return bendpoints;
- }
-
- public setBendpointConfig(config: Partial<BendpointConfig>, edges: LayoutLink []): void {
- this.config = { ...this.config, ...config };
- this.updateBendpoints(edges);
- }
-}
diff --git a/karavan-vscode/webview/integration-topology/graph/TopologyNode.ts b/karavan-vscode/webview/integration-topology/graph/TopologyNode.ts
deleted file mode 100644
index eb34a252..00000000
--- a/karavan-vscode/webview/integration-topology/graph/TopologyNode.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-import {LayoutNode} from "@patternfly/react-topology";
-
-export class TopologyNode extends LayoutNode {
-}
diff --git a/karavan-vscode/webview/integration-topology/topology.css b/karavan-vscode/webview/integration-topology/topology.css
index 3ab5adba..241b3cf2 100644
--- a/karavan-vscode/webview/integration-topology/topology.css
+++ b/karavan-vscode/webview/integration-topology/topology.css
@@ -1,20 +1,3 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
.karavan .topology-toolbar {
width: 100%;
display: flex;
@@ -23,6 +6,7 @@
gap: 8px;
padding: 8px 16px 8px 16px;
position: relative;
+ text-wrap: nowrap;
}
.karavan .topology-toolbar::before {
@@ -44,12 +28,9 @@
gap: 16px;
}
-.karavan .topology-toolbar .group-switch .pf-v6-c-switch {
- column-gap: 0.4em;
-}
-
-.topology-actions-dropdown {
- /*right: 0 !important;*/
+.karavan .topology-toolbar .dev-action-button {
+ padding-left: 12px;
+ padding-right: 12px;
}
.karavan .topology-panel .pf-topology-control-bar {
@@ -69,6 +50,18 @@
.karavan .topology-panel .common-node {
cursor: pointer;
+ .validation-icon {
+ height: 21px;
+ width: 21px;
+ }
+ .validation-icon-danger {
+ color: var(--pf-t--global--icon--color--status--danger--default);
+ fill: var(--pf-t--global--icon--color--status--danger--default);
+ }
+ .validation-icon-pending {
+ fill: var(--pf-t--global--color--brand--default);
+ color: var(--pf-t--global--color--brand--default);
+ }
}
.karavan .topology-panel .common-node .icon {
@@ -128,16 +121,27 @@
border-radius: 9px;
}
+.karavan .topology-panel .gen-route-decorator {
+ background-color: red;
+ circle {
+ stroke: var(--pf-t--global--icon--color--status--warning--default);
+ }
+ svg {
+ fill: var(--pf-t--global--icon--color--status--warning--default);
+ transform: translate(1px, -1px);
+ }
+}
+
.pf-topology__group__label .pf-topology__node__label__background {
fill: grey;
}
.pf-topology__node.topology-color-component {
- --pf-topology__node__label__background--Stroke: #2b9af3;
+ --pf-topology__node__label__background--Stroke: var(--pf-t--global--color--brand--100);
}
.pf-topology__node.topology-color-component .pf-topology__node__background {
- --pf-topology__node__background--Stroke: #2b9af3;
+ --pf-topology__node__background--Stroke: var(--pf-t--global--color--brand--100);
}
.pf-topology__node.topology-color-kamelet {
@@ -148,12 +152,13 @@
--pf-topology__node__background--Stroke: #6ec664;
}
-.pf-topology__node.topology-color-route {
- --pf-topology__node__label__background--Stroke: #ef9234;
-}
-
-.pf-topology__node.topology-color-route .pf-topology__node__background {
- --pf-topology__node__background--Stroke: #ef9234;
+.pf-topology__node.topology-color-gen-route {
+ .pf-topology__node__background {
+ --pf-topology__node__background--Stroke: #ef9234;
+ }
+ .icon-wrapper svg {
+ fill: #ef9234;
+ }
}
.pf-topology__edge {
diff --git a/karavan-vscode/webview/integration-topology/useTopologyHook.tsx b/karavan-vscode/webview/integration-topology/useTopologyHook.tsx
index a2f0f05e..fa4a34b2 100644
--- a/karavan-vscode/webview/integration-topology/useTopologyHook.tsx
+++ b/karavan-vscode/webview/integration-topology/useTopologyHook.tsx
@@ -16,23 +16,26 @@
*/
import React from "react";
import {shallow} from "zustand/shallow";
-import {useFilesStore, useFileStore, useProjectStore} from "@/api/ProjectStore";
-import {EventBus} from "@/integration-designer/utils/EventBus";
-import {CamelDefinitionYaml} from "@/core/api/CamelDefinitionYaml";
-import {CamelDefinitionApiExt} from "@/core/api/CamelDefinitionApiExt";
-import {RouteDefinition} from "@/core/model/CamelDefinition";
-import {ModalConfirmationProps} from "@/components/ModalConfirmation";
-import vscode from "../vscode";
+import {useFilesStore, useFileStore, useProjectStore} from "@stores/ProjectStore";
+import {EventBus} from "@features/project/designer/utils/EventBus";
+import {CamelDefinitionYaml} from "@karavan-core/api/CamelDefinitionYaml";
+import {CamelDefinitionApiExt} from "@karavan-core/api/CamelDefinitionApiExt";
+import {RouteDefinition} from "@karavan-core/model/CamelDefinition";
+import {ProjectService} from "@services/ProjectService";
+import {ModalConfirmationProps} from "@shared/ui/ModalConfirmation";
export function useTopologyHook(setConfirmationProps?: React.Dispatch<React.SetStateAction<ModalConfirmationProps | undefined>>) {
const [setFile] = useFileStore((s) => [s.setFile], shallow);
const [files] = useFilesStore((s) => [s.files], shallow);
- const [setTabIndex] = useProjectStore((s) => [s.setTabIndex], shallow);
+ const [setTabIndex, project] = useProjectStore((s) => [s.setTabIndex, s.project], shallow);
function selectFile(fileName: string) {
- console.log(fileName)
- vscode.postMessage({ command: 'openFile', fileName: fileName })
+ const file = files.filter(f => f.name === fileName)?.at(0);
+ if (file) {
+ setFile('select', file);
+ setTabIndex(0);
+ }
}
function setDisabled(fileName: string, elementId: string, enable: boolean) {
@@ -49,6 +52,7 @@ export function useTopologyHook(setConfirmationProps?: React.Dispatch<React.SetS
}
const newIntegration = CamelDefinitionApiExt.updateIntegrationRouteElement(integration, element);
file.code = CamelDefinitionYaml.integrationToYaml(newIntegration);
+ ProjectService.updateFile(file, true);
}
}
@@ -65,8 +69,12 @@ export function useTopologyHook(setConfirmationProps?: React.Dispatch<React.SetS
const newIntegration = CamelDefinitionApiExt.deleteRouteFromIntegration(integration, routeId);
const isEmpty = newIntegration?.spec.flows?.length === 0 && newIntegration?.spec.template === undefined;
const propsClose: ModalConfirmationProps = {
- isOpen: false, title: '', message: '', onConfirm: () => {
- }, onCancel: () => {
+ isOpen: false,
+ title: '',
+ message: '',
+ onConfirm: () => {
+ },
+ onCancel: () => {
}
};
const props: ModalConfirmationProps = {
@@ -75,7 +83,13 @@ export function useTopologyHook(setConfirmationProps?: React.Dispatch<React.SetS
btnConfirmVariant: 'danger',
message: `Delete route ${isEmpty ? ' and file ' + fileName : ''}`,
onConfirm: () => {
-
+ if (isEmpty) {
+ ProjectService.deleteFile(file);
+ } else {
+ file.code = CamelDefinitionYaml.integrationToYaml(newIntegration);
+ ProjectService.updateFile(file, true);
+ }
+ setConfirmationProps?.(propsClose)
},
onCancel: () => setConfirmationProps?.(propsClose)
};
@@ -99,6 +113,7 @@ export function useTopologyHook(setConfirmationProps?: React.Dispatch<React.SetS
}
const newIntegration = CamelDefinitionApiExt.updateIntegrationRouteElement(integration, element);
file.code = CamelDefinitionYaml.integrationToYaml(newIntegration);
+ ProjectService.updateFile(file, true);
}
}
@@ -108,6 +123,6 @@ export function useTopologyHook(setConfirmationProps?: React.Dispatch<React.SetS
}
return {
- selectFile, setDisabled, deleteRoute, setRouteGroup
+ selectFile, setDisabled, deleteRoute, setRouteGroup, project
}
}
\ No newline at end of file
(camel-karavan) 03/04: vscode syntax check
Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
marat pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-karavan.git
commit 84544d50878efe669b8b96df58a62b7edaa9dbce
Author: Marat Gubaidullin <ma...@talismancloud.io>
AuthorDate: Fri Feb 27 20:23:02 2026 -0500
vscode syntax check
---
karavan-vscode/package-lock.json | 1882 +++++++++-----------
karavan-vscode/package.json | 29 +-
karavan-vscode/src/designerView.ts | 6 +-
karavan-vscode/src/integrationView.ts | 4 +-
karavan-vscode/src/jbang.ts | 2 +-
karavan-vscode/src/utils.ts | 8 +-
karavan-vscode/tsconfig.json | 9 +-
karavan-vscode/webpack.config.js | 10 +-
karavan-vscode/webview/App.tsx | 22 +-
karavan-vscode/webview/api/SearchModels.ts | 4 -
karavan-vscode/webview/api/SearchStore.ts | 21 -
karavan-vscode/webview/index.tsx | 2 +-
.../api/CamelDefinitionApi.ts | 0
.../api/CamelDefinitionApiExt.ts | 0
.../api/CamelDefinitionYaml.ts | 0
.../api/CamelDefinitionYamlStep.ts | 0
.../{core => karavan-core}/api/CamelDisplayUtil.ts | 0
.../{core => karavan-core}/api/CamelUtil.ts | 0
.../{core => karavan-core}/api/ComponentApi.ts | 0
.../{core => karavan-core}/api/KameletApi.ts | 0
.../api/MainConfigurationApi.ts | 0
.../{core => karavan-core}/api/ProjectModelApi.ts | 0
.../{core => karavan-core}/api/SpiBeanApi.ts | 0
.../{core => karavan-core}/api/TemplateApi.ts | 0
.../{core => karavan-core}/api/TopologyUtils.ts | 0
.../{core => karavan-core}/api/VariableUtil.ts | 0
.../webview/{core => karavan-core}/contants.ts | 8 +-
.../model/CamelDefinition.ts | 0
.../{core => karavan-core}/model/CamelMetadata.ts | 0
.../model/ComponentModels.ts | 0
.../model/IntegrationDefinition.ts | 0
.../{core => karavan-core}/model/KameletModels.ts | 0
.../model/MainConfigurationModel.ts | 0
.../{core => karavan-core}/model/ProjectModel.ts | 0
.../{core => karavan-core}/model/SpiBeanModels.ts | 0
.../model/TopologyDefinition.ts | 0
.../karavan/app/navigation/PlatformLogo.tsx | 28 +
.../webview/karavan/app/theme/ThemeContext.tsx | 66 +
.../features}/documentation/Documentation.css | 1 -
.../features}/documentation/DocumentationPage.tsx | 45 +-
.../documentation/components/ComponentCard.tsx | 10 +-
.../documentation/components/ComponentModal.tsx | 10 +-
.../documentation/components/ComponentsTab.tsx | 4 +-
.../features}/documentation/eip/EipCard.tsx | 10 +-
.../features}/documentation/eip/EipModal.tsx | 8 +-
.../features}/documentation/eip/EipTab.tsx | 8 +-
.../documentation/kamelets/KameletCard.tsx | 12 +-
.../documentation/kamelets/KameletModal.tsx | 17 +-
.../documentation/kamelets/KameletsTab.tsx | 4 +-
.../karavan/features/project/Project.types.ts | 19 +
.../karavan/features/project/ProjectContext.tsx | 29 +
.../karavan/features/project/ProjectTitle.tsx | 69 +
.../features/project/designer}/CodeStore.ts | 0
.../features/project/designer}/DesignerStore.ts | 0
.../project/designer}/ErrorBoundaryWrapper.tsx | 0
.../features/project/designer}/KaravanDesigner.css | 0
.../features/project/designer}/KaravanDesigner.tsx | 0
.../designer}/KaravanDesignerViewSwitch.tsx | 0
.../features/project/designer}/beans/BeanCard.tsx | 0
.../project/designer}/beans/BeansDesigner.tsx | 0
.../features/project/designer}/beans/bean.css | 0
.../project/designer}/icons/ComponentIcons.tsx | 0
.../features/project/designer}/icons/EipIcons.tsx | 0
.../project/designer}/icons/KaravanIcons.tsx | 0
.../project/designer}/icons/OtherIcons.tsx | 0
.../designer}/kamelet/KameletAnnotationsPanel.tsx | 0
.../kamelet/KameletDefinitionPropertyCard.tsx | 0
.../designer}/kamelet/KameletDefinitionsPanel.tsx | 0
.../designer}/kamelet/KameletDependenciesCard.tsx | 0
.../project/designer}/kamelet/KameletDesigner.tsx | 0
.../project/designer}/kamelet/KameletInput.tsx | 0
.../designer}/kamelet/KameletTypesOutCard.tsx | 0
.../features/project/designer}/kamelet/kamelet.css | 0
.../features/project/designer}/karavan.css | 0
.../project/designer}/property/DslProperties.css | 0
.../project/designer}/property/DslProperties.tsx | 0
.../designer}/property/MainPropertiesPanel.tsx | 0
.../designer}/property/PropertiesHeader.tsx | 0
.../project/designer}/property/PropertyStore.ts | 0
.../property/expression/ExpressionBottomPanel.tsx | 0
.../property/expression/ExpressionContextModel.tsx | 0
.../property/expression/ExpressionEditor.css | 0
.../property/expression/ExpressionEditor.tsx | 1 -
.../designer}/property/property/BeanProperties.css | 0
.../designer}/property/property/BeanProperties.tsx | 0
.../property/property/ComponentPropertyField.css | 0
.../property/property/ComponentPropertyField.tsx | 0
.../property/ConfigurationSelectorModal.css | 0
.../property/ConfigurationSelectorModal.tsx | 0
.../property/property/DataFormatField.tsx | 0
.../property/property/DslPropertyField.css | 0
.../property/property/DslPropertyField.tsx | 0
.../property/property/DslPropertyFieldSelect.tsx | 0
.../property/DslPropertyFieldSelectScrollable.tsx | 0
.../property/property/ExpressionField.tsx | 0
.../property/property/FileReferenceDropdown.css | 0
.../property/property/FileReferenceDropdown.tsx | 0
.../property/property/KameletPropertyField.css | 0
.../property/property/KameletPropertyField.tsx | 0
.../designer}/property/property/ObjectField.tsx | 0
.../property/PropertyPlaceholderDropdown.css | 0
.../property/PropertyPlaceholderDropdown.tsx | 0
.../designer}/property/property/PropertyUtil.tsx | 0
.../property/property/VariablesDropdown.css | 0
.../property/property/VariablesDropdown.tsx | 0
.../designer}/property/usePropertiesHook.tsx | 0
.../features/project/designer}/rest/RestCard.tsx | 0
.../designer}/rest/RestConfigurationCard.tsx | 0
.../project/designer}/rest/RestDesigner.tsx | 0
.../project/designer}/rest/RestMethodCard.tsx | 0
.../project/designer}/rest/RestMethodSelector.tsx | 0
.../features/project/designer}/rest/rest.css | 0
.../project/designer}/route/DeleteConfirmation.tsx | 0
.../project/designer}/route/DslConnections.css | 0
.../project/designer}/route/DslConnections.tsx | 0
.../project/designer}/route/RouteDesigner.css | 0
.../project/designer}/route/RouteDesigner.tsx | 0
.../project/designer}/route/element/DslElement.css | 0
.../project/designer}/route/element/DslElement.tsx | 0
.../designer}/route/element/DslElementHeader.tsx | 0
.../route/element/DslElementMoveModal.tsx | 0
.../route/element/RouteTemplateElement.css | 0
.../route/element/RouteTemplateElement.tsx | 0
.../project/designer}/route/useResizeObserver.tsx | 0
.../designer}/route/useRouteDesignerHook.tsx | 0
.../project/designer}/selector/DslCard.tsx | 0
.../project/designer}/selector/DslFastCard.tsx | 0
.../project/designer}/selector/DslPreferences.tsx | 0
.../project/designer}/selector/DslSelector.css | 0
.../project/designer}/selector/DslSelector.tsx | 0
.../designer}/utils/CamelDefaultStepProperty.tsx | 0
.../features/project/designer}/utils/CamelUi.tsx | 29 +-
.../project/designer}/utils/DslMetaModel.ts | 0
.../project/designer}/utils/ElementIcon.css | 0
.../project/designer}/utils/ElementIcons.tsx | 0
.../features/project/designer}/utils/EventBus.ts | 0
.../project/designer}/utils/InfrastructureAPI.ts | 0
.../project/designer}/utils/IntegrationHeader.tsx | 0
.../features/project/designer}/utils/MediaTypes.ts | 0
.../project/designer}/utils/Notification.tsx | 0
.../project/designer}/utils/ValidatorUtils.ts | 0
.../project-topology}/CustomComponentFactory.tsx | 0
.../project/project-topology}/CustomEdge.tsx | 0
.../project/project-topology}/CustomGroup.tsx | 0
.../project/project-topology}/CustomNode.tsx | 32 +-
.../project/project-topology}/GetCustomMenu.tsx | 0
.../project/project-topology}/TopologyApi.tsx | 0
.../project/project-topology}/TopologyBeans.css | 0
.../project/project-topology}/TopologyBeans.tsx | 0
.../project/project-topology}/TopologyElkLayout.ts | 0
.../project/project-topology}/TopologyLegend.css | 0
.../project/project-topology}/TopologyLegend.tsx | 0
.../project/project-topology}/TopologyTab.tsx | 0
.../project/project-topology}/TopologyToolbar.tsx | 0
.../project/project-topology}/topology.css | 0
.../project/project-topology}/useTopologyHook.tsx | 3 +-
.../models/AccessModels.ts} | 42 +-
.../{api => karavan/models}/ProjectModels.ts | 49 +-
.../models/SearchModels.ts} | 10 +-
.../webview/karavan/models/ServiceModels.ts | 70 +
.../models/SystemModels.ts} | 21 +-
.../shared/ui}/ContainerButton.css | 0
.../shared/ui}/ContainerButton.tsx | 11 +-
.../shared/ui}/ErrorBoundaryWrapper.tsx | 0
.../shared/ui}/FieldSelectScrollable.tsx | 0
.../shared/ui}/FieldSelectWithCreate.tsx | 0
.../shared/ui}/MainToolbar.css | 33 +-
.../shared/ui}/MainToolbar.tsx | 11 +-
.../shared/ui}/ModalConfirmation.tsx | 31 +-
.../webview/karavan/shared/ui/PlatformLogos.css | 37 +
.../webview/karavan/shared/ui/PlatformLogos.tsx | 66 +
.../shared/ui}/RightPanel.css | 8 +-
.../shared/ui}/RightPanel.tsx | 6 +-
.../webview/karavan/stores/AccessStore.ts | 67 +
.../stores}/DocumentationStore.ts | 6 +-
.../{api => karavan/stores}/ProjectStore.ts | 158 +-
.../webview/karavan/stores/TopologyStore.ts | 63 +
karavan-vscode/webview/karavan/util/CodeUtils.ts | 101 ++
karavan-vscode/webview/karavan/util/ModalForm.css | 97 +
.../webview/{ => karavan}/util/StringUtils.ts | 65 +-
.../util/form-util.css} | 37 +-
.../webview/karavan/util/useFormUtil.tsx | 328 ++++
karavan-vscode/webview/main/ThemeContext.tsx | 33 -
183 files changed, 2293 insertions(+), 1469 deletions(-)
diff --git a/karavan-vscode/package-lock.json b/karavan-vscode/package-lock.json
index 71c0eaa7..b4c32a71 100644
--- a/karavan-vscode/package-lock.json
+++ b/karavan-vscode/package-lock.json
@@ -9,27 +9,28 @@
"version": "4.18.0",
"license": "Apache-2.0",
"dependencies": {
- "@carbon/icons-react": "11.70.0",
- "@monaco-editor/react": "^4.7.0",
+ "@carbon/icons-react": "11.76.0",
+ "@monaco-editor/react": "4.7.0",
"@patternfly/patternfly": "6.4.0",
"@patternfly/react-core": "6.4.0",
"@patternfly/react-table": "6.4.0",
"@patternfly/react-templates": "6.4.0",
"@patternfly/react-topology": "6.4.0",
"@types/js-yaml": "4.0.9",
- "@types/node": "20.19.5",
+ "@types/node": "25.3.2",
"@types/uuid": "11.0.0",
"@uiw/react-markdown-preview": "5.1.5",
"buffer": "6.0.3",
+ "elkjs": "^0.11.0",
"path-browserify": "^1.0.1",
- "react-resizable-panels": "3.0.6",
- "react-router-dom": "7.9.4",
+ "react-resizable-panels": "4.6.5",
+ "react-router-dom": "7.13.1",
"rxjs": "7.8.2",
- "shelljs": "^0.8.5",
+ "shelljs": "^0.10.0",
"use-sync-external-store": "1.6.0",
"usehooks-ts": "3.1.1",
"uuid": "13.0.0",
- "zustand": "5.0.8"
+ "zustand": "5.0.11"
},
"devDependencies": {
"@babel/plugin-proposal-private-property-in-object": "^7.21.11",
@@ -38,7 +39,7 @@
"@types/d3-dispatch": "^3.0.7",
"@types/glob": "^7.1.3",
"@types/mocha": "^8.0.4",
- "@types/node": "24.10.1",
+ "@types/node": "25.3.2",
"@types/react": "18.3.1",
"@types/react-dom": "18.3.1",
"@types/shelljs": "^0.8.5",
@@ -64,6 +65,7 @@
"run-script-os": "^1.1.6",
"style-loader": "^2.0.0",
"ts-loader": "9.5.4",
+ "tsconfig-paths-webpack-plugin": "^4.2.0",
"typescript": "5.9.3",
"url-loader": "4.1.1",
"vscode-test": "1.6.1",
@@ -75,13 +77,13 @@
}
},
"node_modules/@babel/code-frame": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz",
- "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==",
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz",
+ "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-validator-identifier": "^7.27.1",
+ "@babel/helper-validator-identifier": "^7.28.5",
"js-tokens": "^4.0.0",
"picocolors": "^1.1.1"
},
@@ -90,9 +92,9 @@
}
},
"node_modules/@babel/compat-data": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz",
- "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==",
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz",
+ "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==",
"dev": true,
"license": "MIT",
"engines": {
@@ -100,22 +102,21 @@
}
},
"node_modules/@babel/core": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz",
- "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==",
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz",
+ "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
- "@babel/code-frame": "^7.27.1",
- "@babel/generator": "^7.28.5",
- "@babel/helper-compilation-targets": "^7.27.2",
- "@babel/helper-module-transforms": "^7.28.3",
- "@babel/helpers": "^7.28.4",
- "@babel/parser": "^7.28.5",
- "@babel/template": "^7.27.2",
- "@babel/traverse": "^7.28.5",
- "@babel/types": "^7.28.5",
+ "@babel/code-frame": "^7.29.0",
+ "@babel/generator": "^7.29.0",
+ "@babel/helper-compilation-targets": "^7.28.6",
+ "@babel/helper-module-transforms": "^7.28.6",
+ "@babel/helpers": "^7.28.6",
+ "@babel/parser": "^7.29.0",
+ "@babel/template": "^7.28.6",
+ "@babel/traverse": "^7.29.0",
+ "@babel/types": "^7.29.0",
"@jridgewell/remapping": "^2.3.5",
"convert-source-map": "^2.0.0",
"debug": "^4.1.0",
@@ -132,14 +133,14 @@
}
},
"node_modules/@babel/generator": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz",
- "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==",
+ "version": "7.29.1",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz",
+ "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/parser": "^7.28.5",
- "@babel/types": "^7.28.5",
+ "@babel/parser": "^7.29.0",
+ "@babel/types": "^7.29.0",
"@jridgewell/gen-mapping": "^0.3.12",
"@jridgewell/trace-mapping": "^0.3.28",
"jsesc": "^3.0.2"
@@ -162,13 +163,13 @@
}
},
"node_modules/@babel/helper-compilation-targets": {
- "version": "7.27.2",
- "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz",
- "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz",
+ "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/compat-data": "^7.27.2",
+ "@babel/compat-data": "^7.28.6",
"@babel/helper-validator-option": "^7.27.1",
"browserslist": "^4.24.0",
"lru-cache": "^5.1.1",
@@ -179,18 +180,18 @@
}
},
"node_modules/@babel/helper-create-class-features-plugin": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.5.tgz",
- "integrity": "sha512-q3WC4JfdODypvxArsJQROfupPBq9+lMwjKq7C33GhbFYJsufD0yd/ziwD+hJucLeWsnFPWZjsU2DNFqBPE7jwQ==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.28.6.tgz",
+ "integrity": "sha512-dTOdvsjnG3xNT9Y0AUg1wAl38y+4Rl4sf9caSQZOXdNqVn+H+HbbJ4IyyHaIqNR6SW9oJpA/RuRjsjCw2IdIow==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.27.3",
"@babel/helper-member-expression-to-functions": "^7.28.5",
"@babel/helper-optimise-call-expression": "^7.27.1",
- "@babel/helper-replace-supers": "^7.27.1",
+ "@babel/helper-replace-supers": "^7.28.6",
"@babel/helper-skip-transparent-expression-wrappers": "^7.27.1",
- "@babel/traverse": "^7.28.5",
+ "@babel/traverse": "^7.28.6",
"semver": "^6.3.1"
},
"engines": {
@@ -219,17 +220,17 @@
}
},
"node_modules/@babel/helper-define-polyfill-provider": {
- "version": "0.6.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz",
- "integrity": "sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==",
+ "version": "0.6.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.6.tgz",
+ "integrity": "sha512-mOAsxeeKkUKayvZR3HeTYD/fICpCPLJrU5ZjelT/PA6WHtNDBOE436YiaEUvHN454bRM3CebhDsIpieCc4texA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-compilation-targets": "^7.27.2",
- "@babel/helper-plugin-utils": "^7.27.1",
- "debug": "^4.4.1",
+ "@babel/helper-compilation-targets": "^7.28.6",
+ "@babel/helper-plugin-utils": "^7.28.6",
+ "debug": "^4.4.3",
"lodash.debounce": "^4.0.8",
- "resolve": "^1.22.10"
+ "resolve": "^1.22.11"
},
"peerDependencies": {
"@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
@@ -260,29 +261,29 @@
}
},
"node_modules/@babel/helper-module-imports": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz",
- "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz",
+ "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/traverse": "^7.27.1",
- "@babel/types": "^7.27.1"
+ "@babel/traverse": "^7.28.6",
+ "@babel/types": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-module-transforms": {
- "version": "7.28.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz",
- "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz",
+ "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-module-imports": "^7.27.1",
- "@babel/helper-validator-identifier": "^7.27.1",
- "@babel/traverse": "^7.28.3"
+ "@babel/helper-module-imports": "^7.28.6",
+ "@babel/helper-validator-identifier": "^7.28.5",
+ "@babel/traverse": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
@@ -305,9 +306,9 @@
}
},
"node_modules/@babel/helper-plugin-utils": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz",
- "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz",
+ "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==",
"dev": true,
"license": "MIT",
"engines": {
@@ -333,15 +334,15 @@
}
},
"node_modules/@babel/helper-replace-supers": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz",
- "integrity": "sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.28.6.tgz",
+ "integrity": "sha512-mq8e+laIk94/yFec3DxSjCRD2Z0TAjhVbEJY3UQrlwVo15Lmt7C2wAUbK4bjnTs4APkwsYLTahXRraQXhb1WCg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-member-expression-to-functions": "^7.27.1",
+ "@babel/helper-member-expression-to-functions": "^7.28.5",
"@babel/helper-optimise-call-expression": "^7.27.1",
- "@babel/traverse": "^7.27.1"
+ "@babel/traverse": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
@@ -395,42 +396,42 @@
}
},
"node_modules/@babel/helper-wrap-function": {
- "version": "7.28.3",
- "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.3.tgz",
- "integrity": "sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.6.tgz",
+ "integrity": "sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/template": "^7.27.2",
- "@babel/traverse": "^7.28.3",
- "@babel/types": "^7.28.2"
+ "@babel/template": "^7.28.6",
+ "@babel/traverse": "^7.28.6",
+ "@babel/types": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helpers": {
- "version": "7.28.4",
- "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz",
- "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz",
+ "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/template": "^7.27.2",
- "@babel/types": "^7.28.4"
+ "@babel/template": "^7.28.6",
+ "@babel/types": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/parser": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz",
- "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==",
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz",
+ "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/types": "^7.28.5"
+ "@babel/types": "^7.29.0"
},
"bin": {
"parser": "bin/babel-parser.js"
@@ -507,14 +508,14 @@
}
},
"node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": {
- "version": "7.28.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.3.tgz",
- "integrity": "sha512-b6YTX108evsvE4YgWyQ921ZAFFQm3Bn+CA3+ZXlNVnPhx+UfsVURoPjfGAPCjBgrqo30yX/C2nZGX96DxvR9Iw==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.6.tgz",
+ "integrity": "sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1",
- "@babel/traverse": "^7.28.3"
+ "@babel/helper-plugin-utils": "^7.28.6",
+ "@babel/traverse": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
@@ -544,13 +545,13 @@
}
},
"node_modules/@babel/plugin-syntax-import-assertions": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz",
- "integrity": "sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.28.6.tgz",
+ "integrity": "sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
@@ -560,13 +561,13 @@
}
},
"node_modules/@babel/plugin-syntax-import-attributes": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz",
- "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz",
+ "integrity": "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
@@ -576,13 +577,13 @@
}
},
"node_modules/@babel/plugin-syntax-jsx": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz",
- "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz",
+ "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
@@ -608,13 +609,13 @@
}
},
"node_modules/@babel/plugin-syntax-typescript": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz",
- "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz",
+ "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
@@ -657,15 +658,15 @@
}
},
"node_modules/@babel/plugin-transform-async-generator-functions": {
- "version": "7.28.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.0.tgz",
- "integrity": "sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==",
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.0.tgz",
+ "integrity": "sha512-va0VdWro4zlBr2JsXC+ofCPB2iG12wPtVGTWFx2WLDOM3nYQZZIGP82qku2eW/JR83sD+k2k+CsNtyEbUqhU6w==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/helper-plugin-utils": "^7.28.6",
"@babel/helper-remap-async-to-generator": "^7.27.1",
- "@babel/traverse": "^7.28.0"
+ "@babel/traverse": "^7.29.0"
},
"engines": {
"node": ">=6.9.0"
@@ -675,14 +676,14 @@
}
},
"node_modules/@babel/plugin-transform-async-to-generator": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz",
- "integrity": "sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.28.6.tgz",
+ "integrity": "sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-module-imports": "^7.27.1",
- "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/helper-module-imports": "^7.28.6",
+ "@babel/helper-plugin-utils": "^7.28.6",
"@babel/helper-remap-async-to-generator": "^7.27.1"
},
"engines": {
@@ -709,13 +710,13 @@
}
},
"node_modules/@babel/plugin-transform-block-scoping": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.5.tgz",
- "integrity": "sha512-45DmULpySVvmq9Pj3X9B+62Xe+DJGov27QravQJU1LLcapR6/10i+gYVAucGGJpHBp5mYxIMK4nDAT/QDLr47g==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.6.tgz",
+ "integrity": "sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
@@ -725,14 +726,14 @@
}
},
"node_modules/@babel/plugin-transform-class-properties": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz",
- "integrity": "sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.28.6.tgz",
+ "integrity": "sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.27.1",
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-create-class-features-plugin": "^7.28.6",
+ "@babel/helper-plugin-utils": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
@@ -742,14 +743,14 @@
}
},
"node_modules/@babel/plugin-transform-class-static-block": {
- "version": "7.28.3",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.3.tgz",
- "integrity": "sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.6.tgz",
+ "integrity": "sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.28.3",
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-create-class-features-plugin": "^7.28.6",
+ "@babel/helper-plugin-utils": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
@@ -759,18 +760,18 @@
}
},
"node_modules/@babel/plugin-transform-classes": {
- "version": "7.28.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.4.tgz",
- "integrity": "sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.6.tgz",
+ "integrity": "sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.27.3",
- "@babel/helper-compilation-targets": "^7.27.2",
+ "@babel/helper-compilation-targets": "^7.28.6",
"@babel/helper-globals": "^7.28.0",
- "@babel/helper-plugin-utils": "^7.27.1",
- "@babel/helper-replace-supers": "^7.27.1",
- "@babel/traverse": "^7.28.4"
+ "@babel/helper-plugin-utils": "^7.28.6",
+ "@babel/helper-replace-supers": "^7.28.6",
+ "@babel/traverse": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
@@ -780,14 +781,14 @@
}
},
"node_modules/@babel/plugin-transform-computed-properties": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz",
- "integrity": "sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.28.6.tgz",
+ "integrity": "sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1",
- "@babel/template": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.28.6",
+ "@babel/template": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
@@ -814,14 +815,14 @@
}
},
"node_modules/@babel/plugin-transform-dotall-regex": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz",
- "integrity": "sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.28.6.tgz",
+ "integrity": "sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.27.1",
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-create-regexp-features-plugin": "^7.28.5",
+ "@babel/helper-plugin-utils": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
@@ -847,14 +848,14 @@
}
},
"node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz",
- "integrity": "sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==",
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.0.tgz",
+ "integrity": "sha512-zBPcW2lFGxdiD8PUnPwJjag2J9otbcLQzvbiOzDxpYXyCuYX9agOwMPGn1prVH0a4qzhCKu24rlH4c1f7yA8rw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.27.1",
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-create-regexp-features-plugin": "^7.28.5",
+ "@babel/helper-plugin-utils": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
@@ -880,14 +881,14 @@
}
},
"node_modules/@babel/plugin-transform-explicit-resource-management": {
- "version": "7.28.0",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.0.tgz",
- "integrity": "sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.6.tgz",
+ "integrity": "sha512-Iao5Konzx2b6g7EPqTy40UZbcdXE126tTxVFr/nAIj+WItNxjKSYTEw3RC+A2/ZetmdJsgueL1KhaMCQHkLPIg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1",
- "@babel/plugin-transform-destructuring": "^7.28.0"
+ "@babel/helper-plugin-utils": "^7.28.6",
+ "@babel/plugin-transform-destructuring": "^7.28.5"
},
"engines": {
"node": ">=6.9.0"
@@ -897,13 +898,13 @@
}
},
"node_modules/@babel/plugin-transform-exponentiation-operator": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.5.tgz",
- "integrity": "sha512-D4WIMaFtwa2NizOp+dnoFjRez/ClKiC2BqqImwKd1X28nqBtZEyCYJ2ozQrrzlxAFrcrjxo39S6khe9RNDlGzw==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.6.tgz",
+ "integrity": "sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
@@ -964,13 +965,13 @@
}
},
"node_modules/@babel/plugin-transform-json-strings": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz",
- "integrity": "sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.28.6.tgz",
+ "integrity": "sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
@@ -996,13 +997,13 @@
}
},
"node_modules/@babel/plugin-transform-logical-assignment-operators": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.5.tgz",
- "integrity": "sha512-axUuqnUTBuXyHGcJEVVh9pORaN6wC5bYfE7FGzPiaWa3syib9m7g+/IT/4VgCOe2Upef43PHzeAvcrVek6QuuA==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.6.tgz",
+ "integrity": "sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
@@ -1045,14 +1046,14 @@
}
},
"node_modules/@babel/plugin-transform-modules-commonjs": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz",
- "integrity": "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz",
+ "integrity": "sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-module-transforms": "^7.27.1",
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-module-transforms": "^7.28.6",
+ "@babel/helper-plugin-utils": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
@@ -1062,16 +1063,16 @@
}
},
"node_modules/@babel/plugin-transform-modules-systemjs": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.28.5.tgz",
- "integrity": "sha512-vn5Jma98LCOeBy/KpeQhXcV2WZgaRUtjwQmjoBuLNlOmkg0fB5pdvYVeWRYI69wWKwK2cD1QbMiUQnoujWvrew==",
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.0.tgz",
+ "integrity": "sha512-PrujnVFbOdUpw4UHiVwKvKRLMMic8+eC0CuNlxjsyZUiBjhFdPsewdXCkveh2KqBA9/waD0W1b4hXSOBQJezpQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-module-transforms": "^7.28.3",
- "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/helper-module-transforms": "^7.28.6",
+ "@babel/helper-plugin-utils": "^7.28.6",
"@babel/helper-validator-identifier": "^7.28.5",
- "@babel/traverse": "^7.28.5"
+ "@babel/traverse": "^7.29.0"
},
"engines": {
"node": ">=6.9.0"
@@ -1098,14 +1099,14 @@
}
},
"node_modules/@babel/plugin-transform-named-capturing-groups-regex": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz",
- "integrity": "sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==",
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.0.tgz",
+ "integrity": "sha512-1CZQA5KNAD6ZYQLPw7oi5ewtDNxH/2vuCh+6SmvgDfhumForvs8a1o9n0UrEoBD8HU4djO2yWngTQlXl1NDVEQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.27.1",
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-create-regexp-features-plugin": "^7.28.5",
+ "@babel/helper-plugin-utils": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
@@ -1131,13 +1132,13 @@
}
},
"node_modules/@babel/plugin-transform-nullish-coalescing-operator": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz",
- "integrity": "sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.28.6.tgz",
+ "integrity": "sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
@@ -1147,13 +1148,13 @@
}
},
"node_modules/@babel/plugin-transform-numeric-separator": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz",
- "integrity": "sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.28.6.tgz",
+ "integrity": "sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
@@ -1163,17 +1164,17 @@
}
},
"node_modules/@babel/plugin-transform-object-rest-spread": {
- "version": "7.28.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.4.tgz",
- "integrity": "sha512-373KA2HQzKhQCYiRVIRr+3MjpCObqzDlyrM6u4I201wL8Mp2wHf7uB8GhDwis03k2ti8Zr65Zyyqs1xOxUF/Ew==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.6.tgz",
+ "integrity": "sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-compilation-targets": "^7.27.2",
- "@babel/helper-plugin-utils": "^7.27.1",
- "@babel/plugin-transform-destructuring": "^7.28.0",
+ "@babel/helper-compilation-targets": "^7.28.6",
+ "@babel/helper-plugin-utils": "^7.28.6",
+ "@babel/plugin-transform-destructuring": "^7.28.5",
"@babel/plugin-transform-parameters": "^7.27.7",
- "@babel/traverse": "^7.28.4"
+ "@babel/traverse": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
@@ -1200,13 +1201,13 @@
}
},
"node_modules/@babel/plugin-transform-optional-catch-binding": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz",
- "integrity": "sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.28.6.tgz",
+ "integrity": "sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
@@ -1216,13 +1217,13 @@
}
},
"node_modules/@babel/plugin-transform-optional-chaining": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.5.tgz",
- "integrity": "sha512-N6fut9IZlPnjPwgiQkXNhb+cT8wQKFlJNqcZkWlcTqkcqx6/kU4ynGmLFoa4LViBSirn05YAwk+sQBbPfxtYzQ==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.6.tgz",
+ "integrity": "sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/helper-plugin-utils": "^7.28.6",
"@babel/helper-skip-transparent-expression-wrappers": "^7.27.1"
},
"engines": {
@@ -1249,14 +1250,14 @@
}
},
"node_modules/@babel/plugin-transform-private-methods": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz",
- "integrity": "sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.28.6.tgz",
+ "integrity": "sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-create-class-features-plugin": "^7.27.1",
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-create-class-features-plugin": "^7.28.6",
+ "@babel/helper-plugin-utils": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
@@ -1266,15 +1267,15 @@
}
},
"node_modules/@babel/plugin-transform-private-property-in-object": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz",
- "integrity": "sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.28.6.tgz",
+ "integrity": "sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.27.1",
- "@babel/helper-create-class-features-plugin": "^7.27.1",
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-annotate-as-pure": "^7.27.3",
+ "@babel/helper-create-class-features-plugin": "^7.28.6",
+ "@babel/helper-plugin-utils": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
@@ -1332,17 +1333,17 @@
}
},
"node_modules/@babel/plugin-transform-react-jsx": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.27.1.tgz",
- "integrity": "sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.28.6.tgz",
+ "integrity": "sha512-61bxqhiRfAACulXSLd/GxqmAedUSrRZIu/cbaT18T1CetkTmtDN15it7i80ru4DVqRK1WMxQhXs+Lf9kajm5Ow==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-annotate-as-pure": "^7.27.1",
- "@babel/helper-module-imports": "^7.27.1",
- "@babel/helper-plugin-utils": "^7.27.1",
- "@babel/plugin-syntax-jsx": "^7.27.1",
- "@babel/types": "^7.27.1"
+ "@babel/helper-annotate-as-pure": "^7.27.3",
+ "@babel/helper-module-imports": "^7.28.6",
+ "@babel/helper-plugin-utils": "^7.28.6",
+ "@babel/plugin-syntax-jsx": "^7.28.6",
+ "@babel/types": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
@@ -1385,13 +1386,13 @@
}
},
"node_modules/@babel/plugin-transform-regenerator": {
- "version": "7.28.4",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.4.tgz",
- "integrity": "sha512-+ZEdQlBoRg9m2NnzvEeLgtvBMO4tkFBw5SQIUgLICgTrumLoU7lr+Oghi6km2PFj+dbUt2u1oby2w3BDO9YQnA==",
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.0.tgz",
+ "integrity": "sha512-FijqlqMA7DmRdg/aINBSs04y8XNTYw/lr1gJ2WsmBnnaNw1iS43EPkJW+zK7z65auG3AWRFXWj+NcTQwYptUog==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-plugin-utils": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
@@ -1401,14 +1402,14 @@
}
},
"node_modules/@babel/plugin-transform-regexp-modifiers": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz",
- "integrity": "sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.28.6.tgz",
+ "integrity": "sha512-QGWAepm9qxpaIs7UM9FvUSnCGlb8Ua1RhyM4/veAxLwt3gMat/LSGrZixyuj4I6+Kn9iwvqCyPTtbdxanYoWYg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.27.1",
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-create-regexp-features-plugin": "^7.28.5",
+ "@babel/helper-plugin-utils": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
@@ -1450,13 +1451,13 @@
}
},
"node_modules/@babel/plugin-transform-spread": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz",
- "integrity": "sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.28.6.tgz",
+ "integrity": "sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/helper-plugin-utils": "^7.28.6",
"@babel/helper-skip-transparent-expression-wrappers": "^7.27.1"
},
"engines": {
@@ -1515,17 +1516,17 @@
}
},
"node_modules/@babel/plugin-transform-typescript": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.5.tgz",
- "integrity": "sha512-x2Qa+v/CuEoX7Dr31iAfr0IhInrVOWZU/2vJMJ00FOR/2nM0BcBEclpaf9sWCDc+v5e9dMrhSH8/atq/kX7+bA==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.6.tgz",
+ "integrity": "sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==",
"dev": true,
"license": "MIT",
"dependencies": {
"@babel/helper-annotate-as-pure": "^7.27.3",
- "@babel/helper-create-class-features-plugin": "^7.28.5",
- "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/helper-create-class-features-plugin": "^7.28.6",
+ "@babel/helper-plugin-utils": "^7.28.6",
"@babel/helper-skip-transparent-expression-wrappers": "^7.27.1",
- "@babel/plugin-syntax-typescript": "^7.27.1"
+ "@babel/plugin-syntax-typescript": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
@@ -1551,14 +1552,14 @@
}
},
"node_modules/@babel/plugin-transform-unicode-property-regex": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz",
- "integrity": "sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.28.6.tgz",
+ "integrity": "sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.27.1",
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-create-regexp-features-plugin": "^7.28.5",
+ "@babel/helper-plugin-utils": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
@@ -1585,14 +1586,14 @@
}
},
"node_modules/@babel/plugin-transform-unicode-sets-regex": {
- "version": "7.27.1",
- "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz",
- "integrity": "sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.28.6.tgz",
+ "integrity": "sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-create-regexp-features-plugin": "^7.27.1",
- "@babel/helper-plugin-utils": "^7.27.1"
+ "@babel/helper-create-regexp-features-plugin": "^7.28.5",
+ "@babel/helper-plugin-utils": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
@@ -1602,81 +1603,81 @@
}
},
"node_modules/@babel/preset-env": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.28.5.tgz",
- "integrity": "sha512-S36mOoi1Sb6Fz98fBfE+UZSpYw5mJm0NUHtIKrOuNcqeFauy1J6dIvXm2KRVKobOSaGq4t/hBXdN4HGU3wL9Wg==",
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.29.0.tgz",
+ "integrity": "sha512-fNEdfc0yi16lt6IZo2Qxk3knHVdfMYX33czNb4v8yWhemoBhibCpQK/uYHtSKIiO+p/zd3+8fYVXhQdOVV608w==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/compat-data": "^7.28.5",
- "@babel/helper-compilation-targets": "^7.27.2",
- "@babel/helper-plugin-utils": "^7.27.1",
+ "@babel/compat-data": "^7.29.0",
+ "@babel/helper-compilation-targets": "^7.28.6",
+ "@babel/helper-plugin-utils": "^7.28.6",
"@babel/helper-validator-option": "^7.27.1",
"@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.28.5",
"@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1",
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1",
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1",
- "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.3",
+ "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.6",
"@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2",
- "@babel/plugin-syntax-import-assertions": "^7.27.1",
- "@babel/plugin-syntax-import-attributes": "^7.27.1",
+ "@babel/plugin-syntax-import-assertions": "^7.28.6",
+ "@babel/plugin-syntax-import-attributes": "^7.28.6",
"@babel/plugin-syntax-unicode-sets-regex": "^7.18.6",
"@babel/plugin-transform-arrow-functions": "^7.27.1",
- "@babel/plugin-transform-async-generator-functions": "^7.28.0",
- "@babel/plugin-transform-async-to-generator": "^7.27.1",
+ "@babel/plugin-transform-async-generator-functions": "^7.29.0",
+ "@babel/plugin-transform-async-to-generator": "^7.28.6",
"@babel/plugin-transform-block-scoped-functions": "^7.27.1",
- "@babel/plugin-transform-block-scoping": "^7.28.5",
- "@babel/plugin-transform-class-properties": "^7.27.1",
- "@babel/plugin-transform-class-static-block": "^7.28.3",
- "@babel/plugin-transform-classes": "^7.28.4",
- "@babel/plugin-transform-computed-properties": "^7.27.1",
+ "@babel/plugin-transform-block-scoping": "^7.28.6",
+ "@babel/plugin-transform-class-properties": "^7.28.6",
+ "@babel/plugin-transform-class-static-block": "^7.28.6",
+ "@babel/plugin-transform-classes": "^7.28.6",
+ "@babel/plugin-transform-computed-properties": "^7.28.6",
"@babel/plugin-transform-destructuring": "^7.28.5",
- "@babel/plugin-transform-dotall-regex": "^7.27.1",
+ "@babel/plugin-transform-dotall-regex": "^7.28.6",
"@babel/plugin-transform-duplicate-keys": "^7.27.1",
- "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.27.1",
+ "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.29.0",
"@babel/plugin-transform-dynamic-import": "^7.27.1",
- "@babel/plugin-transform-explicit-resource-management": "^7.28.0",
- "@babel/plugin-transform-exponentiation-operator": "^7.28.5",
+ "@babel/plugin-transform-explicit-resource-management": "^7.28.6",
+ "@babel/plugin-transform-exponentiation-operator": "^7.28.6",
"@babel/plugin-transform-export-namespace-from": "^7.27.1",
"@babel/plugin-transform-for-of": "^7.27.1",
"@babel/plugin-transform-function-name": "^7.27.1",
- "@babel/plugin-transform-json-strings": "^7.27.1",
+ "@babel/plugin-transform-json-strings": "^7.28.6",
"@babel/plugin-transform-literals": "^7.27.1",
- "@babel/plugin-transform-logical-assignment-operators": "^7.28.5",
+ "@babel/plugin-transform-logical-assignment-operators": "^7.28.6",
"@babel/plugin-transform-member-expression-literals": "^7.27.1",
"@babel/plugin-transform-modules-amd": "^7.27.1",
- "@babel/plugin-transform-modules-commonjs": "^7.27.1",
- "@babel/plugin-transform-modules-systemjs": "^7.28.5",
+ "@babel/plugin-transform-modules-commonjs": "^7.28.6",
+ "@babel/plugin-transform-modules-systemjs": "^7.29.0",
"@babel/plugin-transform-modules-umd": "^7.27.1",
- "@babel/plugin-transform-named-capturing-groups-regex": "^7.27.1",
+ "@babel/plugin-transform-named-capturing-groups-regex": "^7.29.0",
"@babel/plugin-transform-new-target": "^7.27.1",
- "@babel/plugin-transform-nullish-coalescing-operator": "^7.27.1",
- "@babel/plugin-transform-numeric-separator": "^7.27.1",
- "@babel/plugin-transform-object-rest-spread": "^7.28.4",
+ "@babel/plugin-transform-nullish-coalescing-operator": "^7.28.6",
+ "@babel/plugin-transform-numeric-separator": "^7.28.6",
+ "@babel/plugin-transform-object-rest-spread": "^7.28.6",
"@babel/plugin-transform-object-super": "^7.27.1",
- "@babel/plugin-transform-optional-catch-binding": "^7.27.1",
- "@babel/plugin-transform-optional-chaining": "^7.28.5",
+ "@babel/plugin-transform-optional-catch-binding": "^7.28.6",
+ "@babel/plugin-transform-optional-chaining": "^7.28.6",
"@babel/plugin-transform-parameters": "^7.27.7",
- "@babel/plugin-transform-private-methods": "^7.27.1",
- "@babel/plugin-transform-private-property-in-object": "^7.27.1",
+ "@babel/plugin-transform-private-methods": "^7.28.6",
+ "@babel/plugin-transform-private-property-in-object": "^7.28.6",
"@babel/plugin-transform-property-literals": "^7.27.1",
- "@babel/plugin-transform-regenerator": "^7.28.4",
- "@babel/plugin-transform-regexp-modifiers": "^7.27.1",
+ "@babel/plugin-transform-regenerator": "^7.29.0",
+ "@babel/plugin-transform-regexp-modifiers": "^7.28.6",
"@babel/plugin-transform-reserved-words": "^7.27.1",
"@babel/plugin-transform-shorthand-properties": "^7.27.1",
- "@babel/plugin-transform-spread": "^7.27.1",
+ "@babel/plugin-transform-spread": "^7.28.6",
"@babel/plugin-transform-sticky-regex": "^7.27.1",
"@babel/plugin-transform-template-literals": "^7.27.1",
"@babel/plugin-transform-typeof-symbol": "^7.27.1",
"@babel/plugin-transform-unicode-escapes": "^7.27.1",
- "@babel/plugin-transform-unicode-property-regex": "^7.27.1",
+ "@babel/plugin-transform-unicode-property-regex": "^7.28.6",
"@babel/plugin-transform-unicode-regex": "^7.27.1",
- "@babel/plugin-transform-unicode-sets-regex": "^7.27.1",
+ "@babel/plugin-transform-unicode-sets-regex": "^7.28.6",
"@babel/preset-modules": "0.1.6-no-external-plugins",
- "babel-plugin-polyfill-corejs2": "^0.4.14",
- "babel-plugin-polyfill-corejs3": "^0.13.0",
- "babel-plugin-polyfill-regenerator": "^0.6.5",
- "core-js-compat": "^3.43.0",
+ "babel-plugin-polyfill-corejs2": "^0.4.15",
+ "babel-plugin-polyfill-corejs3": "^0.14.0",
+ "babel-plugin-polyfill-regenerator": "^0.6.6",
+ "core-js-compat": "^3.48.0",
"semver": "^6.3.1"
},
"engines": {
@@ -1768,33 +1769,33 @@
}
},
"node_modules/@babel/template": {
- "version": "7.27.2",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz",
- "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==",
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz",
+ "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.27.1",
- "@babel/parser": "^7.27.2",
- "@babel/types": "^7.27.1"
+ "@babel/code-frame": "^7.28.6",
+ "@babel/parser": "^7.28.6",
+ "@babel/types": "^7.28.6"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/traverse": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz",
- "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==",
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz",
+ "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/code-frame": "^7.27.1",
- "@babel/generator": "^7.28.5",
+ "@babel/code-frame": "^7.29.0",
+ "@babel/generator": "^7.29.0",
"@babel/helper-globals": "^7.28.0",
- "@babel/parser": "^7.28.5",
- "@babel/template": "^7.27.2",
- "@babel/types": "^7.28.5",
+ "@babel/parser": "^7.29.0",
+ "@babel/template": "^7.28.6",
+ "@babel/types": "^7.29.0",
"debug": "^4.3.1"
},
"engines": {
@@ -1802,9 +1803,9 @@
}
},
"node_modules/@babel/types": {
- "version": "7.28.5",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz",
- "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==",
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz",
+ "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1816,9 +1817,9 @@
}
},
"node_modules/@carbon/icon-helpers": {
- "version": "10.68.0",
- "resolved": "https://registry.npmjs.org/@carbon/icon-helpers/-/icon-helpers-10.68.0.tgz",
- "integrity": "sha512-fYor/Fs0RLtPMh2KRyPYR83JKoWbAmoQ7tCIW0QQcwYcIu82tvy7uT8vTNhda21w3uueOp70p6rYyY6vYjuRZA==",
+ "version": "10.73.0",
+ "resolved": "https://registry.npmjs.org/@carbon/icon-helpers/-/icon-helpers-10.73.0.tgz",
+ "integrity": "sha512-Grn/QxHZfSOdXp/WBadegVfq1LT96QwX9b977dqMU5qmxp6cxKqUGvV1oqs6GiBacKoQFrH2xgbKwlcecgSHfA==",
"hasInstallScript": true,
"license": "Apache-2.0",
"dependencies": {
@@ -1826,13 +1827,13 @@
}
},
"node_modules/@carbon/icons-react": {
- "version": "11.70.0",
- "resolved": "https://registry.npmjs.org/@carbon/icons-react/-/icons-react-11.70.0.tgz",
- "integrity": "sha512-hpC10UuSLnLCfGw4TizMf4Omm2+P3vHmstN7y7hUsRCI4lG9BC2OHEtYZiVYdBNoshKxGE2m3iUZrM3cJhIebQ==",
+ "version": "11.76.0",
+ "resolved": "https://registry.npmjs.org/@carbon/icons-react/-/icons-react-11.76.0.tgz",
+ "integrity": "sha512-FsRlufW8lcdEX/Vj0NpdloBDPmXGRCIaD6ENhYt0f42zJncs6OqNQ58plqNteHg/JMQAdA+pP8f5tSkopNhRRg==",
"hasInstallScript": true,
"license": "Apache-2.0",
"dependencies": {
- "@carbon/icon-helpers": "^10.68.0",
+ "@carbon/icon-helpers": "^10.73.0",
"@ibm/telemetry-js": "^1.5.0",
"prop-types": "^15.8.1"
},
@@ -1869,9 +1870,9 @@
}
},
"node_modules/@eslint-community/eslint-utils": {
- "version": "4.9.0",
- "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz",
- "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==",
+ "version": "4.9.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz",
+ "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -1924,9 +1925,9 @@
}
},
"node_modules/@eslint/config-array/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
"dev": true,
"license": "ISC",
"dependencies": {
@@ -1960,20 +1961,20 @@
}
},
"node_modules/@eslint/eslintrc": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz",
- "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==",
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.4.tgz",
+ "integrity": "sha512-4h4MVF8pmBsncB60r0wSJiIeUKTSD4m7FmTFThG8RHlsg9ajqckLm9OraguFGZE4vVdpiI1Q4+hFnisopmG6gQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "ajv": "^6.12.4",
+ "ajv": "^6.14.0",
"debug": "^4.3.2",
"espree": "^10.0.1",
"globals": "^14.0.0",
"ignore": "^5.2.0",
"import-fresh": "^3.2.1",
- "js-yaml": "^4.1.0",
- "minimatch": "^3.1.2",
+ "js-yaml": "^4.1.1",
+ "minimatch": "^3.1.3",
"strip-json-comments": "^3.1.1"
},
"engines": {
@@ -2005,9 +2006,9 @@
}
},
"node_modules/@eslint/eslintrc/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
"dev": true,
"license": "ISC",
"dependencies": {
@@ -2107,53 +2108,22 @@
}
},
"node_modules/@ibm/telemetry-js": {
- "version": "1.10.2",
- "resolved": "https://registry.npmjs.org/@ibm/telemetry-js/-/telemetry-js-1.10.2.tgz",
- "integrity": "sha512-F8+/NNUwtm8BuFz18O9KPvIFTFDo8GUSoyhPxPjEpk7nEyEzWGfhIiEPhL00B2NdHRLDSljh3AiCfSnL/tutiQ==",
+ "version": "1.11.0",
+ "resolved": "https://registry.npmjs.org/@ibm/telemetry-js/-/telemetry-js-1.11.0.tgz",
+ "integrity": "sha512-RO/9j+URJnSfseWg9ZkEX9p+a3Ousd33DBU7rOafoZB08RqdzxFVYJ2/iM50dkBuD0o7WX7GYt1sLbNgCoE+pA==",
"license": "Apache-2.0",
"bin": {
"ibmtelemetry": "dist/collect.js"
}
},
- "node_modules/@isaacs/balanced-match": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz",
- "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "20 || >=22"
- }
- },
- "node_modules/@isaacs/brace-expansion": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz",
- "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@isaacs/balanced-match": "^4.0.1"
- },
- "engines": {
- "node": "20 || >=22"
- }
- },
"node_modules/@isaacs/cliui": {
- "version": "8.0.2",
- "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
- "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-9.0.0.tgz",
+ "integrity": "sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==",
"dev": true,
- "license": "ISC",
- "dependencies": {
- "string-width": "^5.1.2",
- "string-width-cjs": "npm:string-width@^4.2.0",
- "strip-ansi": "^7.0.1",
- "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
- "wrap-ansi": "^8.1.0",
- "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
- },
+ "license": "BlueOak-1.0.0",
"engines": {
- "node": ">=12"
+ "node": ">=18"
}
},
"node_modules/@jridgewell/gen-mapping": {
@@ -2218,9 +2188,9 @@
}
},
"node_modules/@monaco-editor/loader": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/@monaco-editor/loader/-/loader-1.6.1.tgz",
- "integrity": "sha512-w3tEnj9HYEC73wtjdpR089AqkUPskFRcdkxsiSFt3SoUc3OHpmu+leP94CXBm4mHfefmhsdfI0ZQu6qJ0wgtPg==",
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/@monaco-editor/loader/-/loader-1.7.0.tgz",
+ "integrity": "sha512-gIwR1HrJrrx+vfyOhYmCZ0/JcWqG5kbfG7+d3f/C1LXk2EvzAbHSg3MQ5lO2sMlo9izoAZ04shohfKLVT6crVA==",
"license": "MIT",
"dependencies": {
"state-local": "^1.0.6"
@@ -2244,7 +2214,6 @@
"version": "2.1.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
"integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
- "dev": true,
"license": "MIT",
"dependencies": {
"@nodelib/fs.stat": "2.0.5",
@@ -2258,7 +2227,6 @@
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
"integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">= 8"
@@ -2268,7 +2236,6 @@
"version": "1.2.8",
"resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
"integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
- "dev": true,
"license": "MIT",
"dependencies": {
"@nodelib/fs.scandir": "2.1.5",
@@ -2553,7 +2520,6 @@
"integrity": "sha512-ztAoxkaKhRVloa3XydohgQQCb0/8x9T63yXovpmHzKMkHO6pkjdsIAWKOS4bE95P/2quVh1NtjSKlMRNzSBffw==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@babel/core": "^7.21.3",
"@svgr/babel-preset": "^7.0.0",
@@ -2887,9 +2853,9 @@
"license": "MIT"
},
"node_modules/@types/d3-shape": {
- "version": "3.1.7",
- "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.7.tgz",
- "integrity": "sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==",
+ "version": "3.1.8",
+ "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.8.tgz",
+ "integrity": "sha512-lae0iWfcDeR7qt7rA88BNiqdvPS5pFVPpo5OfjElwNaT2yyekbM0C9vK+yqBqEmHr6lDkRnYNoTBYlAgJa7a4w==",
"license": "MIT",
"dependencies": {
"@types/d3-path": "*"
@@ -3047,19 +3013,19 @@
"license": "MIT"
},
"node_modules/@types/node": {
- "version": "24.10.1",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz",
- "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==",
+ "version": "25.3.2",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.2.tgz",
+ "integrity": "sha512-RpV6r/ij22zRRdyBPcxDeKAzH43phWVKEjL2iksqo1Vz3CuBUrgmPpPhALKiRfU7OMCmeeO9vECBMsV0hMTG8Q==",
"dev": true,
"license": "MIT",
"dependencies": {
- "undici-types": "~7.16.0"
+ "undici-types": "~7.18.0"
}
},
"node_modules/@types/prismjs": {
- "version": "1.26.5",
- "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.5.tgz",
- "integrity": "sha512-AUZTa7hQ2KY5L7AmtSiqxlhWxb4ina0yd8hNbl4TWuqnv/pFP0nDMb3YrfSBf4hJVGLh2YEIBfKaBW/9UEl6IQ==",
+ "version": "1.26.6",
+ "resolved": "https://registry.npmjs.org/@types/prismjs/-/prismjs-1.26.6.tgz",
+ "integrity": "sha512-vqlvI7qlMvcCBbVe0AKAb4f97//Hy0EBTaiW8AalRnG/xAN5zOiWWyrNqNXeq8+KAuvRewjCVY1+IPxk4RdNYw==",
"license": "MIT"
},
"node_modules/@types/prop-types": {
@@ -3073,7 +3039,6 @@
"resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.1.tgz",
"integrity": "sha512-V0kuGBX3+prX+DQ/7r2qsv1NsdfnCLnTgnRJ1pYnxykBhGMz+qj+box5lq7XsO5mtZsBqpjwwTu/7wszPfMBcw==",
"license": "MIT",
- "peer": true,
"dependencies": {
"@types/prop-types": "*",
"csstype": "^3.0.2"
@@ -3100,6 +3065,14 @@
"glob": "^11.0.3"
}
},
+ "node_modules/@types/trusted-types": {
+ "version": "2.0.7",
+ "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz",
+ "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==",
+ "license": "MIT",
+ "optional": true,
+ "peer": true
+ },
"node_modules/@types/unist": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz",
@@ -3159,7 +3132,6 @@
"integrity": "sha512-pUXGCuHnnKw6PyYq93lLRiZm3vjuslIy7tus1lIQTYVK9bL8XBgJnCWm8a0KcTtHC84Yya1Q6rtll+duSMj0dg==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@typescript-eslint/scope-manager": "8.39.1",
"@typescript-eslint/types": "8.39.1",
@@ -3305,9 +3277,9 @@
}
},
"node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
- "version": "7.7.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
- "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
+ "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
"dev": true,
"license": "ISC",
"bin": {
@@ -3373,9 +3345,9 @@
}
},
"node_modules/@uiw/copy-to-clipboard": {
- "version": "1.0.17",
- "resolved": "https://registry.npmjs.org/@uiw/copy-to-clipboard/-/copy-to-clipboard-1.0.17.tgz",
- "integrity": "sha512-O2GUHV90Iw2VrSLVLK0OmNIMdZ5fgEg4NhvtwINsX+eZ/Wf6DWD0TdsK9xwV7dNRnK/UI2mQtl0a2/kRgm1m1A==",
+ "version": "1.0.20",
+ "resolved": "https://registry.npmjs.org/@uiw/copy-to-clipboard/-/copy-to-clipboard-1.0.20.tgz",
+ "integrity": "sha512-IFQhS62CLNon1YgYJTEzXR2N3WVXg7V1FaBRDLMlzU6JY5X6Hr3OPAcw4WNoKcz2XcFD6XCgwEjlsmj+JA0mWA==",
"license": "MIT",
"funding": {
"url": "https://jaywcjlove.github.io/#/sponsor"
@@ -3432,9 +3404,9 @@
}
},
"node_modules/@vscode/test-electron/node_modules/semver": {
- "version": "7.7.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
- "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
+ "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
"dev": true,
"license": "ISC",
"bin": {
@@ -3667,12 +3639,11 @@
"license": "Apache-2.0"
},
"node_modules/acorn": {
- "version": "8.15.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
- "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
+ "version": "8.16.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz",
+ "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==",
"dev": true,
"license": "MIT",
- "peer": true,
"bin": {
"acorn": "bin/acorn"
},
@@ -3717,12 +3688,11 @@
}
},
"node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
+ "version": "6.14.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz",
+ "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"fast-deep-equal": "^3.1.1",
"fast-json-stable-stringify": "^2.0.0",
@@ -3753,9 +3723,9 @@
}
},
"node_modules/ajv-formats/node_modules/ajv": {
- "version": "8.17.1",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
- "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz",
+ "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -3797,16 +3767,13 @@
}
},
"node_modules/ansi-regex": {
- "version": "6.2.2",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
- "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true,
"license": "MIT",
"engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ "node": ">=8"
}
},
"node_modules/ansi-styles": {
@@ -4030,14 +3997,14 @@
}
},
"node_modules/babel-plugin-polyfill-corejs2": {
- "version": "0.4.14",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz",
- "integrity": "sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==",
+ "version": "0.4.15",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.15.tgz",
+ "integrity": "sha512-hR3GwrRwHUfYwGfrisXPIDP3JcYfBrW7wKE7+Au6wDYl7fm/ka1NEII6kORzxNU556JjfidZeBsO10kYvtV1aw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/compat-data": "^7.27.7",
- "@babel/helper-define-polyfill-provider": "^0.6.5",
+ "@babel/compat-data": "^7.28.6",
+ "@babel/helper-define-polyfill-provider": "^0.6.6",
"semver": "^6.3.1"
},
"peerDependencies": {
@@ -4045,27 +4012,27 @@
}
},
"node_modules/babel-plugin-polyfill-corejs3": {
- "version": "0.13.0",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz",
- "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==",
+ "version": "0.14.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.14.0.tgz",
+ "integrity": "sha512-AvDcMxJ34W4Wgy4KBIIePQTAOP1Ie2WFwkQp3dB7FQ/f0lI5+nM96zUnYEOE1P9sEg0es5VCP0HxiWu5fUHZAQ==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-define-polyfill-provider": "^0.6.5",
- "core-js-compat": "^3.43.0"
+ "@babel/helper-define-polyfill-provider": "^0.6.6",
+ "core-js-compat": "^3.48.0"
},
"peerDependencies": {
"@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
}
},
"node_modules/babel-plugin-polyfill-regenerator": {
- "version": "0.6.5",
- "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz",
- "integrity": "sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==",
+ "version": "0.6.6",
+ "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.6.tgz",
+ "integrity": "sha512-hYm+XLYRMvupxiQzrvXUj7YyvFFVfv5gI0R71AJzudg1g2AI2vyCPPIFEBjk162/wFzti3inBHo7isWFuEVS/A==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@babel/helper-define-polyfill-provider": "^0.6.5"
+ "@babel/helper-define-polyfill-provider": "^0.6.6"
},
"peerDependencies": {
"@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0"
@@ -4085,6 +4052,7 @@
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true,
"license": "MIT"
},
"node_modules/base64-js": {
@@ -4108,13 +4076,16 @@
"license": "MIT"
},
"node_modules/baseline-browser-mapping": {
- "version": "2.8.29",
- "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.29.tgz",
- "integrity": "sha512-sXdt2elaVnhpDNRDz+1BDx1JQoJRuNk7oVlAlbGiFkLikHCAQiccexF/9e91zVi6RCgqspl04aP+6Cnl9zRLrA==",
+ "version": "2.10.0",
+ "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.0.tgz",
+ "integrity": "sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA==",
"dev": true,
"license": "Apache-2.0",
"bin": {
- "baseline-browser-mapping": "dist/cli.js"
+ "baseline-browser-mapping": "dist/cli.cjs"
+ },
+ "engines": {
+ "node": ">=6.0.0"
}
},
"node_modules/bcp-47-match": {
@@ -4201,7 +4172,6 @@
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
"integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
- "dev": true,
"license": "MIT",
"dependencies": {
"fill-range": "^7.1.1"
@@ -4218,9 +4188,9 @@
"license": "ISC"
},
"node_modules/browserslist": {
- "version": "4.28.0",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.0.tgz",
- "integrity": "sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==",
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz",
+ "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==",
"dev": true,
"funding": [
{
@@ -4237,13 +4207,12 @@
}
],
"license": "MIT",
- "peer": true,
"dependencies": {
- "baseline-browser-mapping": "^2.8.25",
- "caniuse-lite": "^1.0.30001754",
- "electron-to-chromium": "^1.5.249",
+ "baseline-browser-mapping": "^2.9.0",
+ "caniuse-lite": "^1.0.30001759",
+ "electron-to-chromium": "^1.5.263",
"node-releases": "^2.0.27",
- "update-browserslist-db": "^1.1.4"
+ "update-browserslist-db": "^1.2.0"
},
"bin": {
"browserslist": "cli.js"
@@ -4376,9 +4345,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001755",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001755.tgz",
- "integrity": "sha512-44V+Jm6ctPj7R52Na4TLi3Zri4dWUljJd+RDm+j8LtNCc/ihLCT+X1TzoOAkRETEWqjuLnh9581Tl80FvK7jVA==",
+ "version": "1.0.30001774",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001774.tgz",
+ "integrity": "sha512-DDdwPGz99nmIEv216hKSgLD+D4ikHQHjBC/seF98N9CPqRX4M5mSxT9eTV6oyisnJcuzxtZy4n17yKKQYmYQOA==",
"dev": true,
"funding": [
{
@@ -4568,69 +4537,6 @@
"wrap-ansi": "^7.0.0"
}
},
- "node_modules/cliui/node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/cliui/node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/cliui/node_modules/string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/cliui/node_modules/strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/cliui/node_modules/wrap-ansi": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
- "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
- }
- },
"node_modules/clone-deep": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
@@ -4696,6 +4602,7 @@
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true,
"license": "MIT"
},
"node_modules/convert-source-map": {
@@ -4706,12 +4613,16 @@
"license": "MIT"
},
"node_modules/cookie": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz",
- "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz",
+ "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==",
"license": "MIT",
"engines": {
"node": ">=18"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
}
},
"node_modules/copy-webpack-plugin": {
@@ -4740,13 +4651,13 @@
}
},
"node_modules/core-js-compat": {
- "version": "3.47.0",
- "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.47.0.tgz",
- "integrity": "sha512-IGfuznZ/n7Kp9+nypamBhvwdwLsW6KC8IOaURw2doAK5e98AG3acVLdh0woOnEqCfUtS+Vu882JE4k/DAm3ItQ==",
+ "version": "3.48.0",
+ "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.48.0.tgz",
+ "integrity": "sha512-OM4cAF3D6VtH/WkLtWvyNC56EZVXsZdU3iqaMG2B4WvYrlqU831pc4UtG5yp0sE9z8Y02wVN7PjW5Zf9Gt0f1Q==",
"dev": true,
"license": "MIT",
"dependencies": {
- "browserslist": "^4.28.0"
+ "browserslist": "^4.28.1"
},
"funding": {
"type": "opencollective",
@@ -4810,7 +4721,6 @@
"version": "7.0.6",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
"integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
- "dev": true,
"license": "MIT",
"dependencies": {
"path-key": "^3.1.0",
@@ -4849,9 +4759,9 @@
}
},
"node_modules/css-loader/node_modules/semver": {
- "version": "7.7.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
- "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
+ "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
"dev": true,
"license": "ISC",
"bin": {
@@ -4879,9 +4789,9 @@
}
},
"node_modules/css-selector-parser": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-3.2.0.tgz",
- "integrity": "sha512-L1bdkNKUP5WYxiW5dW6vA2hd3sL8BdRNLy2FCX0rLVise4eNw9nBdeBuJHxlELieSE2H1f6bYQFfwVUwWCV9rQ==",
+ "version": "3.3.0",
+ "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-3.3.0.tgz",
+ "integrity": "sha512-Y2asgMGFqJKF4fq4xHDSlFYIkeVfRsm69lQC1q9kbEsH5XtnINTMrweLkjYMeaUgiXBy/uvKeO/a1JHTNnmB2g==",
"funding": [
{
"type": "github",
@@ -5182,9 +5092,9 @@
}
},
"node_modules/d3-format": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz",
- "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.2.tgz",
+ "integrity": "sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==",
"license": "ISC",
"engines": {
"node": ">=12"
@@ -5293,7 +5203,6 @@
"resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz",
"integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==",
"license": "ISC",
- "peer": true,
"engines": {
"node": ">=12"
}
@@ -5463,9 +5372,9 @@
}
},
"node_modules/decode-named-character-reference": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz",
- "integrity": "sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==",
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.3.0.tgz",
+ "integrity": "sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==",
"license": "MIT",
"dependencies": {
"character-entities": "^2.0.0"
@@ -5573,9 +5482,9 @@
}
},
"node_modules/diff": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz",
- "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==",
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.2.tgz",
+ "integrity": "sha512-vtcDfH3TOjP8UekytvnHH1o1P4FcUdt4eQ1Y+Abap1tk/OB2MWQvcwS2ClCd1zuIhc3JKOx6p3kod8Vfys3E+A==",
"dev": true,
"license": "BSD-3-Clause",
"engines": {
@@ -5666,10 +5575,14 @@
}
},
"node_modules/dompurify": {
- "version": "3.1.7",
- "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.7.tgz",
- "integrity": "sha512-VaTstWtsneJY8xzy7DekmYWEOZcmzIe3Qb3zPd4STve1OBTa+e+WmS1ITQec1fZYXI3HCsOZZiSMpG6oxoWMWQ==",
- "license": "(MPL-2.0 OR Apache-2.0)"
+ "version": "3.2.7",
+ "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.7.tgz",
+ "integrity": "sha512-WhL/YuveyGXJaerVlMYGWhvQswa7myDG17P7Vu65EWC05o8vfeNbvNf4d/BOvH99+ZW+LlQsc1GDKMa1vNK6dw==",
+ "license": "(MPL-2.0 OR Apache-2.0)",
+ "peer": true,
+ "optionalDependencies": {
+ "@types/trusted-types": "^2.0.7"
+ }
},
"node_modules/domutils": {
"version": "3.2.2",
@@ -5711,24 +5624,23 @@
"readable-stream": "^2.0.2"
}
},
- "node_modules/eastasianwidth": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
- "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
- "dev": true,
- "license": "MIT"
- },
"node_modules/electron-to-chromium": {
- "version": "1.5.256",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.256.tgz",
- "integrity": "sha512-uqYq1IQhpXXLX+HgiXdyOZml7spy4xfy42yPxcCCRjswp0fYM2X+JwCON07lqnpLEGVCj739B7Yr+FngmHBMEQ==",
+ "version": "1.5.302",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.302.tgz",
+ "integrity": "sha512-sM6HAN2LyK82IyPBpznDRqlTQAtuSaO+ShzFiWTvoMJLHyZ+Y39r8VMfHzwbU8MVBzQ4Wdn85+wlZl2TLGIlwg==",
"dev": true,
"license": "ISC"
},
+ "node_modules/elkjs": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/elkjs/-/elkjs-0.11.0.tgz",
+ "integrity": "sha512-u4J8h9mwEDaYMqo0RYJpqNMFDoMK7f+pu4GjcV+N8jIC7TRdORgzkfSjTJemhqONFfH6fBI3wpysgWbhgVWIXw==",
+ "license": "EPL-2.0"
+ },
"node_modules/emoji-regex": {
- "version": "9.2.2",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
- "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"dev": true,
"license": "MIT"
},
@@ -5743,14 +5655,14 @@
}
},
"node_modules/enhanced-resolve": {
- "version": "5.18.3",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz",
- "integrity": "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==",
+ "version": "5.19.0",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.19.0.tgz",
+ "integrity": "sha512-phv3E1Xl4tQOShqSte26C7Fl84EwUdZsyOuSSk9qtAGyyQs2s3jJzComh+Abf4g187lUUAvH+H26omrqia2aGg==",
"dev": true,
"license": "MIT",
"dependencies": {
"graceful-fs": "^4.2.4",
- "tapable": "^2.2.0"
+ "tapable": "^2.3.0"
},
"engines": {
"node": ">=10.13.0"
@@ -5770,9 +5682,9 @@
}
},
"node_modules/envinfo": {
- "version": "7.20.0",
- "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.20.0.tgz",
- "integrity": "sha512-+zUomDcLXsVkQ37vUqWBvQwLaLlj8eZPSi61llaEFAVBY5mhcXdaSw1pSJVl4yTYD5g/gEfpNl28YYk4IPvrrg==",
+ "version": "7.21.0",
+ "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.21.0.tgz",
+ "integrity": "sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow==",
"dev": true,
"license": "MIT",
"bin": {
@@ -5793,9 +5705,9 @@
}
},
"node_modules/es-abstract": {
- "version": "1.24.0",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz",
- "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==",
+ "version": "1.24.1",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.1.tgz",
+ "integrity": "sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -5882,27 +5794,27 @@
}
},
"node_modules/es-iterator-helpers": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz",
- "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==",
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.2.tgz",
+ "integrity": "sha512-BrUQ0cPTB/IwXj23HtwHjS9n7O4h9FX94b4xc5zlTHxeLgTAdzYUDyy6KdExAl9lbN5rtfe44xpjpmj9grxs5w==",
"dev": true,
"license": "MIT",
"dependencies": {
"call-bind": "^1.0.8",
- "call-bound": "^1.0.3",
+ "call-bound": "^1.0.4",
"define-properties": "^1.2.1",
- "es-abstract": "^1.23.6",
+ "es-abstract": "^1.24.1",
"es-errors": "^1.3.0",
- "es-set-tostringtag": "^2.0.3",
+ "es-set-tostringtag": "^2.1.0",
"function-bind": "^1.1.2",
- "get-intrinsic": "^1.2.6",
+ "get-intrinsic": "^1.3.0",
"globalthis": "^1.0.4",
"gopd": "^1.2.0",
"has-property-descriptors": "^1.0.2",
"has-proto": "^1.2.0",
"has-symbols": "^1.1.0",
"internal-slot": "^1.1.0",
- "iterator.prototype": "^1.1.4",
+ "iterator.prototype": "^1.1.5",
"safe-array-concat": "^1.1.3"
},
"engines": {
@@ -6005,7 +5917,6 @@
"integrity": "sha512-TS9bTNIryDzStCpJN93aC5VRSW3uTx9sClUn4B87pwiCaJh220otoI0X8mJKr+VcPtniMdN8GKjlwgWGUv5ZKA==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.12.1",
@@ -6141,9 +6052,9 @@
}
},
"node_modules/eslint-plugin-react/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
"dev": true,
"license": "ISC",
"dependencies": {
@@ -6154,19 +6065,25 @@
}
},
"node_modules/eslint-plugin-react/node_modules/resolve": {
- "version": "2.0.0-next.5",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz",
- "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==",
+ "version": "2.0.0-next.6",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.6.tgz",
+ "integrity": "sha512-3JmVl5hMGtJ3kMmB3zi3DL25KfkCEyy3Tw7Gmw7z5w8M9WlwoPFnIvwChzu1+cF3iaK3sp18hhPz8ANeimdJfA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "is-core-module": "^2.13.0",
+ "es-errors": "^1.3.0",
+ "is-core-module": "^2.16.1",
+ "node-exports-info": "^1.6.0",
+ "object-keys": "^1.1.1",
"path-parse": "^1.0.7",
"supports-preserve-symlinks-flag": "^1.0.0"
},
"bin": {
"resolve": "bin/resolve"
},
+ "engines": {
+ "node": ">= 0.4"
+ },
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
@@ -6236,9 +6153,9 @@
}
},
"node_modules/eslint/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
"dev": true,
"license": "ISC",
"dependencies": {
@@ -6280,9 +6197,9 @@
}
},
"node_modules/esquery": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz",
- "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==",
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz",
+ "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==",
"dev": true,
"license": "BSD-3-Clause",
"dependencies": {
@@ -6345,6 +6262,35 @@
"node": ">=0.8.x"
}
},
+ "node_modules/execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "license": "MIT",
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.0",
+ "human-signals": "^2.1.0",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.1",
+ "onetime": "^5.1.2",
+ "signal-exit": "^3.0.3",
+ "strip-final-newline": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/execa/node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "license": "ISC"
+ },
"node_modules/extend": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
@@ -6369,7 +6315,6 @@
"version": "3.3.3",
"resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz",
"integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==",
- "dev": true,
"license": "MIT",
"dependencies": {
"@nodelib/fs.stat": "^2.0.2",
@@ -6386,7 +6331,6 @@
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
"integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
"license": "ISC",
"dependencies": {
"is-glob": "^4.0.1"
@@ -6437,10 +6381,9 @@
}
},
"node_modules/fastq": {
- "version": "1.19.1",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz",
- "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==",
- "dev": true,
+ "version": "1.20.1",
+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz",
+ "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==",
"license": "ISC",
"dependencies": {
"reusify": "^1.0.4"
@@ -6515,7 +6458,6 @@
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
"integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
- "dev": true,
"license": "MIT",
"dependencies": {
"to-regex-range": "^5.0.1"
@@ -6618,6 +6560,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "dev": true,
"license": "ISC"
},
"node_modules/fsevents": {
@@ -6667,7 +6610,7 @@
"version": "7.2.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "deprecated": "Glob versions prior to v9 are no longer supported",
+ "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me",
"dev": true,
"license": "ISC",
"dependencies": {
@@ -6686,9 +6629,9 @@
}
},
"node_modules/fstream/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
"dev": true,
"license": "ISC",
"dependencies": {
@@ -6716,6 +6659,7 @@
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "dev": true,
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/ljharb"
@@ -6831,6 +6775,18 @@
"node": ">= 0.4"
}
},
+ "node_modules/get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/get-symbol-description": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz",
@@ -6859,6 +6815,7 @@
"version": "11.1.0",
"resolved": "https://registry.npmjs.org/glob/-/glob-11.1.0.tgz",
"integrity": "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==",
+ "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me",
"dev": true,
"license": "BlueOak-1.0.0",
"dependencies": {
@@ -6899,17 +6856,40 @@
"dev": true,
"license": "BSD-2-Clause"
},
+ "node_modules/glob/node_modules/balanced-match": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
+ "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "18 || 20 || >=22"
+ }
+ },
+ "node_modules/glob/node_modules/brace-expansion": {
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz",
+ "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^4.0.2"
+ },
+ "engines": {
+ "node": "18 || 20 || >=22"
+ }
+ },
"node_modules/glob/node_modules/minimatch": {
- "version": "10.1.1",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz",
- "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==",
+ "version": "10.2.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz",
+ "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==",
"dev": true,
"license": "BlueOak-1.0.0",
"dependencies": {
- "@isaacs/brace-expansion": "^5.0.0"
+ "brace-expansion": "^5.0.2"
},
"engines": {
- "node": "20 || >=22"
+ "node": "18 || 20 || >=22"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
@@ -7087,6 +7067,7 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
"integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"function-bind": "^1.1.2"
@@ -7310,15 +7291,15 @@
}
},
"node_modules/hast-util-to-parse5": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz",
- "integrity": "sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==",
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.1.tgz",
+ "integrity": "sha512-MlWT6Pjt4CG9lFCjiz4BH7l9wmrMkfkJYCxFwKQic8+RTZgWPuWxwAfjJElsXkex7DJjfSJsQIt931ilUgmwdA==",
"license": "MIT",
"dependencies": {
"@types/hast": "^3.0.0",
"comma-separated-tokens": "^2.0.0",
"devlop": "^1.0.0",
- "property-information": "^6.0.0",
+ "property-information": "^7.0.0",
"space-separated-tokens": "^2.0.0",
"web-namespaces": "^2.0.0",
"zwitch": "^2.0.0"
@@ -7328,16 +7309,6 @@
"url": "https://opencollective.com/unified"
}
},
- "node_modules/hast-util-to-parse5/node_modules/property-information": {
- "version": "6.5.0",
- "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz",
- "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==",
- "license": "MIT",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
"node_modules/hast-util-to-string": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.1.tgz",
@@ -7465,6 +7436,15 @@
"node": ">= 6"
}
},
+ "node_modules/human-signals": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
+ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=10.17.0"
+ }
+ },
"node_modules/iconv-lite": {
"version": "0.6.3",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
@@ -7579,6 +7559,7 @@
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
"deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
+ "dev": true,
"license": "ISC",
"dependencies": {
"once": "^1.3.0",
@@ -7589,6 +7570,7 @@
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true,
"license": "ISC"
},
"node_modules/inline-style-parser": {
@@ -7622,12 +7604,13 @@
}
},
"node_modules/interpret": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
- "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz",
+ "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==",
+ "dev": true,
"license": "MIT",
"engines": {
- "node": ">= 0.10"
+ "node": ">=10.13.0"
}
},
"node_modules/is-alphabetical": {
@@ -7762,6 +7745,7 @@
"version": "2.16.1",
"resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
"integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"hasown": "^2.0.2"
@@ -7822,7 +7806,6 @@
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
"integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">=0.10.0"
@@ -7878,7 +7861,6 @@
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
- "dev": true,
"license": "MIT",
"dependencies": {
"is-extglob": "^2.1.1"
@@ -7927,7 +7909,6 @@
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">=0.12.0"
@@ -8023,6 +8004,18 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/is-string": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz",
@@ -8144,7 +8137,6 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
- "dev": true,
"license": "ISC"
},
"node_modules/isobject": {
@@ -8176,13 +8168,13 @@
}
},
"node_modules/jackspeak": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz",
- "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==",
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.2.3.tgz",
+ "integrity": "sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==",
"dev": true,
"license": "BlueOak-1.0.0",
"dependencies": {
- "@isaacs/cliui": "^8.0.2"
+ "@isaacs/cliui": "^9.0.0"
},
"engines": {
"node": "20 || >=22"
@@ -8428,9 +8420,9 @@
}
},
"node_modules/lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
+ "version": "4.17.23",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz",
+ "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==",
"license": "MIT"
},
"node_modules/lodash.debounce": {
@@ -8520,6 +8512,7 @@
"resolved": "https://registry.npmjs.org/marked/-/marked-14.0.0.tgz",
"integrity": "sha512-uIj4+faQ+MgHgwUW1l2PsPglZLOLOT1uErt06dAPtx2kjteLAkbsd/0FiYg/MGS+i7ZKLb7w2WClxHkzOOuryQ==",
"license": "MIT",
+ "peer": true,
"bin": {
"marked": "bin/marked.js"
},
@@ -8566,9 +8559,9 @@
}
},
"node_modules/mdast-util-from-markdown": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz",
- "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==",
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.3.tgz",
+ "integrity": "sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==",
"license": "MIT",
"dependencies": {
"@types/mdast": "^4.0.0",
@@ -8765,9 +8758,9 @@
}
},
"node_modules/mdast-util-to-hast": {
- "version": "13.2.0",
- "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz",
- "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==",
+ "version": "13.2.1",
+ "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.1.tgz",
+ "integrity": "sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==",
"license": "MIT",
"dependencies": {
"@types/hast": "^3.0.0",
@@ -8830,14 +8823,12 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
"integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
- "dev": true,
"license": "MIT"
},
"node_modules/merge2": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
"integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">= 8"
@@ -9410,7 +9401,6 @@
"version": "4.0.8",
"resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
"integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
- "dev": true,
"license": "MIT",
"dependencies": {
"braces": "^3.0.3",
@@ -9443,6 +9433,15 @@
"node": ">= 0.6"
}
},
+ "node_modules/mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
"node_modules/mini-css-extract-plugin": {
"version": "1.6.2",
"resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-1.6.2.tgz",
@@ -9485,13 +9484,13 @@
}
},
"node_modules/minimatch": {
- "version": "9.0.5",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
- "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+ "version": "9.0.9",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz",
+ "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==",
"dev": true,
"license": "ISC",
"dependencies": {
- "brace-expansion": "^2.0.1"
+ "brace-expansion": "^2.0.2"
},
"engines": {
"node": ">=16 || 14 >=14.17"
@@ -9511,11 +9510,11 @@
}
},
"node_modules/minipass": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
- "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz",
+ "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==",
"dev": true,
- "license": "ISC",
+ "license": "BlueOak-1.0.0",
"engines": {
"node": ">=16 || 14 >=14.17"
}
@@ -9538,7 +9537,6 @@
"resolved": "https://registry.npmjs.org/mobx/-/mobx-6.15.0.tgz",
"integrity": "sha512-UczzB+0nnwGotYSgllfARAqWCJ5e/skuV2K/l+Zyck/H6pJIhLXuBnz+6vn2i211o7DtbE78HQtsYEKICHGI+g==",
"license": "MIT",
- "peer": true,
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/mobx"
@@ -9631,7 +9629,7 @@
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz",
"integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==",
- "deprecated": "Glob versions prior to v9 are no longer supported",
+ "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me",
"dev": true,
"license": "ISC",
"dependencies": {
@@ -9649,9 +9647,9 @@
}
},
"node_modules/mocha/node_modules/minimatch": {
- "version": "5.1.6",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz",
- "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==",
+ "version": "5.1.9",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz",
+ "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==",
"dev": true,
"license": "ISC",
"dependencies": {
@@ -9678,13 +9676,13 @@
}
},
"node_modules/monaco-editor": {
- "version": "0.54.0",
- "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.54.0.tgz",
- "integrity": "sha512-hx45SEUoLatgWxHKCmlLJH81xBo0uXP4sRkESUpmDQevfi+e7K1VuiSprK6UpQ8u4zOcKNiH0pMvHvlMWA/4cw==",
+ "version": "0.55.1",
+ "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.55.1.tgz",
+ "integrity": "sha512-jz4x+TJNFHwHtwuV9vA9rMujcZRb0CEilTEwG2rRSpe/A7Jdkuj8xPKttCgOh+v/lkHy7HsZ64oj+q3xoAFl9A==",
"license": "MIT",
"peer": true,
"dependencies": {
- "dompurify": "3.1.7",
+ "dompurify": "3.2.7",
"marked": "14.0.0"
}
},
@@ -9727,6 +9725,25 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/node-exports-info": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/node-exports-info/-/node-exports-info-1.6.0.tgz",
+ "integrity": "sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "array.prototype.flatmap": "^1.3.3",
+ "es-errors": "^1.3.0",
+ "object.entries": "^1.1.9",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
"node_modules/node-releases": {
"version": "2.0.27",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz",
@@ -9744,6 +9761,18 @@
"node": ">=0.10.0"
}
},
+ "node_modules/npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
"node_modules/nth-check": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz",
@@ -9867,11 +9896,27 @@
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dev": true,
"license": "ISC",
"dependencies": {
"wrappy": "1"
}
},
+ "node_modules/onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "license": "MIT",
+ "dependencies": {
+ "mimic-fn": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
"node_modules/optionator": {
"version": "0.9.4",
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
@@ -10071,6 +10116,7 @@
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">=0.10.0"
@@ -10080,7 +10126,6 @@
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
"integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
@@ -10090,12 +10135,13 @@
"version": "1.0.7",
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
"integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "dev": true,
"license": "MIT"
},
"node_modules/path-scurry": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz",
- "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==",
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz",
+ "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==",
"dev": true,
"license": "BlueOak-1.0.0",
"dependencies": {
@@ -10103,18 +10149,18 @@
"minipass": "^7.1.2"
},
"engines": {
- "node": "20 || >=22"
+ "node": "18 || 20 || >=22"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/path-scurry/node_modules/lru-cache": {
- "version": "11.2.2",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz",
- "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==",
+ "version": "11.2.6",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz",
+ "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==",
"dev": true,
- "license": "ISC",
+ "license": "BlueOak-1.0.0",
"engines": {
"node": "20 || >=22"
}
@@ -10150,7 +10196,6 @@
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">=8.6"
@@ -10278,7 +10323,6 @@
}
],
"license": "MIT",
- "peer": true,
"dependencies": {
"nanoid": "^3.3.11",
"picocolors": "^1.1.1",
@@ -10352,9 +10396,9 @@
}
},
"node_modules/postcss-selector-parser": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz",
- "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz",
+ "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -10388,7 +10432,6 @@
"integrity": "sha512-kXtO4s0Lz/DW/IJ9QdWhAf7/NmPWQXkFr/r/WkR3vyI+0v8amTDxiaQSLzs8NBlytfLWX/7uQUMIW677yLKl4w==",
"dev": true,
"license": "MIT",
- "peer": true,
"bin": {
"prettier": "bin-prettier.js"
},
@@ -10397,9 +10440,9 @@
}
},
"node_modules/prettier-linter-helpers": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz",
- "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.1.tgz",
+ "integrity": "sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -10461,7 +10504,6 @@
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
"integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
- "dev": true,
"funding": [
{
"type": "github",
@@ -10493,7 +10535,6 @@
"resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz",
"integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==",
"license": "MIT",
- "peer": true,
"dependencies": {
"loose-envify": "^1.1.0"
},
@@ -10506,7 +10547,6 @@
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz",
"integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==",
"license": "MIT",
- "peer": true,
"dependencies": {
"loose-envify": "^1.1.0",
"scheduler": "^0.23.2"
@@ -10516,9 +10556,9 @@
}
},
"node_modules/react-dropzone": {
- "version": "14.3.8",
- "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.3.8.tgz",
- "integrity": "sha512-sBgODnq+lcA4P296DY4wacOZz3JFpD99fp+hb//iBO2HHnyeZU3FwWyXJ6salNpqQdsZrgMrotuko/BdJMV8Ug==",
+ "version": "14.4.1",
+ "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.4.1.tgz",
+ "integrity": "sha512-QDuV76v3uKbHiH34SpwifZ+gOLi1+RdsCO1kl5vxMT4wW8R82+sthjvBw4th3NHF/XX6FBsqDYZVNN+pnhaw0g==",
"license": "MIT",
"dependencies": {
"attr-accept": "^2.2.4",
@@ -10565,19 +10605,19 @@
}
},
"node_modules/react-resizable-panels": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/react-resizable-panels/-/react-resizable-panels-3.0.6.tgz",
- "integrity": "sha512-b3qKHQ3MLqOgSS+FRYKapNkJZf5EQzuf6+RLiq1/IlTHw99YrZ2NJZLk4hQIzTnnIkRg2LUqyVinu6YWWpUYew==",
+ "version": "4.6.5",
+ "resolved": "https://registry.npmjs.org/react-resizable-panels/-/react-resizable-panels-4.6.5.tgz",
+ "integrity": "sha512-pmQP6qv9KmsesNMvWVNvVfVJAwYSOWWbAOAtrPR8Cre20+j1NWIlyft0btjtDQE+OepXmI6g3VPrCXQY0oD7+Q==",
"license": "MIT",
"peerDependencies": {
- "react": "^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc",
- "react-dom": "^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc"
+ "react": "^18.0.0 || ^19.0.0",
+ "react-dom": "^18.0.0 || ^19.0.0"
}
},
"node_modules/react-router": {
- "version": "7.9.4",
- "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.9.4.tgz",
- "integrity": "sha512-SD3G8HKviFHg9xj7dNODUKDFgpG4xqD5nhyd0mYoB5iISepuZAvzSr8ywxgxKJ52yRzf/HWtVHc9AWwoTbljvA==",
+ "version": "7.13.1",
+ "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.13.1.tgz",
+ "integrity": "sha512-td+xP4X2/6BJvZoX6xw++A2DdEi++YypA69bJUV5oVvqf6/9/9nNlD70YO1e9d3MyamJEBQFEzk6mbfDYbqrSA==",
"license": "MIT",
"dependencies": {
"cookie": "^1.0.1",
@@ -10597,12 +10637,12 @@
}
},
"node_modules/react-router-dom": {
- "version": "7.9.4",
- "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.9.4.tgz",
- "integrity": "sha512-f30P6bIkmYvnHHa5Gcu65deIXoA2+r3Eb6PJIAddvsT9aGlchMatJ51GgpU470aSqRRbFX22T70yQNUGuW3DfA==",
+ "version": "7.13.1",
+ "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.13.1.tgz",
+ "integrity": "sha512-UJnV3Rxc5TgUPJt2KJpo1Jpy0OKQr0AjgbZzBFjaPJcFOb2Y8jA5H3LT8HUJAiRLlWrEXWHbF1Z4SCZaQjWDHw==",
"license": "MIT",
"dependencies": {
- "react-router": "7.9.4"
+ "react-router": "7.13.1"
},
"engines": {
"node": ">=20.0.0"
@@ -10642,14 +10682,16 @@
}
},
"node_modules/rechoir": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
- "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==",
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz",
+ "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "resolve": "^1.1.6"
+ "resolve": "^1.20.0"
},
"engines": {
- "node": ">= 0.10"
+ "node": ">= 10.13.0"
}
},
"node_modules/reflect.getprototypeof": {
@@ -10807,6 +10849,21 @@
"url": "https://jaywcjlove.github.io/#/sponsor"
}
},
+ "node_modules/rehype-attr/node_modules/unist-util-visit": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz",
+ "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/unist": "^3.0.0",
+ "unist-util-is": "^6.0.0",
+ "unist-util-visit-parents": "^6.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/unified"
+ }
+ },
"node_modules/rehype-autolink-headings": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/rehype-autolink-headings/-/rehype-autolink-headings-7.1.0.tgz",
@@ -10826,9 +10883,9 @@
}
},
"node_modules/rehype-ignore": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/rehype-ignore/-/rehype-ignore-2.0.2.tgz",
- "integrity": "sha512-BpAT/3lU9DMJ2siYVD/dSR0A/zQgD6Fb+fxkJd4j+wDVy6TYbYpK+FZqu8eM9EuNKGvi4BJR7XTZ/+zF02Dq8w==",
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/rehype-ignore/-/rehype-ignore-2.0.3.tgz",
+ "integrity": "sha512-IzhP6/u/6sm49sdktuYSmeIuObWB+5yC/5eqVws8BhuGA9kY25/byz6uCy/Ravj6lXUShEd2ofHM5MyAIj86Sg==",
"license": "MIT",
"dependencies": {
"hast-util-select": "^6.0.0",
@@ -10887,9 +10944,9 @@
}
},
"node_modules/rehype-rewrite": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/rehype-rewrite/-/rehype-rewrite-4.0.3.tgz",
- "integrity": "sha512-y6zPHL2tBqm1TF+lFV8SKH65+DYqkm1CUXipNebTo4l4R/rL4bOLOS+klp9VlcKhytiyYVZB72AA/1F4+lOk9g==",
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/rehype-rewrite/-/rehype-rewrite-4.0.4.tgz",
+ "integrity": "sha512-L/FO96EOzSA6bzOam4DVu61/PB3AGKcSPXpa53yMIozoxH4qg1+bVZDF8zh1EsuxtSauAhzt5cCnvoplAaSLrw==",
"license": "MIT",
"dependencies": {
"hast-util-select": "^6.0.0",
@@ -11025,6 +11082,7 @@
"version": "1.22.11",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz",
"integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==",
+ "dev": true,
"license": "MIT",
"dependencies": {
"is-core-module": "^2.16.1",
@@ -11078,7 +11136,6 @@
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz",
"integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==",
- "dev": true,
"license": "MIT",
"engines": {
"iojs": ">=1.0.0",
@@ -11117,7 +11174,7 @@
"version": "7.2.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "deprecated": "Glob versions prior to v9 are no longer supported",
+ "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me",
"dev": true,
"license": "ISC",
"dependencies": {
@@ -11136,9 +11193,9 @@
}
},
"node_modules/rimraf/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
"dev": true,
"license": "ISC",
"dependencies": {
@@ -11158,7 +11215,6 @@
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
"integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
- "dev": true,
"funding": [
{
"type": "github",
@@ -11316,12 +11372,11 @@
}
},
"node_modules/schema-utils/node_modules/ajv": {
- "version": "8.17.1",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
- "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz",
+ "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"fast-deep-equal": "^3.1.3",
"fast-uri": "^3.0.1",
@@ -11452,7 +11507,6 @@
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
"integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dev": true,
"license": "MIT",
"dependencies": {
"shebang-regex": "^3.0.0"
@@ -11465,70 +11519,22 @@
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
"integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "dev": true,
"license": "MIT",
"engines": {
"node": ">=8"
}
},
"node_modules/shelljs": {
- "version": "0.8.5",
- "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz",
- "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==",
+ "version": "0.10.0",
+ "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.10.0.tgz",
+ "integrity": "sha512-Jex+xw5Mg2qMZL3qnzXIfaxEtBaC4n7xifqaqtrZDdlheR70OGkydrPJWT0V1cA1k3nanC86x9FwAmQl6w3Klw==",
"license": "BSD-3-Clause",
"dependencies": {
- "glob": "^7.0.0",
- "interpret": "^1.0.0",
- "rechoir": "^0.6.2"
- },
- "bin": {
- "shjs": "bin/shjs"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/shelljs/node_modules/brace-expansion": {
- "version": "1.1.12",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
- "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/shelljs/node_modules/glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "deprecated": "Glob versions prior to v9 are no longer supported",
- "license": "ISC",
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/shelljs/node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^1.1.7"
+ "execa": "^5.1.1",
+ "fast-glob": "^3.3.2"
},
"engines": {
- "node": "*"
+ "node": ">=18"
}
},
"node_modules/side-channel": {
@@ -11722,25 +11728,6 @@
}
},
"node_modules/string-width": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
- "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "eastasianwidth": "^0.2.0",
- "emoji-regex": "^9.2.2",
- "strip-ansi": "^7.0.1"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/string-width-cjs": {
- "name": "string-width",
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
"integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
@@ -11755,36 +11742,6 @@
"node": ">=8"
}
},
- "node_modules/string-width-cjs/node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/string-width-cjs/node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/string-width-cjs/node_modules/strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/string.prototype.matchall": {
"version": "4.0.12",
"resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz",
@@ -11898,23 +11855,6 @@
}
},
"node_modules/strip-ansi": {
- "version": "7.1.2",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz",
- "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^6.0.1"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/strip-ansi?sponsor=1"
- }
- },
- "node_modules/strip-ansi-cjs": {
- "name": "strip-ansi",
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
"integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
@@ -11927,14 +11867,23 @@
"node": ">=8"
}
},
- "node_modules/strip-ansi-cjs/node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "node_modules/strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
"dev": true,
"license": "MIT",
"engines": {
- "node": ">=8"
+ "node": ">=4"
+ }
+ },
+ "node_modules/strip-final-newline": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
}
},
"node_modules/strip-json-comments": {
@@ -12025,6 +11974,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
"integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "dev": true,
"license": "MIT",
"engines": {
"node": ">= 0.4"
@@ -12067,9 +12017,9 @@
}
},
"node_modules/tabbable": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.3.0.tgz",
- "integrity": "sha512-EIHvdY5bPLuWForiR/AN2Bxngzpuwn1is4asboytXtpTgsArc+WmSJKVLlhdh71u7jFcryDqB2A8lQvj78MkyQ==",
+ "version": "6.4.0",
+ "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.4.0.tgz",
+ "integrity": "sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==",
"license": "MIT"
},
"node_modules/tapable": {
@@ -12087,9 +12037,9 @@
}
},
"node_modules/terser": {
- "version": "5.44.1",
- "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.1.tgz",
- "integrity": "sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==",
+ "version": "5.46.0",
+ "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.0.tgz",
+ "integrity": "sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==",
"dev": true,
"license": "BSD-2-Clause",
"dependencies": {
@@ -12106,9 +12056,9 @@
}
},
"node_modules/terser-webpack-plugin": {
- "version": "5.3.14",
- "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz",
- "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==",
+ "version": "5.3.16",
+ "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.16.tgz",
+ "integrity": "sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -12151,7 +12101,6 @@
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
"license": "MIT",
"dependencies": {
"is-number": "^7.0.0"
@@ -12191,9 +12140,9 @@
}
},
"node_modules/ts-api-utils": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz",
- "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==",
+ "version": "2.4.0",
+ "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz",
+ "integrity": "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==",
"dev": true,
"license": "MIT",
"engines": {
@@ -12225,9 +12174,9 @@
}
},
"node_modules/ts-loader/node_modules/semver": {
- "version": "7.7.3",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz",
- "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==",
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
+ "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
"dev": true,
"license": "ISC",
"bin": {
@@ -12237,6 +12186,37 @@
"node": ">=10"
}
},
+ "node_modules/tsconfig-paths": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz",
+ "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "json5": "^2.2.2",
+ "minimist": "^1.2.6",
+ "strip-bom": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/tsconfig-paths-webpack-plugin": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.2.0.tgz",
+ "integrity": "sha512-zbem3rfRS8BgeNK50Zz5SIQgXzLafiHjOwUAvk/38/o1jHn/V5QAgVUcz884or7WYcPaH3N2CIfUc2u0ul7UcA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "chalk": "^4.1.0",
+ "enhanced-resolve": "^5.7.0",
+ "tapable": "^2.2.1",
+ "tsconfig-paths": "^4.1.2"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
"node_modules/tslib": {
"version": "2.8.1",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
@@ -12350,7 +12330,6 @@
"integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
"dev": true,
"license": "Apache-2.0",
- "peer": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
@@ -12379,9 +12358,9 @@
}
},
"node_modules/undici-types": {
- "version": "7.16.0",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz",
- "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==",
+ "version": "7.18.2",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz",
+ "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==",
"dev": true,
"license": "MIT"
},
@@ -12499,9 +12478,9 @@
}
},
"node_modules/unist-util-visit": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz",
- "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==",
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.1.0.tgz",
+ "integrity": "sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==",
"license": "MIT",
"dependencies": {
"@types/unist": "^3.0.0",
@@ -12547,9 +12526,9 @@
}
},
"node_modules/update-browserslist-db": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.4.tgz",
- "integrity": "sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==",
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz",
+ "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==",
"dev": true,
"funding": [
{
@@ -12639,7 +12618,6 @@
"resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz",
"integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==",
"license": "MIT",
- "peer": true,
"peerDependencies": {
"react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
}
@@ -12739,9 +12717,9 @@
}
},
"node_modules/watchpack": {
- "version": "2.4.4",
- "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.4.tgz",
- "integrity": "sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==",
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.5.1.tgz",
+ "integrity": "sha512-Zn5uXdcFNIA1+1Ei5McRd+iRzfhENPCe7LeABkJtNulSxjma+l7ltNx55BWZkRlwRnpOgHqxnjyaDgJnNXnqzg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -12823,7 +12801,6 @@
"integrity": "sha512-HU1JOuV1OavsZ+mfigY0j8d1TgQgbZ6M+J75zDkpEAwYeXjWSqrGJtgnPblJjd/mAyTNQ7ygw0MiKOn6etz8yw==",
"dev": true,
"license": "MIT",
- "peer": true,
"dependencies": {
"@types/eslint-scope": "^3.7.7",
"@types/estree": "^1.0.8",
@@ -12923,29 +12900,6 @@
"node": ">=14"
}
},
- "node_modules/webpack-cli/node_modules/interpret": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz",
- "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=10.13.0"
- }
- },
- "node_modules/webpack-cli/node_modules/rechoir": {
- "version": "0.8.0",
- "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz",
- "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "resolve": "^1.20.0"
- },
- "engines": {
- "node": ">= 10.13.0"
- }
- },
"node_modules/webpack-merge": {
"version": "5.10.0",
"resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz",
@@ -13007,9 +12961,9 @@
}
},
"node_modules/webpack/node_modules/webpack-sources": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.3.tgz",
- "integrity": "sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==",
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.3.4.tgz",
+ "integrity": "sha512-7tP1PdV4vF+lYPnkMR0jMY5/la2ub5Fc/8VQrrU+lXkiM6C4TjVfGw7iKfyhnTQOsD+6Q/iKw0eFciziRgD58Q==",
"dev": true,
"license": "MIT",
"engines": {
@@ -13020,7 +12974,6 @@
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
"integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
"license": "ISC",
"dependencies": {
"isexe": "^2.0.0"
@@ -13107,9 +13060,9 @@
}
},
"node_modules/which-typed-array": {
- "version": "1.1.19",
- "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz",
- "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==",
+ "version": "1.1.20",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz",
+ "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==",
"dev": true,
"license": "MIT",
"dependencies": {
@@ -13153,25 +13106,6 @@
"license": "Apache-2.0"
},
"node_modules/wrap-ansi": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
- "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^6.1.0",
- "string-width": "^5.0.1",
- "strip-ansi": "^7.0.1"
- },
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
- }
- },
- "node_modules/wrap-ansi-cjs": {
- "name": "wrap-ansi",
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
"integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
@@ -13189,68 +13123,11 @@
"url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
- "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/wrap-ansi-cjs/node_modules/string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/wrap-ansi/node_modules/ansi-styles": {
- "version": "6.2.3",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
- "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
"node_modules/wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "dev": true,
"license": "ISC"
},
"node_modules/y18n": {
@@ -13325,51 +13202,6 @@
"node": ">=8"
}
},
- "node_modules/yargs/node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/yargs/node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/yargs/node_modules/string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/yargs/node_modules/strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
"node_modules/yocto-queue": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
@@ -13384,9 +13216,9 @@
}
},
"node_modules/zustand": {
- "version": "5.0.8",
- "resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.8.tgz",
- "integrity": "sha512-gyPKpIaxY9XcO2vSMrLbiER7QMAMGOQZVRdJ6Zi782jkbzZygq5GI9nG8g+sMgitRtndwaBSl7uiqC49o1SSiw==",
+ "version": "5.0.11",
+ "resolved": "https://registry.npmjs.org/zustand/-/zustand-5.0.11.tgz",
+ "integrity": "sha512-fdZY+dk7zn/vbWNCYmzZULHRrss0jx5pPFiOuMZ/5HJN6Yv3u+1Wswy/4MpZEkEGhtNH+pwxZB8OKgUBPzYAGg==",
"license": "MIT",
"engines": {
"node": ">=12.20.0"
diff --git a/karavan-vscode/package.json b/karavan-vscode/package.json
index d76898d4..68b64b83 100644
--- a/karavan-vscode/package.json
+++ b/karavan-vscode/package.json
@@ -717,42 +717,42 @@
]
},
"scripts": {
- "copy-core": "cp -r ../karavan-core/src/core webview",
- "vscode:prepublish": "npm run copy-core && npm run package",
- "compile": "npm run copy-core && cross-env NODE_ENV=development node --max-old-space-size=8192 ./node_modules/webpack/bin/webpack.js --progress --stats-error-details",
- "watch": "npm run copy-core && cross-env NODE_ENV=development node --max-old-space-size=8192 ./node_modules/webpack/bin/webpack.js --progress --watch",
- "package": "npm run copy-core && cross-env NODE_ENV=production node --max-old-space-size=8192 ./node_modules/webpack/bin/webpack.js --progress",
+ "vscode:prepublish": "npm run && npm run package",
+ "compile": "npm run && cross-env NODE_ENV=development node --max-old-space-size=8192 ./node_modules/webpack/bin/webpack.js --progress --stats-error-details",
+ "watch": "npm run && cross-env NODE_ENV=development node --max-old-space-size=8192 ./node_modules/webpack/bin/webpack.js --progress --watch",
+ "package": "npm run && cross-env NODE_ENV=production node --max-old-space-size=8192 ./node_modules/webpack/bin/webpack.js --progress",
"webpack": "cross-env NODE_ENV=development node --max-old-space-size=8192 ./node_modules/webpack/bin/webpack.js --progress",
"test-compile": "tsc -p ./",
"test-watch": "tsc -watch -p ./",
- "pretest": "npm run copy-core && npm run test-compile && npm run lint",
+ "pretest": "npm run && npm run test-compile && npm run lint",
"lint": "eslint src webview --ext .ts,.tsx",
"lint:fix": "eslint --fix src webview --ext .ts,.tsx",
"test": "node ./out/test/runTest.js",
"open-in-browser": "vscode-test-web --extensionDevelopmentPath=. ../karavan-demo/hello-world/"
},
"dependencies": {
- "@carbon/icons-react": "11.70.0",
- "@monaco-editor/react": "^4.7.0",
+ "@carbon/icons-react": "11.76.0",
+ "@monaco-editor/react": "4.7.0",
"@patternfly/patternfly": "6.4.0",
"@patternfly/react-core": "6.4.0",
"@patternfly/react-table": "6.4.0",
"@patternfly/react-templates": "6.4.0",
"@patternfly/react-topology": "6.4.0",
"@types/js-yaml": "4.0.9",
- "@types/node": "20.19.5",
+ "@types/node": "25.3.2",
"@types/uuid": "11.0.0",
"@uiw/react-markdown-preview": "5.1.5",
"buffer": "6.0.3",
+ "elkjs": "^0.11.0",
"path-browserify": "^1.0.1",
- "react-resizable-panels": "3.0.6",
- "react-router-dom": "7.9.4",
+ "react-resizable-panels": "4.6.5",
+ "react-router-dom": "7.13.1",
"rxjs": "7.8.2",
- "shelljs": "^0.8.5",
+ "shelljs": "^0.10.0",
"use-sync-external-store": "1.6.0",
"usehooks-ts": "3.1.1",
"uuid": "13.0.0",
- "zustand": "5.0.8"
+ "zustand": "5.0.11"
},
"devDependencies": {
"@babel/plugin-proposal-private-property-in-object": "^7.21.11",
@@ -761,7 +761,7 @@
"@types/d3-dispatch": "^3.0.7",
"@types/glob": "^7.1.3",
"@types/mocha": "^8.0.4",
- "@types/node": "24.10.1",
+ "@types/node": "25.3.2",
"@types/react": "18.3.1",
"@types/react-dom": "18.3.1",
"@types/shelljs": "^0.8.5",
@@ -787,6 +787,7 @@
"run-script-os": "^1.1.6",
"style-loader": "^2.0.0",
"ts-loader": "9.5.4",
+ "tsconfig-paths-webpack-plugin": "^4.2.0",
"typescript": "5.9.3",
"url-loader": "4.1.1",
"vscode-test": "1.6.1",
diff --git a/karavan-vscode/src/designerView.ts b/karavan-vscode/src/designerView.ts
index e04b214d..d9c34f30 100644
--- a/karavan-vscode/src/designerView.ts
+++ b/karavan-vscode/src/designerView.ts
@@ -17,10 +17,10 @@
import { Uri, window, commands, WebviewPanel, ExtensionContext, ViewColumn, WebviewPanelOnDidChangeViewStateEvent } from "vscode";
import * as path from "path";
import * as utils from "./utils";
-import { CamelDefinitionYaml } from "@/core/api/CamelDefinitionYaml";
-import { Integration, KameletTypes, Metadata, MetadataLabels } from "@/core/model/IntegrationDefinition";
+import { CamelDefinitionYaml } from "@karavan-core/api/CamelDefinitionYaml";
+import { Integration, KameletTypes, Metadata, MetadataLabels } from "@karavan-core/model/IntegrationDefinition";
import { getWebviewContent } from "./webviewContent";
-import { BeanFactoryDefinition } from "@/core/model/CamelDefinition";
+import { BeanFactoryDefinition } from "@karavan-core/model/CamelDefinition";
const KARAVAN_LOADED = "karavan:loaded";
const KARAVAN_PANELS: Map<string, WebviewPanel> = new Map<string, WebviewPanel>();
diff --git a/karavan-vscode/src/integrationView.ts b/karavan-vscode/src/integrationView.ts
index 612477be..b64fd335 100644
--- a/karavan-vscode/src/integrationView.ts
+++ b/karavan-vscode/src/integrationView.ts
@@ -17,9 +17,9 @@
import { workspace, TreeDataProvider, EventEmitter, Event, TreeItem, ProviderResult, Command, ThemeIcon, TreeItemCollapsibleState } from "vscode";
import * as path from "path";
import * as utils from "./utils";
-import { CamelDefinitionYaml } from "@/core/api/CamelDefinitionYaml";
+import { CamelDefinitionYaml } from "@karavan-core/api/CamelDefinitionYaml";
import { DesignerView } from "./designerView";
-import { Integration } from "@/core/model/IntegrationDefinition";
+import { Integration } from "@karavan-core/model/IntegrationDefinition";
export class IntegrationView implements TreeDataProvider<IntegrationItem> {
diff --git a/karavan-vscode/src/jbang.ts b/karavan-vscode/src/jbang.ts
index b682696d..7885512b 100644
--- a/karavan-vscode/src/jbang.ts
+++ b/karavan-vscode/src/jbang.ts
@@ -19,7 +19,7 @@ import * as path from "path";
import * as shell from 'shelljs';
import * as utils from "./utils";
import * as exec from "./exec";
-import { CamelDefinitionYaml } from "@/core/api/CamelDefinitionYaml";
+import { CamelDefinitionYaml } from "@karavan-core/api/CamelDefinitionYaml";
export async function camelJbangGenerate(rootPath: string, openApiFullPath: string, fullPath: string, add: boolean, generateRoutes: boolean, generateRest: boolean) {
let command = prepareCommand("generate rest -i '" + openApiFullPath + "' --type=yaml ");
diff --git a/karavan-vscode/src/utils.ts b/karavan-vscode/src/utils.ts
index afde5aff..1c264ddb 100644
--- a/karavan-vscode/src/utils.ts
+++ b/karavan-vscode/src/utils.ts
@@ -16,10 +16,10 @@
*/
import * as path from "path";
import { workspace, Uri, window, ExtensionContext, FileType } from "vscode";
-import { CamelDefinitionYaml } from "@/core/api/CamelDefinitionYaml";
-import { Integration, KameletTypes } from "@/core/model/IntegrationDefinition";
-import { BeanFactoryDefinition } from "@/core/model/CamelDefinition";
-import { TopologyUtils } from "@/core/api/TopologyUtils";
+import { CamelDefinitionYaml } from "@karavan-core/api/CamelDefinitionYaml";
+import { Integration, KameletTypes } from "@karavan-core/model/IntegrationDefinition";
+import { BeanFactoryDefinition } from "@karavan-core/model/CamelDefinition";
+import { TopologyUtils } from "@karavan-core/api/TopologyUtils";
export function getRoot(): string | undefined {
return (workspace.workspaceFolders && (workspace.workspaceFolders.length > 0))
diff --git a/karavan-vscode/tsconfig.json b/karavan-vscode/tsconfig.json
index 5b2002d1..1b9cb598 100644
--- a/karavan-vscode/tsconfig.json
+++ b/karavan-vscode/tsconfig.json
@@ -24,9 +24,14 @@
"strict": true,
"paths": {
"@/*": ["webview/*"],
- "@app/*": ["src/app/*"],
"@assets/*": ["node_modules/@patternfly/react-core/dist/styles/assets/*"],
- "core": ["webview/core"]
+ "@app/*": [ "webview/karavan/app/*"],
+ "@features/*": [ "webview/karavan/features/*"],
+ "@models/*": ["webview/karavan/models/*"],
+ "@shared/*": ["webview/karavan/shared/*"],
+ "@stores/*": ["webview/karavan/stores/*"],
+ "@util/*": ["webview/karavan/util/*"],
+ "@karavan-core/*": ["webview/karavan-core/*"]
},
"importHelpers": true,
"skipLibCheck": true
diff --git a/karavan-vscode/webpack.config.js b/karavan-vscode/webpack.config.js
index 3af1294d..4d6d30c9 100644
--- a/karavan-vscode/webpack.config.js
+++ b/karavan-vscode/webpack.config.js
@@ -7,6 +7,7 @@ const path = require("path");
const webpack = require("webpack");
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const CopyPlugin = require("copy-webpack-plugin");
+const TsconfigPathsPlugin = require("tsconfig-paths-webpack-plugin");
const imageInlineSizeLimit = parseInt(
process.env.IMAGE_INLINE_SIZE_LIMIT || "10000"
@@ -23,20 +24,13 @@ const baseConfig = (webpackEnv) => {
? "source-map"
: isEnvDevelopment && "eval-cheap-module-source-map",
resolve: {
+ plugins: [new TsconfigPathsPlugin({ configFile: "./tsconfig.json" })],
fallback: {
buffer: require.resolve("buffer"),
path: require.resolve("path-browserify"),
url: require.resolve("url"),
process: require.resolve('process/browser'),
},
- alias: {
- // ADDED: Fixes resolution for imports starting with '@/'.
- // e.g., '@/core/contants' resolves to 'webview/core/contants'
- "@": path.resolve(__dirname, 'webview'),
-
- // Existing 'core' alias, adjusted for consistency with tsconfig
- 'core': path.resolve(__dirname, 'webview/core'),
- },
extensions: ['.ts', ".tsx", ".js"], // Removed empty string, added .ts
},
module: {
diff --git a/karavan-vscode/webview/App.tsx b/karavan-vscode/webview/App.tsx
index c9669104..a7e8de3e 100644
--- a/karavan-vscode/webview/App.tsx
+++ b/karavan-vscode/webview/App.tsx
@@ -21,15 +21,15 @@ import {
Page, PageSection, Spinner
} from "@patternfly/react-core";
import vscode from "./vscode";
-import { KameletApi } from "@/core/api/KameletApi";
-import { ComponentApi } from "@/core/api/ComponentApi";
-import { TemplateApi } from "./core/api/TemplateApi";
-import { BeanFactoryDefinition } from "@/core/model/CamelDefinition";
-import { IntegrationFile } from "@/core/model/IntegrationDefinition";
-import { KaravanDesigner } from "./integration-designer/KaravanDesigner";
-import { EventBus } from "./integration-designer/utils/EventBus";
-import { TopologyTab } from "./integration-topology/TopologyTab";
-import { DocumentationPage } from "./documentation/DocumentationPage";
+import { KameletApi } from "@karavan-core/api/KameletApi";
+import { ComponentApi } from "@karavan-core/api/ComponentApi";
+import { TemplateApi } from "@karavan-core/api/TemplateApi";
+import { BeanFactoryDefinition } from "@karavan-core/model/CamelDefinition";
+import { IntegrationFile } from "@karavan-core/model/IntegrationDefinition";
+import { TopologyTab } from "@features/project/project-topology/TopologyTab";
+import { DocumentationPage } from "@features/documentation/DocumentationPage";
+import { KaravanDesigner } from "@features/project/designer/KaravanDesigner";
+import { EventBus } from "@features/project/designer/utils/EventBus";
interface Props {
}
@@ -262,10 +262,8 @@ class App extends React.Component<Props, State> {
<DocumentationPage />
}
{loaded && page === "topology" &&
- <TopologyTab openApiJson={undefined}
+ <TopologyTab
asyncApiJson={undefined}
- hideToolbar={true}
- files={this.state.files}
/>
}
</div>
diff --git a/karavan-vscode/webview/api/SearchModels.ts b/karavan-vscode/webview/api/SearchModels.ts
deleted file mode 100644
index 9ed9f384..00000000
--- a/karavan-vscode/webview/api/SearchModels.ts
+++ /dev/null
@@ -1,4 +0,0 @@
-export class SearchResult {
- projectId: string = '';
- files: string[] = [];
-}
diff --git a/karavan-vscode/webview/api/SearchStore.ts b/karavan-vscode/webview/api/SearchStore.ts
deleted file mode 100644
index f823a1e1..00000000
--- a/karavan-vscode/webview/api/SearchStore.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-import {createWithEqualityFn} from "zustand/traditional";
-import {shallow} from "zustand/shallow";
-import {SearchResult} from "./SearchModels";
-
-interface SearchState {
- search: string;
- setSearch: (search: string) => void;
- searchResults: SearchResult[];
- setSearchResults: (searchResult: SearchResult[]) => void;
-}
-
-export const useSearchStore = createWithEqualityFn<SearchState>((set) => ({
- search: '',
- searchResults: [],
- setSearch: (search: string) => {
- set({search: search})
- },
- setSearchResults: (searchResults: SearchResult[]) => {
- set({searchResults: searchResults})
- },
-}), shallow)
\ No newline at end of file
diff --git a/karavan-vscode/webview/index.tsx b/karavan-vscode/webview/index.tsx
index 411c2913..cf5589c7 100644
--- a/karavan-vscode/webview/index.tsx
+++ b/karavan-vscode/webview/index.tsx
@@ -19,7 +19,7 @@ import {createRoot} from "react-dom/client";
import App from "./App";
import "./index.css";
import "@patternfly/patternfly/patternfly.css";
-import { ThemeProvider } from "./main/ThemeContext";
+import { ThemeProvider } from "@app/theme/ThemeContext";
const container = document.getElementById('root');
const root = createRoot(container!);
diff --git a/karavan-vscode/webview/core/api/CamelDefinitionApi.ts b/karavan-vscode/webview/karavan-core/api/CamelDefinitionApi.ts
similarity index 100%
rename from karavan-vscode/webview/core/api/CamelDefinitionApi.ts
rename to karavan-vscode/webview/karavan-core/api/CamelDefinitionApi.ts
diff --git a/karavan-vscode/webview/core/api/CamelDefinitionApiExt.ts b/karavan-vscode/webview/karavan-core/api/CamelDefinitionApiExt.ts
similarity index 100%
rename from karavan-vscode/webview/core/api/CamelDefinitionApiExt.ts
rename to karavan-vscode/webview/karavan-core/api/CamelDefinitionApiExt.ts
diff --git a/karavan-vscode/webview/core/api/CamelDefinitionYaml.ts b/karavan-vscode/webview/karavan-core/api/CamelDefinitionYaml.ts
similarity index 100%
rename from karavan-vscode/webview/core/api/CamelDefinitionYaml.ts
rename to karavan-vscode/webview/karavan-core/api/CamelDefinitionYaml.ts
diff --git a/karavan-vscode/webview/core/api/CamelDefinitionYamlStep.ts b/karavan-vscode/webview/karavan-core/api/CamelDefinitionYamlStep.ts
similarity index 100%
rename from karavan-vscode/webview/core/api/CamelDefinitionYamlStep.ts
rename to karavan-vscode/webview/karavan-core/api/CamelDefinitionYamlStep.ts
diff --git a/karavan-vscode/webview/core/api/CamelDisplayUtil.ts b/karavan-vscode/webview/karavan-core/api/CamelDisplayUtil.ts
similarity index 100%
rename from karavan-vscode/webview/core/api/CamelDisplayUtil.ts
rename to karavan-vscode/webview/karavan-core/api/CamelDisplayUtil.ts
diff --git a/karavan-vscode/webview/core/api/CamelUtil.ts b/karavan-vscode/webview/karavan-core/api/CamelUtil.ts
similarity index 100%
rename from karavan-vscode/webview/core/api/CamelUtil.ts
rename to karavan-vscode/webview/karavan-core/api/CamelUtil.ts
diff --git a/karavan-vscode/webview/core/api/ComponentApi.ts b/karavan-vscode/webview/karavan-core/api/ComponentApi.ts
similarity index 100%
rename from karavan-vscode/webview/core/api/ComponentApi.ts
rename to karavan-vscode/webview/karavan-core/api/ComponentApi.ts
diff --git a/karavan-vscode/webview/core/api/KameletApi.ts b/karavan-vscode/webview/karavan-core/api/KameletApi.ts
similarity index 100%
rename from karavan-vscode/webview/core/api/KameletApi.ts
rename to karavan-vscode/webview/karavan-core/api/KameletApi.ts
diff --git a/karavan-vscode/webview/core/api/MainConfigurationApi.ts b/karavan-vscode/webview/karavan-core/api/MainConfigurationApi.ts
similarity index 100%
rename from karavan-vscode/webview/core/api/MainConfigurationApi.ts
rename to karavan-vscode/webview/karavan-core/api/MainConfigurationApi.ts
diff --git a/karavan-vscode/webview/core/api/ProjectModelApi.ts b/karavan-vscode/webview/karavan-core/api/ProjectModelApi.ts
similarity index 100%
rename from karavan-vscode/webview/core/api/ProjectModelApi.ts
rename to karavan-vscode/webview/karavan-core/api/ProjectModelApi.ts
diff --git a/karavan-vscode/webview/core/api/SpiBeanApi.ts b/karavan-vscode/webview/karavan-core/api/SpiBeanApi.ts
similarity index 100%
rename from karavan-vscode/webview/core/api/SpiBeanApi.ts
rename to karavan-vscode/webview/karavan-core/api/SpiBeanApi.ts
diff --git a/karavan-vscode/webview/core/api/TemplateApi.ts b/karavan-vscode/webview/karavan-core/api/TemplateApi.ts
similarity index 100%
rename from karavan-vscode/webview/core/api/TemplateApi.ts
rename to karavan-vscode/webview/karavan-core/api/TemplateApi.ts
diff --git a/karavan-vscode/webview/core/api/TopologyUtils.ts b/karavan-vscode/webview/karavan-core/api/TopologyUtils.ts
similarity index 100%
rename from karavan-vscode/webview/core/api/TopologyUtils.ts
rename to karavan-vscode/webview/karavan-core/api/TopologyUtils.ts
diff --git a/karavan-vscode/webview/core/api/VariableUtil.ts b/karavan-vscode/webview/karavan-core/api/VariableUtil.ts
similarity index 100%
rename from karavan-vscode/webview/core/api/VariableUtil.ts
rename to karavan-vscode/webview/karavan-core/api/VariableUtil.ts
diff --git a/karavan-vscode/webview/core/contants.ts b/karavan-vscode/webview/karavan-core/contants.ts
similarity index 76%
rename from karavan-vscode/webview/core/contants.ts
rename to karavan-vscode/webview/karavan-core/contants.ts
index 925025ae..b0f7f97f 100644
--- a/karavan-vscode/webview/core/contants.ts
+++ b/karavan-vscode/webview/karavan-core/contants.ts
@@ -21,6 +21,8 @@ export const KARAVAN_DOT_EXTENSION = {
export const FILE_WORDS_SEPARATOR = '-'
export const OPENAPI_FILE_NAME_JSON = 'openapi.json';
export const OPENAPI_FILE_NAME_YAML = 'openapi.yaml';
-export const ASYNCAPI_FILE_NAME_JSON = 'asyncapi.json';
-export const ASYNCAPI_FILE_NAME_YAML = 'asyncapi.yaml';
-export const JSON_SCHEMA_EXTENSION = ".schema.json";
\ No newline at end of file
+export const JSON_SCHEMA_EXTENSION = ".schema.json";
+export const LANDSCAPE_FILE_NAME_JSON = "";
+export const X_APPLICATION_ID = "x-application-id";
+
+export const WIZARD_BEAN_TEMPLATE_FILENAME_PREFIX = "wizard-bean-";
diff --git a/karavan-vscode/webview/core/model/CamelDefinition.ts b/karavan-vscode/webview/karavan-core/model/CamelDefinition.ts
similarity index 100%
rename from karavan-vscode/webview/core/model/CamelDefinition.ts
rename to karavan-vscode/webview/karavan-core/model/CamelDefinition.ts
diff --git a/karavan-vscode/webview/core/model/CamelMetadata.ts b/karavan-vscode/webview/karavan-core/model/CamelMetadata.ts
similarity index 100%
rename from karavan-vscode/webview/core/model/CamelMetadata.ts
rename to karavan-vscode/webview/karavan-core/model/CamelMetadata.ts
diff --git a/karavan-vscode/webview/core/model/ComponentModels.ts b/karavan-vscode/webview/karavan-core/model/ComponentModels.ts
similarity index 100%
rename from karavan-vscode/webview/core/model/ComponentModels.ts
rename to karavan-vscode/webview/karavan-core/model/ComponentModels.ts
diff --git a/karavan-vscode/webview/core/model/IntegrationDefinition.ts b/karavan-vscode/webview/karavan-core/model/IntegrationDefinition.ts
similarity index 100%
rename from karavan-vscode/webview/core/model/IntegrationDefinition.ts
rename to karavan-vscode/webview/karavan-core/model/IntegrationDefinition.ts
diff --git a/karavan-vscode/webview/core/model/KameletModels.ts b/karavan-vscode/webview/karavan-core/model/KameletModels.ts
similarity index 100%
rename from karavan-vscode/webview/core/model/KameletModels.ts
rename to karavan-vscode/webview/karavan-core/model/KameletModels.ts
diff --git a/karavan-vscode/webview/core/model/MainConfigurationModel.ts b/karavan-vscode/webview/karavan-core/model/MainConfigurationModel.ts
similarity index 100%
copy from karavan-vscode/webview/core/model/MainConfigurationModel.ts
copy to karavan-vscode/webview/karavan-core/model/MainConfigurationModel.ts
diff --git a/karavan-vscode/webview/core/model/ProjectModel.ts b/karavan-vscode/webview/karavan-core/model/ProjectModel.ts
similarity index 100%
rename from karavan-vscode/webview/core/model/ProjectModel.ts
rename to karavan-vscode/webview/karavan-core/model/ProjectModel.ts
diff --git a/karavan-vscode/webview/core/model/SpiBeanModels.ts b/karavan-vscode/webview/karavan-core/model/SpiBeanModels.ts
similarity index 100%
rename from karavan-vscode/webview/core/model/SpiBeanModels.ts
rename to karavan-vscode/webview/karavan-core/model/SpiBeanModels.ts
diff --git a/karavan-vscode/webview/core/model/TopologyDefinition.ts b/karavan-vscode/webview/karavan-core/model/TopologyDefinition.ts
similarity index 100%
rename from karavan-vscode/webview/core/model/TopologyDefinition.ts
rename to karavan-vscode/webview/karavan-core/model/TopologyDefinition.ts
diff --git a/karavan-vscode/webview/karavan/app/navigation/PlatformLogo.tsx b/karavan-vscode/webview/karavan/app/navigation/PlatformLogo.tsx
new file mode 100644
index 00000000..d2cfe0e9
--- /dev/null
+++ b/karavan-vscode/webview/karavan/app/navigation/PlatformLogo.tsx
@@ -0,0 +1,28 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import {KaravanIcon} from "@features/project/designer/icons/KaravanIcons";
+
+export function PlatformLogoBase64() {
+
+ return 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgICAgICB3aWR0aD0iMzYwLjEzODg1IgogICAgICAgIGhlaWdodD0iMzYwLjEzODg1IgogICAgICAgIHZpZXdCb3g9IjAgMCAzNjAuMTM4ODUgMzYwLjEzODg1IgogICAgICAgIHZlcnNpb249IjEuMSIKICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCIKICAgICAgICBpZD0ic3ZnNTAiCiAgICAgICAgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiCiAgICAgICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZGVmcwogIC [...]
+}
+
+export function PlatformLogo(classNames?: string) {
+ return KaravanIcon(classNames)
+}
+
+export default PlatformLogo;
diff --git a/karavan-vscode/webview/karavan/app/theme/ThemeContext.tsx b/karavan-vscode/webview/karavan/app/theme/ThemeContext.tsx
new file mode 100644
index 00000000..90fb6251
--- /dev/null
+++ b/karavan-vscode/webview/karavan/app/theme/ThemeContext.tsx
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import React, {createContext, useContext, useEffect, useState} from 'react';
+
+interface ThemeContextType {
+ isDark: boolean;
+ toggleDarkMode: (checked: boolean) => void;
+}
+
+const ThemeContext = createContext<ThemeContextType | undefined>(undefined);
+
+export const ThemeProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {
+ const [isDark, setIsDark] = useState(false);
+
+ useEffect(() => {
+ const storedTheme = localStorage.getItem('pf-theme');
+
+ let shouldUseDark = false;
+
+ if (storedTheme === 'dark') {
+ shouldUseDark = true;
+ } else if (storedTheme === 'light') {
+ shouldUseDark = false;
+ } else {
+ // No stored preference → use browser preference
+ shouldUseDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
+ }
+
+ setIsDark(shouldUseDark);
+ document.documentElement.classList.toggle('pf-v6-theme-dark', shouldUseDark);
+ }, []);
+
+ const toggleDarkMode = (checked: boolean) => {
+ setIsDark(checked);
+ document.documentElement.classList.toggle('pf-v6-theme-dark', checked);
+ localStorage.setItem('pf-theme', checked ? 'dark' : 'light');
+ };
+
+ return (
+ <ThemeContext.Provider value={{ isDark, toggleDarkMode }}>
+ {children}
+ </ThemeContext.Provider>
+ );
+};
+
+export const useTheme = (): ThemeContextType => {
+ const context = useContext(ThemeContext);
+ if (!context) {
+ throw new Error('useTheme must be used within a ThemeProvider');
+ }
+ return context;
+};
diff --git a/karavan-vscode/webview/documentation/Documentation.css b/karavan-vscode/webview/karavan/features/documentation/Documentation.css
similarity index 99%
rename from karavan-vscode/webview/documentation/Documentation.css
rename to karavan-vscode/webview/karavan/features/documentation/Documentation.css
index 756cc34b..8b477627 100644
--- a/karavan-vscode/webview/documentation/Documentation.css
+++ b/karavan-vscode/webview/karavan/features/documentation/Documentation.css
@@ -16,7 +16,6 @@
*/
.karavan .documentation-section {
- padding: 16px;
height: 100%;
overflow: auto;
}
diff --git a/karavan-vscode/webview/documentation/DocumentationPage.tsx b/karavan-vscode/webview/karavan/features/documentation/DocumentationPage.tsx
similarity index 77%
rename from karavan-vscode/webview/documentation/DocumentationPage.tsx
rename to karavan-vscode/webview/karavan/features/documentation/DocumentationPage.tsx
index b1abc7b1..aeba5b6b 100644
--- a/karavan-vscode/webview/documentation/DocumentationPage.tsx
+++ b/karavan-vscode/webview/karavan/features/documentation/DocumentationPage.tsx
@@ -19,27 +19,22 @@ import {Badge, capitalize, Content, Flex, FlexItem, Nav, NavItem, NavList, Switc
import {KameletsTab} from "./kamelets/KameletsTab";
import {EipTab} from "./eip/EipTab";
import {ComponentsTab} from "./components/ComponentsTab";
-import {KameletApi} from "@/core/api/KameletApi";
-import {KameletModel} from "@/core/model/KameletModels";
-import {ComponentApi} from "@/core/api/ComponentApi";
-import {CamelModelMetadata, ElementMeta} from "@/core/model/CamelMetadata";
-import {RightPanel} from "@/components/RightPanel";
+import {KameletApi} from "@karavan-core/api/KameletApi";
+import {KameletModel} from "@karavan-core/model/KameletModels";
+import {ComponentApi} from "@karavan-core/api/ComponentApi";
+import {CamelModelMetadata, ElementMeta} from "@karavan-core/model/CamelMetadata";
+import {RightPanel} from "@shared/ui/RightPanel";
import './Documentation.css'
-import {useFilesStore} from "@/api/ProjectStore";
-import {shallow} from "zustand/shallow";
-import {extractTitleFromMarkdown} from "@/util/StringUtils";
-import {useTheme} from "@/main/ThemeContext";
+import {useTheme} from "@app/theme/ThemeContext";
const BUILD_IN_DOCUMENTATION_PAGES = ['processors', 'components', 'kamelets']
export const DocumentationPage = () => {
const {isDark} = useTheme();
- const [files] = useFilesStore((s) => [s.files], shallow);
const [pages, setPages] = useState<string[]>(BUILD_IN_DOCUMENTATION_PAGES);
const [pageNames, setPageNames] = useState<string[]>(BUILD_IN_DOCUMENTATION_PAGES.map(item => capitalize(item)));
const [filter, setFilter] = useState<string>("");
- const [markdown, setMarkdown] = useState<string>("");
const [customOnly, setCustomOnly] = useState<boolean>(false);
const [activeItem, setActiveItem] = useState<string>();
@@ -48,26 +43,6 @@ export const DocumentationPage = () => {
setActiveItem(item);
}
- useEffect(() => {
- if (!activeItemIsBuildIn()) {
- const m = files.filter(f => f.name === activeItem)?.[0]?.code || '';
- setMarkdown(m)
- }
- }, [activeItem]);
-
- useEffect(() => {
- const newPages: string[] = [];
- const newPageNames: string[] = [];
- files.filter(file => file.name.endsWith(".md")).sort((a, b) => a.name > b.name ? 1 : -1).forEach(file => {
- newPages.push(file.name);
- newPageNames.push(extractTitleFromMarkdown(file.code) || file.name);
- });
- newPages.push(...BUILD_IN_DOCUMENTATION_PAGES);
- newPageNames.push(...BUILD_IN_DOCUMENTATION_PAGES.map(item => capitalize(item)));
- setPages(newPages);
- setPageNames(newPageNames);
- setActiveItem(newPages[0])
- }, [files]);
let kameletList: KameletModel[] = KameletApi.getAllKamelets().filter(kamelet =>
kamelet.spec.definition.title.toLowerCase().includes(filter.toLowerCase()));
@@ -87,8 +62,8 @@ export const DocumentationPage = () => {
}
function getNavigation() {
const lengths: any = {
- 'processors': components.length,
- 'components': elements.length,
+ 'processors': elements.length,
+ 'components': components.length,
'kamelets': kameletList.length,
}
return (
@@ -139,9 +114,9 @@ export const DocumentationPage = () => {
return (
<RightPanel
- title={<></>}
+ title={title()}
toolsStart={getNavigation()}
- tools={activeItemIsBuildIn() ? getTools() : <></>}
+ tools={activeItemIsBuildIn() ? getTools() : undefined}
mainPanel={
<div className="right-panel-card">
<div className="documentation-section">
diff --git a/karavan-vscode/webview/documentation/components/ComponentCard.tsx b/karavan-vscode/webview/karavan/features/documentation/components/ComponentCard.tsx
similarity index 89%
rename from karavan-vscode/webview/documentation/components/ComponentCard.tsx
rename to karavan-vscode/webview/karavan/features/documentation/components/ComponentCard.tsx
index 04f894bd..f24bfe5a 100644
--- a/karavan-vscode/webview/documentation/components/ComponentCard.tsx
+++ b/karavan-vscode/webview/karavan/features/documentation/components/ComponentCard.tsx
@@ -15,12 +15,10 @@
* limitations under the License.
*/
import React from 'react';
-import {
- CardHeader, Card, CardTitle, CardBody, CardFooter, Badge, Checkbox, Flex, Content
-} from '@patternfly/react-core';
-import {CamelUi} from "@/integration-designer/utils/CamelUi";
-import {Component} from "@/core/model/ComponentModels";
-import {useDocumentationStore} from "../DocumentationStore";
+import {Badge, Card, CardBody, CardFooter, CardHeader, CardTitle, Content, Flex} from '@patternfly/react-core';
+import {CamelUi} from "@features/project/designer/utils/CamelUi";
+import {Component} from "@karavan-core/model/ComponentModels";
+import {useDocumentationStore} from "../../../stores/DocumentationStore";
import {shallow} from "zustand/shallow";
interface Props {
diff --git a/karavan-vscode/webview/documentation/components/ComponentModal.tsx b/karavan-vscode/webview/karavan/features/documentation/components/ComponentModal.tsx
similarity index 95%
rename from karavan-vscode/webview/documentation/components/ComponentModal.tsx
rename to karavan-vscode/webview/karavan/features/documentation/components/ComponentModal.tsx
index 628f9a8c..5bae27e7 100644
--- a/karavan-vscode/webview/documentation/components/ComponentModal.tsx
+++ b/karavan-vscode/webview/karavan/features/documentation/components/ComponentModal.tsx
@@ -17,12 +17,12 @@
import React, {useState} from 'react';
import {Badge, Button, CardHeader, Content, Flex, Modal, ModalBody, ModalFooter, ModalHeader, Tab, Tabs, TabTitleText} from '@patternfly/react-core';
-import '@/integration-designer/karavan.css';
+import '@features/project/designer/karavan.css';
import {Table, Tbody, Td, Th, Thead, Tr} from "@patternfly/react-table";
-import {CamelUi} from "@/integration-designer/utils/CamelUi";
-import {ComponentApi} from "@/core/api/ComponentApi";
-import {ComponentHeader, ComponentProperty} from "@/core/model/ComponentModels";
-import {useDocumentationStore} from "../DocumentationStore";
+import {CamelUi} from "@features/project/designer/utils/CamelUi";
+import {ComponentApi} from "@karavan-core/api/ComponentApi";
+import {ComponentHeader, ComponentProperty} from "@karavan-core/model/ComponentModels";
+import {useDocumentationStore} from "../../../stores/DocumentationStore";
import {shallow} from "zustand/shallow";
export function ComponentModal() {
diff --git a/karavan-vscode/webview/documentation/components/ComponentsTab.tsx b/karavan-vscode/webview/karavan/features/documentation/components/ComponentsTab.tsx
similarity index 92%
rename from karavan-vscode/webview/documentation/components/ComponentsTab.tsx
rename to karavan-vscode/webview/karavan/features/documentation/components/ComponentsTab.tsx
index f3ab5b5e..849c072e 100644
--- a/karavan-vscode/webview/documentation/components/ComponentsTab.tsx
+++ b/karavan-vscode/webview/karavan/features/documentation/components/ComponentsTab.tsx
@@ -19,8 +19,8 @@ import {Gallery} from '@patternfly/react-core';
import {ComponentCard} from "./ComponentCard";
import {ComponentModal} from "./ComponentModal";
import {shallow} from "zustand/shallow";
-import {useDocumentationStore} from "../DocumentationStore";
-import {Component} from '@/core/model/ComponentModels';
+import {useDocumentationStore} from "../../../stores/DocumentationStore";
+import {Component} from '@karavan-core/model/ComponentModels';
interface Props {
components: Component[],
diff --git a/karavan-vscode/webview/documentation/eip/EipCard.tsx b/karavan-vscode/webview/karavan/features/documentation/eip/EipCard.tsx
similarity index 87%
rename from karavan-vscode/webview/documentation/eip/EipCard.tsx
rename to karavan-vscode/webview/karavan/features/documentation/eip/EipCard.tsx
index a5c9b070..6f7f3ae2 100644
--- a/karavan-vscode/webview/documentation/eip/EipCard.tsx
+++ b/karavan-vscode/webview/karavan/features/documentation/eip/EipCard.tsx
@@ -15,12 +15,10 @@
* limitations under the License.
*/
import React from 'react';
-import {
- CardHeader, Card, CardTitle, CardBody, CardFooter, Badge, Content
-} from '@patternfly/react-core';
-import {CamelUi} from "@/integration-designer/utils/CamelUi";
-import {ElementMeta} from "@/core/model/CamelMetadata";
-import {useDocumentationStore} from "../DocumentationStore";
+import {Badge, Card, CardBody, CardFooter, CardHeader, CardTitle, Content} from '@patternfly/react-core';
+import {CamelUi} from "@features/project/designer/utils/CamelUi";
+import {ElementMeta} from "@karavan-core/model/CamelMetadata";
+import {useDocumentationStore} from "../../../stores/DocumentationStore";
import {shallow} from "zustand/shallow";
interface Props {
diff --git a/karavan-vscode/webview/documentation/eip/EipModal.tsx b/karavan-vscode/webview/karavan/features/documentation/eip/EipModal.tsx
similarity index 94%
rename from karavan-vscode/webview/documentation/eip/EipModal.tsx
rename to karavan-vscode/webview/karavan/features/documentation/eip/EipModal.tsx
index 367b3a6c..85ccc71d 100644
--- a/karavan-vscode/webview/documentation/eip/EipModal.tsx
+++ b/karavan-vscode/webview/karavan/features/documentation/eip/EipModal.tsx
@@ -17,11 +17,11 @@
import React from 'react';
import {Badge, Button, CardHeader, CardTitle, Content, Flex, Modal, ModalBody, ModalFooter, ModalHeader} from '@patternfly/react-core';
-import '@/integration-designer/karavan.css';
+import '@features/project/designer/karavan.css';
import {Table, Tbody, Td, Th, Thead, Tr} from "@patternfly/react-table";
-import {CamelUi} from "@/integration-designer/utils/CamelUi";
-import {PropertyMeta} from "@/core/model/CamelMetadata";
-import {useDocumentationStore} from "../DocumentationStore";
+import {CamelUi} from "@features/project/designer/utils/CamelUi";
+import {PropertyMeta} from "@karavan-core/model/CamelMetadata";
+import {useDocumentationStore} from "../../../stores/DocumentationStore";
import {shallow} from "zustand/shallow";
diff --git a/karavan-vscode/webview/documentation/eip/EipTab.tsx b/karavan-vscode/webview/karavan/features/documentation/eip/EipTab.tsx
similarity index 89%
rename from karavan-vscode/webview/documentation/eip/EipTab.tsx
rename to karavan-vscode/webview/karavan/features/documentation/eip/EipTab.tsx
index 80d09ed8..caefae21 100644
--- a/karavan-vscode/webview/documentation/eip/EipTab.tsx
+++ b/karavan-vscode/webview/karavan/features/documentation/eip/EipTab.tsx
@@ -15,14 +15,12 @@
* limitations under the License.
*/
import React from 'react';
-import {
- Gallery,
-} from '@patternfly/react-core';
+import {Gallery,} from '@patternfly/react-core';
import {EipCard} from "./EipCard";
import {EipModal} from "./EipModal";
-import {useDocumentationStore} from "../DocumentationStore";
+import {useDocumentationStore} from "../../../stores/DocumentationStore";
import {shallow} from "zustand/shallow";
-import {ElementMeta} from "@/core/model/CamelMetadata";
+import {ElementMeta} from "@karavan-core/model/CamelMetadata";
interface Props {
elements: ElementMeta[],
diff --git a/karavan-vscode/webview/documentation/kamelets/KameletCard.tsx b/karavan-vscode/webview/karavan/features/documentation/kamelets/KameletCard.tsx
similarity index 88%
rename from karavan-vscode/webview/documentation/kamelets/KameletCard.tsx
rename to karavan-vscode/webview/karavan/features/documentation/kamelets/KameletCard.tsx
index d3508e65..4292c22d 100644
--- a/karavan-vscode/webview/documentation/kamelets/KameletCard.tsx
+++ b/karavan-vscode/webview/karavan/features/documentation/kamelets/KameletCard.tsx
@@ -15,13 +15,11 @@
* limitations under the License.
*/
import React from 'react';
-import {
- CardHeader, Card, CardTitle, CardBody, CardFooter, Badge, Checkbox, Flex
-} from '@patternfly/react-core';
-import {KameletModel} from "@/core/model/KameletModels";
-import {CamelUi} from "@/integration-designer/utils/CamelUi";
-import {KameletApi} from "@/core/api/KameletApi";
-import {useDocumentationStore} from "../DocumentationStore";
+import {Badge, Card, CardBody, CardFooter, CardHeader, CardTitle, Flex} from '@patternfly/react-core';
+import {KameletModel} from "@karavan-core/model/KameletModels";
+import {CamelUi} from "@features/project/designer/utils/CamelUi";
+import {KameletApi} from "@karavan-core/api/KameletApi";
+import {useDocumentationStore} from "../../../stores/DocumentationStore";
import {shallow} from "zustand/shallow";
interface Props {
diff --git a/karavan-vscode/webview/documentation/kamelets/KameletModal.tsx b/karavan-vscode/webview/karavan/features/documentation/kamelets/KameletModal.tsx
similarity index 92%
rename from karavan-vscode/webview/documentation/kamelets/KameletModal.tsx
rename to karavan-vscode/webview/karavan/features/documentation/kamelets/KameletModal.tsx
index 526c73e0..c78a4217 100644
--- a/karavan-vscode/webview/documentation/kamelets/KameletModal.tsx
+++ b/karavan-vscode/webview/karavan/features/documentation/kamelets/KameletModal.tsx
@@ -15,20 +15,11 @@
* limitations under the License.
*/
import React from 'react';
-import {
- Button,
- Content,
- CardHeader,
- Badge,
- Flex,
- CardTitle, Modal,
- ModalHeader,
- ModalBody, ModalFooter
-} from '@patternfly/react-core';
-import {Property} from "@/core/model/KameletModels";
+import {Badge, Button, CardHeader, CardTitle, Content, Flex, Modal, ModalBody, ModalFooter, ModalHeader} from '@patternfly/react-core';
+import {Property} from "@karavan-core/model/KameletModels";
import {Table, Tbody, Td, Th, Thead, Tr} from "@patternfly/react-table";
-import {CamelUi} from "@/integration-designer/utils/CamelUi";
-import {useDocumentationStore} from "../DocumentationStore";
+import {CamelUi} from "@features/project/designer/utils/CamelUi";
+import {useDocumentationStore} from "../../../stores/DocumentationStore";
import {shallow} from "zustand/shallow";
export function KameletModal() {
diff --git a/karavan-vscode/webview/documentation/kamelets/KameletsTab.tsx b/karavan-vscode/webview/karavan/features/documentation/kamelets/KameletsTab.tsx
similarity index 92%
rename from karavan-vscode/webview/documentation/kamelets/KameletsTab.tsx
rename to karavan-vscode/webview/karavan/features/documentation/kamelets/KameletsTab.tsx
index 93a234c9..de298d6c 100644
--- a/karavan-vscode/webview/documentation/kamelets/KameletsTab.tsx
+++ b/karavan-vscode/webview/karavan/features/documentation/kamelets/KameletsTab.tsx
@@ -18,9 +18,9 @@ import React from 'react';
import {Gallery} from '@patternfly/react-core';
import {KameletCard} from "./KameletCard";
import {KameletModal} from "./KameletModal";
-import {useDocumentationStore} from "../DocumentationStore";
+import {useDocumentationStore} from "../../../stores/DocumentationStore";
import {shallow} from "zustand/shallow";
-import {KameletModel} from "@/core/model/KameletModels";
+import {KameletModel} from "@karavan-core/model/KameletModels";
interface Props {
kameletList: KameletModel[],
diff --git a/karavan-vscode/webview/karavan/features/project/Project.types.ts b/karavan-vscode/webview/karavan/features/project/Project.types.ts
new file mode 100644
index 00000000..0910166d
--- /dev/null
+++ b/karavan-vscode/webview/karavan/features/project/Project.types.ts
@@ -0,0 +1,19 @@
+import {DslMetaModel} from "@features/project/designer/utils/DslMetaModel";
+import {Project} from "@models/ProjectModels";
+
+export type ProjectFunctions = {
+ createNewRouteFile: (dsl: DslMetaModel, parentId: string, position?: number | undefined, fileName?: string) => void;
+ createOpenApiRestFile: () => void;
+ createNewBean: () => void;
+ createNewKamelet: () => void;
+ createRouteConfiguration: () => void;
+ createOpenApi: () => void;
+ createAsyncApi: () => void;
+ createNewRestFile: () => void;
+ refreshData: () => void;
+ refreshSharedData: () => void;
+ project: Project
+};
+
+// 2. Define the hook FUNCTION'S signature
+export type UseProjectHook = () => ProjectFunctions;
\ No newline at end of file
diff --git a/karavan-vscode/webview/karavan/features/project/ProjectContext.tsx b/karavan-vscode/webview/karavan/features/project/ProjectContext.tsx
new file mode 100644
index 00000000..830f672d
--- /dev/null
+++ b/karavan-vscode/webview/karavan/features/project/ProjectContext.tsx
@@ -0,0 +1,29 @@
+import React, {createContext, useContext} from 'react';
+import {ProjectFunctions, UseProjectHook} from './Project.types';
+
+const ProjectContext = createContext<ProjectFunctions | null>(null);
+
+export const useProjectFunctions = () => {
+ const context = useContext(ProjectContext);
+ if (context === null) {
+ throw new Error('UseProjectHook must be used within a ProjectProvider');
+ }
+ return context;
+};
+
+interface ProjectProviderProps {
+ children: React.ReactNode;
+ useProjectHook: UseProjectHook;
+}
+
+export const ProjectProvider: React.FC<ProjectProviderProps> = ({
+ children,
+ useProjectHook,
+ }) => {
+ const api = useProjectHook();
+ return (
+ <ProjectContext.Provider value={api}>
+ {children}
+ </ProjectContext.Provider>
+ );
+};
\ No newline at end of file
diff --git a/karavan-vscode/webview/karavan/features/project/ProjectTitle.tsx b/karavan-vscode/webview/karavan/features/project/ProjectTitle.tsx
new file mode 100644
index 00000000..0d8ad297
--- /dev/null
+++ b/karavan-vscode/webview/karavan/features/project/ProjectTitle.tsx
@@ -0,0 +1,69 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import React from 'react';
+import {ClipboardCopy, Content, Flex, FlexItem,} from '@patternfly/react-core';
+import {useFileStore, useProjectStore} from "@stores/ProjectStore";
+import {shallow} from "zustand/shallow";
+
+export function ProjectTitle() {
+
+ const [project, tabIndex, setTabIndex] = useProjectStore((s) => [s.project, s.tabIndex, s.setTabIndex], shallow);
+ const [file, setFile, operation] = useFileStore((s) => [s.file, s.setFile, s.operation], shallow);
+
+ const isFile = file !== undefined && operation !== 'delete';
+ const isLog = file !== undefined && file.name.endsWith("log");
+ const filename = file ? file.name.substring(0, file.name.lastIndexOf('.')) : "";
+
+ function getProjectTitle() {
+ return (
+ <Flex direction={{default: "column"}} gap={{default: 'gapNone'}}>
+ <FlexItem>
+ <Content component="h3">{project?.name}</Content>
+ </FlexItem>
+ <FlexItem>
+ <ClipboardCopy hoverTip="Copy" clickTip="Copied" variant="inline-compact">
+ {project?.projectId}
+ </ClipboardCopy>
+ </FlexItem>
+ </Flex>
+ )
+ }
+
+ function getFileTitle() {
+ return (isFile ?
+ <Flex direction={{default: "column"}} gap={{default: 'gapNone'}}>
+ <FlexItem>
+ <Content component="h3">{project?.name}</Content>
+ </FlexItem>
+ <FlexItem>
+ <ClipboardCopy hoverTip="Copy" clickTip="Copied" variant="inline-compact">
+ {isLog ? filename : file.name}
+ </ClipboardCopy>
+ </FlexItem>
+ </Flex>
+ : <></>
+ )
+ }
+
+ return (
+ <div className="dsl-title project-title">
+ {isFile && getFileTitle()}
+ {!isFile && getProjectTitle()}
+ </div>
+ )
+}
diff --git a/karavan-vscode/webview/integration-designer/CodeStore.ts b/karavan-vscode/webview/karavan/features/project/designer/CodeStore.ts
similarity index 100%
rename from karavan-vscode/webview/integration-designer/CodeStore.ts
rename to karavan-vscode/webview/karavan/features/project/designer/CodeStore.ts
diff --git a/karavan-vscode/webview/integration-designer/DesignerStore.ts b/karavan-vscode/webview/karavan/features/project/designer/DesignerStore.ts
similarity index 100%
rename from karavan-vscode/webview/integration-designer/DesignerStore.ts
rename to karavan-vscode/webview/karavan/features/project/designer/DesignerStore.ts
diff --git a/karavan-vscode/webview/integration-designer/ErrorBoundaryWrapper.tsx b/karavan-vscode/webview/karavan/features/project/designer/ErrorBoundaryWrapper.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/ErrorBoundaryWrapper.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/ErrorBoundaryWrapper.tsx
diff --git a/karavan-vscode/webview/integration-designer/KaravanDesigner.css b/karavan-vscode/webview/karavan/features/project/designer/KaravanDesigner.css
similarity index 100%
copy from karavan-vscode/webview/integration-designer/KaravanDesigner.css
copy to karavan-vscode/webview/karavan/features/project/designer/KaravanDesigner.css
diff --git a/karavan-vscode/webview/integration-designer/KaravanDesigner.tsx b/karavan-vscode/webview/karavan/features/project/designer/KaravanDesigner.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/KaravanDesigner.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/KaravanDesigner.tsx
diff --git a/karavan-vscode/webview/integration-designer/KaravanDesignerViewSwitch.tsx b/karavan-vscode/webview/karavan/features/project/designer/KaravanDesignerViewSwitch.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/KaravanDesignerViewSwitch.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/KaravanDesignerViewSwitch.tsx
diff --git a/karavan-vscode/webview/integration-designer/beans/BeanCard.tsx b/karavan-vscode/webview/karavan/features/project/designer/beans/BeanCard.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/beans/BeanCard.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/beans/BeanCard.tsx
diff --git a/karavan-vscode/webview/integration-designer/beans/BeansDesigner.tsx b/karavan-vscode/webview/karavan/features/project/designer/beans/BeansDesigner.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/beans/BeansDesigner.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/beans/BeansDesigner.tsx
diff --git a/karavan-vscode/webview/integration-designer/beans/bean.css b/karavan-vscode/webview/karavan/features/project/designer/beans/bean.css
similarity index 100%
rename from karavan-vscode/webview/integration-designer/beans/bean.css
rename to karavan-vscode/webview/karavan/features/project/designer/beans/bean.css
diff --git a/karavan-vscode/webview/integration-designer/icons/ComponentIcons.tsx b/karavan-vscode/webview/karavan/features/project/designer/icons/ComponentIcons.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/icons/ComponentIcons.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/icons/ComponentIcons.tsx
diff --git a/karavan-vscode/webview/integration-designer/icons/EipIcons.tsx b/karavan-vscode/webview/karavan/features/project/designer/icons/EipIcons.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/icons/EipIcons.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/icons/EipIcons.tsx
diff --git a/karavan-vscode/webview/integration-designer/icons/KaravanIcons.tsx b/karavan-vscode/webview/karavan/features/project/designer/icons/KaravanIcons.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/icons/KaravanIcons.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/icons/KaravanIcons.tsx
diff --git a/karavan-vscode/webview/integration-designer/icons/OtherIcons.tsx b/karavan-vscode/webview/karavan/features/project/designer/icons/OtherIcons.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/icons/OtherIcons.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/icons/OtherIcons.tsx
diff --git a/karavan-vscode/webview/integration-designer/kamelet/KameletAnnotationsPanel.tsx b/karavan-vscode/webview/karavan/features/project/designer/kamelet/KameletAnnotationsPanel.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/kamelet/KameletAnnotationsPanel.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/kamelet/KameletAnnotationsPanel.tsx
diff --git a/karavan-vscode/webview/integration-designer/kamelet/KameletDefinitionPropertyCard.tsx b/karavan-vscode/webview/karavan/features/project/designer/kamelet/KameletDefinitionPropertyCard.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/kamelet/KameletDefinitionPropertyCard.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/kamelet/KameletDefinitionPropertyCard.tsx
diff --git a/karavan-vscode/webview/integration-designer/kamelet/KameletDefinitionsPanel.tsx b/karavan-vscode/webview/karavan/features/project/designer/kamelet/KameletDefinitionsPanel.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/kamelet/KameletDefinitionsPanel.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/kamelet/KameletDefinitionsPanel.tsx
diff --git a/karavan-vscode/webview/integration-designer/kamelet/KameletDependenciesCard.tsx b/karavan-vscode/webview/karavan/features/project/designer/kamelet/KameletDependenciesCard.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/kamelet/KameletDependenciesCard.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/kamelet/KameletDependenciesCard.tsx
diff --git a/karavan-vscode/webview/integration-designer/kamelet/KameletDesigner.tsx b/karavan-vscode/webview/karavan/features/project/designer/kamelet/KameletDesigner.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/kamelet/KameletDesigner.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/kamelet/KameletDesigner.tsx
diff --git a/karavan-vscode/webview/integration-designer/kamelet/KameletInput.tsx b/karavan-vscode/webview/karavan/features/project/designer/kamelet/KameletInput.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/kamelet/KameletInput.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/kamelet/KameletInput.tsx
diff --git a/karavan-vscode/webview/integration-designer/kamelet/KameletTypesOutCard.tsx b/karavan-vscode/webview/karavan/features/project/designer/kamelet/KameletTypesOutCard.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/kamelet/KameletTypesOutCard.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/kamelet/KameletTypesOutCard.tsx
diff --git a/karavan-vscode/webview/integration-designer/kamelet/kamelet.css b/karavan-vscode/webview/karavan/features/project/designer/kamelet/kamelet.css
similarity index 100%
rename from karavan-vscode/webview/integration-designer/kamelet/kamelet.css
rename to karavan-vscode/webview/karavan/features/project/designer/kamelet/kamelet.css
diff --git a/karavan-vscode/webview/integration-designer/karavan.css b/karavan-vscode/webview/karavan/features/project/designer/karavan.css
similarity index 100%
rename from karavan-vscode/webview/integration-designer/karavan.css
rename to karavan-vscode/webview/karavan/features/project/designer/karavan.css
diff --git a/karavan-vscode/webview/integration-designer/property/DslProperties.css b/karavan-vscode/webview/karavan/features/project/designer/property/DslProperties.css
similarity index 100%
rename from karavan-vscode/webview/integration-designer/property/DslProperties.css
rename to karavan-vscode/webview/karavan/features/project/designer/property/DslProperties.css
diff --git a/karavan-vscode/webview/integration-designer/property/DslProperties.tsx b/karavan-vscode/webview/karavan/features/project/designer/property/DslProperties.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/property/DslProperties.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/property/DslProperties.tsx
diff --git a/karavan-vscode/webview/integration-designer/property/MainPropertiesPanel.tsx b/karavan-vscode/webview/karavan/features/project/designer/property/MainPropertiesPanel.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/property/MainPropertiesPanel.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/property/MainPropertiesPanel.tsx
diff --git a/karavan-vscode/webview/integration-designer/property/PropertiesHeader.tsx b/karavan-vscode/webview/karavan/features/project/designer/property/PropertiesHeader.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/property/PropertiesHeader.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/property/PropertiesHeader.tsx
diff --git a/karavan-vscode/webview/integration-designer/property/PropertyStore.ts b/karavan-vscode/webview/karavan/features/project/designer/property/PropertyStore.ts
similarity index 100%
rename from karavan-vscode/webview/integration-designer/property/PropertyStore.ts
rename to karavan-vscode/webview/karavan/features/project/designer/property/PropertyStore.ts
diff --git a/karavan-vscode/webview/integration-designer/property/expression/ExpressionBottomPanel.tsx b/karavan-vscode/webview/karavan/features/project/designer/property/expression/ExpressionBottomPanel.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/property/expression/ExpressionBottomPanel.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/property/expression/ExpressionBottomPanel.tsx
diff --git a/karavan-vscode/webview/integration-designer/property/expression/ExpressionContextModel.tsx b/karavan-vscode/webview/karavan/features/project/designer/property/expression/ExpressionContextModel.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/property/expression/ExpressionContextModel.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/property/expression/ExpressionContextModel.tsx
diff --git a/karavan-vscode/webview/integration-designer/property/expression/ExpressionEditor.css b/karavan-vscode/webview/karavan/features/project/designer/property/expression/ExpressionEditor.css
similarity index 100%
rename from karavan-vscode/webview/integration-designer/property/expression/ExpressionEditor.css
rename to karavan-vscode/webview/karavan/features/project/designer/property/expression/ExpressionEditor.css
diff --git a/karavan-vscode/webview/integration-designer/property/expression/ExpressionEditor.tsx b/karavan-vscode/webview/karavan/features/project/designer/property/expression/ExpressionEditor.tsx
similarity index 98%
rename from karavan-vscode/webview/integration-designer/property/expression/ExpressionEditor.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/property/expression/ExpressionEditor.tsx
index 457b8eb5..843e4b22 100644
--- a/karavan-vscode/webview/integration-designer/property/expression/ExpressionEditor.tsx
+++ b/karavan-vscode/webview/karavan/features/project/designer/property/expression/ExpressionEditor.tsx
@@ -15,7 +15,6 @@
* limitations under the License.
*/
import React, {useEffect, useState} from 'react';
-import '@shared/monaco-setup';
import Editor from "@monaco-editor/react";
import './ExpressionEditor.css'
import {ExpressionFunctions, ExpressionVariables} from "./ExpressionContextModel";
diff --git a/karavan-vscode/webview/integration-designer/property/property/BeanProperties.css b/karavan-vscode/webview/karavan/features/project/designer/property/property/BeanProperties.css
similarity index 100%
rename from karavan-vscode/webview/integration-designer/property/property/BeanProperties.css
rename to karavan-vscode/webview/karavan/features/project/designer/property/property/BeanProperties.css
diff --git a/karavan-vscode/webview/integration-designer/property/property/BeanProperties.tsx b/karavan-vscode/webview/karavan/features/project/designer/property/property/BeanProperties.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/property/property/BeanProperties.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/property/property/BeanProperties.tsx
diff --git a/karavan-vscode/webview/integration-designer/property/property/ComponentPropertyField.css b/karavan-vscode/webview/karavan/features/project/designer/property/property/ComponentPropertyField.css
similarity index 100%
rename from karavan-vscode/webview/integration-designer/property/property/ComponentPropertyField.css
rename to karavan-vscode/webview/karavan/features/project/designer/property/property/ComponentPropertyField.css
diff --git a/karavan-vscode/webview/integration-designer/property/property/ComponentPropertyField.tsx b/karavan-vscode/webview/karavan/features/project/designer/property/property/ComponentPropertyField.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/property/property/ComponentPropertyField.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/property/property/ComponentPropertyField.tsx
diff --git a/karavan-vscode/webview/integration-designer/property/property/ConfigurationSelectorModal.css b/karavan-vscode/webview/karavan/features/project/designer/property/property/ConfigurationSelectorModal.css
similarity index 100%
rename from karavan-vscode/webview/integration-designer/property/property/ConfigurationSelectorModal.css
rename to karavan-vscode/webview/karavan/features/project/designer/property/property/ConfigurationSelectorModal.css
diff --git a/karavan-vscode/webview/integration-designer/property/property/ConfigurationSelectorModal.tsx b/karavan-vscode/webview/karavan/features/project/designer/property/property/ConfigurationSelectorModal.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/property/property/ConfigurationSelectorModal.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/property/property/ConfigurationSelectorModal.tsx
diff --git a/karavan-vscode/webview/integration-designer/property/property/DataFormatField.tsx b/karavan-vscode/webview/karavan/features/project/designer/property/property/DataFormatField.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/property/property/DataFormatField.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/property/property/DataFormatField.tsx
diff --git a/karavan-vscode/webview/integration-designer/property/property/DslPropertyField.css b/karavan-vscode/webview/karavan/features/project/designer/property/property/DslPropertyField.css
similarity index 100%
rename from karavan-vscode/webview/integration-designer/property/property/DslPropertyField.css
rename to karavan-vscode/webview/karavan/features/project/designer/property/property/DslPropertyField.css
diff --git a/karavan-vscode/webview/integration-designer/property/property/DslPropertyField.tsx b/karavan-vscode/webview/karavan/features/project/designer/property/property/DslPropertyField.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/property/property/DslPropertyField.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/property/property/DslPropertyField.tsx
diff --git a/karavan-vscode/webview/integration-designer/property/property/DslPropertyFieldSelect.tsx b/karavan-vscode/webview/karavan/features/project/designer/property/property/DslPropertyFieldSelect.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/property/property/DslPropertyFieldSelect.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/property/property/DslPropertyFieldSelect.tsx
diff --git a/karavan-vscode/webview/integration-designer/property/property/DslPropertyFieldSelectScrollable.tsx b/karavan-vscode/webview/karavan/features/project/designer/property/property/DslPropertyFieldSelectScrollable.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/property/property/DslPropertyFieldSelectScrollable.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/property/property/DslPropertyFieldSelectScrollable.tsx
diff --git a/karavan-vscode/webview/integration-designer/property/property/ExpressionField.tsx b/karavan-vscode/webview/karavan/features/project/designer/property/property/ExpressionField.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/property/property/ExpressionField.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/property/property/ExpressionField.tsx
diff --git a/karavan-vscode/webview/integration-designer/property/property/FileReferenceDropdown.css b/karavan-vscode/webview/karavan/features/project/designer/property/property/FileReferenceDropdown.css
similarity index 100%
rename from karavan-vscode/webview/integration-designer/property/property/FileReferenceDropdown.css
rename to karavan-vscode/webview/karavan/features/project/designer/property/property/FileReferenceDropdown.css
diff --git a/karavan-vscode/webview/integration-designer/property/property/FileReferenceDropdown.tsx b/karavan-vscode/webview/karavan/features/project/designer/property/property/FileReferenceDropdown.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/property/property/FileReferenceDropdown.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/property/property/FileReferenceDropdown.tsx
diff --git a/karavan-vscode/webview/integration-designer/property/property/KameletPropertyField.css b/karavan-vscode/webview/karavan/features/project/designer/property/property/KameletPropertyField.css
similarity index 100%
rename from karavan-vscode/webview/integration-designer/property/property/KameletPropertyField.css
rename to karavan-vscode/webview/karavan/features/project/designer/property/property/KameletPropertyField.css
diff --git a/karavan-vscode/webview/integration-designer/property/property/KameletPropertyField.tsx b/karavan-vscode/webview/karavan/features/project/designer/property/property/KameletPropertyField.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/property/property/KameletPropertyField.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/property/property/KameletPropertyField.tsx
diff --git a/karavan-vscode/webview/integration-designer/property/property/ObjectField.tsx b/karavan-vscode/webview/karavan/features/project/designer/property/property/ObjectField.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/property/property/ObjectField.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/property/property/ObjectField.tsx
diff --git a/karavan-vscode/webview/integration-designer/property/property/PropertyPlaceholderDropdown.css b/karavan-vscode/webview/karavan/features/project/designer/property/property/PropertyPlaceholderDropdown.css
similarity index 100%
rename from karavan-vscode/webview/integration-designer/property/property/PropertyPlaceholderDropdown.css
rename to karavan-vscode/webview/karavan/features/project/designer/property/property/PropertyPlaceholderDropdown.css
diff --git a/karavan-vscode/webview/integration-designer/property/property/PropertyPlaceholderDropdown.tsx b/karavan-vscode/webview/karavan/features/project/designer/property/property/PropertyPlaceholderDropdown.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/property/property/PropertyPlaceholderDropdown.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/property/property/PropertyPlaceholderDropdown.tsx
diff --git a/karavan-vscode/webview/integration-designer/property/property/PropertyUtil.tsx b/karavan-vscode/webview/karavan/features/project/designer/property/property/PropertyUtil.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/property/property/PropertyUtil.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/property/property/PropertyUtil.tsx
diff --git a/karavan-vscode/webview/integration-designer/property/property/VariablesDropdown.css b/karavan-vscode/webview/karavan/features/project/designer/property/property/VariablesDropdown.css
similarity index 100%
rename from karavan-vscode/webview/integration-designer/property/property/VariablesDropdown.css
rename to karavan-vscode/webview/karavan/features/project/designer/property/property/VariablesDropdown.css
diff --git a/karavan-vscode/webview/integration-designer/property/property/VariablesDropdown.tsx b/karavan-vscode/webview/karavan/features/project/designer/property/property/VariablesDropdown.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/property/property/VariablesDropdown.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/property/property/VariablesDropdown.tsx
diff --git a/karavan-vscode/webview/integration-designer/property/usePropertiesHook.tsx b/karavan-vscode/webview/karavan/features/project/designer/property/usePropertiesHook.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/property/usePropertiesHook.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/property/usePropertiesHook.tsx
diff --git a/karavan-vscode/webview/integration-designer/rest/RestCard.tsx b/karavan-vscode/webview/karavan/features/project/designer/rest/RestCard.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/rest/RestCard.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/rest/RestCard.tsx
diff --git a/karavan-vscode/webview/integration-designer/rest/RestConfigurationCard.tsx b/karavan-vscode/webview/karavan/features/project/designer/rest/RestConfigurationCard.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/rest/RestConfigurationCard.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/rest/RestConfigurationCard.tsx
diff --git a/karavan-vscode/webview/integration-designer/rest/RestDesigner.tsx b/karavan-vscode/webview/karavan/features/project/designer/rest/RestDesigner.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/rest/RestDesigner.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/rest/RestDesigner.tsx
diff --git a/karavan-vscode/webview/integration-designer/rest/RestMethodCard.tsx b/karavan-vscode/webview/karavan/features/project/designer/rest/RestMethodCard.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/rest/RestMethodCard.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/rest/RestMethodCard.tsx
diff --git a/karavan-vscode/webview/integration-designer/rest/RestMethodSelector.tsx b/karavan-vscode/webview/karavan/features/project/designer/rest/RestMethodSelector.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/rest/RestMethodSelector.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/rest/RestMethodSelector.tsx
diff --git a/karavan-vscode/webview/integration-designer/rest/rest.css b/karavan-vscode/webview/karavan/features/project/designer/rest/rest.css
similarity index 100%
rename from karavan-vscode/webview/integration-designer/rest/rest.css
rename to karavan-vscode/webview/karavan/features/project/designer/rest/rest.css
diff --git a/karavan-vscode/webview/integration-designer/route/DeleteConfirmation.tsx b/karavan-vscode/webview/karavan/features/project/designer/route/DeleteConfirmation.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/route/DeleteConfirmation.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/route/DeleteConfirmation.tsx
diff --git a/karavan-vscode/webview/integration-designer/route/DslConnections.css b/karavan-vscode/webview/karavan/features/project/designer/route/DslConnections.css
similarity index 100%
rename from karavan-vscode/webview/integration-designer/route/DslConnections.css
rename to karavan-vscode/webview/karavan/features/project/designer/route/DslConnections.css
diff --git a/karavan-vscode/webview/integration-designer/route/DslConnections.tsx b/karavan-vscode/webview/karavan/features/project/designer/route/DslConnections.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/route/DslConnections.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/route/DslConnections.tsx
diff --git a/karavan-vscode/webview/integration-designer/route/RouteDesigner.css b/karavan-vscode/webview/karavan/features/project/designer/route/RouteDesigner.css
similarity index 100%
rename from karavan-vscode/webview/integration-designer/route/RouteDesigner.css
rename to karavan-vscode/webview/karavan/features/project/designer/route/RouteDesigner.css
diff --git a/karavan-vscode/webview/integration-designer/route/RouteDesigner.tsx b/karavan-vscode/webview/karavan/features/project/designer/route/RouteDesigner.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/route/RouteDesigner.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/route/RouteDesigner.tsx
diff --git a/karavan-vscode/webview/integration-designer/route/element/DslElement.css b/karavan-vscode/webview/karavan/features/project/designer/route/element/DslElement.css
similarity index 100%
rename from karavan-vscode/webview/integration-designer/route/element/DslElement.css
rename to karavan-vscode/webview/karavan/features/project/designer/route/element/DslElement.css
diff --git a/karavan-vscode/webview/integration-designer/route/element/DslElement.tsx b/karavan-vscode/webview/karavan/features/project/designer/route/element/DslElement.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/route/element/DslElement.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/route/element/DslElement.tsx
diff --git a/karavan-vscode/webview/integration-designer/route/element/DslElementHeader.tsx b/karavan-vscode/webview/karavan/features/project/designer/route/element/DslElementHeader.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/route/element/DslElementHeader.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/route/element/DslElementHeader.tsx
diff --git a/karavan-vscode/webview/integration-designer/route/element/DslElementMoveModal.tsx b/karavan-vscode/webview/karavan/features/project/designer/route/element/DslElementMoveModal.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/route/element/DslElementMoveModal.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/route/element/DslElementMoveModal.tsx
diff --git a/karavan-vscode/webview/integration-designer/route/element/RouteTemplateElement.css b/karavan-vscode/webview/karavan/features/project/designer/route/element/RouteTemplateElement.css
similarity index 100%
rename from karavan-vscode/webview/integration-designer/route/element/RouteTemplateElement.css
rename to karavan-vscode/webview/karavan/features/project/designer/route/element/RouteTemplateElement.css
diff --git a/karavan-vscode/webview/integration-designer/route/element/RouteTemplateElement.tsx b/karavan-vscode/webview/karavan/features/project/designer/route/element/RouteTemplateElement.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/route/element/RouteTemplateElement.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/route/element/RouteTemplateElement.tsx
diff --git a/karavan-vscode/webview/integration-designer/route/useResizeObserver.tsx b/karavan-vscode/webview/karavan/features/project/designer/route/useResizeObserver.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/route/useResizeObserver.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/route/useResizeObserver.tsx
diff --git a/karavan-vscode/webview/integration-designer/route/useRouteDesignerHook.tsx b/karavan-vscode/webview/karavan/features/project/designer/route/useRouteDesignerHook.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/route/useRouteDesignerHook.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/route/useRouteDesignerHook.tsx
diff --git a/karavan-vscode/webview/integration-designer/selector/DslCard.tsx b/karavan-vscode/webview/karavan/features/project/designer/selector/DslCard.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/selector/DslCard.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/selector/DslCard.tsx
diff --git a/karavan-vscode/webview/integration-designer/selector/DslFastCard.tsx b/karavan-vscode/webview/karavan/features/project/designer/selector/DslFastCard.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/selector/DslFastCard.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/selector/DslFastCard.tsx
diff --git a/karavan-vscode/webview/integration-designer/selector/DslPreferences.tsx b/karavan-vscode/webview/karavan/features/project/designer/selector/DslPreferences.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/selector/DslPreferences.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/selector/DslPreferences.tsx
diff --git a/karavan-vscode/webview/integration-designer/selector/DslSelector.css b/karavan-vscode/webview/karavan/features/project/designer/selector/DslSelector.css
similarity index 100%
rename from karavan-vscode/webview/integration-designer/selector/DslSelector.css
rename to karavan-vscode/webview/karavan/features/project/designer/selector/DslSelector.css
diff --git a/karavan-vscode/webview/integration-designer/selector/DslSelector.tsx b/karavan-vscode/webview/karavan/features/project/designer/selector/DslSelector.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/selector/DslSelector.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/selector/DslSelector.tsx
diff --git a/karavan-vscode/webview/integration-designer/utils/CamelDefaultStepProperty.tsx b/karavan-vscode/webview/karavan/features/project/designer/utils/CamelDefaultStepProperty.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/utils/CamelDefaultStepProperty.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/utils/CamelDefaultStepProperty.tsx
diff --git a/karavan-vscode/webview/integration-designer/utils/CamelUi.tsx b/karavan-vscode/webview/karavan/features/project/designer/utils/CamelUi.tsx
similarity index 99%
rename from karavan-vscode/webview/integration-designer/utils/CamelUi.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/utils/CamelUi.tsx
index 6d0cf54b..48c4980e 100644
--- a/karavan-vscode/webview/integration-designer/utils/CamelUi.tsx
+++ b/karavan-vscode/webview/karavan/features/project/designer/utils/CamelUi.tsx
@@ -107,7 +107,6 @@ import {toKebabCase, toSpecialRouteId} from "./ValidatorUtils";
import {ProjectFile} from "@models/ProjectModels";
import {CamelDefinitionYaml} from "@karavan-core/api/CamelDefinitionYaml";
import {EventBus} from "./EventBus";
-import {KaravanApi} from "@api/KaravanApi";
import {CamelDefinitionApi} from "@karavan-core/api/CamelDefinitionApi";
import {capitalize} from "@patternfly/react-core";
import {FILE_WORDS_SEPARATOR} from "@karavan-core/contants";
@@ -280,13 +279,13 @@ export class CamelUi {
const code = CamelDefinitionYaml.integrationToYaml(newIntegration);
const fileName = stringWithParams + '.camel.yaml';
const file = new ProjectFile(fileName, projectId, code, Date.now());
- KaravanApi.saveProjectFile(file, (result, newFile) => {
- if (result) {
- after(newFile);
- } else {
- EventBus.sendAlert('Error creating file', 'Error: ' +newFile?.toString());
- }
- });
+ // KaravanApi.saveProjectFile(file, (result, newFile) => {
+ // if (result) {
+ // after(newFile);
+ // } else {
+ // EventBus.sendAlert('Error creating file', 'Error: ' +newFile?.toString());
+ // }
+ // });
} catch (err: any){
console.error(err)
}
@@ -295,13 +294,13 @@ export class CamelUi {
static createNewFile = (projectId:string, fileName: string, code: string = '', after:(file: ProjectFile) => void): void => {
try {
const file = new ProjectFile(fileName, projectId, code, Date.now());
- KaravanApi.saveProjectFile(file, (result, newFile) => {
- if (result) {
- after(newFile);
- } else {
- EventBus.sendAlert('Error creating file', 'Error: ' +newFile?.toString());
- }
- });
+ // KaravanApi.saveProjectFile(file, (result, newFile) => {
+ // if (result) {
+ // after(newFile);
+ // } else {
+ // EventBus.sendAlert('Error creating file', 'Error: ' +newFile?.toString());
+ // }
+ // });
} catch (err: any){
console.error(err)
}
diff --git a/karavan-vscode/webview/integration-designer/utils/DslMetaModel.ts b/karavan-vscode/webview/karavan/features/project/designer/utils/DslMetaModel.ts
similarity index 100%
rename from karavan-vscode/webview/integration-designer/utils/DslMetaModel.ts
rename to karavan-vscode/webview/karavan/features/project/designer/utils/DslMetaModel.ts
diff --git a/karavan-vscode/webview/integration-designer/utils/ElementIcon.css b/karavan-vscode/webview/karavan/features/project/designer/utils/ElementIcon.css
similarity index 100%
rename from karavan-vscode/webview/integration-designer/utils/ElementIcon.css
rename to karavan-vscode/webview/karavan/features/project/designer/utils/ElementIcon.css
diff --git a/karavan-vscode/webview/integration-designer/utils/ElementIcons.tsx b/karavan-vscode/webview/karavan/features/project/designer/utils/ElementIcons.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/utils/ElementIcons.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/utils/ElementIcons.tsx
diff --git a/karavan-vscode/webview/integration-designer/utils/EventBus.ts b/karavan-vscode/webview/karavan/features/project/designer/utils/EventBus.ts
similarity index 100%
rename from karavan-vscode/webview/integration-designer/utils/EventBus.ts
rename to karavan-vscode/webview/karavan/features/project/designer/utils/EventBus.ts
diff --git a/karavan-vscode/webview/integration-designer/utils/InfrastructureAPI.ts b/karavan-vscode/webview/karavan/features/project/designer/utils/InfrastructureAPI.ts
similarity index 100%
rename from karavan-vscode/webview/integration-designer/utils/InfrastructureAPI.ts
rename to karavan-vscode/webview/karavan/features/project/designer/utils/InfrastructureAPI.ts
diff --git a/karavan-vscode/webview/integration-designer/utils/IntegrationHeader.tsx b/karavan-vscode/webview/karavan/features/project/designer/utils/IntegrationHeader.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/utils/IntegrationHeader.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/utils/IntegrationHeader.tsx
diff --git a/karavan-vscode/webview/integration-designer/utils/MediaTypes.ts b/karavan-vscode/webview/karavan/features/project/designer/utils/MediaTypes.ts
similarity index 100%
rename from karavan-vscode/webview/integration-designer/utils/MediaTypes.ts
rename to karavan-vscode/webview/karavan/features/project/designer/utils/MediaTypes.ts
diff --git a/karavan-vscode/webview/integration-designer/utils/Notification.tsx b/karavan-vscode/webview/karavan/features/project/designer/utils/Notification.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-designer/utils/Notification.tsx
rename to karavan-vscode/webview/karavan/features/project/designer/utils/Notification.tsx
diff --git a/karavan-vscode/webview/integration-designer/utils/ValidatorUtils.ts b/karavan-vscode/webview/karavan/features/project/designer/utils/ValidatorUtils.ts
similarity index 100%
rename from karavan-vscode/webview/integration-designer/utils/ValidatorUtils.ts
rename to karavan-vscode/webview/karavan/features/project/designer/utils/ValidatorUtils.ts
diff --git a/karavan-vscode/webview/integration-topology/CustomComponentFactory.tsx b/karavan-vscode/webview/karavan/features/project/project-topology/CustomComponentFactory.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-topology/CustomComponentFactory.tsx
rename to karavan-vscode/webview/karavan/features/project/project-topology/CustomComponentFactory.tsx
diff --git a/karavan-vscode/webview/integration-topology/CustomEdge.tsx b/karavan-vscode/webview/karavan/features/project/project-topology/CustomEdge.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-topology/CustomEdge.tsx
rename to karavan-vscode/webview/karavan/features/project/project-topology/CustomEdge.tsx
diff --git a/karavan-vscode/webview/integration-topology/CustomGroup.tsx b/karavan-vscode/webview/karavan/features/project/project-topology/CustomGroup.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-topology/CustomGroup.tsx
rename to karavan-vscode/webview/karavan/features/project/project-topology/CustomGroup.tsx
diff --git a/karavan-vscode/webview/integration-topology/CustomNode.tsx b/karavan-vscode/webview/karavan/features/project/project-topology/CustomNode.tsx
similarity index 81%
rename from karavan-vscode/webview/integration-topology/CustomNode.tsx
rename to karavan-vscode/webview/karavan/features/project/project-topology/CustomNode.tsx
index 60266fd8..74c279ad 100644
--- a/karavan-vscode/webview/integration-topology/CustomNode.tsx
+++ b/karavan-vscode/webview/karavan/features/project/project-topology/CustomNode.tsx
@@ -8,7 +8,6 @@ import '@features/project/project-topology/topology.css';
import {RouteDefinition} from "@karavan-core/model/CamelDefinition";
import {AutoStartupFalseIcon, ErrorHandlerIcon} from "@features/project/designer/icons/OtherIcons";
import {runInAction} from "mobx";
-import {SvgIcon} from "@shared/icons/SvgIcon";
import {useTopologyHook} from "@features/project/project-topology/useTopologyHook";
import {Category, IntentRequestScaleIn, IntentRequestScaleOut} from "@carbon/icons-react";
@@ -17,11 +16,6 @@ function getIcon(data: any) {
return (
<g transform={`translate(14, 14) scale(2)`} className='icon-wrapper'>
<Category/>
- {data?.generatedFromAsyncApi &&
- <g transform={`translate(9, -2)`}>
- {SvgIcon({icon: 'asyncapi', width: 14, height: 14})}
- </g>
- }
</g>
)
} else if (['routeConfiguration'].includes(data.icon)) {
@@ -54,31 +48,7 @@ function getIcon(data: any) {
<OpenApiIcon width={32} height={32} />
</g>
)
- } else if (data.icon === 'asyncapi') {
- return (
- <g transform={`translate(14, 14)`}>
- {SvgIcon({icon: 'asyncapi', width: 32, height: 32})}
- </g>
- )
- } else if (data.icon === 'send') {
- return (
- <g rotate={45} transform={`translate(14, 14) scale(2)`}>
- <IntentRequestScaleOut style={{fill: "var(--pf-t--global--text--color--subtle)"}}/>
- <g transform={`translate(12, -2)`}>
- {SvgIcon({icon: 'asyncapi', width: 6, height: 6})}
- </g>
- </g>
- )
- } else if (data.icon === 'receive') {
- return (
- <g rotate={45} transform={`translate(14, 14) scale(2)`}>
- <IntentRequestScaleIn style={{fill: "var(--pf-t--global--text--color--subtle)"}}/>
- <g transform={`translate(12, -2)`}>
- {SvgIcon({icon: 'asyncapi', width: 6, height: 6})}
- </g>
- </g>
- )
- }
+ }
return <RegionsIcon/>;
}
diff --git a/karavan-vscode/webview/integration-topology/GetCustomMenu.tsx b/karavan-vscode/webview/karavan/features/project/project-topology/GetCustomMenu.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-topology/GetCustomMenu.tsx
rename to karavan-vscode/webview/karavan/features/project/project-topology/GetCustomMenu.tsx
diff --git a/karavan-vscode/webview/integration-topology/TopologyApi.tsx b/karavan-vscode/webview/karavan/features/project/project-topology/TopologyApi.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-topology/TopologyApi.tsx
rename to karavan-vscode/webview/karavan/features/project/project-topology/TopologyApi.tsx
diff --git a/karavan-vscode/webview/integration-topology/TopologyBeans.css b/karavan-vscode/webview/karavan/features/project/project-topology/TopologyBeans.css
similarity index 100%
rename from karavan-vscode/webview/integration-topology/TopologyBeans.css
rename to karavan-vscode/webview/karavan/features/project/project-topology/TopologyBeans.css
diff --git a/karavan-vscode/webview/integration-topology/TopologyBeans.tsx b/karavan-vscode/webview/karavan/features/project/project-topology/TopologyBeans.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-topology/TopologyBeans.tsx
rename to karavan-vscode/webview/karavan/features/project/project-topology/TopologyBeans.tsx
diff --git a/karavan-vscode/webview/integration-topology/TopologyElkLayout.ts b/karavan-vscode/webview/karavan/features/project/project-topology/TopologyElkLayout.ts
similarity index 100%
rename from karavan-vscode/webview/integration-topology/TopologyElkLayout.ts
rename to karavan-vscode/webview/karavan/features/project/project-topology/TopologyElkLayout.ts
diff --git a/karavan-vscode/webview/integration-topology/TopologyLegend.css b/karavan-vscode/webview/karavan/features/project/project-topology/TopologyLegend.css
similarity index 100%
rename from karavan-vscode/webview/integration-topology/TopologyLegend.css
rename to karavan-vscode/webview/karavan/features/project/project-topology/TopologyLegend.css
diff --git a/karavan-vscode/webview/integration-topology/TopologyLegend.tsx b/karavan-vscode/webview/karavan/features/project/project-topology/TopologyLegend.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-topology/TopologyLegend.tsx
rename to karavan-vscode/webview/karavan/features/project/project-topology/TopologyLegend.tsx
diff --git a/karavan-vscode/webview/integration-topology/TopologyTab.tsx b/karavan-vscode/webview/karavan/features/project/project-topology/TopologyTab.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-topology/TopologyTab.tsx
rename to karavan-vscode/webview/karavan/features/project/project-topology/TopologyTab.tsx
diff --git a/karavan-vscode/webview/integration-topology/TopologyToolbar.tsx b/karavan-vscode/webview/karavan/features/project/project-topology/TopologyToolbar.tsx
similarity index 100%
rename from karavan-vscode/webview/integration-topology/TopologyToolbar.tsx
rename to karavan-vscode/webview/karavan/features/project/project-topology/TopologyToolbar.tsx
diff --git a/karavan-vscode/webview/integration-topology/topology.css b/karavan-vscode/webview/karavan/features/project/project-topology/topology.css
similarity index 100%
rename from karavan-vscode/webview/integration-topology/topology.css
rename to karavan-vscode/webview/karavan/features/project/project-topology/topology.css
diff --git a/karavan-vscode/webview/integration-topology/useTopologyHook.tsx b/karavan-vscode/webview/karavan/features/project/project-topology/useTopologyHook.tsx
similarity index 98%
rename from karavan-vscode/webview/integration-topology/useTopologyHook.tsx
rename to karavan-vscode/webview/karavan/features/project/project-topology/useTopologyHook.tsx
index fa4a34b2..4f4fa413 100644
--- a/karavan-vscode/webview/integration-topology/useTopologyHook.tsx
+++ b/karavan-vscode/webview/karavan/features/project/project-topology/useTopologyHook.tsx
@@ -21,7 +21,6 @@ import {EventBus} from "@features/project/designer/utils/EventBus";
import {CamelDefinitionYaml} from "@karavan-core/api/CamelDefinitionYaml";
import {CamelDefinitionApiExt} from "@karavan-core/api/CamelDefinitionApiExt";
import {RouteDefinition} from "@karavan-core/model/CamelDefinition";
-import {ProjectService} from "@services/ProjectService";
import {ModalConfirmationProps} from "@shared/ui/ModalConfirmation";
export function useTopologyHook(setConfirmationProps?: React.Dispatch<React.SetStateAction<ModalConfirmationProps | undefined>>) {
@@ -52,7 +51,7 @@ export function useTopologyHook(setConfirmationProps?: React.Dispatch<React.SetS
}
const newIntegration = CamelDefinitionApiExt.updateIntegrationRouteElement(integration, element);
file.code = CamelDefinitionYaml.integrationToYaml(newIntegration);
- ProjectService.updateFile(file, true);
+ // ProjectService.updateFile(file, true);
}
}
diff --git a/karavan-vscode/webview/core/model/MainConfigurationModel.ts b/karavan-vscode/webview/karavan/models/AccessModels.ts
similarity index 55%
rename from karavan-vscode/webview/core/model/MainConfigurationModel.ts
rename to karavan-vscode/webview/karavan/models/AccessModels.ts
index 26bd29a6..f633a328 100644
--- a/karavan-vscode/webview/core/model/MainConfigurationModel.ts
+++ b/karavan-vscode/webview/karavan/models/AccessModels.ts
@@ -14,31 +14,41 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+export class AccessUser {
+ username: string = '';
+ firstName: string = '';
+ lastName: string = ''
+ email: string = '';
+ status: string = 'ACTIVE';
+ passNeedUpdate: boolean = true;
+ roles: string[] = [];
-export class ApplicationProperty {
- name: string = '';
- value?: string;
- defaultValue?: string;
- description?: string;
- type?: string;
-
- public constructor(init?: Partial<ApplicationProperty>) {
+ public constructor(init?: Partial<AccessUser>) {
Object.assign(this, init);
}
}
-export class ApplicationPropertyGroup {
+export class AccessRole {
name: string = '';
- description?: string;
+ description: string = '';
- public constructor(init?: Partial<ApplicationPropertyGroup>) {
+
+ public constructor(init?: Partial<AccessRole>) {
Object.assign(this, init);
}
}
-export interface ApplicationPropertyChange {
- source: string;
- target: string;
- replace?: { from: string; to: string }[];
- removed?: { name: string }[];
+export class AccessPassword {
+ currentPassword: string = ''
+ password: string = ''
+ password2: string = ''
+
+
+ public constructor(init?: Partial<AccessPassword>) {
+ Object.assign(this, init);
+ }
}
+
+export const PLATFORM_ADMIN = 'platform-admin'
+export const PLATFORM_USER = 'platform-user'
+export const PLATFORM_DEVELOPER = 'platform-developer'
diff --git a/karavan-vscode/webview/api/ProjectModels.ts b/karavan-vscode/webview/karavan/models/ProjectModels.ts
similarity index 88%
rename from karavan-vscode/webview/api/ProjectModels.ts
rename to karavan-vscode/webview/karavan/models/ProjectModels.ts
index 0e9c8dcf..269f7d45 100644
--- a/karavan-vscode/webview/api/ProjectModels.ts
+++ b/karavan-vscode/webview/karavan/models/ProjectModels.ts
@@ -15,8 +15,6 @@
* limitations under the License.
*/
-import {ASYNCAPI_FILE_NAME_JSON, ASYNCAPI_FILE_NAME_YAML} from "@/core/contants";
-
export type FileOperation =
| "create"
| "select"
@@ -35,7 +33,18 @@ export const DOCKER_COMPOSE = "docker-compose.yaml";
export const DOCKER_STACK = "docker-stack.yaml";
export const KUBERNETES_YAML = "kubernetes.yaml";
export const APPLICATION_PROPERTIES = 'application.properties';
-export const BUILD_IN_FILES = [APPLICATION_PROPERTIES, DOCKER_COMPOSE, DOCKER_STACK, KUBERNETES_YAML, ASYNCAPI_FILE_NAME_JSON, ASYNCAPI_FILE_NAME_YAML];
+export const BUILD_SH = 'build.sh';
+export const BUILD_DOCKER_COMPOSE = 'builder.' + DOCKER_COMPOSE;
+export const BUILD_DOCKER_STACK = 'builder.' + DOCKER_STACK;
+export const BUILD_IN_FILES = [
+ APPLICATION_PROPERTIES,
+ DOCKER_COMPOSE,
+ DOCKER_STACK,
+ KUBERNETES_YAML,
+ BUILD_SH,
+ BUILD_DOCKER_COMPOSE,
+ BUILD_DOCKER_STACK
+];
export class AppConfig {
title: string = '';
@@ -57,8 +66,6 @@ export enum ProjectType {
configuration = 'configuration',
documentation = 'documentation',
services = 'services',
- shared = 'shared',
- cache = 'cache',
integration = 'integration',
}
@@ -67,17 +74,21 @@ export const BUILD_IN_PROJECTS: string[] = [
ProjectType.templates.toString(),
ProjectType.configuration.toString(),
ProjectType.services.toString(),
- ProjectType.shared.toString(),
ProjectType.documentation.toString()
];
export const RESERVED_WORDS: string[] = [...BUILD_IN_PROJECTS, 'karavan'];
+export interface ProjectCommited {
+ projectId: string;
+ lastCommit: string;
+ lastCommitTimestamp: number;
+}
+
export class Project {
projectId: string = '';
name: string = '';
- lastCommit: string = '';
- lastCommitTimestamp: number = 0;
+ lastUpdate: number = 0;
type: string = ProjectType.integration;
public constructor(projectId: string, name: string, lastCommit: string, type: string);
@@ -89,9 +100,8 @@ export class Project {
} else {
this.projectId = args[0];
this.name = args[1];
- this.lastCommit = args[2];
- this.lastCommitTimestamp = args[3];
- this.type = args[4];
+ this.lastUpdate = args[2];
+ this.type = args[3];
return;
}
}
@@ -106,7 +116,7 @@ export class DeploymentStatus {
replicas: number = 0;
readyReplicas: number = 0;
unavailableReplicas: number = 0;
- type: 'devmode' | 'devservice' | 'packaged' | 'internal' | 'build' | 'unknown' = 'unknown';
+ type: 'devmode' | 'packaged' | 'internal' | 'build' | 'unknown' = 'unknown';
}
export class ServiceStatus {
@@ -126,7 +136,7 @@ export class ContainerPort {
type: string = '';
}
-export type ContainerType = 'devmode' | 'devservice' | 'packaged' | 'internal' | 'build' | 'unknown';
+export type ContainerType = 'devmode' | 'packaged' | 'internal' | 'build' | 'unknown';
export class ContainerStatus {
containerName: string = '';
@@ -194,6 +204,15 @@ export class ProjectFile {
}
}
+export interface ProjectFileCommited {
+ name: string;
+ projectId: string;
+ code: string;
+ commitTime: number;
+ syncDate: number;
+}
+
+
export class ProjectFileType {
name: string = '';
title: string = '';
@@ -222,8 +241,6 @@ export const ProjectFileTypes: ProjectFileType[] = [
new ProjectFileType("PROPERTIES", "Properties", "properties"),
new ProjectFileType("JSON", "JSON", "json"),
new ProjectFileType("OPENAPI", "OpenAPI", "json"),
- new ProjectFileType("ASYNCAPI", "AsyncAPI", "yaml"),
- new ProjectFileType("ASYNCAPI", "AsyncAPI", "json"),
new ProjectFileType("YAML", "YAML", "yaml"),
new ProjectFileType("DOCKER", "Docker Compose", "yaml"),
new ProjectFileType("SH", "Script", "sh"),
@@ -239,8 +256,6 @@ export function getProjectFileTypeByName(fileName: string): ProjectFileType[] {
if (fileName.endsWith(".camel.yaml")) return ProjectFileTypes.filter(p => p.name === "INTEGRATION")
if (fileName.endsWith(".kamelet.yaml")) return ProjectFileTypes.filter(p => p.name === "KAMELET")
if (fileName === "openapi.json") return ProjectFileTypes.filter(p => p.name === "OPENAPI")
- if (fileName === "asyncapi.json") return ProjectFileTypes.filter(p => p.name === "ASYNCAPI")
- if (fileName === "asyncapi.yaml") return ProjectFileTypes.filter(p => p.name === "ASYNCAPI")
if (fileName.endsWith(".json")) return ProjectFileTypes.filter(p => p.name === "JSON")
if (fileName.endsWith(".yaml")) return ProjectFileTypes.filter(p => p.name === "YAML")
if (fileName.endsWith(".yml")) return ProjectFileTypes.filter(p => p.name === "YAML")
diff --git a/karavan-vscode/webview/api/ErrorEventBus.ts b/karavan-vscode/webview/karavan/models/SearchModels.ts
similarity index 79%
copy from karavan-vscode/webview/api/ErrorEventBus.ts
copy to karavan-vscode/webview/karavan/models/SearchModels.ts
index 17df7fb2..7d320b71 100644
--- a/karavan-vscode/webview/api/ErrorEventBus.ts
+++ b/karavan-vscode/webview/karavan/models/SearchModels.ts
@@ -14,12 +14,8 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-import {Subject} from 'rxjs';
-const apiErrors = new Subject<any>();
-
-export const ErrorEventBus = {
-
- sendApiError: (error: any) => apiErrors.next(error),
- onApiError: () => apiErrors.asObservable(),
+export class SearchResult {
+ projectId: string = '';
+ files: string[] = [];
}
diff --git a/karavan-vscode/webview/karavan/models/ServiceModels.ts b/karavan-vscode/webview/karavan/models/ServiceModels.ts
new file mode 100644
index 00000000..6578e17e
--- /dev/null
+++ b/karavan-vscode/webview/karavan/models/ServiceModels.ts
@@ -0,0 +1,70 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import * as yaml from 'js-yaml';
+
+export class Healthcheck {
+ interval: string = '';
+ retries: number = 0;
+ timeout: string = '';
+ test: string [] = [];
+
+ public constructor(init?: Partial<Healthcheck>) {
+ Object.assign(this, init);
+ }
+}
+
+export class DockerComposeService {
+ container_name: string = '';
+ image: string = '';
+ restart: string = '';
+ ports: string [] = [];
+ depends_on: string [] =[];
+ environment: any = {};
+ healthcheck?: Healthcheck;
+
+ public constructor(init?: Partial<DockerComposeService>) {
+ Object.assign(this, init);
+ }
+}
+
+export class DockerCompose {
+ version: string = '';
+ services: DockerComposeService[] = [];
+
+ public constructor(init?: Partial<DockerCompose>) {
+ Object.assign(this, init);
+ }
+}
+
+export class ServicesYaml {
+
+ static yamlToServices(code: string): DockerCompose {
+ const obj = yaml.load(code);
+ const fromYaml = JSON.parse(JSON.stringify(obj));
+ const result: DockerCompose = new DockerCompose({version: fromYaml.version});
+ Object.keys(fromYaml.services).forEach(key => {
+ const o = fromYaml.services[key];
+ const service = new DockerComposeService(o);
+ if (!service.container_name) {
+ service.container_name = key;
+ }
+ result.services.push(service);
+ })
+ return result;
+ }
+}
diff --git a/karavan-vscode/webview/api/ErrorEventBus.ts b/karavan-vscode/webview/karavan/models/SystemModels.ts
similarity index 69%
rename from karavan-vscode/webview/api/ErrorEventBus.ts
rename to karavan-vscode/webview/karavan/models/SystemModels.ts
index 17df7fb2..a4d1d12a 100644
--- a/karavan-vscode/webview/api/ErrorEventBus.ts
+++ b/karavan-vscode/webview/karavan/models/SystemModels.ts
@@ -14,12 +14,21 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-import {Subject} from 'rxjs';
-const apiErrors = new Subject<any>();
+export class KubernetesSecret {
+ name: string = '';
+ data: any = {}
-export const ErrorEventBus = {
-
- sendApiError: (error: any) => apiErrors.next(error),
- onApiError: () => apiErrors.asObservable(),
+ public constructor(init?: Partial<KubernetesSecret>) {
+ Object.assign(this, init);
+ }
}
+
+export class KubernetesConfigMap {
+ name: string = '';
+ data: any = {}
+
+ public constructor(init?: Partial<KubernetesSecret>) {
+ Object.assign(this, init);
+ }
+}
\ No newline at end of file
diff --git a/karavan-vscode/webview/components/ContainerButton.css b/karavan-vscode/webview/karavan/shared/ui/ContainerButton.css
similarity index 100%
rename from karavan-vscode/webview/components/ContainerButton.css
rename to karavan-vscode/webview/karavan/shared/ui/ContainerButton.css
diff --git a/karavan-vscode/webview/components/ContainerButton.tsx b/karavan-vscode/webview/karavan/shared/ui/ContainerButton.tsx
similarity index 86%
rename from karavan-vscode/webview/components/ContainerButton.tsx
rename to karavan-vscode/webview/karavan/shared/ui/ContainerButton.tsx
index ece749e9..608540c8 100644
--- a/karavan-vscode/webview/components/ContainerButton.tsx
+++ b/karavan-vscode/webview/karavan/shared/ui/ContainerButton.tsx
@@ -19,11 +19,11 @@ import React, {ReactElement} from 'react';
import {Button} from '@patternfly/react-core';
import UpIcon from "@patternfly/react-icons/dist/esm/icons/running-icon";
import DownIcon from "@patternfly/react-icons/dist/esm/icons/error-circle-o-icon";
-import {useLogStore} from "@/api/ProjectStore";
-import {ContainerStatus, ContainerType} from '@/api/ProjectModels';
+import {useSelectedContainerStore} from "@stores/ProjectStore";
+import {ContainerStatus, ContainerType} from '@models/ProjectModels';
import DevIcon from "@patternfly/react-icons/dist/esm/icons/dev-icon";
import './ContainerButton.css'
-import {BuildIcon, LockIcon, PackageIcon, ServiceIcon, UnknownIcon} from '@patternfly/react-icons';
+import {BuildIcon, LockIcon, PackageIcon, UnknownIcon} from '@patternfly/react-icons';
interface Props {
container: ContainerStatus,
@@ -32,6 +32,7 @@ interface Props {
export function ContainerButton(props: Props) {
const {container} = props;
+ const [setSelectedContainerName] = useSelectedContainerStore((s) => [s.setSelectedContainerName]);
const isRunning = container && container.state === 'running';
const buttonClassName = isRunning ? "karavan-container-button-up" : "karavan-container-button-down";
const iconClassName = isRunning ? "karavan-container-button-icon-up" : "karavan-container-button-icon-down";
@@ -40,7 +41,6 @@ export function ContainerButton(props: Props) {
const typeIconColor = isRunning ? 'var(--pf-t--global--color--status--success--100)' : 'var(--pf-v6-c-button--m-control--Color)';
const iconMap: Record<ContainerType, ReactElement> = {
devmode: <DevIcon color={typeIconColor}/>,
- devservice: <ServiceIcon color={typeIconColor}/>,
packaged: <PackageIcon color={typeIconColor}/>,
internal: <LockIcon color={typeIconColor}/>,
build: <BuildIcon color={typeIconColor}/>,
@@ -48,7 +48,6 @@ export function ContainerButton(props: Props) {
};
const typeMap: Record<ContainerType, string> = {
devmode: 'container',
- devservice: 'devservice',
packaged: 'container',
internal: 'internal',
build: 'build',
@@ -61,7 +60,7 @@ export function ContainerButton(props: Props) {
<Button variant={buttonVariant} icon={icon}
className={buttonClassName}
onClick={e => {
- useLogStore.setState({showLog: true, type: typeMap[type] as 'container' | 'build' | 'none', podName: container.containerName});
+ setSelectedContainerName(container.containerName);
}}
>
<div style={{display: 'flex', alignItems: 'center', gap: '0.4rem'}}>
diff --git a/karavan-vscode/webview/components/ErrorBoundaryWrapper.tsx b/karavan-vscode/webview/karavan/shared/ui/ErrorBoundaryWrapper.tsx
similarity index 100%
rename from karavan-vscode/webview/components/ErrorBoundaryWrapper.tsx
rename to karavan-vscode/webview/karavan/shared/ui/ErrorBoundaryWrapper.tsx
diff --git a/karavan-vscode/webview/components/FieldSelectScrollable.tsx b/karavan-vscode/webview/karavan/shared/ui/FieldSelectScrollable.tsx
similarity index 100%
rename from karavan-vscode/webview/components/FieldSelectScrollable.tsx
rename to karavan-vscode/webview/karavan/shared/ui/FieldSelectScrollable.tsx
diff --git a/karavan-vscode/webview/components/FieldSelectWithCreate.tsx b/karavan-vscode/webview/karavan/shared/ui/FieldSelectWithCreate.tsx
similarity index 100%
rename from karavan-vscode/webview/components/FieldSelectWithCreate.tsx
rename to karavan-vscode/webview/karavan/shared/ui/FieldSelectWithCreate.tsx
diff --git a/karavan-vscode/webview/components/MainToolbar.css b/karavan-vscode/webview/karavan/shared/ui/MainToolbar.css
similarity index 98%
rename from karavan-vscode/webview/components/MainToolbar.css
rename to karavan-vscode/webview/karavan/shared/ui/MainToolbar.css
index 1566eec7..fff0a110 100644
--- a/karavan-vscode/webview/components/MainToolbar.css
+++ b/karavan-vscode/webview/karavan/shared/ui/MainToolbar.css
@@ -21,8 +21,33 @@
padding: 0 16px 0 16px;
display: flex;
flex-direction: row;
- justify-content: space-between;
+ justify-content: flex-start;
align-items: center;
+
+ .logo {
+ width: 32px;
+ height: 32px;
+ }
+
+ .pf-v6-c-nav {
+ .pf-v6-c-nav__item {
+ .pf-m-current {
+ position: relative;
+ background: rgba(236, 122, 8, 0.25);
+ &::before {
+ content: "";
+ position: absolute;
+ inset: 0;
+ border-radius: inherit;
+ border: 1px solid rgba(236, 122, 8, 0.66);
+ pointer-events: none;
+ }
+ }
+ }
+ .pf-v6-c-nav__link:hover {
+ background: color-mix(in srgb, var(--pf-t--color--blue--60) 50%, transparent);
+ }
+ }
}
.karavan .main-toolbar h2 {
@@ -35,17 +60,17 @@
color: var(--pf-t--color--white);
}
-.karavan .main-toolbar .main-toolbar-toolbar {
+.karavan .main-toolbar-toolbar {
padding: 0;
display: flex;
flex-direction: row;
align-items: center;
gap: 8px;
justify-content: flex-end;
- width: 100%;
}
-.karavan .main-toolbar .search {
+.karavan .main-toolbar .search,
+.karavan .main-toolbar-toolbar .search {
width: 270px;
}
diff --git a/karavan-vscode/webview/components/MainToolbar.tsx b/karavan-vscode/webview/karavan/shared/ui/MainToolbar.tsx
similarity index 82%
rename from karavan-vscode/webview/components/MainToolbar.tsx
rename to karavan-vscode/webview/karavan/shared/ui/MainToolbar.tsx
index b1de6116..17702db4 100644
--- a/karavan-vscode/webview/components/MainToolbar.tsx
+++ b/karavan-vscode/webview/karavan/shared/ui/MainToolbar.tsx
@@ -16,12 +16,13 @@
*/
import React from 'react';
-import './MainToolbar.css';
+import '@shared/ui/MainToolbar.css';
+import {PlatformVersionWithName} from "@shared/ui/PlatformLogos";
interface Props {
title: React.ReactNode;
toolsStart?: React.ReactNode;
- tools: React.ReactNode;
+ tools?: React.ReactNode;
}
export function MainToolbar(props: Props) {
@@ -29,14 +30,14 @@ export function MainToolbar(props: Props) {
const { title, toolsStart, tools } = props;
return (
- <div className="main-toolbar">
- {title}
+ <div className="main-toolbar dark-toolbar">
+ {/*{title}*/}
{toolsStart &&
<div style={{flex: 2}}>
{toolsStart}
</div>
}
- {tools}
+ {tools || PlatformVersionWithName()}
</div>
)
}
diff --git a/karavan-vscode/webview/components/ModalConfirmation.tsx b/karavan-vscode/webview/karavan/shared/ui/ModalConfirmation.tsx
similarity index 71%
rename from karavan-vscode/webview/components/ModalConfirmation.tsx
rename to karavan-vscode/webview/karavan/shared/ui/ModalConfirmation.tsx
index 1bff3522..c873965b 100644
--- a/karavan-vscode/webview/components/ModalConfirmation.tsx
+++ b/karavan-vscode/webview/karavan/shared/ui/ModalConfirmation.tsx
@@ -6,7 +6,7 @@
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
- * http://www.apache.org/licenses/LICENSE-2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-import React from 'react';
+import React, {useEffect, useRef} from 'react';
import {Button, Modal, ModalBody, ModalFooter, ModalHeader} from '@patternfly/react-core';
export interface ModalConfirmationProps {
@@ -34,10 +34,24 @@ export interface ModalConfirmationProps {
export function ModalConfirmation(props: ModalConfirmationProps) {
const {title, isOpen, message, onConfirm, onCancel, btnConfirm, btnCancel, btnConfirmVariant, btnCancelVariant, variant} = props;
+
+ // 1. Create a ref for the button
+ const confirmBtnRef = useRef<HTMLButtonElement>(null);
+
+ // 2. Focus the button when the modal opens
+ useEffect(() => {
+ if (isOpen) {
+ // A small timeout ensures the modal DOM is ready before focusing
+ const timer = setTimeout(() => {
+ confirmBtnRef.current?.focus();
+ }, 100);
+ return () => clearTimeout(timer);
+ }
+ }, [isOpen]);
+
return (
<Modal
- className="modal-confirm"
- variant={variant || "small"}
+ variant={variant ?? "small"}
isOpen={isOpen}
onClose={() => onCancel()}
onEscapePress={e => onCancel()}>
@@ -46,7 +60,12 @@ export function ModalConfirmation(props: ModalConfirmationProps) {
{message}
</ModalBody>
<ModalFooter>
- <Button key="confirm" variant={btnConfirmVariant || 'primary'} onClick={event => onConfirm()}>
+ <Button
+ ref={confirmBtnRef} // 3. Attach the ref here
+ key="confirm"
+ variant={btnConfirmVariant || 'primary'}
+ onClick={event => onConfirm()}
+ >
{btnConfirm || 'Confirm'}
</Button>
<Button key="cancel" variant={btnCancelVariant || 'secondary'} onClick={e => onCancel()}>
@@ -55,4 +74,4 @@ export function ModalConfirmation(props: ModalConfirmationProps) {
</ModalFooter>
</Modal>
)
-}
+}
\ No newline at end of file
diff --git a/karavan-vscode/webview/karavan/shared/ui/PlatformLogos.css b/karavan-vscode/webview/karavan/shared/ui/PlatformLogos.css
new file mode 100644
index 00000000..9c38a052
--- /dev/null
+++ b/karavan-vscode/webview/karavan/shared/ui/PlatformLogos.css
@@ -0,0 +1,37 @@
+.platform-versions {
+ display: flex;
+ flex-direction: column;
+ gap: 10px;
+ align-items: center;
+
+ .pf-v6-c-label {
+ padding: 4px;
+ }
+}
+
+.platform-versions {
+
+}
+
+.platform-versions-item {
+ display: flex;
+ flex-direction: row;
+ gap: 3px;
+ align-items: center;
+
+ .platform-version {
+ font-size: var(--pf-t--global--font--size--body--sm);
+ line-height: var(--pf-t--global--font--size--body--sm);
+ color: var(--pf-t--color--gray--30);
+ }
+
+ .platform-small-logo {
+ width: 12px;
+ height: 12px;
+ }
+
+ .icon {
+ width: 12px;
+ height: 12px;
+ }
+}
diff --git a/karavan-vscode/webview/karavan/shared/ui/PlatformLogos.tsx b/karavan-vscode/webview/karavan/shared/ui/PlatformLogos.tsx
new file mode 100644
index 00000000..213123ce
--- /dev/null
+++ b/karavan-vscode/webview/karavan/shared/ui/PlatformLogos.tsx
@@ -0,0 +1,66 @@
+import React from "react";
+import {Badge, Content, Label} from "@patternfly/react-core";
+import PlatformLogo from "@app/navigation/PlatformLogo";
+import './PlatformLogos.css'
+
+export const KARAVAN_PLATFORM_VERSION = "4.18.0";
+
+interface PlatformVersionProps {
+ environment: string
+ short?: boolean
+}
+
+export function PlatformVersion(props: PlatformVersionProps) {
+ const {environment, short} = props;
+ const full = short !== true;
+ const badgeClassName = environment === 'dev' ? 'environment-dev'
+ : (environment === 'prod' ? 'environment-prod' : 'var(environment-default)');
+
+ return (
+ <div className="platform-versions">
+ <Label variant='outline' color='blue'>
+ <div className='platform-versions-item'>
+ {full && PlatformLogo("platform-small-logo")}
+ <p className='platform-version'>{KARAVAN_PLATFORM_VERSION}</p>
+ <Badge className={badgeClassName}>{environment || ''}</Badge>
+ </div>
+ </Label>
+ </div>
+ )
+}
+
+export function PlatformVersions() {
+ return (
+ <div style={{display: 'flex', flexDirection: 'row', justifyContent: 'center', alignItems: "center", gap: 6, paddingBottom: 6}}>
+ <div className='platform-versions-item'>
+ {PlatformLogo("platform-small-logo")}
+ <p style={{fontSize: '12px', color: 'var(--pf-t--color--gray--30)'}}>{KARAVAN_PLATFORM_VERSION}</p>
+ </div>
+ </div>
+ )
+}
+
+export function PlatformVersionWithName() {
+ const brand = (
+ <div style={{display: 'flex', flexDirection: 'row', alignItems: 'center', gap: 8}}>
+ <div>
+ {PlatformName(20)}
+ </div>
+ </div>
+ )
+
+ return (<div style={{
+ padding: '0',
+ height: '100%',
+ display: 'flex',
+ flexDirection: 'column',
+ justifyContent: 'center',
+ alignItems: 'end',
+ }}>
+ {brand}
+ </div>)
+}
+
+export const PlatformName = (height: number | string = 20, width: number | string = 292.797) => (
+ <Content component={'h1'}>KARAVAN</Content>
+)
diff --git a/karavan-vscode/webview/components/RightPanel.css b/karavan-vscode/webview/karavan/shared/ui/RightPanel.css
similarity index 80%
rename from karavan-vscode/webview/components/RightPanel.css
rename to karavan-vscode/webview/karavan/shared/ui/RightPanel.css
index 95df1b2f..c870c98b 100644
--- a/karavan-vscode/webview/components/RightPanel.css
+++ b/karavan-vscode/webview/karavan/shared/ui/RightPanel.css
@@ -5,7 +5,7 @@
flex-direction: column;
justify-content: stretch;
overflow: hidden;
- background-color: var(--pf-t--color--gray--95);
+ background: var(--pf-t--color--gray--95);
}
.karavan .right-panel .right-panel-top {
height: 64px; /* or whatever fixed height you want */
@@ -18,7 +18,11 @@
/*padding: 16px;*/
flex-grow: 2;
background: var(--pf-t--global--background--color--primary--default);
- border-top-left-radius: var(--pf-t--global--border--radius--400);
+ border-top-left-radius: var(--pf-t--global--border--radius--300);
+}
+
+.pf-v6-theme-dark .karavan .right-panel .right-panel-wrapper {
+ background: var(--pf-t--color--gray--90);
}
.karavan .right-panel .right-panel-wrapper .right-panel-card {
diff --git a/karavan-vscode/webview/components/RightPanel.tsx b/karavan-vscode/webview/karavan/shared/ui/RightPanel.tsx
similarity index 82%
rename from karavan-vscode/webview/components/RightPanel.tsx
rename to karavan-vscode/webview/karavan/shared/ui/RightPanel.tsx
index 739cdc97..5b8c4157 100644
--- a/karavan-vscode/webview/components/RightPanel.tsx
+++ b/karavan-vscode/webview/karavan/shared/ui/RightPanel.tsx
@@ -1,12 +1,12 @@
import React, {ReactElement} from 'react';
import './RightPanel.css'
-import {MainToolbar} from '@/components/MainToolbar';
-import {ErrorBoundaryWrapper} from "@/components/ErrorBoundaryWrapper";
+import {MainToolbar} from '@shared/ui/MainToolbar';
+import {ErrorBoundaryWrapper} from "@shared/ui/ErrorBoundaryWrapper";
interface Props {
title: React.ReactNode;
toolsStart?: React.ReactNode;
- tools: React.ReactNode;
+ tools?: React.ReactNode;
mainPanel: React.ReactNode;
}
diff --git a/karavan-vscode/webview/karavan/stores/AccessStore.ts b/karavan-vscode/webview/karavan/stores/AccessStore.ts
new file mode 100644
index 00000000..38a73db9
--- /dev/null
+++ b/karavan-vscode/webview/karavan/stores/AccessStore.ts
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import {createWithEqualityFn} from "zustand/traditional";
+import {shallow} from "zustand/shallow";
+import {AccessRole, AccessUser, PLATFORM_ADMIN, PLATFORM_DEVELOPER} from "@models/AccessModels";
+
+interface AccessState {
+ users: AccessUser[];
+ setUsers: (users: AccessUser[]) => void;
+ roles: AccessRole[];
+ filter: string;
+ setFilter: (filter: string) => void;
+ showUserModal: boolean;
+ setShowUserModal: (showUserModal: boolean) => void;
+ showRoleModal: boolean;
+ setShowRoleModal: (showUserModal: boolean) => void;
+ showPasswordModal: boolean;
+ setShowPasswordModal: (showPasswordModal: boolean) => void;
+ currentUser?: AccessUser;
+ setCurrentUser: (currentUser?: AccessUser) => void;
+}
+
+export const useAccessStore = createWithEqualityFn<AccessState>((set) => ({
+ users: [],
+ setUsers: (users: AccessUser[])=> {
+ set({users: users});
+ },
+ roles: [
+ new AccessRole({name: PLATFORM_ADMIN, description: 'Administrator'}),
+ new AccessRole({name: PLATFORM_DEVELOPER, description: 'Developer'})
+ ],
+ filter: '',
+ setFilter: (filter: string)=> {
+ set({filter: filter?.toLowerCase()});
+ },
+ showUserModal: false,
+ setShowUserModal: (showUserModal: boolean) => {
+ set({showUserModal: showUserModal});
+ },
+ showRoleModal: false,
+ setShowRoleModal: (showRoleModal: boolean) => {
+ set({showRoleModal: showRoleModal});
+ },
+ showPasswordModal: false,
+ setShowPasswordModal: (showPasswordModal: boolean) => {
+ set({showPasswordModal: showPasswordModal});
+ },
+ setCurrentUser: (currentUser?: AccessUser) => {
+ set({currentUser: currentUser});
+ }
+}), shallow)
+
+
diff --git a/karavan-vscode/webview/documentation/DocumentationStore.ts b/karavan-vscode/webview/karavan/stores/DocumentationStore.ts
similarity index 90%
rename from karavan-vscode/webview/documentation/DocumentationStore.ts
rename to karavan-vscode/webview/karavan/stores/DocumentationStore.ts
index b198b911..d6008db4 100644
--- a/karavan-vscode/webview/documentation/DocumentationStore.ts
+++ b/karavan-vscode/webview/karavan/stores/DocumentationStore.ts
@@ -17,9 +17,9 @@
import {createWithEqualityFn} from "zustand/traditional";
import {shallow} from "zustand/shallow";
-import {Component} from "@/core/model/ComponentModels";
-import {ElementMeta} from "@/core/model/CamelMetadata";
-import {KameletModel} from "@/core/model/KameletModels";
+import {Component} from "@karavan-core/model/ComponentModels";
+import {ElementMeta} from "@karavan-core/model/CamelMetadata";
+import {KameletModel} from "@karavan-core/model/KameletModels";
interface DocumentationState {
isModalOpen: boolean;
diff --git a/karavan-vscode/webview/api/ProjectStore.ts b/karavan-vscode/webview/karavan/stores/ProjectStore.ts
similarity index 71%
rename from karavan-vscode/webview/api/ProjectStore.ts
rename to karavan-vscode/webview/karavan/stores/ProjectStore.ts
index 0482501f..6ceea5f5 100644
--- a/karavan-vscode/webview/api/ProjectStore.ts
+++ b/karavan-vscode/webview/karavan/stores/ProjectStore.ts
@@ -18,25 +18,25 @@ import {
AppConfig,
CamelStatus,
ContainerImage,
- ContainerStatus,
DeploymentStatus,
DesignerTab,
FileOperation,
Project,
+ ProjectCommited,
ProjectFile,
+ ProjectFileCommited,
ProjectOperation,
ServiceStatus
-} from "./ProjectModels";
+} from "@models/ProjectModels";
import {createWithEqualityFn} from "zustand/traditional";
import {shallow} from "zustand/shallow";
+import isEqual from "lodash/isEqual";
interface AppConfigState {
loading: boolean;
setLoading: (loading: boolean) => void;
config: AppConfig;
setConfig: (config: AppConfig) => void;
- readiness: any;
- setReadiness: (readiness: any) => void;
selectedEnv: string[];
setSelectedEnv: (selectedEnv: string[]) => void;
selectEnvironment: (name: string, selected: boolean) => void;
@@ -53,16 +53,6 @@ export const useAppConfigStore = createWithEqualityFn<AppConfigState>((set) => (
setConfig: (config: AppConfig) => {
set({config: config})
},
- readiness: undefined,
- setReadiness: (r: any) => {
- set((state: AppConfigState) => {
- if (JSON.stringify(r) !== JSON.stringify(state?.readiness)) {
- return ({readiness: r})
- } else {
- return ({readiness: state.readiness})
- }
- });
- },
selectedEnv: [],
setSelectedEnv: (selectedEnv: string[]) => {
set((state: AppConfigState) => {
@@ -94,19 +84,27 @@ export const useAppConfigStore = createWithEqualityFn<AppConfigState>((set) => (
interface ProjectsState {
projects: Project[];
+ projectsCommited: ProjectCommited[];
setProjects: (projects: Project[]) => void;
upsertProject: (project: Project) => void;
filter: string;
setFilter: (filter: string) => void;
+ labels: any;
+ setLabels: (labels: any) => void;
}
-export const useProjectsStore = createWithEqualityFn<ProjectsState>((set) => ({
+export const useProjectsStore = createWithEqualityFn<ProjectsState>((set, get) => ({
projects: [],
+ projectsCommited: [],
+ labels: {},
setProjects: (ps: Project[]) => {
set((state: ProjectsState) => ({
projects: ps,
}));
},
+ setLabels: (labels: any) => {
+ set({labels: labels});
+ },
upsertProject: (project: Project) => {
set((state: ProjectsState) => ({
projects: state.projects.find(f => f.projectId === project.projectId) === undefined
@@ -120,34 +118,25 @@ export const useProjectsStore = createWithEqualityFn<ProjectsState>((set) => ({
}
}), shallow)
+
+export const ProjectMenus = ['topology', 'source', 'readme', 'build', 'containers'] as const;
+export const ProjectRuntimeMenus = ['pod', 'log'] as const;
+export type ProjectMenu = typeof ProjectMenus[number];
+export type ProjectRuntimeMenu = typeof ProjectRuntimeMenus[number];
+
interface ProjectState {
- isPulling: boolean,
- isPushing: boolean,
- isRunning: boolean,
- images: ContainerImage [],
- setImages: (images: ContainerImage []) => void;
project: Project;
setProject: (project: Project, operation: ProjectOperation) => void;
operation: "create" | "select" | "delete" | "none" | "copy";
- tabIndex: string | number;
- setTabIndex: (tabIndex: string | number) => void;
+ tabIndex: ProjectMenu | ProjectRuntimeMenu;
+ setTabIndex: (tabIndex: ProjectMenu | ProjectRuntimeMenu | number) => void;
setOperation: (o: ProjectOperation) => void;
- camelStatuses: CamelStatus[],
- setCamelStatuses: (camelStatuses: CamelStatus[]) => void;
- camelTraces: CamelStatus[],
- setCamelTraces: (camelTraces: CamelStatus[]) => void;
- refreshTrace: boolean
- setRefreshTrace: (refreshTrace: boolean) => void;
}
export const useProjectStore = createWithEqualityFn<ProjectState>((set) => ({
project: new Project(),
- images: [],
operation: 'none',
tabIndex: 'topology',
- isPushing: false,
- isPulling: false,
- isRunning: false,
setProject: (project: Project, operation: ProjectOperation) => {
set((state: ProjectState) => ({
project: project,
@@ -165,38 +154,19 @@ export const useProjectStore = createWithEqualityFn<ProjectState>((set) => ({
operation: o
}));
},
- setTabIndex: (tabIndex: string | number) => {
- set((state: ProjectState) => {
- return {tabIndex: tabIndex};
- });
- },
- setImages: (images: ContainerImage[]) => {
- set((state: ProjectState) => {
- state.images.length = 0;
- state.images.push(...images);
- return {images: state.images};
- });
- },
- camelStatuses: [],
- setCamelStatuses: (camelStatuses: CamelStatus[]) => {
- set((state: ProjectState) => {
- return {camelStatuses: camelStatuses};
- });
- },
- camelTraces: [],
- setCamelTraces: (camelTraces: CamelStatus[]) => {
- set((state: ProjectState) => {
- return {camelTraces: camelTraces};
- });
- },
- refreshTrace: false,
- setRefreshTrace: (refreshTrace: boolean) => {
- set({refreshTrace: refreshTrace})
+ setTabIndex: (tabIndex: ProjectMenu | ProjectRuntimeMenu | number) => {
+ const tab = typeof tabIndex === 'number' ? ProjectMenus[tabIndex] : tabIndex;
+ set({tabIndex: tab});
},
+
}), shallow)
+
+export type FilesSideBarType = 'create' | 'upload' | 'library'
+
interface FilesState {
files: ProjectFile[];
+ commitedFiles: ProjectFileCommited[];
diff: any;
setFiles: (files: ProjectFile[]) => void;
upsertFile: (file: ProjectFile) => void;
@@ -206,8 +176,9 @@ interface FilesState {
unselectFile: (filename: string) => void;
}
-export const useFilesStore = createWithEqualityFn<FilesState>((set) => ({
+export const useFilesStore = createWithEqualityFn<FilesState>((set, get) => ({
files: [],
+ commitedFiles: [],
diff: {},
selectedFileNames: [],
setFiles: (files: ProjectFile[]) => {
@@ -302,7 +273,6 @@ export const useDevModeStore = createWithEqualityFn<DevModeState>((set) => ({
interface StatusesState {
deployments: DeploymentStatus[];
services: ServiceStatus[];
- containers: ContainerStatus[];
camelContexts: CamelStatus[];
routes: CamelStatus[];
setRoutes: (routes: CamelStatus[]) => void;
@@ -312,14 +282,14 @@ interface StatusesState {
setProcessors: (processors: CamelStatus[]) => void;
setDeployments: (d: DeploymentStatus[]) => void;
setServices: (s: ServiceStatus[]) => void;
- setContainers: (c: ContainerStatus[]) => void;
setCamelContexts: (camelContexts: CamelStatus[]) => void;
+ camels: CamelStatus[];
+ setCamels: (c: CamelStatus[]) => void;
}
-export const useStatusesStore = createWithEqualityFn<StatusesState>((set) => ({
+export const useStatusesStore = createWithEqualityFn<StatusesState>((set, get) => ({
deployments: [],
services: [],
- containers: [],
camelContexts: [],
routes: [],
consumers: [],
@@ -334,11 +304,6 @@ export const useStatusesStore = createWithEqualityFn<StatusesState>((set) => ({
services: s,
}));
},
- setContainers: (c: ContainerStatus[]) => {
- set((state: StatusesState) => ({
- containers: c,
- }));
- },
setCamelContexts: (c: CamelStatus[]) => {
set((state: StatusesState) => ({
camelContexts: c,
@@ -355,51 +320,22 @@ export const useStatusesStore = createWithEqualityFn<StatusesState>((set) => ({
setProcessors: (processors: CamelStatus[]) => {
set({processors})
},
+ camels: [],
+ setCamels: (c: CamelStatus[]) => {
+ set((state: StatusesState) => ({
+ camels: c,
+ }));
+ },
}), shallow)
-interface LogState {
- podName?: string,
- data: string;
- setData: (data: string) => void;
- addData: (data: string) => void;
- addDataAsync: (data: string) => void;
- currentLine: number;
- setCurrentLine: (currentLine: number) => void;
- showLog: boolean,
- setShowLog: (showLog: boolean, type: 'container' | 'build' | 'none', podName?: string) => void;
- type: 'container' | 'build' | 'none',
- setType: (type: 'container' | 'build' | 'none') => void,
+
+interface SelectedContainerState {
+ selectedContainerName?: string;
+ setSelectedContainerName: (selectedContainerName?: string) => void;
}
-export const useLogStore = createWithEqualityFn<LogState>((set) => ({
- podName: undefined,
- data: '',
- setData: (data: string) => {
- set({data: data})
- },
- addData: (data: string) => {
- set((state: LogState) => {
- const delimiter = state.data.endsWith('\n') ? '' : '\n';
- return ({data: state.data.concat(delimiter, data)})
- })
- },
- addDataAsync: async (data: string) => {
- set((state: LogState) => {
- const delimiter = state.data.endsWith('\n') ? '' : '\n';
- return ({data: state.data.concat(delimiter, data)})
- })
- },
- currentLine: 0,
- setCurrentLine: (currentLine: number) => {
- set((state: LogState) => ({currentLine: currentLine}))
- },
- showLog: false,
- setShowLog: (showLog: boolean, type: 'container' | 'build' | 'none', podName?: string) => {
- set(() => ({showLog: showLog, type: type, podName: podName}));
- },
- type: "none",
- setType: (type: 'container' | 'build' | 'none') => {
- set((state: LogState) => ({type: type}));
+export const useSelectedContainerStore = createWithEqualityFn<SelectedContainerState>((set) => ({
+ setSelectedContainerName: (selectedContainerName?: string) => {
+ set({selectedContainerName: selectedContainerName })
},
}), shallow)
-
diff --git a/karavan-vscode/webview/karavan/stores/TopologyStore.ts b/karavan-vscode/webview/karavan/stores/TopologyStore.ts
new file mode 100644
index 00000000..f7088137
--- /dev/null
+++ b/karavan-vscode/webview/karavan/stores/TopologyStore.ts
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import {createWithEqualityFn} from "zustand/traditional";
+
+interface TopologyState {
+ fileName?: string
+ setFileName: (fileName?: string) => void
+ showGroups: boolean
+ setShowGroups: (showGroups: boolean) => void
+ showBeans: boolean
+ setShowBeans: (showBeans: boolean) => void
+ showLegend: boolean
+ setShowLegend: (showLegend: boolean) => void
+ showStats: boolean
+ setShowStats: (showStats: boolean) => void
+}
+
+export const useTopologyStore = createWithEqualityFn<TopologyState>((set, get) => {
+ return {
+ setFileName: (fileName?: string) => {
+ set((state: TopologyState) => {
+ return {fileName: fileName};
+ });
+ },
+ showGroups: false,
+ setShowGroups: (showGroups: boolean) => {
+ set({showGroups: showGroups});
+ },
+ showBeans: false,
+ setShowBeans: (showBeans: boolean) => {
+ set((state: TopologyState) => {
+ return {showBeans: showBeans};
+ });
+ },
+ showLegend: false,
+ setShowLegend: (showLegend: boolean) => {
+ set((state: TopologyState) => {
+ return {showLegend: showLegend};
+ });
+ },
+ showStats: false,
+ setShowStats: (showStats: boolean) => {
+ set((state: TopologyState) => {
+ return {showStats: showStats};
+ });
+ },
+ }
+});
diff --git a/karavan-vscode/webview/karavan/util/CodeUtils.ts b/karavan-vscode/webview/karavan/util/CodeUtils.ts
new file mode 100644
index 00000000..648fbf9a
--- /dev/null
+++ b/karavan-vscode/webview/karavan/util/CodeUtils.ts
@@ -0,0 +1,101 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import {APPLICATION_PROPERTIES, ProjectFile} from "@models/ProjectModels";
+import {BeanFactoryDefinition} from "@karavan-core/model/CamelDefinition";
+import {Integration, IntegrationFile, KameletTypes, MetadataLabels} from "@karavan-core/model/IntegrationDefinition";
+import {CamelDefinitionYaml} from "@karavan-core/api/CamelDefinitionYaml";
+import {CamelUi} from "@features/project/designer/utils/CamelUi";
+import {KameletApi} from "@karavan-core/api/KameletApi";
+import {CamelUtil} from "@karavan-core/api/CamelUtil";
+import {EventBus} from "@features/project/designer/utils/EventBus";
+
+export class CodeUtils {
+
+ static getBeans(files: ProjectFile[]): BeanFactoryDefinition[] {
+ const result: BeanFactoryDefinition[] = [];
+ CodeUtils.getIntegrations(files).forEach(integration => {
+ const beans = CamelUi.getBeans(integration);
+ result.push(...beans);
+ })
+ return result;
+ }
+
+ static getIntegrations(files: IntegrationFile[]): Integration[] {
+ const integrations: Integration[] = [];
+ files.filter((file) => file.name.endsWith(".camel.yaml")).forEach((file) => {
+ try {
+ const i = CamelDefinitionYaml.yamlToIntegration(file.name, file.code);
+ integrations.push(i);
+ } catch (e: any){
+ console.error(e);
+ EventBus.sendAlert(`Error parsing ${file.name}`, e?.message, 'danger');
+ }
+ })
+ return integrations;
+ }
+
+ static getPropertyPlaceholders(files: ProjectFile[]): [string, string][] {
+ const result: [string, string][] = []
+ const code = CodeUtils.getPropertyCode(files);
+ if (code) {
+ const lines = code.split('\n').map((line) => line.trim());
+ lines
+ .filter(line => !line.startsWith("camel.") && !line.startsWith("jkube.") && !line.startsWith("jib."))
+ .filter(line => line !== undefined && line !== null && line.length > 0)
+ .forEach(line => {
+ const parts = line.split("=");
+ if (parts.length > 0) {
+ result.push([parts[0], parts[1]]);
+ }
+ })
+ }
+ return result;
+ }
+
+ static getPropertyCode(files: ProjectFile[]) {
+ const file = files.filter(f => f.name === APPLICATION_PROPERTIES)?.at(0);
+ return file?.code;
+ }
+
+ static getCodeForNewFile(fileName: string, type: string, copyFromKamelet?: string): string {
+ if (type === 'INTEGRATION') {
+ return CamelDefinitionYaml.integrationToYaml(Integration.createNew(fileName, 'plain'));
+ } else if (type === 'KAMELET') {
+ const filenameParts = fileName.replace('.kamelet.yaml', '').split('-');
+ const name = filenameParts.join('-');
+ const type: string | undefined = filenameParts.slice(-1)[0]
+ const kameletType: KameletTypes | undefined = (type === "sink" || type === "source" || type === "action") ? type : undefined;
+ const integration = Integration.createNew(name, 'kamelet');
+ const meta: MetadataLabels = new MetadataLabels({"camel.apache.org/kamelet.type": kameletType});
+ integration.metadata.labels = meta;
+ if (copyFromKamelet !== undefined && copyFromKamelet !== '') {
+ const kamelet= KameletApi.getAllKamelets().filter(k => k.metadata.name === copyFromKamelet).at(0);
+ if (kamelet) {
+ (integration as any).spec = kamelet.spec;
+ (integration as any).metadata.labels = kamelet.metadata.labels;
+ (integration as any).metadata.annotations = kamelet.metadata.annotations;
+ const i = CamelUtil.cloneIntegration(integration);
+ return CamelDefinitionYaml.integrationToYaml(i);
+ }
+ }
+ return CamelDefinitionYaml.integrationToYaml(integration);
+ } else {
+ return '';
+ }
+ }
+}
\ No newline at end of file
diff --git a/karavan-vscode/webview/karavan/util/ModalForm.css b/karavan-vscode/webview/karavan/util/ModalForm.css
new file mode 100644
index 00000000..8ddcff60
--- /dev/null
+++ b/karavan-vscode/webview/karavan/util/ModalForm.css
@@ -0,0 +1,97 @@
+.modal-90 {
+ min-height: 90%;
+}
+
+.example-editor {
+ border-bottom: 1px solid lightgray;
+ border-left: 1px solid lightgray;
+ border-right: 1px solid lightgray;
+}
+
+.example-editor .margin {
+ background-color: var(--pf-t--global--background--color--primary--default);
+}
+
+.modal-form {
+ padding-bottom: 8px;
+ gap: 10px;
+}
+
+.modal-form .form-expandable {
+ display: flex;
+ flex-direction: row;
+ justify-content: start;
+ align-items: start;
+ gap: 6px;
+ padding: 6px;
+ background-color: var(--pf-t--global--background--color--primary--default);
+ border-width: 1px;
+ border-style: solid;
+ border-color: var(--pf-t--global--border--color--default);
+ border-radius: var(--pf-t--global--border--radius--medium);
+}
+
+.modal-form .form-expandable-hidden-border:after {
+ display: none;
+}
+
+
+.modal-form .form-expandable .pf-v6-c-expandable-section__toggle {
+ display: flex;
+ flex-direction: row;
+ text-wrap: nowrap;
+ /*width: 160px;*/
+}
+
+.modal-form .form-expandable .pf-v6-c-expandable-section__content {
+ flex: 2;
+ padding-right: 0;
+ padding-left: 0;
+}
+
+.modal-form .form-expandable .enum-input input {
+ min-width: 70px;
+}
+
+.modal-form .form-expandable .pf-v6-c-table.pf-m-compact tr:where(.pf-v6-c-table__tr):not(.pf-v6-c-table__expandable-row) > *:first-child {
+ --pf-v6-c-table--cell--PaddingLeft: 0;
+
+ .pf-v6-c-button.pf-m-plain {
+ padding: 0;
+ }
+}
+
+.modal-form .form-expandable .pf-v6-c-table.pf-m-compact tr:where(.pf-v6-c-table__tr):not(.pf-v6-c-table__expandable-row) > *:last-child {
+ --pf-v6-c-table--cell--PaddingRight: 0;
+}
+
+.modal-form .form-expandable .combinations-toggle-group .pf-v6-c-toggle-group__button {
+ padding: 0;
+}
+
+.modal-form .form-expandable .combinations-toggle-group .pf-v6-c-toggle-group__button .combination-name {
+ padding: 6px 16px 6px 16px;
+}
+
+.modal-form .form-expandable .modal-table {
+
+ .modal-table-row {
+ vertical-align: middle;
+ }
+
+ .pf-v6-c-table__td {
+ padding: 8px 4px 8px 4px;
+ }
+}
+
+.modal-form .form-expandable .pf-v6-c-table.pf-m-compact tr:where(.pf-v6-c-table__tr):not(.pf-v6-c-table__expandable-row) > *:first-child {
+ padding: 0;
+}
+
+.modal-form .form-expandable .pf-v6-c-table tr:where(.pf-v6-c-table__tr) > :where(th, td) {
+ padding-block-start: var(--pf-t--global--spacer--xs);
+ padding-block-end: var(--pf-t--global--spacer--xs);
+ padding-inline-start: var(--pf-t--global--spacer--xs);
+ padding-inline-end: var(--pf-t--global--spacer--xs);
+}
+
diff --git a/karavan-vscode/webview/util/StringUtils.ts b/karavan-vscode/webview/karavan/util/StringUtils.ts
similarity index 82%
rename from karavan-vscode/webview/util/StringUtils.ts
rename to karavan-vscode/webview/karavan/util/StringUtils.ts
index 31a21d84..c6d521ec 100644
--- a/karavan-vscode/webview/util/StringUtils.ts
+++ b/karavan-vscode/webview/karavan/util/StringUtils.ts
@@ -232,7 +232,7 @@ export function durationToString(durationMs: number): string {
const hours = Math.floor((durationMs / (1000 * 60 * 60)) % 24);
const days = Math.floor(durationMs / (1000 * 60 * 60 * 24));
- const parts: string[] = []; // 👈 add the type
+ const parts = [];
if (days > 0) parts.push(`${days}d`);
if (hours > 0) parts.push(`${hours}h`);
if (minutes > 0) parts.push(`${minutes}m`);
@@ -242,7 +242,6 @@ export function durationToString(durationMs: number): string {
return parts.join(' ');
}
-
export function toFakeUTCISOString(date: Date): string {
const yyyy = date.getFullYear();
const mm = String(date.getMonth() + 1).padStart(2, '0');
@@ -277,4 +276,66 @@ export function extractTitleFromMarkdown(markdown: string): string | null {
// If no title found
return null;
+}
+
+export function convertAnyToString(value: any): string {
+ if (value === null) return "null";
+ if (value === undefined) return "undefined";
+
+ // If it's already a string, check if it might be JSON
+ if (typeof value === "string") {
+ const trimmed = value.trim();
+
+ // Try parsing directly (normal JSON string)
+ try {
+ const parsed = JSON.parse(trimmed);
+ return JSON.stringify(parsed, null, 2);
+ } catch {
+ // Try parsing escaped JSON string
+ try {
+ const unescaped = trimmed.replace(/\\"/g, '"');
+ const parsed = JSON.parse(unescaped);
+ return JSON.stringify(parsed, null, 2);
+ } catch {
+ // Not JSON, return as-is
+ return value;
+ }
+ }
+ }
+
+ // Handle objects and arrays
+ if (typeof value === "object") {
+ try {
+ return JSON.stringify(value, null, 2);
+ } catch {
+ // Circular reference or unserializable object
+ return Object.prototype.toString.call(value);
+ }
+ }
+
+ // Fallback for primitives (number, boolean, symbol, bigint, function)
+ try {
+ return String(value);
+ } catch {
+ return "[Unstringifiable value]";
+ }
+}
+
+const placeholderRegexp = /\{\{\s*([^}:]+?)\s*\}\}/g;
+export function replacePlaceholders(code: string, placeholders: Record<string, string>){
+ return code.replace(placeholderRegexp, (match, rawKey) => {
+ const key = rawKey.trim();
+ return key in placeholders ? placeholders[key] : match;
+ });
+}
+
+export function findPlaceholders(code: string): string[] {
+ const regex = placeholderRegexp;
+ const results: string[] = [];
+ let match: RegExpExecArray | null;
+
+ while ((match = regex.exec(code)) !== null) {
+ results.push(match[1].trim());
+ }
+ return [...new Set(results)];
}
\ No newline at end of file
diff --git a/karavan-vscode/webview/integration-designer/KaravanDesigner.css b/karavan-vscode/webview/karavan/util/form-util.css
similarity index 59%
rename from karavan-vscode/webview/integration-designer/KaravanDesigner.css
rename to karavan-vscode/webview/karavan/util/form-util.css
index 19898c41..ca411353 100644
--- a/karavan-vscode/webview/integration-designer/KaravanDesigner.css
+++ b/karavan-vscode/webview/karavan/util/form-util.css
@@ -15,19 +15,30 @@
* limitations under the License.
*/
-.karavan .karavan-designer-page {
- height: 100vh;
- width: 100%;
- overflow: hidden;
- display: flex;
- flex-direction: column;
- position: relative;
+.pf-v6-c-modal-box .text-field-with-prefix {
+ gap: 0;
+}
+
+.pf-v6-c-modal-box .text-field-with-prefix .text-field-prefix {
+ margin-top: auto;
+ margin-bottom: auto;
+}
+
+.pf-v6-c-modal-box .text-field-with-prefix .pf-v6-c-text-input-group__text-input {
+ padding-left: 0;
}
-.karavan .karavan-designer-view-switcher {
- position: absolute;
- width: 125px;
- right: 1px;
- top: 1px;
- z-index: 100;
+.pf-v6-c-modal-box .text-field-with-suffix .text-field-suffix {
+ margin-top: auto;
+ margin-bottom: auto;
+ padding-left: 3px;
+ padding-right: 3px;
+}
+
+.form-util-text-field {
+ width: 100%;
+}
+.form-util-text-field-suffix,
+.form-util-text-field-suffix input {
+ width: 150px
}
\ No newline at end of file
diff --git a/karavan-vscode/webview/karavan/util/useFormUtil.tsx b/karavan-vscode/webview/karavan/util/useFormUtil.tsx
new file mode 100644
index 00000000..72f46305
--- /dev/null
+++ b/karavan-vscode/webview/karavan/util/useFormUtil.tsx
@@ -0,0 +1,328 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import React, {useState} from 'react';
+import {Controller, FieldError, UseFormReturn,} from "react-hook-form";
+import {
+ Button,
+ Content,
+ ContentVariants,
+ Flex,
+ FormGroup,
+ FormHelperText,
+ FormSelect,
+ FormSelectOption,
+ HelperText,
+ HelperTextItem,
+ Switch,
+ TextArea,
+ TextInput,
+ TextInputGroup,
+ TextInputGroupMain,
+ TextInputGroupUtilities
+} from "@patternfly/react-core";
+import "./form-util.css"
+import ShowIcon from "@patternfly/react-icons/dist/js/icons/eye-icon";
+import HideIcon from "@patternfly/react-icons/dist/js/icons/eye-slash-icon";
+import {hasDigit, hasLowercase, hasMinimumLength, hasSpecialCharacter, hasUppercase} from "./StringUtils";
+
+export function useFormUtil(formContext: UseFormReturn<any>) {
+
+ const [showPassword, setShowPassword] = useState<boolean>(false);
+
+ function getHelper(text?: string) {
+ if (text) {
+ return (
+ <FormHelperText>
+ <HelperText>
+ <HelperTextItem variant={'default'}>
+ {text}
+ </HelperTextItem>
+ </HelperText>
+ </FormHelperText>
+ )
+ } else return (<></>)
+ }
+
+ function getError(error: FieldError | undefined) {
+ if (error) {
+ return (
+ <FormHelperText>
+ <HelperText>
+ <HelperTextItem variant={'error'}>
+ {error.message}
+ </HelperTextItem>
+ </HelperText>
+ </FormHelperText>
+ )
+ } else return (<></>)
+ }
+
+ function getTextField(fieldName: string, label: string,
+ validate?: ((value: string, formValues: any) => boolean | string) | Record<string, (value: string, formValues: any) => boolean | string>,
+ type: | 'text' | 'date' | 'datetime-local' | 'email' | 'month' | 'number' | 'password' | 'search' | 'tel' | 'time' | 'url' = 'text',
+ onChange?: ((value: any) => void), hint?: string, onBlur?: () => void) {
+ const {control, setValue, getValues, formState: {errors}} = formContext;
+ const rules: any = {};
+ if (validate !== undefined) {
+ rules.required = "Required field";
+ }
+ if (validate) {
+ rules.validate = validate;
+ }
+ return (
+ <FormGroup label={label} fieldId={fieldName} isRequired={validate !== undefined}>
+ <Controller
+ rules={rules}
+ control={control}
+ name={fieldName}
+ render={() => (
+ <TextInput className="text-field" type={type}
+ id={`${fieldName}-text`}
+ required={validate !== undefined}
+ value={getValues(fieldName) || ''}
+ validated={!!errors[fieldName] ? 'error' : 'default'}
+ onChange={(_, v) => {
+ setValue(fieldName, v, {shouldValidate: true});
+ onChange?.(v)
+ }}
+ onBlur={event => onBlur?.()}
+ />
+ )}
+ />
+ {getError((errors as any)[fieldName])}
+ {getHelper(hint)}
+ </FormGroup>
+ )
+ }
+
+ function getTextArea(fieldName: string, label: string, validate?: ((value: string, formValues: any) => boolean | string) | Record<string, (value: string, formValues: any) => boolean | string>) {
+ const {setValue, getValues, control, formState: {errors}} = formContext;
+ return (
+ <FormGroup label={label} fieldId={fieldName} isRequired>
+ <Controller
+ rules={{required: "Required field", validate: validate}}
+ control={control}
+ name={fieldName}
+ render={() => (
+ <TextArea type="text"
+ id={`${fieldName}-text`}
+ value={getValues(fieldName) || ''}
+ validated={!!errors[fieldName] ? 'error' : 'default'}
+ // ref={ref}
+ onChange={(e, v) => {
+ setValue(fieldName, v, {shouldValidate: true});
+ }}
+ autoResize
+ />
+ )}
+ />
+ {getError((errors as any)[fieldName])}
+ </FormGroup>
+ )
+ }
+
+ // function getEditor(fieldName: string, label: string, validate?: ((value: string, formValues: any) => boolean | string) | Record<string, (value: string, formValues: any) => boolean | string>) {
+ // const {setValue, getValues, control, formState: {errors}} = formContext;
+ // const val = getValues(fieldName);
+ // const valStr =
+ // (val === undefined || val === null || val === '')
+ // ? ''
+ // : typeof val === 'object' ? JSON.stringify(val, null, 2) : '' + val?.toString()
+ // return (
+ // <Controller
+ // rules={{required: "Required field", validate: validate}}
+ // control={control}
+ // name={fieldName}
+ // render={() => (
+ // <div style={{padding: '6px'}}>
+ // <Editor
+ // height="600px"
+ // defaultLanguage={'json'}
+ // theme={'light'}
+ // value={valStr}
+ // className={'code-editor'}
+ // options={{
+ // lineNumbers: "off",
+ // folding: false,
+ // lineNumbersMinChars: 10,
+ // showUnused: false,
+ // fontSize: 12,
+ // minimap: {enabled: false}
+ // }}
+ // onChange={(value, ev) => {
+ // if (value) {
+ // setValue(fieldName, value, {shouldValidate: true});
+ // }
+ // }}
+ // />
+ // </div>
+ // )}
+ // />
+ // )
+ // }
+
+ function getPasswordField(fieldName: string, label: string, validate?: ((value: string, formValues: any) => boolean | string) | Record<string, (value: string, formValues: any) => boolean | string>) {
+ validate = {
+ length: v => hasMinimumLength(v) || 'Password should be at least 8 characters',
+ lower: v => hasLowercase(v) || 'Password should have at least one lowercase letter',
+ upper: v => hasUppercase(v) || 'Password should have at least one uppercase letter',
+ digit: v => hasDigit(v) || 'Password should have at least one digit',
+ special: v => hasSpecialCharacter(v) || 'Password should have at least one special character',
+ }
+ const {control, setValue, getValues, formState: {errors}} = formContext;
+ return (
+ <FormGroup label={label} fieldId={fieldName} isRequired>
+ <Controller
+ rules={{required: "Required field", validate: validate}}
+ control={control}
+ name={fieldName}
+ render={() => (
+ <div style={{display: 'flex'}}>
+ <TextInput className="text-field" type={showPassword ? "text" : "password"} id={fieldName}
+ value={getValues(fieldName) || ''}
+ validated={!!errors[fieldName] ? 'error' : 'default'}
+ onChange={(_, v) => {
+ setValue(fieldName, v, {shouldValidate: true});
+ }}
+ />
+ <Button variant="control" onClick={e => setShowPassword(!showPassword)}>
+ {showPassword ? <ShowIcon/> : <HideIcon/>}
+ </Button>
+ </div>
+ )}
+ />
+ {getError((errors as any)[fieldName])}
+ </FormGroup>
+ )
+ }
+
+ function getTextFieldPrefix(fieldName: string, label: string, prefix: string,
+ required: boolean,
+ validate?: ((value: string, formValues: any) => boolean | string) | Record<string, (value: string, formValues: any) => boolean | string>) {
+ const {setValue, getValues, register, formState: {errors}} = formContext;
+ return (
+ <FormGroup label={label} fieldId={fieldName} isRequired>
+ <TextInputGroup>
+ <TextInputGroupMain className="text-field-with-prefix" type="text" id={fieldName}
+ value={getValues(fieldName)}
+ {...register(fieldName, {
+ required: (required ? "Required field" : false),
+ validate: validate
+ })}
+ onChange={(e, v) => {
+ setValue(fieldName, v, {shouldValidate: true});
+ }}
+ >
+ <Content className='text-field-prefix' component={ContentVariants.p}>{prefix}</Content>
+ </TextInputGroupMain>
+ </TextInputGroup>
+ {getHelper((errors as any)[fieldName])}
+ </FormGroup>
+ )
+ }
+
+ function getTextFieldSuffix(fieldName: string, label: string, suffix: string,
+ validate?: ((value: string, formValues: any) => boolean | string) | Record<string, (value: string, formValues: any) => boolean | string>,
+ type: | 'text' | 'date' | 'datetime-local' | 'email' | 'month' | 'number' | 'password' | 'search' | 'tel' | 'time' | 'url' = 'text') {
+ const {control, setValue, getValues, formState: {errors}} = formContext;
+ return (
+ <FormGroup label={label} fieldId={fieldName} isRequired>
+ <Controller
+ rules={{required: "Required field", validate: validate}}
+ control={control}
+ name={fieldName}
+ render={() => (
+ <TextInputGroup>
+ <TextInputGroupMain type={type} id={fieldName}
+ value={getValues(fieldName)}
+ // validated={!!errors[fieldName] ? 'error' : 'default'}
+ onChange={(_, v) => {
+ setValue(fieldName, v, {shouldValidate: true});
+ }}
+ />
+ <TextInputGroupUtilities style={{paddingRight: '4px'}}>
+ <Content id={fieldName + ':suffix'}>{suffix}</Content>
+ </TextInputGroupUtilities>
+ </TextInputGroup>
+ )}
+ />
+ {getHelper((errors as any)[fieldName])}
+ </FormGroup>
+ )
+ }
+
+ function getFormSelect(fieldName: string, label: string, options: [string, string][]) {
+ const {register, watch, setValue, formState: {errors}} = formContext;
+ return (
+ <FormGroup label={label} fieldId={fieldName} isRequired>
+ <FormSelect
+ ouiaId={fieldName}
+ validated={!!errors[fieldName] ? 'error' : 'default'}
+ value={watch(fieldName)}
+ {...register(fieldName, {required: "Required field"})}
+ onChange={(e, v) => {
+ setValue(fieldName, v, {shouldValidate: true});
+ }}
+ name={fieldName}
+
+ >
+ <FormSelectOption key='placeholder' value={undefined} label='Select one' isDisabled/>
+ {options.map((option, index) => (
+ <FormSelectOption key={index} value={option[0]} label={option[1]}/>
+ ))}
+ </FormSelect>
+ {getHelper((errors as any)[fieldName])}
+ </FormGroup>
+ )
+ }
+
+ function getSwitches(fieldName: string, label: string, options: [string, string][]) {
+ const {watch, register, getValues, setValue, formState: {errors}} = formContext;
+ return (
+ <FormGroup label={label} fieldId={fieldName} isRequired {...register(fieldName)}>
+ <Flex direction={{default: 'column'}}>
+ {options.map((option, index) => {
+ const key = option[0];
+ const label = option[0];
+ return (<Switch
+ id={key}
+ label={label}
+
+ isChecked={watch(fieldName) !== undefined && watch(fieldName).includes(key)}
+ onChange={(e, v) => {
+ const vals: string[] = watch(fieldName);
+ const idx = vals.findIndex(x => x === key);
+ if (idx > -1 && !v) {
+ vals.splice(idx, 1);
+ setValue(fieldName, [...vals]);
+ } else if (idx === -1 && v) {
+ vals.push(key);
+ setValue(fieldName, [...vals]);
+ }
+ }}
+ ouiaId={option[0]}
+ />)
+ })}
+ </Flex>
+ </FormGroup>
+ )
+ }
+
+ return {getFormSelect, getTextField, getSwitches, getTextFieldPrefix, getTextArea, getPasswordField, getTextFieldSuffix}
+}
+
diff --git a/karavan-vscode/webview/main/ThemeContext.tsx b/karavan-vscode/webview/main/ThemeContext.tsx
deleted file mode 100644
index 30242cac..00000000
--- a/karavan-vscode/webview/main/ThemeContext.tsx
+++ /dev/null
@@ -1,33 +0,0 @@
-import React, { createContext, useContext, useEffect, useState } from 'react';
-
-interface ThemeContextType {
- isDark: boolean;
-}
-
-const ThemeContext = createContext<ThemeContextType | undefined>(undefined);
-
-export const ThemeProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {
- const [isDark, setIsDark] = useState(false);
-
- useEffect(() => {
- const dark = document.body.className.includes('vscode-dark');
- setIsDark(dark);
- if (dark) {
- document.documentElement.classList.add('pf-v6-theme-dark');
- }
- }, []);
-
- return (
- <ThemeContext.Provider value={{ isDark }}>
- {children}
- </ThemeContext.Provider>
- );
-};
-
-export const useTheme = (): ThemeContextType => {
- const context = useContext(ThemeContext);
- if (!context) {
- throw new Error('useTheme must be used within a ThemeProvider');
- }
- return context;
-};
(camel-karavan) 04/04: vscode syntax check
Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
marat pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-karavan.git
commit 6bf1dded58e1fe1dd30cfde88ad1153b9f2f06b0
Author: Marat Gubaidullin <ma...@talismancloud.io>
AuthorDate: Fri Feb 27 20:26:29 2026 -0500
vscode syntax check
---
karavan-vscode/metadata/components.json | 765 +
karavan-vscode/metadata/kamelets.yaml | 22588 ++++++++++++++++++++++++++++++
karavan-vscode/metadata/spiBeans.json | 4253 ++++++
3 files changed, 27606 insertions(+)
diff --git a/karavan-vscode/metadata/components.json b/karavan-vscode/metadata/components.json
new file mode 100644
index 00000000..3aea3a42
--- /dev/null
+++ b/karavan-vscode/metadata/components.json
@@ -0,0 +1,765 @@
+[
+{"component":{"kind":"component","name":"activemq","title":"ActiveMQ 5.x","description":"Send messages to (or consume from) Apache ActiveMQ 5.x. This component extends the Camel JMS component.","deprecated":false,"firstVersion":"1.0.0","label":"messaging","javaType":"org.apache.camel.component.activemq.ActiveMQComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-activemq","version":"4.18.0","scheme":"activemq","extendsScheme":"jms","syntax":"activemq:destin [...]
+,
+{"component":{"kind":"component","name":"activemq6","title":"ActiveMQ 6.x","description":"Send messages to (or consume from) Apache ActiveMQ 6.x. This component extends the Camel JMS component.","deprecated":false,"firstVersion":"4.7.0","label":"messaging","javaType":"org.apache.camel.component.activemq6.ActiveMQComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-activemq6","version":"4.18.0","scheme":"activemq6","extendsScheme":"jms","syntax":"activemq6:d [...]
+,
+{"component":{"kind":"component","name":"amqp","title":"AMQP","description":"Messaging with AMQP protocol using Apache QPid Client.","deprecated":false,"firstVersion":"1.2.0","label":"messaging","javaType":"org.apache.camel.component.amqp.AMQPComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-amqp","version":"4.18.0","scheme":"amqp","extendsScheme":"jms","syntax":"amqp:destinationType:destinationName","async":true,"api":false,"consumerOnly":false,"produce [...]
+,
+{"component":{"kind":"component","name":"arangodb","title":"ArangoDb","description":"Perform operations on ArangoDb when used as a Document Database, or as a Graph Database","deprecated":false,"firstVersion":"3.5.0","label":"database","javaType":"org.apache.camel.component.arangodb.ArangoDbComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-arangodb","version":"4.18.0","scheme":"arangodb","extendsScheme":"","syntax":"arangodb:database","async":false,"api": [...]
+,
+{"component":{"kind":"component","name":"as2","title":"AS2","description":"Transfer data securely and reliably using the AS2 protocol (RFC4130).","deprecated":false,"firstVersion":"2.22.0","label":"file","javaType":"org.apache.camel.component.as2.AS2Component","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-as2","version":"4.18.0","scheme":"as2","extendsScheme":"","syntax":"as2:apiName/methodName","async":false,"api":true,"apiSyntax":"apiName/methodName","consume [...]
+,
+{"component":{"kind":"component","name":"asterisk","title":"Asterisk","description":"Interact with Asterisk PBX Server (VoIP).","deprecated":false,"firstVersion":"2.18.0","label":"mobile","javaType":"org.apache.camel.component.asterisk.AsteriskComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-asterisk","version":"4.18.0","scheme":"asterisk","extendsScheme":"","syntax":"asterisk:name","async":false,"api":false,"consumerOnly":false,"producerOnly":false,"le [...]
+,
+{"component":{"kind":"component","name":"atmosphere-websocket","title":"Atmosphere Websocket","description":"Expose WebSocket endpoints using the Atmosphere framework.","deprecated":false,"firstVersion":"2.14.0","label":"http,networking","javaType":"org.apache.camel.component.atmosphere.websocket.WebsocketComponent","supportLevel":"Stable","metadata":{"protocol":"http"},"groupId":"org.apache.camel","artifactId":"camel-atmosphere-websocket","version":"4.18.0","scheme":"atmosphere-websocke [...]
+,
+{"component":{"kind":"component","name":"atom","title":"Atom","description":"Poll Atom RSS feeds.","deprecated":false,"firstVersion":"1.2.0","label":"document","javaType":"org.apache.camel.component.atom.AtomComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-atom","version":"4.18.0","scheme":"atom","extendsScheme":"","syntax":"atom:feedUri","async":false,"api":false,"consumerOnly":true,"producerOnly":false,"lenientProperties":true,"browsable":false,"remot [...]
+,
+{"component":{"kind":"component","name":"avro","title":"Avro RPC","description":"Produce or consume Apache Avro RPC services.","deprecated":false,"firstVersion":"2.10.0","label":"rpc","javaType":"org.apache.camel.component.avro.AvroComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-avro-rpc","version":"4.18.0","scheme":"avro","extendsScheme":"","syntax":"avro:transport:host:port/messageName","async":true,"api":false,"consumerOnly":false,"producerOnly":fal [...]
+,
+{"component":{"kind":"component","name":"aws-bedrock","title":"AWS Bedrock","description":"Invoke Model of AWS Bedrock service.","deprecated":false,"firstVersion":"4.5.0","label":"ai,cloud","javaType":"org.apache.camel.component.aws2.bedrock.runtime.BedrockComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-aws-bedrock","version":"4.18.0","scheme":"aws-bedrock","extendsScheme":"","syntax":"aws-bedrock:label","async":false,"api":false,"consumerOnly":false," [...]
+,
+{"component":{"kind":"component","name":"aws-bedrock-agent","title":"AWS Bedrock Agent","description":"Operate on AWS Bedrock through its Agent.","deprecated":false,"firstVersion":"4.5.0","label":"ai,cloud","javaType":"org.apache.camel.component.aws2.bedrock.agent.BedrockAgentComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-aws-bedrock","version":"4.18.0","scheme":"aws-bedrock-agent","extendsScheme":"","syntax":"aws-bedrock-agent:label","async":false,"a [...]
+,
+{"component":{"kind":"component","name":"aws-bedrock-agent-runtime","title":"AWS Bedrock Agent Runtime","description":"Invoke Model of AWS Bedrock Agent Runtime service.","deprecated":false,"firstVersion":"4.5.0","label":"ai,cloud","javaType":"org.apache.camel.component.aws2.bedrock.agentruntime.BedrockAgentRuntimeComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-aws-bedrock","version":"4.18.0","scheme":"aws-bedrock-agent-runtime","extendsScheme":"","syn [...]
+,
+{"component":{"kind":"component","name":"aws-cloudtrail","title":"AWS Cloudtrail","description":"Consume events from Amazon Cloudtrail using AWS SDK version 2.x.","deprecated":false,"firstVersion":"3.19.0","label":"cloud,management,monitoring","javaType":"org.apache.camel.component.aws.cloudtrail.CloudtrailComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-aws-cloudtrail","version":"4.18.0","scheme":"aws-cloudtrail","extendsScheme":"","syntax":"aws-cloudt [...]
+,
+{"component":{"kind":"component","name":"aws-config","title":"AWS Config Service","description":"Manage AWS Config service.","deprecated":false,"firstVersion":"4.3.0","label":"cloud,management","javaType":"org.apache.camel.component.aws.config.AWSConfigComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-aws-config","version":"4.18.0","scheme":"aws-config","extendsScheme":"","syntax":"aws-config:label","async":false,"api":false,"consumerOnly":false,"produce [...]
+,
+{"component":{"kind":"component","name":"aws-secrets-manager","title":"AWS Secrets Manager","description":"Manage secrets using AWS Secrets Manager.","deprecated":false,"firstVersion":"3.9.0","label":"cloud,management","javaType":"org.apache.camel.component.aws.secretsmanager.SecretsManagerComponent","supportLevel":"Stable","metadata":{"vault":"aws-secrets-manager"},"groupId":"org.apache.camel","artifactId":"camel-aws-secrets-manager","version":"4.18.0","scheme":"aws-secrets-manager","ex [...]
+,
+{"component":{"kind":"component","name":"aws-security-hub","title":"AWS Security Hub","description":"Manage and interact with AWS Security Hub for security findings.","deprecated":false,"firstVersion":"4.18.0","label":"cloud,security","javaType":"org.apache.camel.component.aws.securityhub.SecurityHubComponent","supportLevel":"Preview","groupId":"org.apache.camel","artifactId":"camel-aws-security-hub","version":"4.18.0","scheme":"aws-security-hub","extendsScheme":"","syntax":"aws-security [...]
+,
+{"component":{"kind":"component","name":"aws2-athena","title":"AWS Athena","description":"Access AWS Athena.","deprecated":false,"firstVersion":"3.4.0","label":"cloud,database","javaType":"org.apache.camel.component.aws2.athena.Athena2Component","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-aws2-athena","version":"4.18.0","scheme":"aws2-athena","extendsScheme":"","syntax":"aws2-athena:label","async":false,"api":false,"consumerOnly":false,"producerOnly":true,"le [...]
+,
+{"component":{"kind":"component","name":"aws2-comprehend","title":"AWS Comprehend","description":"Perform natural language processing using AWS Comprehend and AWS SDK version 2.x.","deprecated":false,"firstVersion":"4.18.0","label":"cloud,ai","javaType":"org.apache.camel.component.aws2.comprehend.Comprehend2Component","supportLevel":"Preview","groupId":"org.apache.camel","artifactId":"camel-aws2-comprehend","version":"4.18.0","scheme":"aws2-comprehend","extendsScheme":"","syntax":"aws2-c [...]
+,
+{"component":{"kind":"component","name":"aws2-cw","title":"AWS CloudWatch","description":"Sending metrics to AWS CloudWatch.","deprecated":false,"firstVersion":"3.1.0","label":"cloud,monitoring","javaType":"org.apache.camel.component.aws2.cw.Cw2Component","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-aws2-cw","version":"4.18.0","scheme":"aws2-cw","extendsScheme":"","syntax":"aws2-cw:namespace","async":false,"api":false,"consumerOnly":false,"producerOnly":true," [...]
+,
+{"component":{"kind":"component","name":"aws2-ddb","title":"AWS DynamoDB","description":"Store and retrieve data from AWS DynamoDB.","deprecated":false,"firstVersion":"3.1.0","label":"cloud,database","javaType":"org.apache.camel.component.aws2.ddb.Ddb2Component","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-aws2-ddb","version":"4.18.0","scheme":"aws2-ddb","extendsScheme":"","syntax":"aws2-ddb:tableName","async":false,"api":false,"consumerOnly":false,"producerOn [...]
+,
+{"component":{"kind":"component","name":"aws2-ddbstream","title":"AWS DynamoDB Streams","description":"Receive messages from AWS DynamoDB Stream.","deprecated":false,"firstVersion":"3.1.0","label":"cloud,messaging","javaType":"org.apache.camel.component.aws2.ddbstream.Ddb2StreamComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-aws2-ddb","version":"4.18.0","scheme":"aws2-ddbstream","extendsScheme":"","syntax":"aws2-ddbstream:tableName","async":false,"api" [...]
+,
+{"component":{"kind":"component","name":"aws2-ec2","title":"AWS Elastic Compute Cloud (EC2)","description":"Manage AWS EC2 instances.","deprecated":false,"firstVersion":"3.1.0","label":"cloud,management","javaType":"org.apache.camel.component.aws2.ec2.AWS2EC2Component","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-aws2-ec2","version":"4.18.0","scheme":"aws2-ec2","extendsScheme":"","syntax":"aws2-ec2:label","async":false,"api":false,"consumerOnly":false,"produce [...]
+,
+{"component":{"kind":"component","name":"aws2-ecs","title":"AWS Elastic Container Service (ECS)","description":"Manage AWS ECS cluster instances.","deprecated":false,"firstVersion":"3.1.0","label":"cloud,management","javaType":"org.apache.camel.component.aws2.ecs.ECS2Component","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-aws2-ecs","version":"4.18.0","scheme":"aws2-ecs","extendsScheme":"","syntax":"aws2-ecs:label","async":false,"api":false,"consumerOnly":false [...]
+,
+{"component":{"kind":"component","name":"aws2-eks","title":"AWS Elastic Kubernetes Service (EKS)","description":"Manage AWS EKS cluster instances.","deprecated":false,"firstVersion":"3.1.0","label":"cloud,management","javaType":"org.apache.camel.component.aws2.eks.EKS2Component","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-aws2-eks","version":"4.18.0","scheme":"aws2-eks","extendsScheme":"","syntax":"aws2-eks:label","async":false,"api":false,"consumerOnly":fals [...]
+,
+{"component":{"kind":"component","name":"aws2-eventbridge","title":"AWS Eventbridge","description":"Send events to AWS Eventbridge cluster instances.","deprecated":false,"firstVersion":"3.6.0","label":"cloud,management","javaType":"org.apache.camel.component.aws2.eventbridge.EventbridgeComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-aws2-eventbridge","version":"4.18.0","scheme":"aws2-eventbridge","extendsScheme":"","syntax":"aws2-eventbridge://eventbus [...]
+,
+{"component":{"kind":"component","name":"aws2-iam","title":"AWS Identity and Access Management (IAM)","description":"Manage AWS IAM instances.","deprecated":false,"firstVersion":"3.1.0","label":"cloud,management","javaType":"org.apache.camel.component.aws2.iam.IAM2Component","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-aws2-iam","version":"4.18.0","scheme":"aws2-iam","extendsScheme":"","syntax":"aws2-iam:label","async":false,"api":false,"consumerOnly":false,"p [...]
+,
+{"component":{"kind":"component","name":"aws2-kinesis","title":"AWS Kinesis","description":"Consume and produce records from and to AWS Kinesis Streams.","deprecated":false,"firstVersion":"3.2.0","label":"cloud,messaging","javaType":"org.apache.camel.component.aws2.kinesis.Kinesis2Component","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-aws2-kinesis","version":"4.18.0","scheme":"aws2-kinesis","extendsScheme":"","syntax":"aws2-kinesis:streamName","async":false," [...]
+,
+{"component":{"kind":"component","name":"aws2-kinesis-firehose","title":"AWS Kinesis Firehose","description":"Produce data to AWS Kinesis Firehose streams.","deprecated":false,"firstVersion":"3.2.0","label":"cloud,messaging","javaType":"org.apache.camel.component.aws2.firehose.KinesisFirehose2Component","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-aws2-kinesis","version":"4.18.0","scheme":"aws2-kinesis-firehose","extendsScheme":"","syntax":"aws2-kinesis-fireho [...]
+,
+{"component":{"kind":"component","name":"aws2-kms","title":"AWS Key Management Service (KMS)","description":"Manage keys stored in AWS KMS instances.","deprecated":false,"firstVersion":"3.1.0","label":"cloud,management","javaType":"org.apache.camel.component.aws2.kms.KMS2Component","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-aws2-kms","version":"4.18.0","scheme":"aws2-kms","extendsScheme":"","syntax":"aws2-kms:label","async":false,"api":false,"consumerOnly":f [...]
+,
+{"component":{"kind":"component","name":"aws2-lambda","title":"AWS Lambda","description":"Manage and invoke AWS Lambda functions.","deprecated":false,"firstVersion":"3.2.0","label":"cloud,serverless","javaType":"org.apache.camel.component.aws2.lambda.Lambda2Component","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-aws2-lambda","version":"4.18.0","scheme":"aws2-lambda","extendsScheme":"","syntax":"aws2-lambda:function","async":false,"api":false,"consumerOnly":fal [...]
+,
+{"component":{"kind":"component","name":"aws2-mq","title":"AWS MQ","description":"Send messages to AWS MQ.","deprecated":false,"firstVersion":"3.1.0","label":"cloud,messaging","javaType":"org.apache.camel.component.aws2.mq.MQ2Component","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-aws2-mq","version":"4.18.0","scheme":"aws2-mq","extendsScheme":"","syntax":"aws2-mq:label","async":false,"api":false,"consumerOnly":false,"producerOnly":true,"lenientProperties":fals [...]
+,
+{"component":{"kind":"component","name":"aws2-msk","title":"AWS Managed Streaming for Apache Kafka (MSK)","description":"Manage AWS MSK instances.","deprecated":false,"firstVersion":"3.1.0","label":"cloud,management","javaType":"org.apache.camel.component.aws2.msk.MSK2Component","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-aws2-msk","version":"4.18.0","scheme":"aws2-msk","extendsScheme":"","syntax":"aws2-msk:label","async":false,"api":false,"consumerOnly":fals [...]
+,
+{"component":{"kind":"component","name":"aws2-polly","title":"AWS Polly","description":"Synthesize speech using AWS Polly and AWS SDK version 2.x.","deprecated":false,"firstVersion":"4.18.0","label":"cloud,ai","javaType":"org.apache.camel.component.aws2.polly.Polly2Component","supportLevel":"Preview","groupId":"org.apache.camel","artifactId":"camel-aws2-polly","version":"4.18.0","scheme":"aws2-polly","extendsScheme":"","syntax":"aws2-polly:label","async":false,"api":false,"consumerOnly": [...]
+,
+{"component":{"kind":"component","name":"aws2-redshift-data","title":"AWS RedshiftData","description":"Perform operations on AWS Redshift using Redshift Data API.","deprecated":false,"firstVersion":"4.1.0","label":"cloud,serverless,database,bigdata","javaType":"org.apache.camel.component.aws2.redshift.data.RedshiftData2Component","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-aws2-redshift","version":"4.18.0","scheme":"aws2-redshift-data","extendsScheme":"","syn [...]
+,
+{"component":{"kind":"component","name":"aws2-rekognition","title":"AWS Rekognition","description":"Manage and invoke AWS Rekognition.","deprecated":false,"firstVersion":"4.17.0","label":"cloud,ai","javaType":"org.apache.camel.component.aws2.rekognition.Rekognition2Component","supportLevel":"Preview","groupId":"org.apache.camel","artifactId":"camel-aws2-rekognition","version":"4.18.0","scheme":"aws2-rekognition","extendsScheme":"","syntax":"aws2-rekognition:label","async":false,"api":fal [...]
+,
+{"component":{"kind":"component","name":"aws2-s3","title":"AWS S3 Storage Service","description":"Store and retrieve objects from AWS S3 Storage Service.","deprecated":false,"firstVersion":"3.2.0","label":"cloud,file","javaType":"org.apache.camel.component.aws2.s3.AWS2S3Component","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-aws2-s3","version":"4.18.0","scheme":"aws2-s3","extendsScheme":"","syntax":"aws2-s3://bucketNameOrArn","async":false,"api":false,"consume [...]
+,
+{"component":{"kind":"component","name":"aws2-s3-vectors","title":"AWS S3 Vectors","description":"Store and query vector embeddings using AWS S3 Vectors with similarity search.","deprecated":false,"firstVersion":"4.17.0","label":"cloud,ai","javaType":"org.apache.camel.component.aws2.s3vectors.AWS2S3VectorsComponent","supportLevel":"Preview","groupId":"org.apache.camel","artifactId":"camel-aws2-s3-vectors","version":"4.18.0","scheme":"aws2-s3-vectors","extendsScheme":"","syntax":"aws2-s3- [...]
+,
+{"component":{"kind":"component","name":"aws2-ses","title":"AWS Simple Email Service (SES)","description":"Send e-mails through AWS SES service.","deprecated":false,"firstVersion":"3.1.0","label":"cloud,mail","javaType":"org.apache.camel.component.aws2.ses.Ses2Component","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-aws2-ses","version":"4.18.0","scheme":"aws2-ses","extendsScheme":"","syntax":"aws2-ses:from","async":false,"api":false,"consumerOnly":false,"produc [...]
+,
+{"component":{"kind":"component","name":"aws2-sns","title":"AWS Simple Notification System (SNS)","description":"Send messages to AWS Simple Notification Topic.","deprecated":false,"firstVersion":"3.1.0","label":"cloud,messaging,mobile","javaType":"org.apache.camel.component.aws2.sns.Sns2Component","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-aws2-sns","version":"4.18.0","scheme":"aws2-sns","extendsScheme":"","syntax":"aws2-sns:topicNameOrArn","async":false,"a [...]
+,
+{"component":{"kind":"component","name":"aws2-sqs","title":"AWS Simple Queue Service (SQS)","description":"Send and receive messages to/from AWS SQS.","deprecated":false,"firstVersion":"3.1.0","label":"cloud,messaging","javaType":"org.apache.camel.component.aws2.sqs.Sqs2Component","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-aws2-sqs","version":"4.18.0","scheme":"aws2-sqs","extendsScheme":"","syntax":"aws2-sqs:queueNameOrArn","async":false,"api":false,"consume [...]
+,
+{"component":{"kind":"component","name":"aws2-step-functions","title":"AWS StepFunctions","description":"Manage and invoke AWS Step functions.","deprecated":false,"firstVersion":"4.0.0","label":"cloud,serverless","javaType":"org.apache.camel.component.aws2.stepfunctions.StepFunctions2Component","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-aws2-step-functions","version":"4.18.0","scheme":"aws2-step-functions","extendsScheme":"","syntax":"aws2-step-functions:lab [...]
+,
+{"component":{"kind":"component","name":"aws2-sts","title":"AWS Security Token Service (STS)","description":"Manage AWS STS cluster instances.","deprecated":false,"firstVersion":"3.5.0","label":"cloud,management","javaType":"org.apache.camel.component.aws2.sts.STS2Component","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-aws2-sts","version":"4.18.0","scheme":"aws2-sts","extendsScheme":"","syntax":"aws2-sts:label","async":false,"api":false,"consumerOnly":false,"p [...]
+,
+{"component":{"kind":"component","name":"aws2-textract","title":"AWS Textract","description":"Extract text and data from documents using AWS Textract and AWS SDK version 2.x.","deprecated":false,"firstVersion":"4.15.0","label":"cloud,document","javaType":"org.apache.camel.component.aws2.textract.Textract2Component","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-aws2-textract","version":"4.18.0","scheme":"aws2-textract","extendsScheme":"","syntax":"aws2-textract: [...]
+,
+{"component":{"kind":"component","name":"aws2-timestream","title":"AWS Timestream","description":"Write records and execute queries on AWS time-series database","deprecated":false,"firstVersion":"4.1.0","label":"cloud,database","javaType":"org.apache.camel.component.aws2.timestream.Timestream2Component","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-aws2-timestream","version":"4.18.0","scheme":"aws2-timestream","extendsScheme":"","syntax":"aws2-timestream:client [...]
+,
+{"component":{"kind":"component","name":"aws2-transcribe","title":"AWS Transcribe","description":"Automatically convert speech to text using AWS Transcribe service","deprecated":false,"firstVersion":"4.15.0","label":"cloud,messaging","javaType":"org.apache.camel.component.aws2.transcribe.Transcribe2Component","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-aws2-transcribe","version":"4.18.0","scheme":"aws2-transcribe","extendsScheme":"","syntax":"aws2-transcribe: [...]
+,
+{"component":{"kind":"component","name":"aws2-translate","title":"AWS Translate","description":"Translate texts using AWS Translate and AWS SDK version 2.x.","deprecated":false,"firstVersion":"3.1.0","label":"cloud,management","javaType":"org.apache.camel.component.aws2.translate.Translate2Component","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-aws2-translate","version":"4.18.0","scheme":"aws2-translate","extendsScheme":"","syntax":"aws2-translate:label","asyn [...]
+,
+{"component":{"kind":"component","name":"azure-cosmosdb","title":"Azure CosmosDB","description":"To read and write records to the CosmosDB database on Azure cloud platform.","deprecated":false,"firstVersion":"3.10.0","label":"cloud,database","javaType":"org.apache.camel.component.azure.cosmosdb.CosmosDbComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-azure-cosmosdb","version":"4.18.0","scheme":"azure-cosmosdb","extendsScheme":"","syntax":"azure-cosmosdb [...]
+,
+{"component":{"kind":"component","name":"azure-eventhubs","title":"Azure Event Hubs","description":"Send and receive events to/from Azure Event Hubs using AMQP protocol.","deprecated":false,"firstVersion":"3.5.0","label":"cloud,messaging","javaType":"org.apache.camel.component.azure.eventhubs.EventHubsComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-azure-eventhubs","version":"4.18.0","scheme":"azure-eventhubs","extendsScheme":"","syntax":"azure-eventhu [...]
+,
+{"component":{"kind":"component","name":"azure-files","title":"Azure Files","description":"Send and receive files to Azure storage file share","deprecated":false,"firstVersion":"3.22.0","label":"cloud,file","javaType":"org.apache.camel.component.file.azure.FilesComponent","supportLevel":"Preview","groupId":"org.apache.camel","artifactId":"camel-azure-files","version":"4.18.0","scheme":"azure-files","extendsScheme":"file","syntax":"azure-files:account/share","async":false,"api":false,"con [...]
+,
+{"component":{"kind":"component","name":"azure-key-vault","title":"Azure Key Vault","description":"Manage secrets and keys in Azure Key Vault Service","deprecated":false,"firstVersion":"3.17.0","label":"cloud,cloud","javaType":"org.apache.camel.component.azure.key.vault.KeyVaultComponent","supportLevel":"Stable","metadata":{"vault":"azure-key-vault"},"groupId":"org.apache.camel","artifactId":"camel-azure-key-vault","version":"4.18.0","scheme":"azure-key-vault","extendsScheme":"","syntax" [...]
+,
+{"component":{"kind":"component","name":"azure-servicebus","title":"Azure ServiceBus","description":"Send and receive messages to/from Azure Service Bus.","deprecated":false,"firstVersion":"3.12.0","label":"cloud,messaging","javaType":"org.apache.camel.component.azure.servicebus.ServiceBusComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-azure-servicebus","version":"4.18.0","scheme":"azure-servicebus","extendsScheme":"","syntax":"azure-servicebus:topicOr [...]
+,
+{"component":{"kind":"component","name":"azure-storage-blob","title":"Azure Storage Blob Service","description":"Store and retrieve blobs from Azure Storage Blob Service.","deprecated":false,"firstVersion":"3.3.0","label":"cloud,file","javaType":"org.apache.camel.component.azure.storage.blob.BlobComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-azure-storage-blob","version":"4.18.0","scheme":"azure-storage-blob","extendsScheme":"","syntax":"azure-storage [...]
+,
+{"component":{"kind":"component","name":"azure-storage-datalake","title":"Azure Storage Data Lake Service","description":"Sends and receives files to/from Azure Data Lake Storage.","deprecated":false,"firstVersion":"3.8.0","label":"cloud,file,bigdata","javaType":"org.apache.camel.component.azure.storage.datalake.DataLakeComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-azure-storage-datalake","version":"4.18.0","scheme":"azure-storage-datalake","extendsS [...]
+,
+{"component":{"kind":"component","name":"azure-storage-queue","title":"Azure Storage Queue Service","description":"Stores and retrieves messages to/from Azure Storage Queue.","deprecated":false,"firstVersion":"3.3.0","label":"cloud,messaging","javaType":"org.apache.camel.component.azure.storage.queue.QueueComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-azure-storage-queue","version":"4.18.0","scheme":"azure-storage-queue","extendsScheme":"","syntax":"a [...]
+,
+{"component":{"kind":"component","name":"bean","title":"Bean","description":"Invoke methods of Java beans stored in Camel registry.","deprecated":false,"firstVersion":"1.0.0","label":"core,script","javaType":"org.apache.camel.component.bean.BeanComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-bean","version":"4.18.0","scheme":"bean","extendsScheme":"","syntax":"bean:beanName","async":false,"api":false,"consumerOnly":false,"producerOnly":true,"lenientPro [...]
+,
+{"component":{"kind":"component","name":"bean-validator","title":"Bean Validator","description":"Validate the message body using the Java Bean Validation API.","deprecated":false,"firstVersion":"2.3.0","label":"validation","javaType":"org.apache.camel.component.bean.validator.BeanValidatorComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-bean-validator","version":"4.18.0","scheme":"bean-validator","extendsScheme":"","syntax":"bean-validator:label","async [...]
+,
+{"component":{"kind":"component","name":"bonita","title":"Bonita","description":"Communicate with a remote Bonita BPM process engine.","deprecated":false,"firstVersion":"2.19.0","label":"workflow","javaType":"org.apache.camel.component.bonita.BonitaComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-bonita","version":"4.18.0","scheme":"bonita","extendsScheme":"","syntax":"bonita:operation","async":false,"api":false,"consumerOnly":false,"producerOnly":true, [...]
+,
+{"component":{"kind":"component","name":"box","title":"Box","description":"Upload, download and manage files, folders, groups, collaborations, etc. on box.com.","deprecated":false,"firstVersion":"2.14.0","label":"cloud,file,api","javaType":"org.apache.camel.component.box.BoxComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-box","version":"4.18.0","scheme":"box","extendsScheme":"","syntax":"box:apiName/methodName","async":false,"api":true,"apiSyntax":"api [...]
+,
+{"component":{"kind":"component","name":"braintree","title":"Braintree","description":"Process payments using Braintree Payments.","deprecated":false,"firstVersion":"2.17.0","label":"saas,finance","javaType":"org.apache.camel.component.braintree.BraintreeComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-braintree","version":"4.18.0","scheme":"braintree","extendsScheme":"","syntax":"braintree:apiName/methodName","async":false,"api":true,"apiSyntax":"apiNa [...]
+,
+{"component":{"kind":"component","name":"browse","title":"Browse","description":"Inspect the messages received on endpoints supporting BrowsableEndpoint.","deprecated":false,"firstVersion":"1.3.0","label":"core,monitoring","javaType":"org.apache.camel.component.browse.BrowseComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-browse","version":"4.18.0","scheme":"browse","extendsScheme":"","syntax":"browse:name","async":false,"api":false,"consumerOnly":false [...]
+,
+{"component":{"kind":"component","name":"caffeine-cache","title":"Caffeine Cache","description":"Perform caching operations using Caffeine Cache.","deprecated":false,"firstVersion":"2.20.0","label":"cache,clustering","javaType":"org.apache.camel.component.caffeine.cache.CaffeineCacheComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-caffeine","version":"4.18.0","scheme":"caffeine-cache","extendsScheme":"","syntax":"caffeine-cache:cacheName","async":false, [...]
+,
+{"component":{"kind":"component","name":"caffeine-loadcache","title":"Caffeine LoadCache","description":"Perform caching operations using Caffeine Cache with an attached CacheLoader.","deprecated":false,"firstVersion":"2.20.0","label":"cache,clustering","javaType":"org.apache.camel.component.caffeine.load.CaffeineLoadCacheComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-caffeine","version":"4.18.0","scheme":"caffeine-loadcache","extendsScheme":"","synta [...]
+,
+{"component":{"kind":"component","name":"chatscript","title":"ChatScript","description":"Chat with a ChatScript Server.","deprecated":false,"firstVersion":"3.0.0","label":"ai,chat","javaType":"org.apache.camel.component.chatscript.ChatScriptComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-chatscript","version":"4.18.0","scheme":"chatscript","extendsScheme":"","syntax":"chatscript:host:port/botName","async":false,"api":false,"consumerOnly":false,"produce [...]
+,
+{"component":{"kind":"component","name":"chunk","title":"Chunk","description":"Transform messages using Chunk templating engine.","deprecated":false,"firstVersion":"2.15.0","label":"transformation","javaType":"org.apache.camel.component.chunk.ChunkComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-chunk","version":"4.18.0","scheme":"chunk","extendsScheme":"","syntax":"chunk:resourceUri","async":false,"api":false,"consumerOnly":false,"producerOnly":true,"l [...]
+,
+{"component":{"kind":"component","name":"class","title":"Class","description":"Invoke methods of Java beans specified by class name.","deprecated":false,"firstVersion":"2.4.0","label":"core,script","javaType":"org.apache.camel.component.beanclass.ClassComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-bean","version":"4.18.0","scheme":"class","extendsScheme":"","syntax":"class:beanName","async":false,"api":false,"consumerOnly":false,"producerOnly":true,"l [...]
+,
+{"component":{"kind":"component","name":"clickup","title":"ClickUp","description":"Receives events from ClickUp","deprecated":false,"firstVersion":"4.9.0","label":"cloud","javaType":"org.apache.camel.component.clickup.ClickUpComponent","supportLevel":"Preview","groupId":"org.apache.camel","artifactId":"camel-clickup","version":"4.18.0","scheme":"clickup","extendsScheme":"","syntax":"clickup:workspaceId","async":false,"api":false,"consumerOnly":true,"producerOnly":false,"lenientProperties [...]
+,
+{"component":{"kind":"component","name":"cm-sms","title":"CM SMS Gateway","description":"Send SMS messages via CM SMS Gateway.","deprecated":false,"firstVersion":"2.18.0","label":"mobile","javaType":"org.apache.camel.component.cm.CMComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-cm-sms","version":"4.18.0","scheme":"cm-sms","extendsScheme":"","syntax":"cm-sms:host","async":false,"api":false,"consumerOnly":false,"producerOnly":true,"lenientProperties":fa [...]
+,
+{"component":{"kind":"component","name":"coap","title":"CoAP","description":"Send and receive messages to/from CoAP (Constrained Application Protocol) capable devices.","deprecated":false,"firstVersion":"2.16.0","label":"iot","javaType":"org.apache.camel.coap.CoAPComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-coap","version":"4.18.0","scheme":"coap","extendsScheme":"","alternativeSchemes":"coap,coaps,coap+tcp,coaps+tcp","syntax":"coap:uri","async":fal [...]
+,
+{"component":{"kind":"component","name":"coap+tcp","title":"CoAP","description":"Send and receive messages to/from CoAP (Constrained Application Protocol) capable devices.","deprecated":false,"firstVersion":"2.16.0","label":"iot","javaType":"org.apache.camel.coap.CoAPComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-coap","version":"4.18.0","scheme":"coap+tcp","extendsScheme":"","alternativeSchemes":"coap,coaps,coap+tcp,coaps+tcp","syntax":"coap+tcp:uri" [...]
+,
+{"component":{"kind":"component","name":"coaps","title":"CoAP (Secure)","description":"Send and receive messages to/from CoAP (Constrained Application Protocol) capable devices.","deprecated":false,"firstVersion":"2.16.0","label":"iot","javaType":"org.apache.camel.coap.CoAPComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-coap","version":"4.18.0","scheme":"coaps","extendsScheme":"","alternativeSchemes":"coap,coaps,coap+tcp,coaps+tcp","syntax":"coaps:uri" [...]
+,
+{"component":{"kind":"component","name":"coaps+tcp","title":"CoAP","description":"Send and receive messages to/from CoAP (Constrained Application Protocol) capable devices.","deprecated":false,"firstVersion":"2.16.0","label":"iot","javaType":"org.apache.camel.coap.CoAPComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-coap","version":"4.18.0","scheme":"coaps+tcp","extendsScheme":"","alternativeSchemes":"coap,coaps,coap+tcp,coaps+tcp","syntax":"coaps+tcp:u [...]
+,
+{"component":{"kind":"component","name":"cometd","title":"CometD","description":"Offers publish/subscribe, peer-to-peer (via a server), and RPC style messaging using the CometD/Bayeux protocol.","deprecated":false,"firstVersion":"2.0.0","label":"networking,messaging","javaType":"org.apache.camel.component.cometd.CometdComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-cometd","version":"4.18.0","scheme":"cometd","extendsScheme":"","alternativeSchemes":"co [...]
+,
+{"component":{"kind":"component","name":"cometds","title":"CometD (Secure)","description":"Offers publish/subscribe, peer-to-peer (via a server), and RPC style messaging using the CometD/Bayeux protocol.","deprecated":false,"firstVersion":"2.0.0","label":"networking,messaging","javaType":"org.apache.camel.component.cometd.CometdComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-cometd","version":"4.18.0","scheme":"cometds","extendsScheme":"","alternativeS [...]
+,
+{"component":{"kind":"component","name":"consul","title":"Consul","description":"Integrate with Consul service discovery and configuration store.","deprecated":false,"firstVersion":"2.18.0","label":"cloud,api","javaType":"org.apache.camel.component.consul.ConsulComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-consul","version":"4.18.0","scheme":"consul","extendsScheme":"","syntax":"consul:apiEndpoint","async":false,"api":false,"consumerOnly":false,"prod [...]
+,
+{"component":{"kind":"component","name":"controlbus","title":"Control Bus","description":"Manage and monitor Camel routes.","deprecated":false,"firstVersion":"2.11.0","label":"core,monitoring","javaType":"org.apache.camel.component.controlbus.ControlBusComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-controlbus","version":"4.18.0","scheme":"controlbus","extendsScheme":"","syntax":"controlbus:command:language","async":false,"api":false,"consumerOnly":fal [...]
+,
+{"component":{"kind":"component","name":"couchbase","title":"Couchbase","description":"Query Couchbase Views with a poll strategy and/or perform various operations against Couchbase databases.","deprecated":false,"firstVersion":"2.19.0","label":"database","javaType":"org.apache.camel.component.couchbase.CouchbaseComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-couchbase","version":"4.18.0","scheme":"couchbase","extendsScheme":"","syntax":"couchbase:prot [...]
+,
+{"component":{"kind":"component","name":"couchdb","title":"CouchDB","description":"Consume changesets for inserts, updates and deletes in a CouchDB database, as well as get, save, update and delete documents from a CouchDB database.","deprecated":false,"firstVersion":"2.11.0","label":"database","javaType":"org.apache.camel.component.couchdb.CouchDbComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-couchdb","version":"4.18.0","scheme":"couchdb","extendsSch [...]
+,
+{"component":{"kind":"component","name":"cql","title":"Cassandra CQL","description":"Integrate with Cassandra 2.0 using the CQL3 API (not the Thrift API). Based on Cassandra Java Driver provided by DataStax.","deprecated":false,"firstVersion":"2.15.0","label":"database,bigdata","javaType":"org.apache.camel.component.cassandra.CassandraComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-cassandraql","version":"4.18.0","scheme":"cql","extendsScheme":"","synt [...]
+,
+{"component":{"kind":"component","name":"cron","title":"Cron","description":"A generic interface for triggering events at times specified through the Unix cron syntax.","deprecated":false,"firstVersion":"3.1.0","label":"scheduling","javaType":"org.apache.camel.component.cron.CronComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-cron","version":"4.18.0","scheme":"cron","extendsScheme":"","syntax":"cron:name","async":false,"api":false,"consumerOnly":true," [...]
+,
+{"component":{"kind":"component","name":"crypto","title":"Crypto (JCE)","description":"Sign and verify exchanges using the Signature Service of the Java Cryptographic Extension (JCE).","deprecated":false,"firstVersion":"2.3.0","label":"security,transformation","javaType":"org.apache.camel.component.crypto.DigitalSignatureComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-crypto","version":"4.18.0","scheme":"crypto","extendsScheme":"","syntax":"crypto:cryp [...]
+,
+{"component":{"kind":"component","name":"cxf","title":"CXF","description":"Expose SOAP WebServices using Apache CXF or connect to external WebServices using CXF WS client.","deprecated":false,"firstVersion":"1.0.0","label":"http,webservice","javaType":"org.apache.camel.component.cxf.jaxws.CxfComponent","supportLevel":"Stable","metadata":{"protocol":"http"},"groupId":"org.apache.camel","artifactId":"camel-cxf-soap","version":"4.18.0","scheme":"cxf","extendsScheme":"","syntax":"cxf:beanId: [...]
+,
+{"component":{"kind":"component","name":"cxfrs","title":"CXF-RS","description":"Expose JAX-RS REST services using Apache CXF or connect to external REST services using CXF REST client.","deprecated":false,"firstVersion":"2.0.0","label":"rest","javaType":"org.apache.camel.component.cxf.jaxrs.CxfRsComponent","supportLevel":"Stable","metadata":{"protocol":"http"},"groupId":"org.apache.camel","artifactId":"camel-cxf-rest","version":"4.18.0","scheme":"cxfrs","extendsScheme":"","syntax":"cxfrs [...]
+,
+{"component":{"kind":"component","name":"cyberark-vault","title":"CyberArk Vault","description":"Retrieve secrets from CyberArk Conjur Vault.","deprecated":false,"firstVersion":"4.17.0","label":"cloud,security","javaType":"org.apache.camel.component.cyberark.vault.CyberArkVaultComponent","supportLevel":"Preview","groupId":"org.apache.camel","artifactId":"camel-cyberark-vault","version":"4.18.0","scheme":"cyberark-vault","extendsScheme":"","syntax":"cyberark-vault:label","async":false,"ap [...]
+,
+{"component":{"kind":"component","name":"dapr","title":"Dapr","description":"Dapr component which interfaces with Dapr Building Blocks.","deprecated":false,"firstVersion":"4.12.0","label":"cloud,saas","javaType":"org.apache.camel.component.dapr.DaprComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-dapr","version":"4.18.0","scheme":"dapr","extendsScheme":"","syntax":"dapr:operation","async":false,"api":false,"consumerOnly":false,"producerOnly":false,"leni [...]
+,
+{"component":{"kind":"component","name":"dataformat","title":"Data Format","description":"Use a Camel Data Format as a regular Camel Component.","deprecated":false,"firstVersion":"2.12.0","label":"core,transformation","javaType":"org.apache.camel.component.dataformat.DataFormatComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-dataformat","version":"4.18.0","scheme":"dataformat","extendsScheme":"","syntax":"dataformat:name:operation","async":false,"api":f [...]
+,
+{"component":{"kind":"component","name":"dataset","title":"Dataset","description":"Provide data for load and soak testing of your Camel application.","deprecated":false,"firstVersion":"1.3.0","label":"core,testing","javaType":"org.apache.camel.component.dataset.DataSetComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-dataset","version":"4.18.0","scheme":"dataset","extendsScheme":"","syntax":"dataset:name","async":false,"api":false,"consumerOnly":false,"p [...]
+,
+{"component":{"kind":"component","name":"dataset-test","title":"DataSet Test","description":"Extends the mock component by pulling messages from another endpoint on startup to set the expected message bodies.","deprecated":false,"firstVersion":"1.3.0","label":"core,testing","javaType":"org.apache.camel.component.dataset.DataSetTestComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-dataset","version":"4.18.0","scheme":"dataset-test","extendsScheme":"","syn [...]
+,
+{"component":{"kind":"component","name":"debezium-db2","title":"Debezium DB2 Connector","description":"Capture changes from a DB2 database.","deprecated":false,"firstVersion":"3.17.0","label":"database","javaType":"org.apache.camel.component.debezium.db2.DebeziumDb2Component","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-debezium-db2","version":"4.18.0","scheme":"debezium-db2","extendsScheme":"","syntax":"debezium-db2:name","async":false,"api":false,"consumerOn [...]
+,
+{"component":{"kind":"component","name":"debezium-mongodb","title":"Debezium MongoDB Connector","description":"Capture changes from a MongoDB database.","deprecated":false,"firstVersion":"3.0.0","label":"database","javaType":"org.apache.camel.component.debezium.mongodb.DebeziumMongodbComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-debezium-mongodb","version":"4.18.0","scheme":"debezium-mongodb","extendsScheme":"","syntax":"debezium-mongodb:name","async [...]
+,
+{"component":{"kind":"component","name":"debezium-mysql","title":"Debezium MySQL Connector","description":"Capture changes from a MySQL database.","deprecated":false,"firstVersion":"3.0.0","label":"database","javaType":"org.apache.camel.component.debezium.mysql.DebeziumMySqlComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-debezium-mysql","version":"4.18.0","scheme":"debezium-mysql","extendsScheme":"","syntax":"debezium-mysql:name","async":false,"api":fa [...]
+,
+{"component":{"kind":"component","name":"debezium-oracle","title":"Debezium Oracle Connector","description":"Capture changes from an Oracle database.","deprecated":false,"firstVersion":"3.17.0","label":"database","javaType":"org.apache.camel.component.debezium.oracle.DebeziumOracleComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-debezium-oracle","version":"4.18.0","scheme":"debezium-oracle","extendsScheme":"","syntax":"debezium-oracle:name","async":fals [...]
+,
+{"component":{"kind":"component","name":"debezium-postgres","title":"Debezium PostgresSQL Connector","description":"Capture changes from a PostgresSQL database.","deprecated":false,"firstVersion":"3.0.0","label":"database","javaType":"org.apache.camel.component.debezium.postgres.DebeziumPostgresComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-debezium-postgres","version":"4.18.0","scheme":"debezium-postgres","extendsScheme":"","syntax":"debezium-postgre [...]
+,
+{"component":{"kind":"component","name":"debezium-sqlserver","title":"Debezium SQL Server Connector","description":"Capture changes from an SQL Server database.","deprecated":false,"firstVersion":"3.0.0","label":"database","javaType":"org.apache.camel.component.debezium.sqlserver.DebeziumSqlserverComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-debezium-sqlserver","version":"4.18.0","scheme":"debezium-sqlserver","extendsScheme":"","syntax":"debezium-sql [...]
+,
+{"component":{"kind":"component","name":"dfdl","title":"DFDL","description":"Transforms fixed format data such as EDI message from/to XML using a Data Format Description Language (DFDL).","deprecated":false,"firstVersion":"4.11.0","label":"transformation","javaType":"org.apache.camel.component.dfdl.DfdlComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-dfdl","version":"4.18.0","scheme":"dfdl","extendsScheme":"","syntax":"dfdl:schemaUri","async":false,"api [...]
+,
+{"component":{"kind":"component","name":"dhis2","title":"DHIS2","description":"Leverages the DHIS2 Java SDK to integrate Apache Camel with the DHIS2 Web API.","deprecated":false,"firstVersion":"4.0.0","label":"api","javaType":"org.apache.camel.component.dhis2.Dhis2Component","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-dhis2","version":"4.18.0","scheme":"dhis2","extendsScheme":"","syntax":"dhis2:apiName/methodName","async":false,"api":true,"apiSyntax":"apiName [...]
+,
+{"component":{"kind":"component","name":"digitalocean","title":"DigitalOcean","description":"Manage Droplets and resources within the DigitalOcean cloud.","deprecated":false,"firstVersion":"2.19.0","label":"cloud,management","javaType":"org.apache.camel.component.digitalocean.DigitalOceanComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-digitalocean","version":"4.18.0","scheme":"digitalocean","extendsScheme":"","syntax":"digitalocean:operation","async":f [...]
+,
+{"component":{"kind":"component","name":"direct","title":"Direct","description":"Call another endpoint from the same Camel Context synchronously.","deprecated":false,"firstVersion":"1.0.0","label":"core,messaging","javaType":"org.apache.camel.component.direct.DirectComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-direct","version":"4.18.0","scheme":"direct","extendsScheme":"","syntax":"direct:name","async":false,"api":false,"consumerOnly":false,"produce [...]
+,
+{"component":{"kind":"component","name":"disruptor","title":"Disruptor","description":"Provides asynchronous SEDA behavior using LMAX Disruptor.","deprecated":false,"firstVersion":"2.12.0","label":"messaging","javaType":"org.apache.camel.component.disruptor.DisruptorComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-disruptor","version":"4.18.0","scheme":"disruptor","extendsScheme":"","alternativeSchemes":"disruptor,disruptor-vm","syntax":"disruptor:name" [...]
+,
+{"component":{"kind":"component","name":"disruptor-vm","title":"Disruptor VM","description":"Provides asynchronous SEDA behavior using LMAX Disruptor.","deprecated":false,"firstVersion":"2.12.0","label":"messaging","javaType":"org.apache.camel.component.disruptor.vm.DisruptorVmComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-disruptor","version":"4.18.0","scheme":"disruptor-vm","extendsScheme":"","alternativeSchemes":"disruptor,disruptor-vm","syntax":"d [...]
+,
+{"component":{"kind":"component","name":"djl","title":"Deep Java Library","description":"Infer Deep Learning models from message exchanges data using Deep Java Library (DJL).","deprecated":false,"firstVersion":"3.3.0","label":"ai","javaType":"org.apache.camel.component.djl.DJLComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-djl","version":"4.18.0","scheme":"djl","extendsScheme":"","syntax":"djl:application","async":false,"api":false,"consumerOnly":false [...]
+,
+{"component":{"kind":"component","name":"dns","title":"DNS","description":"Perform DNS queries using DNSJava.","deprecated":false,"firstVersion":"2.7.0","label":"networking","javaType":"org.apache.camel.component.dns.DnsComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-dns","version":"4.18.0","scheme":"dns","extendsScheme":"","syntax":"dns:dnsType","async":false,"api":false,"consumerOnly":false,"producerOnly":true,"lenientProperties":false,"browsable":fa [...]
+,
+{"component":{"kind":"component","name":"docker","title":"Docker","description":"Manage Docker containers.","deprecated":false,"firstVersion":"2.15.0","label":"cloud,container","javaType":"org.apache.camel.component.docker.DockerComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-docker","version":"4.18.0","scheme":"docker","extendsScheme":"","syntax":"docker:operation","async":false,"api":false,"consumerOnly":false,"producerOnly":false,"lenientProperties" [...]
+,
+{"component":{"kind":"component","name":"docling","title":"Docling","description":"Process documents using Docling library for parsing and conversion.","deprecated":false,"firstVersion":"4.15.0","label":"transformation,ai","javaType":"org.apache.camel.component.docling.DoclingComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-docling","version":"4.18.0","scheme":"docling","extendsScheme":"","syntax":"docling:operationId","async":false,"api":false,"consume [...]
+,
+{"component":{"kind":"component","name":"drill","title":"Drill","description":"Perform queries against an Apache Drill cluster.","deprecated":false,"firstVersion":"2.19.0","label":"database,bigdata","javaType":"org.apache.camel.component.drill.DrillComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-drill","version":"4.18.0","scheme":"drill","extendsScheme":"","syntax":"drill:host","async":false,"api":false,"consumerOnly":false,"producerOnly":true,"lenient [...]
+,
+{"component":{"kind":"component","name":"dropbox","title":"Dropbox","description":"Upload, download and manage files, folders, groups, collaborations, etc on Dropbox.","deprecated":false,"firstVersion":"2.14.0","label":"cloud,file,api","javaType":"org.apache.camel.component.dropbox.DropboxComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-dropbox","version":"4.18.0","scheme":"dropbox","extendsScheme":"","syntax":"dropbox:operation","async":false,"api":fal [...]
+,
+{"component":{"kind":"component","name":"dynamic-router","title":"Dynamic Router","description":"The Dynamic Router component routes exchanges to recipients, and the recipients (and their rules) may change at runtime.","deprecated":false,"firstVersion":"3.15.0","label":"messaging,core","javaType":"org.apache.camel.component.dynamicrouter.routing.DynamicRouterComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-dynamic-router","version":"4.18.0","scheme":"dy [...]
+,
+{"component":{"kind":"component","name":"dynamic-router-control","title":"Dynamic Router Control","description":"The Dynamic Router control endpoint for operations that allow routing participants to subscribe or unsubscribe to participate in dynamic message routing.","deprecated":false,"firstVersion":"4.4.0","label":"messaging","javaType":"org.apache.camel.component.dynamicrouter.control.DynamicRouterControlComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"cam [...]
+,
+{"component":{"kind":"component","name":"ehcache","title":"Ehcache","description":"Perform caching operations using Ehcache.","deprecated":false,"firstVersion":"2.18.0","label":"cache,clustering","javaType":"org.apache.camel.component.ehcache.EhcacheComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-ehcache","version":"4.18.0","scheme":"ehcache","extendsScheme":"","syntax":"ehcache:cacheName","async":false,"api":false,"consumerOnly":false,"producerOnly":f [...]
+,
+{"component":{"kind":"component","name":"elasticsearch","title":"Elasticsearch","description":"Send requests to ElasticSearch via Java Client API.","deprecated":false,"firstVersion":"3.19.0","label":"search,monitoring","javaType":"org.apache.camel.component.es.ElasticsearchComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-elasticsearch","version":"4.18.0","scheme":"elasticsearch","extendsScheme":"","syntax":"elasticsearch:clusterName","async":false,"api" [...]
+,
+{"component":{"kind":"component","name":"elasticsearch-rest-client","title":"Elasticsearch Low level Rest Client","description":"Perform queries and other operations on Elasticsearch or OpenSearch (uses low-level client).","deprecated":false,"firstVersion":"4.3.0","label":"search","javaType":"org.apache.camel.component.elasticsearch.rest.client.ElasticsearchRestClientComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-elasticsearch-rest-client","version":" [...]
+,
+{"component":{"kind":"component","name":"exec","title":"Exec","description":"Execute commands on the underlying operating system.","deprecated":false,"firstVersion":"2.3.0","label":"core","javaType":"org.apache.camel.component.exec.ExecComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-exec","version":"4.18.0","scheme":"exec","extendsScheme":"","syntax":"exec:executable","async":false,"api":false,"consumerOnly":false,"producerOnly":true,"lenientProperties [...]
+,
+{"component":{"kind":"component","name":"fhir","title":"FHIR","description":"Exchange information in the healthcare domain using the FHIR (Fast Healthcare Interoperability Resources) standard.","deprecated":false,"firstVersion":"2.23.0","label":"api","javaType":"org.apache.camel.component.fhir.FhirComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-fhir","version":"4.18.0","scheme":"fhir","extendsScheme":"","syntax":"fhir:apiName/methodName","async":false, [...]
+,
+{"component":{"kind":"component","name":"file","title":"File","description":"Read and write files.","deprecated":false,"firstVersion":"1.0.0","label":"file,core","javaType":"org.apache.camel.component.file.FileComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-file","version":"4.18.0","scheme":"file","extendsScheme":"","syntax":"file:directoryName","async":false,"api":false,"consumerOnly":false,"producerOnly":false,"lenientProperties":false,"browsable":tr [...]
+,
+{"component":{"kind":"component","name":"file-watch","title":"File Watch","description":"Get notified about file events in a directory using java.nio.file.WatchService.","deprecated":false,"firstVersion":"3.0.0","label":"file","javaType":"org.apache.camel.component.file.watch.FileWatchComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-file-watch","version":"4.18.0","scheme":"file-watch","extendsScheme":"","syntax":"file-watch:path","async":false,"api":fal [...]
+,
+{"component":{"kind":"component","name":"flatpack","title":"Flatpack","description":"Parse fixed width and delimited files using the FlatPack library.","deprecated":false,"firstVersion":"1.4.0","label":"transformation","javaType":"org.apache.camel.component.flatpack.FlatpackComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-flatpack","version":"4.18.0","scheme":"flatpack","extendsScheme":"","syntax":"flatpack:type:resourceUri","async":false,"api":false,"c [...]
+,
+{"component":{"kind":"component","name":"flink","title":"Flink","description":"Send DataSet jobs to an Apache Flink cluster.","deprecated":false,"firstVersion":"2.18.0","label":"transformation,bigdata","javaType":"org.apache.camel.component.flink.FlinkComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-flink","version":"4.18.0","scheme":"flink","extendsScheme":"","syntax":"flink:endpointType","async":false,"api":false,"consumerOnly":false,"producerOnly":tr [...]
+,
+{"component":{"kind":"component","name":"flowable","title":"Flowable","description":"Send and receive messages from the Flowable BPMN and CMMN engines.","deprecated":false,"firstVersion":"4.9.0","label":"workflow","javaType":"org.apache.camel.component.flowable.FlowableComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-flowable","version":"4.18.0","scheme":"flowable","extendsScheme":"","syntax":"flowable:channelKey","async":false,"api":false,"consumerOnly [...]
+,
+{"component":{"kind":"component","name":"fop","title":"FOP","description":"Render messages into PDF and other output formats supported by Apache FOP.","deprecated":false,"firstVersion":"2.10.0","label":"file,transformation","javaType":"org.apache.camel.component.fop.FopComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-fop","version":"4.18.0","scheme":"fop","extendsScheme":"","syntax":"fop:outputType","async":false,"api":false,"consumerOnly":false,"produc [...]
+,
+{"component":{"kind":"component","name":"freemarker","title":"Freemarker","description":"Transform messages using FreeMarker templates.","deprecated":false,"firstVersion":"2.10.0","label":"transformation","javaType":"org.apache.camel.component.freemarker.FreemarkerComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-freemarker","version":"4.18.0","scheme":"freemarker","extendsScheme":"","syntax":"freemarker:resourceUri","async":false,"api":false,"consumerOn [...]
+,
+{"component":{"kind":"component","name":"ftp","title":"FTP","description":"Upload and download files to/from FTP servers.","deprecated":false,"firstVersion":"1.1.0","label":"file","javaType":"org.apache.camel.component.file.remote.FtpComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-ftp","version":"4.18.0","scheme":"ftp","extendsScheme":"file","syntax":"ftp:host:port/directoryName","alternativeSyntax":"ftp:username:password@host:port/directoryName","asyn [...]
+,
+{"component":{"kind":"component","name":"ftps","title":"FTPS","description":"Upload and download files to/from FTP servers supporting the FTPS protocol.","deprecated":false,"firstVersion":"2.2.0","label":"file","javaType":"org.apache.camel.component.file.remote.FtpsComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-ftp","version":"4.18.0","scheme":"ftps","extendsScheme":"file","syntax":"ftps:host:port/directoryName","alternativeSyntax":"ftps:username:pass [...]
+,
+{"component":{"kind":"component","name":"geocoder","title":"Geocoder","description":"Find geocodes (latitude and longitude) for a given address or the other way round.","deprecated":false,"firstVersion":"2.12.0","label":"api,search","javaType":"org.apache.camel.component.geocoder.GeoCoderComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-geocoder","version":"4.18.0","scheme":"geocoder","extendsScheme":"","syntax":"geocoder:address:latlng","async":false,"a [...]
+,
+{"component":{"kind":"component","name":"git","title":"Git","description":"Perform operations on git repositories.","deprecated":false,"firstVersion":"2.16.0","label":"file","javaType":"org.apache.camel.component.git.GitComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-git","version":"4.18.0","scheme":"git","extendsScheme":"","syntax":"git:localPath","async":false,"api":false,"consumerOnly":false,"producerOnly":false,"lenientProperties":false,"browsable" [...]
+,
+{"component":{"kind":"component","name":"github2","title":"GitHub2","description":"Interact with the GitHub API.","deprecated":false,"firstVersion":"4.18.0","label":"file,cloud,api","javaType":"org.apache.camel.component.github2.GitHub2Component","supportLevel":"Preview","groupId":"org.apache.camel","artifactId":"camel-github2","version":"4.18.0","scheme":"github2","extendsScheme":"","syntax":"github2:type/branchName","async":false,"api":false,"consumerOnly":false,"producerOnly":false,"l [...]
+,
+{"component":{"kind":"component","name":"google-bigquery","title":"Google BigQuery","description":"Google BigQuery data warehouse for analytics.","deprecated":false,"firstVersion":"2.20.0","label":"cloud,bigdata","javaType":"org.apache.camel.component.google.bigquery.GoogleBigQueryComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-google-bigquery","version":"4.18.0","scheme":"google-bigquery","extendsScheme":"","syntax":"google-bigquery:projectId:datasetI [...]
+,
+{"component":{"kind":"component","name":"google-bigquery-sql","title":"Google BigQuery Standard SQL","description":"Access Google Cloud BigQuery service using SQL queries.","deprecated":false,"firstVersion":"2.23.0","label":"cloud,messaging","javaType":"org.apache.camel.component.google.bigquery.sql.GoogleBigQuerySQLComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-google-bigquery","version":"4.18.0","scheme":"google-bigquery-sql","extendsScheme":"","syn [...]
+,
+{"component":{"kind":"component","name":"google-calendar","title":"Google Calendar","description":"Perform various operations on a Google Calendar.","deprecated":false,"firstVersion":"2.15.0","label":"api,cloud","javaType":"org.apache.camel.component.google.calendar.GoogleCalendarComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-google-calendar","version":"4.18.0","scheme":"google-calendar","extendsScheme":"","syntax":"google-calendar:apiName/methodName" [...]
+,
+{"component":{"kind":"component","name":"google-calendar-stream","title":"Google Calendar Stream","description":"Poll for changes in a Google Calendar.","deprecated":false,"firstVersion":"2.23.0","label":"cloud","javaType":"org.apache.camel.component.google.calendar.stream.GoogleCalendarStreamComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-google-calendar","version":"4.18.0","scheme":"google-calendar-stream","extendsScheme":"","syntax":"google-calendar [...]
+,
+{"component":{"kind":"component","name":"google-drive","title":"Google Drive","description":"Manage files in Google Drive.","deprecated":false,"firstVersion":"2.14.0","label":"file,cloud,api","javaType":"org.apache.camel.component.google.drive.GoogleDriveComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-google-drive","version":"4.18.0","scheme":"google-drive","extendsScheme":"","syntax":"google-drive:apiName/methodName","async":false,"api":true,"apiSynta [...]
+,
+{"component":{"kind":"component","name":"google-functions","title":"Google Cloud Functions","description":"Manage and invoke Google Cloud Functions","deprecated":false,"firstVersion":"3.9.0","label":"cloud","javaType":"org.apache.camel.component.google.functions.GoogleCloudFunctionsComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-google-functions","version":"4.18.0","scheme":"google-functions","extendsScheme":"","syntax":"google-functions:functionName", [...]
+,
+{"component":{"kind":"component","name":"google-mail","title":"Google Mail","description":"Manage messages in Google Mail.","deprecated":false,"firstVersion":"2.15.0","label":"cloud,api,mail","javaType":"org.apache.camel.component.google.mail.GoogleMailComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-google-mail","version":"4.18.0","scheme":"google-mail","extendsScheme":"","syntax":"google-mail:apiName/methodName","async":false,"api":true,"apiSyntax":"a [...]
+,
+{"component":{"kind":"component","name":"google-mail-stream","title":"Google Mail Stream","description":"Poll for incoming messages in Google Mail.","deprecated":false,"firstVersion":"2.22.0","label":"cloud,mail","javaType":"org.apache.camel.component.google.mail.stream.GoogleMailStreamComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-google-mail","version":"4.18.0","scheme":"google-mail-stream","extendsScheme":"","syntax":"google-mail-stream:index","asy [...]
+,
+{"component":{"kind":"component","name":"google-pubsub","title":"Google Pubsub","description":"Send and receive messages to/from Google Cloud Platform PubSub Service.","deprecated":false,"firstVersion":"2.19.0","label":"cloud,messaging","javaType":"org.apache.camel.component.google.pubsub.GooglePubsubComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-google-pubsub","version":"4.18.0","scheme":"google-pubsub","extendsScheme":"","syntax":"google-pubsub:proj [...]
+,
+{"component":{"kind":"component","name":"google-secret-manager","title":"Google Secret Manager","description":"Manage Google Secret Manager Secrets","deprecated":false,"firstVersion":"3.16.0","label":"cloud","javaType":"org.apache.camel.component.google.secret.manager.GoogleSecretManagerComponent","supportLevel":"Stable","metadata":{"vault":"google-secret-manager"},"groupId":"org.apache.camel","artifactId":"camel-google-secret-manager","version":"4.18.0","scheme":"google-secret-manager", [...]
+,
+{"component":{"kind":"component","name":"google-sheets","title":"Google Sheets","description":"Manage spreadsheets in Google Sheets.","deprecated":false,"firstVersion":"2.23.0","label":"cloud,document","javaType":"org.apache.camel.component.google.sheets.GoogleSheetsComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-google-sheets","version":"4.18.0","scheme":"google-sheets","extendsScheme":"","syntax":"google-sheets:apiName/methodName","async":false,"api" [...]
+,
+{"component":{"kind":"component","name":"google-sheets-stream","title":"Google Sheets Stream","description":"Poll for changes in Google Sheets.","deprecated":false,"firstVersion":"2.23.0","label":"cloud,document","javaType":"org.apache.camel.component.google.sheets.stream.GoogleSheetsStreamComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-google-sheets","version":"4.18.0","scheme":"google-sheets-stream","extendsScheme":"","syntax":"google-sheets-stream:s [...]
+,
+{"component":{"kind":"component","name":"google-storage","title":"Google Storage","description":"Store and retrieve objects from Google Cloud Storage Service using the google-cloud-storage library.","deprecated":false,"firstVersion":"3.9.0","label":"cloud","javaType":"org.apache.camel.component.google.storage.GoogleCloudStorageComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-google-storage","version":"4.18.0","scheme":"google-storage","extendsScheme":"" [...]
+,
+{"component":{"kind":"component","name":"google-vertexai","title":"Google Vertex AI","description":"Interact with Google Cloud Vertex AI generative models.","deprecated":false,"firstVersion":"4.17.0","label":"ai,cloud","javaType":"org.apache.camel.component.google.vertexai.GoogleVertexAIComponent","supportLevel":"Preview","groupId":"org.apache.camel","artifactId":"camel-google-vertexai","version":"4.18.0","scheme":"google-vertexai","extendsScheme":"","syntax":"google-vertexai:projectId:l [...]
+,
+{"component":{"kind":"component","name":"graphql","title":"GraphQL","description":"Send GraphQL queries and mutations to external systems.","deprecated":false,"firstVersion":"3.0.0","label":"api","javaType":"org.apache.camel.component.graphql.GraphqlComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-graphql","version":"4.18.0","scheme":"graphql","extendsScheme":"","syntax":"graphql:httpUri","async":false,"api":false,"consumerOnly":false,"producerOnly":tru [...]
+,
+{"component":{"kind":"component","name":"grpc","title":"gRPC","description":"Expose gRPC endpoints and access external gRPC endpoints.","deprecated":false,"firstVersion":"2.19.0","label":"rpc","javaType":"org.apache.camel.component.grpc.GrpcComponent","supportLevel":"Stable","metadata":{"protocol":"http"},"groupId":"org.apache.camel","artifactId":"camel-grpc","version":"4.18.0","scheme":"grpc","extendsScheme":"","syntax":"grpc:host:port/service","async":false,"api":false,"consumerOnly":f [...]
+,
+{"component":{"kind":"component","name":"hashicorp-vault","title":"Hashicorp Vault","description":"Manage secrets in Hashicorp Vault Service","deprecated":false,"firstVersion":"3.18.0","label":"cloud,cloud","javaType":"org.apache.camel.component.hashicorp.vault.HashicorpVaultComponent","supportLevel":"Stable","metadata":{"vault":"hashicorp-vault"},"groupId":"org.apache.camel","artifactId":"camel-hashicorp-vault","version":"4.18.0","scheme":"hashicorp-vault","extendsScheme":"","syntax":"h [...]
+,
+{"component":{"kind":"component","name":"hazelcast-atomicvalue","title":"Hazelcast Atomic Number","description":"Increment, decrement, set, etc. Hazelcast atomic number (a grid wide number).","deprecated":false,"firstVersion":"2.7.0","label":"cache,clustering","javaType":"org.apache.camel.component.hazelcast.atomicnumber.HazelcastAtomicnumberComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-hazelcast","version":"4.18.0","scheme":"hazelcast-atomicvalue"," [...]
+,
+{"component":{"kind":"component","name":"hazelcast-instance","title":"Hazelcast Instance","description":"Consume join/leave events of a cache instance in a Hazelcast cluster.","deprecated":false,"firstVersion":"2.7.0","label":"cache,clustering","javaType":"org.apache.camel.component.hazelcast.instance.HazelcastInstanceComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-hazelcast","version":"4.18.0","scheme":"hazelcast-instance","extendsScheme":"","syntax": [...]
+,
+{"component":{"kind":"component","name":"hazelcast-list","title":"Hazelcast List","description":"Perform operations on Hazelcast distributed list.","deprecated":false,"firstVersion":"2.7.0","label":"cache,clustering","javaType":"org.apache.camel.component.hazelcast.list.HazelcastListComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-hazelcast","version":"4.18.0","scheme":"hazelcast-list","extendsScheme":"","syntax":"hazelcast-list:cacheName","async":false [...]
+,
+{"component":{"kind":"component","name":"hazelcast-map","title":"Hazelcast Map","description":"Perform operations on Hazelcast distributed map.","deprecated":false,"firstVersion":"2.7.0","label":"cache,clustering","javaType":"org.apache.camel.component.hazelcast.map.HazelcastMapComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-hazelcast","version":"4.18.0","scheme":"hazelcast-map","extendsScheme":"","syntax":"hazelcast-map:cacheName","async":false,"api": [...]
+,
+{"component":{"kind":"component","name":"hazelcast-multimap","title":"Hazelcast Multimap","description":"Perform operations on Hazelcast distributed multimap.","deprecated":false,"firstVersion":"2.7.0","label":"cache,clustering","javaType":"org.apache.camel.component.hazelcast.multimap.HazelcastMultimapComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-hazelcast","version":"4.18.0","scheme":"hazelcast-multimap","extendsScheme":"","syntax":"hazelcast-multi [...]
+,
+{"component":{"kind":"component","name":"hazelcast-queue","title":"Hazelcast Queue","description":"Perform operations on Hazelcast distributed queue.","deprecated":false,"firstVersion":"2.7.0","label":"cache,clustering,messaging","javaType":"org.apache.camel.component.hazelcast.queue.HazelcastQueueComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-hazelcast","version":"4.18.0","scheme":"hazelcast-queue","extendsScheme":"","syntax":"hazelcast-queue:cacheNa [...]
+,
+{"component":{"kind":"component","name":"hazelcast-replicatedmap","title":"Hazelcast Replicated Map","description":"Perform operations on Hazelcast replicated map.","deprecated":false,"firstVersion":"2.16.0","label":"cache,clustering","javaType":"org.apache.camel.component.hazelcast.replicatedmap.HazelcastReplicatedmapComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-hazelcast","version":"4.18.0","scheme":"hazelcast-replicatedmap","extendsScheme":"","syn [...]
+,
+{"component":{"kind":"component","name":"hazelcast-ringbuffer","title":"Hazelcast Ringbuffer","description":"Perform operations on Hazelcast distributed ringbuffer.","deprecated":false,"firstVersion":"2.16.0","label":"cache,clustering","javaType":"org.apache.camel.component.hazelcast.ringbuffer.HazelcastRingbufferComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-hazelcast","version":"4.18.0","scheme":"hazelcast-ringbuffer","extendsScheme":"","syntax":"ha [...]
+,
+{"component":{"kind":"component","name":"hazelcast-seda","title":"Hazelcast SEDA","description":"Asynchronously send/receive Exchanges between Camel routes running on potentially distinct JVMs/hosts backed by Hazelcast BlockingQueue.","deprecated":false,"firstVersion":"2.7.0","label":"cache,clustering","javaType":"org.apache.camel.component.hazelcast.seda.HazelcastSedaComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-hazelcast","version":"4.18.0","scheme [...]
+,
+{"component":{"kind":"component","name":"hazelcast-set","title":"Hazelcast Set","description":"Perform operations on Hazelcast distributed set.","deprecated":false,"firstVersion":"2.7.0","label":"cache,clustering","javaType":"org.apache.camel.component.hazelcast.set.HazelcastSetComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-hazelcast","version":"4.18.0","scheme":"hazelcast-set","extendsScheme":"","syntax":"hazelcast-set:cacheName","async":false,"api": [...]
+,
+{"component":{"kind":"component","name":"hazelcast-topic","title":"Hazelcast Topic","description":"Send and receive messages to/from Hazelcast distributed topic.","deprecated":false,"firstVersion":"2.15.0","label":"cache,clustering","javaType":"org.apache.camel.component.hazelcast.topic.HazelcastTopicComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-hazelcast","version":"4.18.0","scheme":"hazelcast-topic","extendsScheme":"","syntax":"hazelcast-topic:cach [...]
+,
+{"component":{"kind":"component","name":"http","title":"HTTP","description":"Send requests to external HTTP servers using Apache HTTP Client 5.x.","deprecated":false,"firstVersion":"2.3.0","label":"http","javaType":"org.apache.camel.component.http.HttpComponent","supportLevel":"Stable","metadata":{"protocol":"http"},"groupId":"org.apache.camel","artifactId":"camel-http","version":"4.18.0","scheme":"http","extendsScheme":"","alternativeSchemes":"http,https","syntax":"http://httpUri","asyn [...]
+,
+{"component":{"kind":"component","name":"https","title":"HTTPS (Secure)","description":"Send requests to external HTTP servers using Apache HTTP Client 5.x.","deprecated":false,"firstVersion":"2.3.0","label":"http","javaType":"org.apache.camel.component.http.HttpComponent","supportLevel":"Stable","metadata":{"protocol":"http"},"groupId":"org.apache.camel","artifactId":"camel-http","version":"4.18.0","scheme":"https","extendsScheme":"","alternativeSchemes":"http,https","syntax":"https://h [...]
+,
+{"component":{"kind":"component","name":"hwcloud-dms","title":"Huawei Distributed Message Service (DMS)","description":"To integrate with a fully managed, high-performance message queuing service on Huawei Cloud","deprecated":false,"firstVersion":"3.12.0","label":"cloud","javaType":"org.apache.camel.component.huaweicloud.dms.DMSComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-huaweicloud-dms","version":"4.18.0","scheme":"hwcloud-dms","extendsScheme":"", [...]
+,
+{"component":{"kind":"component","name":"hwcloud-frs","title":"Huawei Cloud Face Recognition Service (FRS)","description":"Face Recognition Service (FRS) is an intelligent service that uses computers to process, analyze, and understand facial images based on human facial features.","deprecated":false,"firstVersion":"3.15.0","label":"cloud,messaging","javaType":"org.apache.camel.component.huaweicloud.frs.FaceRecognitionComponent","supportLevel":"Stable","groupId":"org.apache.camel","artif [...]
+,
+{"component":{"kind":"component","name":"hwcloud-functiongraph","title":"Huawei FunctionGraph","description":"To call serverless functions on Huawei Cloud","deprecated":false,"firstVersion":"3.11.0","label":"cloud,serverless","javaType":"org.apache.camel.FunctionGraphComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-huaweicloud-functiongraph","version":"4.18.0","scheme":"hwcloud-functiongraph","extendsScheme":"","syntax":"hwcloud-functiongraph:operation" [...]
+,
+{"component":{"kind":"component","name":"hwcloud-iam","title":"Huawei Identity and Access Management (IAM)","description":"To securely manage users on Huawei Cloud","deprecated":false,"firstVersion":"3.11.0","label":"cloud","javaType":"org.apache.camel.component.huaweicloud.iam.IAMComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-huaweicloud-iam","version":"4.18.0","scheme":"hwcloud-iam","extendsScheme":"","syntax":"hwcloud-iam:operation","async":false," [...]
+,
+{"component":{"kind":"component","name":"hwcloud-imagerecognition","title":"Huawei Cloud Image Recognition","description":"To identify objects, scenes, and concepts in images on Huawei Cloud","deprecated":false,"firstVersion":"3.12.0","label":"cloud,messaging","javaType":"org.apache.camel.component.huaweicloud.image.ImageRecognitionComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-huaweicloud-imagerecognition","version":"4.18.0","scheme":"hwcloud-imagere [...]
+,
+{"component":{"kind":"component","name":"hwcloud-obs","title":"Huawei Object Storage Service (OBS)","description":"To provide stable, secure, efficient, and easy-to-use cloud storage service on Huawei Cloud","deprecated":false,"firstVersion":"3.12.0","label":"cloud","javaType":"org.apache.camel.component.huaweicloud.obs.OBSComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-huaweicloud-obs","version":"4.18.0","scheme":"hwcloud-obs","extendsScheme":"","synt [...]
+,
+{"component":{"kind":"component","name":"hwcloud-smn","title":"Huawei Simple Message Notification (SMN)","description":"To broadcast messages and connect cloud services through notifications on Huawei Cloud","deprecated":false,"firstVersion":"3.8.0","label":"cloud,messaging","javaType":"org.apache.camel.component.huaweicloud.smn.SimpleNotificationComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-huaweicloud-smn","version":"4.18.0","scheme":"hwcloud-smn", [...]
+,
+{"component":{"kind":"component","name":"ibm-cos","title":"IBM Cloud Object Storage","description":"Store and retrieve objects from IBM Cloud Object Storage.","deprecated":false,"firstVersion":"4.16.0","label":"cloud,file","javaType":"org.apache.camel.component.ibm.cos.IBMCOSComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-ibm-cos","version":"4.18.0","scheme":"ibm-cos","extendsScheme":"","syntax":"ibm-cos:bucketName","async":false,"api":false,"consumerO [...]
+,
+{"component":{"kind":"component","name":"ibm-secrets-manager","title":"IBM Secrets Manager","description":"Manage secrets in IBM Secrets Manager Service","deprecated":false,"firstVersion":"4.11.0","label":"cloud,cloud","javaType":"org.apache.camel.component.ibm.secrets.manager.IBMSecretsManagerComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-ibm-secrets-manager","version":"4.18.0","scheme":"ibm-secrets-manager","extendsScheme":"","syntax":"ibm-secrets-m [...]
+,
+{"component":{"kind":"component","name":"ibm-watson-discovery","title":"IBM Watson Discovery","description":"Perform document understanding and search using IBM Watson Discovery","deprecated":false,"firstVersion":"4.16.0","label":"ai,cloud","javaType":"org.apache.camel.component.ibm.watson.discovery.WatsonDiscoveryComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-ibm-watson-discovery","version":"4.18.0","scheme":"ibm-watson-discovery","extendsScheme":"", [...]
+,
+{"component":{"kind":"component","name":"ibm-watson-language","title":"IBM Watson Language","description":"Perform natural language processing using IBM Watson Natural Language Understanding","deprecated":false,"firstVersion":"4.16.0","label":"ai,cloud","javaType":"org.apache.camel.component.ibm.watson.language.WatsonLanguageComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-ibm-watson-language","version":"4.18.0","scheme":"ibm-watson-language","extendsSc [...]
+,
+{"component":{"kind":"component","name":"ibm-watson-speech-to-text","title":"IBM Watson Speech to Text","description":"Convert speech audio to text using IBM Watson Speech to Text","deprecated":false,"firstVersion":"4.17.0","label":"ai,cloud","javaType":"org.apache.camel.component.ibm.watson.stt.WatsonSpeechToTextComponent","supportLevel":"Preview","groupId":"org.apache.camel","artifactId":"camel-ibm-watson-speech-to-text","version":"4.18.0","scheme":"ibm-watson-speech-to-text","extendsS [...]
+,
+{"component":{"kind":"component","name":"ibm-watson-text-to-speech","title":"IBM Watson Text to Speech","description":"Convert text to natural-sounding speech using IBM Watson Text to Speech","deprecated":false,"firstVersion":"4.17.0","label":"ai,cloud","javaType":"org.apache.camel.component.ibm.watson.tts.WatsonTextToSpeechComponent","supportLevel":"Preview","groupId":"org.apache.camel","artifactId":"camel-ibm-watson-text-to-speech","version":"4.18.0","scheme":"ibm-watson-text-to-speech [...]
+,
+{"component":{"kind":"component","name":"ibm-watsonx-ai","title":"IBM watsonx.ai","description":"Interact with IBM watsonx.ai foundation models for text generation, chat, embeddings, and more.","deprecated":false,"firstVersion":"4.18.0","label":"ai,cloud","javaType":"org.apache.camel.component.ibm.watsonx.ai.WatsonxAiComponent","supportLevel":"Preview","groupId":"org.apache.camel","artifactId":"camel-ibm-watsonx-ai","version":"4.18.0","scheme":"ibm-watsonx-ai","extendsScheme":"","syntax" [...]
+,
+{"component":{"kind":"component","name":"iec60870-client","title":"IEC 60870 Client","description":"IEC 60870 supervisory control and data acquisition (SCADA) client using NeoSCADA implementation.","deprecated":false,"firstVersion":"2.20.0","label":"iot","javaType":"org.apache.camel.component.iec60870.client.ClientComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-iec60870","version":"4.18.0","scheme":"iec60870-client","extendsScheme":"","syntax":"iec6087 [...]
+,
+{"component":{"kind":"component","name":"iec60870-server","title":"IEC 60870 Server","description":"IEC 60870 supervisory control and data acquisition (SCADA) server using NeoSCADA implementation.","deprecated":false,"firstVersion":"2.20.0","label":"iot","javaType":"org.apache.camel.component.iec60870.server.ServerComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-iec60870","version":"4.18.0","scheme":"iec60870-server","extendsScheme":"","syntax":"iec6087 [...]
+,
+{"component":{"kind":"component","name":"iggy","title":"Iggy","description":"Send and receive message to Apache Iggy streaming platform.","deprecated":false,"firstVersion":"4.17.0","label":"messaging","javaType":"org.apache.camel.component.iggy.IggyComponent","supportLevel":"Preview","groupId":"org.apache.camel","artifactId":"camel-iggy","version":"4.18.0","scheme":"iggy","extendsScheme":"","syntax":"iggy:topicName","async":false,"api":false,"consumerOnly":false,"producerOnly":false,"len [...]
+,
+{"component":{"kind":"component","name":"ignite-cache","title":"Ignite Cache","description":"Perform cache operations on an Ignite cache or consume changes from a continuous query.","deprecated":false,"firstVersion":"2.17.0","label":"cache,clustering","javaType":"org.apache.camel.component.ignite.cache.IgniteCacheComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-ignite","version":"4.18.0","scheme":"ignite-cache","extendsScheme":"","syntax":"ignite-cache: [...]
+,
+{"component":{"kind":"component","name":"ignite-compute","title":"Ignite Compute","description":"Run compute operations on an Ignite cluster.","deprecated":false,"firstVersion":"2.17.0","label":"cache,clustering","javaType":"org.apache.camel.component.ignite.compute.IgniteComputeComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-ignite","version":"4.18.0","scheme":"ignite-compute","extendsScheme":"","syntax":"ignite-compute:endpointId","async":false,"api" [...]
+,
+{"component":{"kind":"component","name":"ignite-events","title":"Ignite Events","description":"Receive events from an Ignite cluster by creating a local event listener.","deprecated":false,"firstVersion":"2.17.0","label":"messaging,cache,clustering","javaType":"org.apache.camel.component.ignite.events.IgniteEventsComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-ignite","version":"4.18.0","scheme":"ignite-events","extendsScheme":"","syntax":"ignite-event [...]
+,
+{"component":{"kind":"component","name":"ignite-idgen","title":"Ignite ID Generator","description":"Interact with Ignite Atomic Sequences and ID Generators .","deprecated":false,"firstVersion":"2.17.0","label":"cache,clustering","javaType":"org.apache.camel.component.ignite.idgen.IgniteIdGenComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-ignite","version":"4.18.0","scheme":"ignite-idgen","extendsScheme":"","syntax":"ignite-idgen:name","async":false,"ap [...]
+,
+{"component":{"kind":"component","name":"ignite-messaging","title":"Ignite Messaging","description":"Send and receive messages from an Ignite topic.","deprecated":false,"firstVersion":"2.17.0","label":"messaging","javaType":"org.apache.camel.component.ignite.messaging.IgniteMessagingComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-ignite","version":"4.18.0","scheme":"ignite-messaging","extendsScheme":"","syntax":"ignite-messaging:topic","async":false,"a [...]
+,
+{"component":{"kind":"component","name":"ignite-queue","title":"Ignite Queues","description":"Interact with Ignite Queue data structures.","deprecated":false,"firstVersion":"2.17.0","label":"cache,clustering,messaging","javaType":"org.apache.camel.component.ignite.queue.IgniteQueueComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-ignite","version":"4.18.0","scheme":"ignite-queue","extendsScheme":"","syntax":"ignite-queue:name","async":false,"api":false," [...]
+,
+{"component":{"kind":"component","name":"ignite-set","title":"Ignite Sets","description":"Interact with Ignite Set data structures.","deprecated":false,"firstVersion":"2.17.0","label":"cache,clustering","javaType":"org.apache.camel.component.ignite.set.IgniteSetComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-ignite","version":"4.18.0","scheme":"ignite-set","extendsScheme":"","syntax":"ignite-set:name","async":false,"api":false,"consumerOnly":false,"pro [...]
+,
+{"component":{"kind":"component","name":"imap","title":"IMAP","description":"Send and receive emails using imap, pop3 and smtp protocols.","deprecated":false,"firstVersion":"1.0.0","label":"mail","javaType":"org.apache.camel.component.mail.MailComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-mail","version":"4.18.0","scheme":"imap","extendsScheme":"","alternativeSchemes":"imap,imaps,pop3,pop3s,smtp,smtps","syntax":"imap:host:port","alternativeSyntax":"i [...]
+,
+{"component":{"kind":"component","name":"imaps","title":"IMAPS (Secure)","description":"Send and receive emails using imap, pop3 and smtp protocols.","deprecated":false,"firstVersion":"1.0.0","label":"mail","javaType":"org.apache.camel.component.mail.MailComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-mail","version":"4.18.0","scheme":"imaps","extendsScheme":"","alternativeSchemes":"imap,imaps,pop3,pop3s,smtp,smtps","syntax":"imaps:host:port","alternat [...]
+,
+{"component":{"kind":"component","name":"infinispan","title":"Infinispan","description":"Read and write from/to Infinispan distributed key/value store and data grid.","deprecated":false,"firstVersion":"2.13.0","label":"cache,clustering","javaType":"org.apache.camel.component.infinispan.remote.InfinispanRemoteComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-infinispan","version":"4.18.0","scheme":"infinispan","extendsScheme":"","syntax":"infinispan:cache [...]
+,
+{"component":{"kind":"component","name":"infinispan-embedded","title":"Infinispan Embedded","description":"Read and write from/to Infinispan distributed key/value store and data grid.","deprecated":false,"firstVersion":"2.13.0","label":"cache,clustering","javaType":"org.apache.camel.component.infinispan.embedded.InfinispanEmbeddedComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-infinispan-embedded","version":"4.18.0","scheme":"infinispan-embedded","exte [...]
+,
+{"component":{"kind":"component","name":"influxdb","title":"InfluxDB","description":"Interact with InfluxDB v1, a time series database.","deprecated":false,"firstVersion":"2.18.0","label":"database","javaType":"org.apache.camel.component.influxdb.InfluxDbComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-influxdb","version":"4.18.0","scheme":"influxdb","extendsScheme":"","syntax":"influxdb:connectionBean","async":false,"api":false,"consumerOnly":false,"pr [...]
+,
+{"component":{"kind":"component","name":"influxdb2","title":"InfluxDB2","description":"Interact with InfluxDB v2, a time series database.","deprecated":false,"firstVersion":"3.20.0","label":"database","javaType":"org.apache.camel.component.influxdb2.InfluxDb2Component","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-influxdb2","version":"4.18.0","scheme":"influxdb2","extendsScheme":"","syntax":"influxdb2:connectionBean","async":false,"api":false,"consumerOnly":fa [...]
+,
+{"component":{"kind":"component","name":"irc","title":"IRC","description":"Send and receive messages to/from and IRC chat.","deprecated":false,"firstVersion":"1.1.0","label":"chat","javaType":"org.apache.camel.component.irc.IrcComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-irc","version":"4.18.0","scheme":"irc","extendsScheme":"","syntax":"irc:hostname:port","alternativeSyntax":"irc:username:password@hostname:port","async":false,"api":false,"consumerO [...]
+,
+{"component":{"kind":"component","name":"ironmq","title":"IronMQ","description":"Send and receive messages to/from IronMQ an elastic and durable hosted message queue as a service.","deprecated":false,"firstVersion":"2.17.0","label":"cloud,messaging","javaType":"org.apache.camel.component.ironmq.IronMQComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-ironmq","version":"4.18.0","scheme":"ironmq","extendsScheme":"","syntax":"ironmq:queueName","async":false, [...]
+,
+{"component":{"kind":"component","name":"jcache","title":"JCache","description":"Perform caching operations against JSR107/JCache.","deprecated":false,"firstVersion":"2.17.0","label":"cache,clustering","javaType":"org.apache.camel.component.jcache.JCacheComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-jcache","version":"4.18.0","scheme":"jcache","extendsScheme":"","syntax":"jcache:cacheName","async":false,"api":false,"consumerOnly":false,"producerOnly": [...]
+,
+{"component":{"kind":"component","name":"jcr","title":"JCR","description":"Read and write nodes to/from a JCR compliant content repository.","deprecated":false,"firstVersion":"1.3.0","label":"database,cms","javaType":"org.apache.camel.component.jcr.JcrComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-jcr","version":"4.18.0","scheme":"jcr","extendsScheme":"","syntax":"jcr:host/base","alternativeSyntax":"jcr:username:password@host/base","async":false,"api" [...]
+,
+{"component":{"kind":"component","name":"jdbc","title":"JDBC","description":"Access databases through SQL and JDBC.","deprecated":false,"firstVersion":"1.2.0","label":"database","javaType":"org.apache.camel.component.jdbc.JdbcComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-jdbc","version":"4.18.0","scheme":"jdbc","extendsScheme":"","syntax":"jdbc:dataSourceName","async":false,"api":false,"consumerOnly":false,"producerOnly":true,"lenientProperties":fals [...]
+,
+{"component":{"kind":"component","name":"jetty","title":"Jetty","description":"Expose HTTP endpoints using Jetty 12.","deprecated":false,"firstVersion":"1.2.0","label":"http","javaType":"org.apache.camel.component.jetty12.JettyHttpComponent12","supportLevel":"Stable","metadata":{"protocol":"http"},"groupId":"org.apache.camel","artifactId":"camel-jetty","version":"4.18.0","scheme":"jetty","extendsScheme":"http","syntax":"jetty:httpUri","async":true,"api":false,"consumerOnly":true,"produce [...]
+,
+{"component":{"kind":"component","name":"jgroups","title":"JGroups","description":"Exchange messages with JGroups clusters.","deprecated":false,"firstVersion":"2.13.0","label":"clustering,messaging","javaType":"org.apache.camel.component.jgroups.JGroupsComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-jgroups","version":"4.18.0","scheme":"jgroups","extendsScheme":"","syntax":"jgroups:clusterName","async":false,"api":false,"consumerOnly":false,"producerOn [...]
+,
+{"component":{"kind":"component","name":"jgroups-raft","title":"JGroups raft","description":"Exchange messages with JGroups-raft clusters.","deprecated":false,"firstVersion":"2.24.0","label":"clustering,messaging","javaType":"org.apache.camel.component.jgroups.raft.JGroupsRaftComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-jgroups-raft","version":"4.18.0","scheme":"jgroups-raft","extendsScheme":"","syntax":"jgroups-raft:clusterName","async":false,"api" [...]
+,
+{"component":{"kind":"component","name":"jira","title":"Jira","description":"Interact with JIRA issue tracker.","deprecated":false,"firstVersion":"3.0","label":"document","javaType":"org.apache.camel.component.jira.JiraComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-jira","version":"4.18.0","scheme":"jira","extendsScheme":"","syntax":"jira:type","async":false,"api":false,"consumerOnly":false,"producerOnly":false,"lenientProperties":false,"browsable":fa [...]
+,
+{"component":{"kind":"component","name":"jms","title":"JMS","description":"Send and receive messages to/from JMS message brokers.","deprecated":false,"firstVersion":"1.0.0","label":"messaging","javaType":"org.apache.camel.component.jms.JmsComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-jms","version":"4.18.0","scheme":"jms","extendsScheme":"","syntax":"jms:destinationType:destinationName","async":true,"api":false,"consumerOnly":false,"producerOnly":fal [...]
+,
+{"component":{"kind":"component","name":"jmx","title":"JMX","description":"Receive JMX notifications.","deprecated":false,"firstVersion":"2.6.0","label":"monitoring","javaType":"org.apache.camel.component.jmx.JMXComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-jmx","version":"4.18.0","scheme":"jmx","extendsScheme":"","syntax":"jmx:serverURL","async":false,"api":false,"consumerOnly":true,"producerOnly":false,"lenientProperties":false,"browsable":false,"r [...]
+,
+{"component":{"kind":"component","name":"jolt","title":"JOLT","description":"JSON to JSON transformation using JOLT.","deprecated":false,"firstVersion":"2.16.0","label":"transformation","javaType":"org.apache.camel.component.jolt.JoltComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-jolt","version":"4.18.0","scheme":"jolt","extendsScheme":"","syntax":"jolt:resourceUri","async":false,"api":false,"consumerOnly":false,"producerOnly":true,"lenientProperties" [...]
+,
+{"component":{"kind":"component","name":"jooq","title":"JOOQ","description":"Store and retrieve Java objects from an SQL database using JOOQ.","deprecated":false,"firstVersion":"3.0.0","label":"database","javaType":"org.apache.camel.component.jooq.JooqComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-jooq","version":"4.18.0","scheme":"jooq","extendsScheme":"","syntax":"jooq:entityType","async":false,"api":false,"consumerOnly":false,"producerOnly":false," [...]
+,
+{"component":{"kind":"component","name":"jpa","title":"JPA","description":"Store and retrieve Java objects from databases using Java Persistence API (JPA).","deprecated":false,"firstVersion":"1.0.0","label":"database","javaType":"org.apache.camel.component.jpa.JpaComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-jpa","version":"4.18.0","scheme":"jpa","extendsScheme":"","syntax":"jpa:entityType","async":false,"api":false,"consumerOnly":false,"producerOnly [...]
+,
+{"component":{"kind":"component","name":"jslt","title":"JSLT","description":"Query or transform JSON payloads using JSLT.","deprecated":false,"firstVersion":"3.1.0","label":"transformation","javaType":"org.apache.camel.component.jslt.JsltComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-jslt","version":"4.18.0","scheme":"jslt","extendsScheme":"","syntax":"jslt:resourceUri","async":false,"api":false,"consumerOnly":false,"producerOnly":true,"lenientPropert [...]
+,
+{"component":{"kind":"component","name":"json-patch","title":"JsonPatch","description":"Transforms JSON using JSON patch (RFC 6902).","deprecated":false,"firstVersion":"3.12.0","label":"transformation","javaType":"org.apache.camel.component.jsonpatch.JsonPatchComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-json-patch","version":"4.18.0","scheme":"json-patch","extendsScheme":"","syntax":"json-patch:resourceUri","async":false,"api":false,"consumerOnly":f [...]
+,
+{"component":{"kind":"component","name":"json-validator","title":"JSON Schema Validator","description":"Validate JSON payloads using NetworkNT JSON Schema.","deprecated":false,"firstVersion":"2.20.0","label":"validation","javaType":"org.apache.camel.component.jsonvalidator.JsonValidatorComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-json-validator","version":"4.18.0","scheme":"json-validator","extendsScheme":"","syntax":"json-validator:resourceUri","as [...]
+,
+{"component":{"kind":"component","name":"jsonata","title":"JSONata","description":"Transforms JSON payload using JSONata transformation.","deprecated":false,"firstVersion":"3.5.0","label":"transformation","javaType":"org.apache.camel.component.jsonata.JsonataComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-jsonata","version":"4.18.0","scheme":"jsonata","extendsScheme":"","syntax":"jsonata:resourceUri","async":false,"api":false,"consumerOnly":false,"prod [...]
+,
+{"component":{"kind":"component","name":"jt400","title":"JT400","description":"Exchanges messages with an IBM i system using data queues, message queues, or program call. IBM i is the replacement for AS/400 and iSeries servers.","deprecated":false,"firstVersion":"1.5.0","label":"messaging","javaType":"org.apache.camel.component.jt400.Jt400Component","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-jt400","version":"4.18.0","scheme":"jt400","extendsScheme":"","synt [...]
+,
+{"component":{"kind":"component","name":"jte","title":"JTE","description":"Transform messages using a Java based template engine (JTE).","deprecated":false,"firstVersion":"4.4.0","label":"transformation","javaType":"org.apache.camel.component.jte.JteComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-jte","version":"4.18.0","scheme":"jte","extendsScheme":"","syntax":"jte:resourceUri","async":false,"api":false,"consumerOnly":false,"producerOnly":true,"lenie [...]
+,
+{"component":{"kind":"component","name":"kafka","title":"Kafka","description":"Send and receive messages to/from an Apache Kafka broker.","deprecated":false,"firstVersion":"2.13.0","label":"messaging","javaType":"org.apache.camel.component.kafka.KafkaComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-kafka","version":"4.18.0","scheme":"kafka","extendsScheme":"","syntax":"kafka:topic","async":false,"api":false,"consumerOnly":false,"producerOnly":false,"len [...]
+,
+{"component":{"kind":"component","name":"keycloak","title":"Keycloak","description":"Manage Keycloak instances via Admin API.","deprecated":false,"firstVersion":"4.15.0","label":"security,management","javaType":"org.apache.camel.component.keycloak.KeycloakComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-keycloak","version":"4.18.0","scheme":"keycloak","extendsScheme":"","syntax":"keycloak:label","async":false,"api":false,"consumerOnly":false,"producerOn [...]
+,
+{"component":{"kind":"component","name":"knative","title":"Knative","description":"Send and receive events from Knative.","deprecated":false,"firstVersion":"3.15.0","label":"cloud","javaType":"org.apache.camel.component.knative.KnativeComponent","supportLevel":"Stable","metadata":{"protocol":"http"},"groupId":"org.apache.camel","artifactId":"camel-knative","version":"4.18.0","scheme":"knative","extendsScheme":"","syntax":"knative:type/typeId","async":false,"api":false,"consumerOnly":fals [...]
+,
+{"component":{"kind":"component","name":"kserve","title":"KServe","description":"Provide access to AI model servers with the KServe standard to run inference with remote models","deprecated":false,"firstVersion":"4.10.0","label":"ai","javaType":"org.apache.camel.component.kserve.KServeComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-kserve","version":"4.18.0","scheme":"kserve","extendsScheme":"","syntax":"kserve:api","async":false,"api":false,"consumerO [...]
+,
+{"component":{"kind":"component","name":"kubernetes-config-maps","title":"Kubernetes ConfigMap","description":"Perform operations on Kubernetes ConfigMaps and get notified on ConfigMaps changes.","deprecated":false,"firstVersion":"2.17.0","label":"container,cloud","javaType":"org.apache.camel.component.kubernetes.config_maps.KubernetesConfigMapsComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-kubernetes","version":"4.18.0","scheme":"kubernetes-config-ma [...]
+,
+{"component":{"kind":"component","name":"kubernetes-cronjob","title":"Kubernetes Cronjob","description":"Perform operations on Kubernetes CronJob.","deprecated":false,"firstVersion":"4.3.0","label":"container,cloud","javaType":"org.apache.camel.component.kubernetes.cronjob.KubernetesCronJobComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-kubernetes","version":"4.18.0","scheme":"kubernetes-cronjob","extendsScheme":"","syntax":"kubernetes-cronjob:masterUr [...]
+,
+{"component":{"kind":"component","name":"kubernetes-custom-resources","title":"Kubernetes Custom Resources","description":"Perform operations on Kubernetes Custom Resources and get notified on Deployment changes.","deprecated":false,"firstVersion":"3.7.0","label":"container,cloud","javaType":"org.apache.camel.component.kubernetes.customresources.KubernetesCustomResourcesComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-kubernetes","version":"4.18.0","sch [...]
+,
+{"component":{"kind":"component","name":"kubernetes-deployments","title":"Kubernetes Deployments","description":"Perform operations on Kubernetes Deployments and get notified on Deployment changes.","deprecated":false,"firstVersion":"2.20.0","label":"container,cloud","javaType":"org.apache.camel.component.kubernetes.deployments.KubernetesDeploymentsComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-kubernetes","version":"4.18.0","scheme":"kubernetes-deplo [...]
+,
+{"component":{"kind":"component","name":"kubernetes-events","title":"Kubernetes Event","description":"Perform operations on Kubernetes Events and get notified on Events changes.","deprecated":false,"firstVersion":"3.20.0","label":"container,cloud","javaType":"org.apache.camel.component.kubernetes.events.KubernetesEventsComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-kubernetes","version":"4.18.0","scheme":"kubernetes-events","extendsScheme":"","syntax" [...]
+,
+{"component":{"kind":"component","name":"kubernetes-hpa","title":"Kubernetes HPA","description":"Perform operations on Kubernetes Horizontal Pod Autoscalers (HPA) and get notified on HPA changes.","deprecated":false,"firstVersion":"2.23.0","label":"container,cloud","javaType":"org.apache.camel.component.kubernetes.hpa.KubernetesHPAComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-kubernetes","version":"4.18.0","scheme":"kubernetes-hpa","extendsScheme":"" [...]
+,
+{"component":{"kind":"component","name":"kubernetes-job","title":"Kubernetes Job","description":"Perform operations on Kubernetes Jobs.","deprecated":false,"firstVersion":"2.23.0","label":"container,cloud","javaType":"org.apache.camel.component.kubernetes.job.KubernetesJobComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-kubernetes","version":"4.18.0","scheme":"kubernetes-job","extendsScheme":"","syntax":"kubernetes-job:masterUrl","async":false,"api":fal [...]
+,
+{"component":{"kind":"component","name":"kubernetes-namespaces","title":"Kubernetes Namespaces","description":"Perform operations on Kubernetes Namespaces and get notified on Namespace changes.","deprecated":false,"firstVersion":"2.17.0","label":"container,cloud","javaType":"org.apache.camel.component.kubernetes.namespaces.KubernetesNamespacesComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-kubernetes","version":"4.18.0","scheme":"kubernetes-namespaces" [...]
+,
+{"component":{"kind":"component","name":"kubernetes-nodes","title":"Kubernetes Nodes","description":"Perform operations on Kubernetes Nodes and get notified on Node changes.","deprecated":false,"firstVersion":"2.17.0","label":"container,cloud","javaType":"org.apache.camel.component.kubernetes.nodes.KubernetesNodesComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-kubernetes","version":"4.18.0","scheme":"kubernetes-nodes","extendsScheme":"","syntax":"kuber [...]
+,
+{"component":{"kind":"component","name":"kubernetes-persistent-volumes","title":"Kubernetes Persistent Volume","description":"Perform operations on Kubernetes Persistent Volumes and get notified on Persistent Volume changes.","deprecated":false,"firstVersion":"2.17.0","label":"container,cloud","javaType":"org.apache.camel.component.kubernetes.persistent_volumes.KubernetesPersistentVolumesComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-kubernetes","vers [...]
+,
+{"component":{"kind":"component","name":"kubernetes-persistent-volumes-claims","title":"Kubernetes Persistent Volume Claim","description":"Perform operations on Kubernetes Persistent Volumes Claims and get notified on Persistent Volumes Claim changes.","deprecated":false,"firstVersion":"2.17.0","label":"container,cloud","javaType":"org.apache.camel.component.kubernetes.persistent_volumes_claims.KubernetesPersistentVolumesClaimsComponent","supportLevel":"Stable","groupId":"org.apache.came [...]
+,
+{"component":{"kind":"component","name":"kubernetes-pods","title":"Kubernetes Pods","description":"Perform operations on Kubernetes Pods and get notified on Pod changes.","deprecated":false,"firstVersion":"2.17.0","label":"container,cloud","javaType":"org.apache.camel.component.kubernetes.pods.KubernetesPodsComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-kubernetes","version":"4.18.0","scheme":"kubernetes-pods","extendsScheme":"","syntax":"kubernetes-p [...]
+,
+{"component":{"kind":"component","name":"kubernetes-replication-controllers","title":"Kubernetes Replication Controller","description":"Perform operations on Kubernetes Replication Controllers and get notified on Replication Controllers changes.","deprecated":false,"firstVersion":"2.17.0","label":"container,cloud","javaType":"org.apache.camel.component.kubernetes.replication_controllers.KubernetesReplicationControllersComponent","supportLevel":"Stable","groupId":"org.apache.camel","artif [...]
+,
+{"component":{"kind":"component","name":"kubernetes-resources-quota","title":"Kubernetes Resources Quota","description":"Perform operations on Kubernetes Resources Quotas.","deprecated":false,"firstVersion":"2.17.0","label":"container,cloud","javaType":"org.apache.camel.component.kubernetes.resources_quota.KubernetesResourcesQuotaComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-kubernetes","version":"4.18.0","scheme":"kubernetes-resources-quota","extend [...]
+,
+{"component":{"kind":"component","name":"kubernetes-secrets","title":"Kubernetes Secrets","description":"Perform operations on Kubernetes Secrets.","deprecated":false,"firstVersion":"2.17.0","label":"container,cloud","javaType":"org.apache.camel.component.kubernetes.secrets.KubernetesSecretsComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-kubernetes","version":"4.18.0","scheme":"kubernetes-secrets","extendsScheme":"","syntax":"kubernetes-secrets:masterU [...]
+,
+{"component":{"kind":"component","name":"kubernetes-service-accounts","title":"Kubernetes Service Account","description":"Perform operations on Kubernetes Service Accounts.","deprecated":false,"firstVersion":"2.17.0","label":"container,cloud","javaType":"org.apache.camel.component.kubernetes.service_accounts.KubernetesServiceAccountsComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-kubernetes","version":"4.18.0","scheme":"kubernetes-service-accounts","ex [...]
+,
+{"component":{"kind":"component","name":"kubernetes-services","title":"Kubernetes Services","description":"Perform operations on Kubernetes Services and get notified on Service changes.","deprecated":false,"firstVersion":"2.17.0","label":"container,cloud","javaType":"org.apache.camel.component.kubernetes.services.KubernetesServicesComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-kubernetes","version":"4.18.0","scheme":"kubernetes-services","extendsSchem [...]
+,
+{"component":{"kind":"component","name":"kudu","title":"Kudu","description":"Interact with Apache Kudu, a free and open source column-oriented data store of the Apache Hadoop ecosystem.","deprecated":false,"firstVersion":"3.0","label":"database,iot,cloud","javaType":"org.apache.camel.component.kudu.KuduComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-kudu","version":"4.18.0","scheme":"kudu","extendsScheme":"","syntax":"kudu:host:port/tableName","async": [...]
+,
+{"component":{"kind":"component","name":"langchain4j-agent","title":"LangChain4j Agent","description":"LangChain4j Agent component","deprecated":false,"firstVersion":"4.14.0","label":"ai","javaType":"org.apache.camel.component.langchain4j.agent.LangChain4jAgentComponent","supportLevel":"Preview","groupId":"org.apache.camel","artifactId":"camel-langchain4j-agent","version":"4.18.0","scheme":"langchain4j-agent","extendsScheme":"","syntax":"langchain4j-agent:agentId","async":false,"api":fal [...]
+,
+{"component":{"kind":"component","name":"langchain4j-chat","title":"LangChain4j Chat","description":"LangChain4j Chat component","deprecated":false,"firstVersion":"4.5.0","label":"ai","javaType":"org.apache.camel.component.langchain4j.chat.LangChain4jChatComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-langchain4j-chat","version":"4.18.0","scheme":"langchain4j-chat","extendsScheme":"","syntax":"langchain4j-chat:chatId","async":false,"api":false,"consume [...]
+,
+{"component":{"kind":"component","name":"langchain4j-embeddings","title":"LangChain4j Embeddings","description":"LangChain4j Embeddings","deprecated":false,"firstVersion":"4.5.0","label":"ai","javaType":"org.apache.camel.component.langchain4j.embeddings.LangChain4jEmbeddingsComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-langchain4j-embeddings","version":"4.18.0","scheme":"langchain4j-embeddings","extendsScheme":"","syntax":"langchain4j-embeddings:embe [...]
+,
+{"component":{"kind":"component","name":"langchain4j-embeddingstore","title":"LangChain4j Embedding Store","description":"Perform operations on the Langchain4jEmbeddingStores.","deprecated":false,"firstVersion":"4.14.0","label":"database,ai","javaType":"org.apache.camel.component.langchain4j.embeddingstore.LangChain4jEmbeddingStoreComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-langchain4j-embeddingstore","version":"4.18.0","scheme":"langchain4j-embedd [...]
+,
+{"component":{"kind":"component","name":"langchain4j-tools","title":"LangChain4j Tools","description":"LangChain4j Tools and Function Calling Features","deprecated":false,"firstVersion":"4.8.0","label":"ai","javaType":"org.apache.camel.component.langchain4j.tools.LangChain4jToolsComponent","supportLevel":"Preview","groupId":"org.apache.camel","artifactId":"camel-langchain4j-tools","version":"4.18.0","scheme":"langchain4j-tools","extendsScheme":"","syntax":"langchain4j-tools:toolId","asyn [...]
+,
+{"component":{"kind":"component","name":"langchain4j-web-search","title":"LangChain4j Web Search","description":"LangChain4j Web Search Engine","deprecated":false,"firstVersion":"4.8.0","label":"ai","javaType":"org.apache.camel.component.langchain4j.web.search.LangChain4jWebSearchComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-langchain4j-web-search","version":"4.18.0","scheme":"langchain4j-web-search","extendsScheme":"","syntax":"langchain4j-web-searc [...]
+,
+{"component":{"kind":"component","name":"language","title":"Language","description":"Execute scripts in any of the languages supported by Camel.","deprecated":false,"firstVersion":"2.5.0","label":"core,script","javaType":"org.apache.camel.component.language.LanguageComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-language","version":"4.18.0","scheme":"language","extendsScheme":"","syntax":"language:languageName:resourceUri","async":false,"api":false,"co [...]
+,
+{"component":{"kind":"component","name":"ldap","title":"LDAP","description":"Perform searches on LDAP servers.","deprecated":false,"firstVersion":"1.5.0","label":"database,security","javaType":"org.apache.camel.component.ldap.LdapComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-ldap","version":"4.18.0","scheme":"ldap","extendsScheme":"","syntax":"ldap:dirContextName","async":false,"api":false,"consumerOnly":false,"producerOnly":true,"lenientProperties": [...]
+,
+{"component":{"kind":"component","name":"ldif","title":"LDIF","description":"Perform updates on an LDAP server from an LDIF body content.","deprecated":false,"firstVersion":"2.20.0","label":"database,security","javaType":"org.apache.camel.component.ldif.LdifComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-ldif","version":"4.18.0","scheme":"ldif","extendsScheme":"","syntax":"ldif:ldapConnectionName","async":false,"api":false,"consumerOnly":false,"produce [...]
+,
+{"component":{"kind":"component","name":"log","title":"Log Data","description":"Prints data form the routed message (such as body and headers) to the logger.","deprecated":false,"firstVersion":"1.1.0","label":"core,monitoring","javaType":"org.apache.camel.component.log.LogComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-log","version":"4.18.0","scheme":"log","extendsScheme":"","syntax":"log:loggerName","async":false,"api":false,"consumerOnly":false,"pro [...]
+,
+{"component":{"kind":"component","name":"lpr","title":"Printer","description":"Send print jobs to printers.","deprecated":false,"firstVersion":"2.1.0","label":"document","javaType":"org.apache.camel.component.printer.PrinterComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-printer","version":"4.18.0","scheme":"lpr","extendsScheme":"","syntax":"lpr:hostname:port/printername","async":false,"api":false,"consumerOnly":false,"producerOnly":true,"lenientProper [...]
+,
+{"component":{"kind":"component","name":"lucene","title":"Lucene","description":"Perform inserts or queries against Apache Lucene databases.","deprecated":false,"firstVersion":"2.2.0","label":"database,search","javaType":"org.apache.camel.component.lucene.LuceneComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-lucene","version":"4.18.0","scheme":"lucene","extendsScheme":"","syntax":"lucene:host:operation","async":false,"api":false,"consumerOnly":false,"p [...]
+,
+{"component":{"kind":"component","name":"lumberjack","title":"Lumberjack","description":"Receive logs messages using the Lumberjack protocol.","deprecated":false,"firstVersion":"2.18.0","label":"monitoring","javaType":"org.apache.camel.component.lumberjack.LumberjackComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-lumberjack","version":"4.18.0","scheme":"lumberjack","extendsScheme":"","syntax":"lumberjack:host:port","async":false,"api":false,"consumerOn [...]
+,
+{"component":{"kind":"component","name":"mapstruct","title":"MapStruct","description":"Type Conversion using Mapstruct","deprecated":false,"firstVersion":"3.19.0","label":"transformation","javaType":"org.apache.camel.component.mapstruct.MapstructComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-mapstruct","version":"4.18.0","scheme":"mapstruct","extendsScheme":"","syntax":"mapstruct:className","async":false,"api":false,"consumerOnly":false,"producerOnly" [...]
+,
+{"component":{"kind":"component","name":"master","title":"Master","description":"Have only a single consumer in a cluster consuming from a given endpoint; with automatic failover if the JVM dies.","deprecated":false,"firstVersion":"2.20.0","label":"clustering","javaType":"org.apache.camel.component.master.MasterComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-master","version":"4.18.0","scheme":"master","extendsScheme":"","syntax":"master:namespace:dele [...]
+,
+{"component":{"kind":"component","name":"metrics","title":"Metrics","description":"Collect various metrics directly from Camel routes using the DropWizard metrics library.","deprecated":false,"firstVersion":"2.14.0","label":"monitoring","javaType":"org.apache.camel.component.metrics.MetricsComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-metrics","version":"4.18.0","scheme":"metrics","extendsScheme":"","syntax":"metrics:metricsType:metricsName","async": [...]
+,
+{"component":{"kind":"component","name":"micrometer","title":"Micrometer","description":"Collect various metrics directly from Camel routes using the Micrometer library.","deprecated":false,"firstVersion":"2.22.0","label":"monitoring","javaType":"org.apache.camel.component.micrometer.MicrometerComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-micrometer","version":"4.18.0","scheme":"micrometer","extendsScheme":"","syntax":"micrometer:metricsType:metricsN [...]
+,
+{"component":{"kind":"component","name":"milo-browse","title":"OPC UA Browser","description":"Connect to OPC UA servers using the binary protocol for browsing the node tree.","deprecated":false,"firstVersion":"3.15.0","label":"iot","javaType":"org.apache.camel.component.milo.browse.MiloBrowseComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-milo","version":"4.18.0","scheme":"milo-browse","extendsScheme":"","syntax":"milo-browse:endpointUri","async":false [...]
+,
+{"component":{"kind":"component","name":"milo-client","title":"OPC UA Client","description":"Connect to OPC UA servers using the binary protocol for acquiring telemetry data.","deprecated":false,"firstVersion":"2.19.0","label":"iot","javaType":"org.apache.camel.component.milo.client.MiloClientComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-milo","version":"4.18.0","scheme":"milo-client","extendsScheme":"","syntax":"milo-client:endpointUri","async":fals [...]
+,
+{"component":{"kind":"component","name":"milo-server","title":"OPC UA Server","description":"Make telemetry data available as an OPC UA server.","deprecated":false,"firstVersion":"2.19.0","label":"iot","javaType":"org.apache.camel.component.milo.server.MiloServerComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-milo","version":"4.18.0","scheme":"milo-server","extendsScheme":"","syntax":"milo-server:itemId","async":false,"api":false,"consumerOnly":false," [...]
+,
+{"component":{"kind":"component","name":"milvus","title":"Milvus","description":"Perform operations on the Milvus Vector Database.","deprecated":false,"firstVersion":"4.5.0","label":"database,ai","javaType":"org.apache.camel.component.milvus.MilvusComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-milvus","version":"4.18.0","scheme":"milvus","extendsScheme":"","syntax":"milvus:collection","async":false,"api":false,"consumerOnly":false,"producerOnly":true, [...]
+,
+{"component":{"kind":"component","name":"mina","title":"Mina","description":"Socket level networking using TCP or UDP with Apache Mina 2.x.","deprecated":false,"firstVersion":"2.10.0","label":"networking","javaType":"org.apache.camel.component.mina.MinaComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-mina","version":"4.18.0","scheme":"mina","extendsScheme":"","syntax":"mina:protocol:host:port","async":false,"api":false,"consumerOnly":false,"producerOnly [...]
+,
+{"component":{"kind":"component","name":"mina-sftp","title":"MINA SFTP","description":"Upload and download files to/from SFTP servers using Apache MINA SSHD.","deprecated":false,"firstVersion":"4.18.0","label":"file","javaType":"org.apache.camel.component.file.remote.mina.MinaSftpComponent","supportLevel":"Preview","groupId":"org.apache.camel","artifactId":"camel-mina-sftp","version":"4.18.0","scheme":"mina-sftp","extendsScheme":"file","syntax":"mina-sftp:host:port/directoryName","async" [...]
+,
+{"component":{"kind":"component","name":"minio","title":"Minio","description":"Store and retrieve objects from Minio Storage Service using Minio SDK.","deprecated":false,"firstVersion":"3.5.0","label":"cloud,file","javaType":"org.apache.camel.component.minio.MinioComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-minio","version":"4.18.0","scheme":"minio","extendsScheme":"","syntax":"minio:bucketName","async":false,"api":false,"consumerOnly":false,"produc [...]
+,
+{"component":{"kind":"component","name":"mllp","title":"MLLP","description":"Communicate with external systems using the MLLP protocol.","deprecated":false,"firstVersion":"2.17.0","label":"health","javaType":"org.apache.camel.component.mllp.MllpComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-mllp","version":"4.18.0","scheme":"mllp","extendsScheme":"","syntax":"mllp:hostname:port","async":false,"api":false,"consumerOnly":false,"producerOnly":false,"leni [...]
+,
+{"component":{"kind":"component","name":"mock","title":"Mock","description":"Test routes and mediation rules using mocks.","deprecated":false,"firstVersion":"1.0.0","label":"core,testing","javaType":"org.apache.camel.component.mock.MockComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-mock","version":"4.18.0","scheme":"mock","extendsScheme":"","syntax":"mock:name","async":false,"api":false,"consumerOnly":false,"producerOnly":true,"lenientProperties":true [...]
+,
+{"component":{"kind":"component","name":"mongodb","title":"MongoDB","description":"Perform operations on MongoDB documents and collections.","deprecated":false,"firstVersion":"2.19.0","label":"database","javaType":"org.apache.camel.component.mongodb.MongoDbComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-mongodb","version":"4.18.0","scheme":"mongodb","extendsScheme":"","syntax":"mongodb:connectionBean","async":false,"api":false,"consumerOnly":false,"pro [...]
+,
+{"component":{"kind":"component","name":"mongodb-gridfs","title":"MongoDB GridFS","description":"Interact with MongoDB GridFS.","deprecated":false,"firstVersion":"2.18.0","label":"database,file","javaType":"org.apache.camel.component.mongodb.gridfs.GridFsComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-mongodb-gridfs","version":"4.18.0","scheme":"mongodb-gridfs","extendsScheme":"","syntax":"mongodb-gridfs:connectionBean","async":false,"api":false,"consu [...]
+,
+{"component":{"kind":"component","name":"mustache","title":"Mustache","description":"Transform messages using a Mustache template.","deprecated":false,"firstVersion":"2.12.0","label":"transformation","javaType":"org.apache.camel.component.mustache.MustacheComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-mustache","version":"4.18.0","scheme":"mustache","extendsScheme":"","syntax":"mustache:resourceUri","async":false,"api":false,"consumerOnly":false,"prod [...]
+,
+{"component":{"kind":"component","name":"mvel","title":"MVEL","description":"Transform messages using an MVEL template.","deprecated":false,"firstVersion":"2.12.0","label":"transformation,script","javaType":"org.apache.camel.component.mvel.MvelComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-mvel","version":"4.18.0","scheme":"mvel","extendsScheme":"","syntax":"mvel:resourceUri","async":false,"api":false,"consumerOnly":false,"producerOnly":true,"lenientP [...]
+,
+{"component":{"kind":"component","name":"mybatis","title":"MyBatis","description":"Performs a query, poll, insert, update or delete in a relational database using MyBatis.","deprecated":false,"firstVersion":"2.7.0","label":"database","javaType":"org.apache.camel.component.mybatis.MyBatisComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-mybatis","version":"4.18.0","scheme":"mybatis","extendsScheme":"","syntax":"mybatis:statement","async":false,"api":false [...]
+,
+{"component":{"kind":"component","name":"mybatis-bean","title":"MyBatis Bean","description":"Perform queries, inserts, updates or deletes in a relational database using MyBatis.","deprecated":false,"firstVersion":"2.22.0","label":"database","javaType":"org.apache.camel.component.mybatis.MyBatisBeanComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-mybatis","version":"4.18.0","scheme":"mybatis-bean","extendsScheme":"","syntax":"mybatis-bean:beanName:method [...]
+,
+{"component":{"kind":"component","name":"nats","title":"Nats","description":"Send and receive messages from NATS messaging system.","deprecated":false,"firstVersion":"2.17.0","label":"messaging","javaType":"org.apache.camel.component.nats.NatsComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-nats","version":"4.18.0","scheme":"nats","extendsScheme":"","syntax":"nats:topic","async":false,"api":false,"consumerOnly":false,"producerOnly":false,"lenientPropert [...]
+,
+{"component":{"kind":"component","name":"neo4j","title":"Neo4j","description":"Perform operations on the Neo4j Graph Database","deprecated":false,"firstVersion":"4.10.0","label":"database,ai","javaType":"org.apache.camel.component.neo4j.Neo4jComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-neo4j","version":"4.18.0","scheme":"neo4j","extendsScheme":"","syntax":"neo4j:name","async":false,"api":false,"consumerOnly":false,"producerOnly":true,"lenientPropert [...]
+,
+{"component":{"kind":"component","name":"netty","title":"Netty","description":"Socket level networking using TCP or UDP with Netty 4.x.","deprecated":false,"firstVersion":"2.14.0","label":"networking","javaType":"org.apache.camel.component.netty.NettyComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-netty","version":"4.18.0","scheme":"netty","extendsScheme":"","syntax":"netty:protocol://host:port","async":true,"api":false,"consumerOnly":false,"producerOn [...]
+,
+{"component":{"kind":"component","name":"netty-http","title":"Netty HTTP","description":"Netty HTTP server and client using the Netty 4.x.","deprecated":false,"firstVersion":"2.14.0","label":"networking,http","javaType":"org.apache.camel.component.netty.http.NettyHttpComponent","supportLevel":"Stable","metadata":{"protocol":"http"},"groupId":"org.apache.camel","artifactId":"camel-netty-http","version":"4.18.0","scheme":"netty-http","extendsScheme":"netty","syntax":"netty-http:protocol:// [...]
+,
+{"component":{"kind":"component","name":"oaipmh","title":"OAI-PMH","description":"Harvest metadata using OAI-PMH protocol","deprecated":false,"firstVersion":"3.5.0","label":"search","javaType":"org.apache.camel.oaipmh.component.OAIPMHComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-oaipmh","version":"4.18.0","scheme":"oaipmh","extendsScheme":"","syntax":"oaipmh:baseUrl","async":false,"api":false,"consumerOnly":false,"producerOnly":false,"lenientProperti [...]
+,
+{"component":{"kind":"component","name":"once","title":"Once","description":"Trigger a single message only once at startup (useful for development and testing purposes).","deprecated":false,"firstVersion":"4.17.0","label":"core,scheduling","javaType":"org.apache.camel.component.once.OnceComponent","supportLevel":"Preview","groupId":"org.apache.camel","artifactId":"camel-once","version":"4.18.0","scheme":"once","extendsScheme":"","syntax":"once:name","async":false,"api":false,"consumerOnl [...]
+,
+{"component":{"kind":"component","name":"openai","title":"OpenAI","description":"OpenAI endpoint for chat completion and embeddings.","deprecated":false,"firstVersion":"4.17.0","label":"ai","javaType":"org.apache.camel.component.openai.OpenAIComponent","supportLevel":"Preview","groupId":"org.apache.camel","artifactId":"camel-openai","version":"4.18.0","scheme":"openai","extendsScheme":"","syntax":"openai:operation","async":false,"api":false,"consumerOnly":false,"producerOnly":true,"lenie [...]
+,
+{"component":{"kind":"component","name":"opensearch","title":"OpenSearch","description":"Send requests to OpenSearch via Java Client API.","deprecated":false,"firstVersion":"4.0.0","label":"search,monitoring","javaType":"org.apache.camel.component.opensearch.OpensearchComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-opensearch","version":"4.18.0","scheme":"opensearch","extendsScheme":"","syntax":"opensearch:clusterName","async":false,"api":false,"consum [...]
+,
+{"component":{"kind":"component","name":"openshift-build-configs","title":"OpenShift Build Config","description":"Perform operations on OpenShift Build Configs.","deprecated":false,"firstVersion":"2.17.0","label":"container,cloud","javaType":"org.apache.camel.component.openshift.build_configs.OpenshiftBuildConfigsComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-kubernetes","version":"4.18.0","scheme":"openshift-build-configs","extendsScheme":"","syntax" [...]
+,
+{"component":{"kind":"component","name":"openshift-builds","title":"OpenShift Builds","description":"Perform operations on OpenShift Builds.","deprecated":false,"firstVersion":"2.17.0","label":"container,cloud","javaType":"org.apache.camel.component.openshift.builds.OpenshiftBuildsComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-kubernetes","version":"4.18.0","scheme":"openshift-builds","extendsScheme":"","syntax":"openshift-builds:masterUrl","async":fa [...]
+,
+{"component":{"kind":"component","name":"openshift-deploymentconfigs","title":"OpenShift Deployment Configs","description":"Perform operations on OpenShift Deployment Configs and get notified on Deployment Config changes.","deprecated":false,"firstVersion":"3.18.0","label":"container,cloud","javaType":"org.apache.camel.component.openshift.deploymentconfigs.OpenshiftDeploymentConfigsComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-kubernetes","version":" [...]
+,
+{"component":{"kind":"component","name":"openstack-cinder","title":"OpenStack Cinder","description":"Access data in OpenStack Cinder block storage.","deprecated":false,"firstVersion":"2.19.0","label":"container","javaType":"org.apache.camel.component.openstack.cinder.CinderComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-openstack","version":"4.18.0","scheme":"openstack-cinder","extendsScheme":"","syntax":"openstack-cinder:host","async":false,"api":fals [...]
+,
+{"component":{"kind":"component","name":"openstack-glance","title":"OpenStack Glance","description":"Manage VM images and metadata definitions in OpenStack Glance.","deprecated":false,"firstVersion":"2.19.0","label":"container","javaType":"org.apache.camel.component.openstack.glance.GlanceComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-openstack","version":"4.18.0","scheme":"openstack-glance","extendsScheme":"","syntax":"openstack-glance:host","async": [...]
+,
+{"component":{"kind":"component","name":"openstack-keystone","title":"OpenStack Keystone","description":"Access OpenStack Keystone for API client authentication, service discovery and distributed multi-tenant authorization.","deprecated":false,"firstVersion":"2.19.0","label":"container","javaType":"org.apache.camel.component.openstack.keystone.KeystoneComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-openstack","version":"4.18.0","scheme":"openstack-keys [...]
+,
+{"component":{"kind":"component","name":"openstack-neutron","title":"OpenStack Neutron","description":"Access OpenStack Neutron for network services.","deprecated":false,"firstVersion":"2.19.0","label":"container","javaType":"org.apache.camel.component.openstack.neutron.NeutronComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-openstack","version":"4.18.0","scheme":"openstack-neutron","extendsScheme":"","syntax":"openstack-neutron:host","async":false,"api [...]
+,
+{"component":{"kind":"component","name":"openstack-nova","title":"OpenStack Nova","description":"Access OpenStack to manage compute resources.","deprecated":false,"firstVersion":"2.19.0","label":"container","javaType":"org.apache.camel.component.openstack.nova.NovaComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-openstack","version":"4.18.0","scheme":"openstack-nova","extendsScheme":"","syntax":"openstack-nova:host","async":false,"api":false,"consumerOn [...]
+,
+{"component":{"kind":"component","name":"openstack-swift","title":"OpenStack Swift","description":"Access OpenStack Swift object/blob store.","deprecated":false,"firstVersion":"2.19.0","label":"container","javaType":"org.apache.camel.component.openstack.swift.SwiftComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-openstack","version":"4.18.0","scheme":"openstack-swift","extendsScheme":"","syntax":"openstack-swift:host","async":false,"api":false,"consumer [...]
+,
+{"component":{"kind":"component","name":"opentelemetry-metrics","title":"OpenTelemetry Metrics","description":"Camel metrics based on the Camel Telemetry spec","deprecated":false,"firstVersion":"4.17.0","label":"monitoring","javaType":"org.apache.camel.opentelemetry.metrics.OpenTelemetryComponent","supportLevel":"Preview","groupId":"org.apache.camel","artifactId":"camel-opentelemetry-metrics","version":"4.18.0","scheme":"opentelemetry-metrics","extendsScheme":"","syntax":"opentelemetry-m [...]
+,
+{"component":{"kind":"component","name":"optaplanner","title":"OptaPlanner","description":"Solve planning problems with OptaPlanner.","deprecated":false,"firstVersion":"2.13.0","label":"workflow","javaType":"org.apache.camel.component.optaplanner.OptaPlannerComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-optaplanner","version":"4.18.0","scheme":"optaplanner","extendsScheme":"","syntax":"optaplanner:problemName","async":false,"api":false,"consumerOnly": [...]
+,
+{"component":{"kind":"component","name":"paho","title":"Paho","description":"Communicate with MQTT message brokers using Eclipse Paho MQTT Client.","deprecated":false,"firstVersion":"2.16.0","label":"messaging,iot","javaType":"org.apache.camel.component.paho.PahoComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-paho","version":"4.18.0","scheme":"paho","extendsScheme":"","syntax":"paho:topic","async":false,"api":false,"consumerOnly":false,"producerOnly":f [...]
+,
+{"component":{"kind":"component","name":"paho-mqtt5","title":"Paho MQTT 5","description":"Communicate with MQTT message brokers using Eclipse Paho MQTT v5 Client.","deprecated":false,"firstVersion":"3.8.0","label":"messaging,iot","javaType":"org.apache.camel.component.paho.mqtt5.PahoMqtt5Component","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-paho-mqtt5","version":"4.18.0","scheme":"paho-mqtt5","extendsScheme":"","syntax":"paho-mqtt5:topic","async":false,"api" [...]
+,
+{"component":{"kind":"component","name":"pdf","title":"PDF","description":"Create, modify or extract content from PDF documents.","deprecated":false,"firstVersion":"2.16.0","label":"document,transformation","javaType":"org.apache.camel.component.pdf.PdfComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-pdf","version":"4.18.0","scheme":"pdf","extendsScheme":"","syntax":"pdf:operation","async":false,"api":false,"consumerOnly":false,"producerOnly":true,"leni [...]
+,
+{"component":{"kind":"component","name":"pg-replication-slot","title":"PostgresSQL Replication Slot","description":"Poll for PostgreSQL Write-Ahead Log (WAL) records using Streaming Replication Slots.","deprecated":false,"firstVersion":"3.0.0","label":"database","javaType":"org.apache.camel.component.pg.replication.slot.PgReplicationSlotComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-pg-replication-slot","version":"4.18.0","scheme":"pg-replication-slot [...]
+,
+{"component":{"kind":"component","name":"pgevent","title":"PostgresSQL Event","description":"Send and receive PostgreSQL events via LISTEN and NOTIFY commands.","deprecated":false,"firstVersion":"2.15.0","label":"database","javaType":"org.apache.camel.component.pgevent.PgEventComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-pgevent","version":"4.18.0","scheme":"pgevent","extendsScheme":"","syntax":"pgevent:host:port/database/channel","async":false,"api" [...]
+,
+{"component":{"kind":"component","name":"pinecone","title":"Pinecone","description":"Perform operations on the Pinecone Vector Database.","deprecated":false,"firstVersion":"4.6.0","label":"database,ai","javaType":"org.apache.camel.component.pinecone.PineconeVectorDbComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-pinecone","version":"4.18.0","scheme":"pinecone","extendsScheme":"","syntax":"pinecone:collection","async":false,"api":false,"consumerOnly":fa [...]
+,
+{"component":{"kind":"component","name":"platform-http","title":"Platform HTTP","description":"Expose HTTP endpoints using the HTTP server available in the current platform.","deprecated":false,"firstVersion":"3.0.0","label":"http","javaType":"org.apache.camel.component.platform.http.PlatformHttpComponent","supportLevel":"Stable","metadata":{"protocol":"http"},"groupId":"org.apache.camel","artifactId":"camel-platform-http","version":"4.18.0","scheme":"platform-http","extendsScheme":"","s [...]
+,
+{"component":{"kind":"component","name":"plc4x","title":"PLC4X","description":"Read and write to PLC devices","deprecated":false,"firstVersion":"3.20.0","label":"iot","javaType":"org.apache.camel.component.plc4x.Plc4XComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-plc4x","version":"4.18.0","scheme":"plc4x","extendsScheme":"","syntax":"plc4x:driver","async":false,"api":false,"consumerOnly":false,"producerOnly":false,"lenientProperties":true,"browsable": [...]
+,
+{"component":{"kind":"component","name":"pop3","title":"POP3","description":"Send and receive emails using imap, pop3 and smtp protocols.","deprecated":false,"firstVersion":"1.0.0","label":"mail","javaType":"org.apache.camel.component.mail.MailComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-mail","version":"4.18.0","scheme":"pop3","extendsScheme":"","alternativeSchemes":"imap,imaps,pop3,pop3s,smtp,smtps","syntax":"pop3:host:port","alternativeSyntax":"p [...]
+,
+{"component":{"kind":"component","name":"pop3s","title":"POP3S","description":"Send and receive emails using imap, pop3 and smtp protocols.","deprecated":false,"firstVersion":"1.0.0","label":"mail","javaType":"org.apache.camel.component.mail.MailComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-mail","version":"4.18.0","scheme":"pop3s","extendsScheme":"","alternativeSchemes":"imap,imaps,pop3,pop3s,smtp,smtps","syntax":"pop3s:host:port","alternativeSyntax [...]
+,
+{"component":{"kind":"component","name":"pqc","title":"PQC Algorithms","description":"Post Quantum Cryptography Signature and Verification component.","deprecated":false,"firstVersion":"4.12.0","label":"security","javaType":"org.apache.camel.component.pqc.PQCComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-pqc","version":"4.18.0","scheme":"pqc","extendsScheme":"","syntax":"pqc:label","async":false,"api":false,"consumerOnly":false,"producerOnly":true,"le [...]
+,
+{"component":{"kind":"component","name":"pubnub","title":"PubNub","description":"Send and receive messages to/from PubNub data stream network for connected devices.","deprecated":false,"firstVersion":"2.19.0","label":"cloud,iot,messaging","javaType":"org.apache.camel.component.pubnub.PubNubComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-pubnub","version":"4.18.0","scheme":"pubnub","extendsScheme":"","syntax":"pubnub:channel","async":false,"api":false," [...]
+,
+{"component":{"kind":"component","name":"pulsar","title":"Pulsar","description":"Send and receive messages from/to Apache Pulsar messaging system.","deprecated":false,"firstVersion":"2.24.0","label":"messaging","javaType":"org.apache.camel.component.pulsar.PulsarComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-pulsar","version":"4.18.0","scheme":"pulsar","extendsScheme":"","syntax":"pulsar:persistence://tenant/namespace/topic","async":false,"api":false, [...]
+,
+{"component":{"kind":"component","name":"qdrant","title":"Qdrant","description":"Perform operations on the Qdrant Vector Database.","deprecated":false,"firstVersion":"4.5.0","label":"database,ai","javaType":"org.apache.camel.component.qdrant.QdrantComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-qdrant","version":"4.18.0","scheme":"qdrant","extendsScheme":"","syntax":"qdrant:collection","async":false,"api":false,"consumerOnly":false,"producerOnly":true, [...]
+,
+{"component":{"kind":"component","name":"quartz","title":"Quartz","description":"Schedule sending of messages using the Quartz 2.x scheduler.","deprecated":false,"firstVersion":"2.12.0","label":"scheduling","javaType":"org.apache.camel.component.quartz.QuartzComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-quartz","version":"4.18.0","scheme":"quartz","extendsScheme":"","syntax":"quartz:groupName/triggerName","async":false,"api":false,"consumerOnly":true [...]
+,
+{"component":{"kind":"component","name":"quickfix","title":"QuickFix","description":"Open a Financial Interchange (FIX) session using an embedded QuickFix/J engine.","deprecated":false,"firstVersion":"2.1.0","label":"messaging","javaType":"org.apache.camel.component.quickfixj.QuickfixjComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-quickfix","version":"4.18.0","scheme":"quickfix","extendsScheme":"","syntax":"quickfix:configurationName","async":false,"a [...]
+,
+{"component":{"kind":"component","name":"reactive-streams","title":"Reactive Streams","description":"Exchange messages with reactive stream processing libraries compatible with the reactive streams standard.","deprecated":false,"firstVersion":"2.19.0","label":"messaging","javaType":"org.apache.camel.component.reactive.streams.ReactiveStreamsComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-reactive-streams","version":"4.18.0","scheme":"reactive-streams", [...]
+,
+{"component":{"kind":"component","name":"ref","title":"Ref","description":"Route messages to an endpoint looked up dynamically by name in the Camel Registry.","deprecated":false,"firstVersion":"1.2.0","label":"core","javaType":"org.apache.camel.component.ref.RefComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-ref","version":"4.18.0","scheme":"ref","extendsScheme":"","syntax":"ref:name","async":false,"api":false,"consumerOnly":false,"producerOnly":false, [...]
+,
+{"component":{"kind":"component","name":"rest","title":"REST","description":"Expose REST services or call external REST services.","deprecated":false,"firstVersion":"2.14.0","label":"core,rest","javaType":"org.apache.camel.component.rest.RestComponent","supportLevel":"Stable","metadata":{"protocol":"http"},"groupId":"org.apache.camel","artifactId":"camel-rest","version":"4.18.0","scheme":"rest","extendsScheme":"","syntax":"rest:method:path:uriTemplate","async":false,"api":false,"consumer [...]
+,
+{"component":{"kind":"component","name":"rest-api","title":"REST API","description":"Expose OpenAPI Specification of the REST services defined using Camel REST DSL.","deprecated":false,"firstVersion":"2.16.0","label":"core,rest","javaType":"org.apache.camel.component.rest.RestApiComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-rest","version":"4.18.0","scheme":"rest-api","extendsScheme":"","syntax":"rest-api:path","async":false,"api":false,"consumerOnly [...]
+,
+{"component":{"kind":"component","name":"rest-openapi","title":"REST OpenApi","description":"To call REST services using OpenAPI specification as contract.","deprecated":false,"firstVersion":"3.1.0","label":"rest,api","javaType":"org.apache.camel.component.rest.openapi.RestOpenApiComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-rest-openapi","version":"4.18.0","scheme":"rest-openapi","extendsScheme":"","syntax":"rest-openapi:specificationUri#operationId [...]
+,
+{"component":{"kind":"component","name":"robotframework","title":"Robot Framework","description":"Pass camel exchanges to acceptance test written in Robot DSL.","deprecated":false,"firstVersion":"3.0.0","label":"testing","javaType":"org.apache.camel.component.robotframework.RobotFrameworkComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-robotframework","version":"4.18.0","scheme":"robotframework","extendsScheme":"","syntax":"robotframework:resourceUri"," [...]
+,
+{"component":{"kind":"component","name":"rocketmq","title":"RocketMQ","description":"Send and receive messages from RocketMQ cluster.","deprecated":false,"firstVersion":"3.20.0","label":"messaging","javaType":"org.apache.camel.component.rocketmq.RocketMQComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-rocketmq","version":"4.18.0","scheme":"rocketmq","extendsScheme":"","syntax":"rocketmq:topicName","async":true,"api":false,"consumerOnly":false,"producerO [...]
+,
+{"component":{"kind":"component","name":"rss","title":"RSS","description":"Poll RSS feeds.","deprecated":false,"firstVersion":"2.0.0","label":"document","javaType":"org.apache.camel.component.rss.RssComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-rss","version":"4.18.0","scheme":"rss","extendsScheme":"atom","syntax":"rss:feedUri","async":false,"api":false,"consumerOnly":true,"producerOnly":false,"lenientProperties":true,"browsable":false,"remote":true} [...]
+,
+{"component":{"kind":"component","name":"saga","title":"Saga","description":"Execute custom actions within a route using the Saga EIP.","deprecated":false,"firstVersion":"2.21.0","label":"clustering","javaType":"org.apache.camel.component.saga.SagaComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-saga","version":"4.18.0","scheme":"saga","extendsScheme":"","syntax":"saga:action","async":false,"api":false,"consumerOnly":false,"producerOnly":true,"lenientPr [...]
+,
+{"component":{"kind":"component","name":"salesforce","title":"Salesforce","description":"Communicate with Salesforce using Java DTOs.","deprecated":false,"firstVersion":"2.12.0","label":"cloud,saas","javaType":"org.apache.camel.component.salesforce.SalesforceComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-salesforce","version":"4.18.0","scheme":"salesforce","extendsScheme":"","syntax":"salesforce:operationName:topicName","async":false,"api":false,"cons [...]
+,
+{"component":{"kind":"component","name":"sap-netweaver","title":"SAP NetWeaver","description":"Send requests to SAP NetWeaver Gateway using HTTP.","deprecated":false,"firstVersion":"2.12.0","label":"saas","javaType":"org.apache.camel.component.sap.netweaver.NetWeaverComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-sap-netweaver","version":"4.18.0","scheme":"sap-netweaver","extendsScheme":"","syntax":"sap-netweaver:url","async":false,"api":false,"consume [...]
+,
+{"component":{"kind":"component","name":"scheduler","title":"Scheduler","description":"Generate messages in specified intervals using java.util.concurrent.ScheduledExecutorService.","deprecated":false,"firstVersion":"2.15.0","label":"core,scheduling","javaType":"org.apache.camel.component.scheduler.SchedulerComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-scheduler","version":"4.18.0","scheme":"scheduler","extendsScheme":"","syntax":"scheduler:name","as [...]
+,
+{"component":{"kind":"component","name":"schematron","title":"Schematron","description":"Validate XML payload using the Schematron Library.","deprecated":false,"firstVersion":"2.15.0","label":"validation","javaType":"org.apache.camel.component.schematron.SchematronComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-schematron","version":"4.18.0","scheme":"schematron","extendsScheme":"","syntax":"schematron:path","async":false,"api":false,"consumerOnly":fal [...]
+,
+{"component":{"kind":"component","name":"scp","title":"SCP","description":"Copy files to/from remote hosts using the secure copy protocol (SCP).","deprecated":false,"firstVersion":"2.10.0","label":"file","javaType":"org.apache.camel.component.scp.ScpComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-jsch","version":"4.18.0","scheme":"scp","extendsScheme":"ftp","syntax":"scp:host:port/directoryName","async":false,"api":false,"consumerOnly":false,"producerO [...]
+,
+{"component":{"kind":"component","name":"seda","title":"SEDA","description":"Asynchronously call another endpoint from any Camel Context in the same JVM.","deprecated":false,"firstVersion":"1.1.0","label":"core,messaging","javaType":"org.apache.camel.component.seda.SedaComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-seda","version":"4.18.0","scheme":"seda","extendsScheme":"","syntax":"seda:name","async":true,"api":false,"consumerOnly":false,"producerOn [...]
+,
+{"component":{"kind":"component","name":"servicenow","title":"ServiceNow","description":"Interact with ServiceNow via its REST API.","deprecated":false,"firstVersion":"2.18.0","label":"api,cloud,management","javaType":"org.apache.camel.component.servicenow.ServiceNowComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-servicenow","version":"4.18.0","scheme":"servicenow","extendsScheme":"","syntax":"servicenow:instanceName","async":false,"api":false,"consume [...]
+,
+{"component":{"kind":"component","name":"servlet","title":"Servlet","description":"Serve HTTP requests by a Servlet.","deprecated":false,"firstVersion":"2.0.0","label":"http","javaType":"org.apache.camel.component.servlet.ServletComponent","supportLevel":"Stable","metadata":{"protocol":"http"},"groupId":"org.apache.camel","artifactId":"camel-servlet","version":"4.18.0","scheme":"servlet","extendsScheme":"http","syntax":"servlet:contextPath","async":false,"api":false,"consumerOnly":true," [...]
+,
+{"component":{"kind":"component","name":"sftp","title":"SFTP","description":"Upload and download files to/from SFTP servers.","deprecated":false,"firstVersion":"1.1.0","label":"file","javaType":"org.apache.camel.component.file.remote.SftpComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-ftp","version":"4.18.0","scheme":"sftp","extendsScheme":"file","syntax":"sftp:host:port/directoryName","async":false,"api":false,"consumerOnly":false,"producerOnly":false [...]
+,
+{"component":{"kind":"component","name":"sjms","title":"Simple JMS","description":"Send and receive messages to/from a JMS Queue or Topic using plain JMS 1.x API.","deprecated":false,"firstVersion":"2.11.0","label":"messaging","javaType":"org.apache.camel.component.sjms.SjmsComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-sjms","version":"4.18.0","scheme":"sjms","extendsScheme":"","syntax":"sjms:destinationType:destinationName","async":true,"api":false, [...]
+,
+{"component":{"kind":"component","name":"sjms2","title":"Simple JMS2","description":"Send and receive messages to/from a JMS Queue or Topic using plain JMS 2.x API.","deprecated":false,"firstVersion":"2.19.0","label":"messaging","javaType":"org.apache.camel.component.sjms2.Sjms2Component","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-sjms2","version":"4.18.0","scheme":"sjms2","extendsScheme":"sjms","syntax":"sjms2:destinationType:destinationName","async":true," [...]
+,
+{"component":{"kind":"component","name":"slack","title":"Slack","description":"Send and receive messages to/from Slack.","deprecated":false,"firstVersion":"2.16.0","label":"social","javaType":"org.apache.camel.component.slack.SlackComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-slack","version":"4.18.0","scheme":"slack","extendsScheme":"","syntax":"slack:channel","async":false,"api":false,"consumerOnly":false,"producerOnly":false,"lenientProperties":fa [...]
+,
+{"component":{"kind":"component","name":"smb","title":"SMB","description":"Read and write files to Server Message Block (SMB) file shares.","deprecated":false,"firstVersion":"4.3.0","label":"file","javaType":"org.apache.camel.component.smb.SmbComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-smb","version":"4.18.0","scheme":"smb","extendsScheme":"","syntax":"smb:hostname:port/shareName/path","async":false,"api":false,"consumerOnly":false,"producerOnly":f [...]
+,
+{"component":{"kind":"component","name":"smooks","title":"Smooks","description":"Use Smooks to transform, route, and bind both XML and non-XML data, including EDI, CSV, JSON, and YAML.","deprecated":false,"firstVersion":"4.7.0","label":"transformation","javaType":"org.apache.camel.component.smooks.SmooksComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-smooks","version":"4.18.0","scheme":"smooks","extendsScheme":"","syntax":"smooks:smooksConfig","async": [...]
+,
+{"component":{"kind":"component","name":"smpp","title":"SMPP","description":"Send and receive SMS messages using a SMSC (Short Message Service Center).","deprecated":false,"firstVersion":"2.2.0","label":"mobile","javaType":"org.apache.camel.component.smpp.SmppComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-smpp","version":"4.18.0","scheme":"smpp","extendsScheme":"","alternativeSchemes":"smpp,smpps","syntax":"smpp:host:port","async":false,"api":false,"c [...]
+,
+{"component":{"kind":"component","name":"smpps","title":"SMPP (Secure)","description":"Send and receive SMS messages using a SMSC (Short Message Service Center).","deprecated":false,"firstVersion":"2.2.0","label":"mobile","javaType":"org.apache.camel.component.smpp.SmppComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-smpp","version":"4.18.0","scheme":"smpps","extendsScheme":"","alternativeSchemes":"smpp,smpps","syntax":"smpps:host:port","async":false,"a [...]
+,
+{"component":{"kind":"component","name":"smtp","title":"SMTP","description":"Send and receive emails using imap, pop3 and smtp protocols.","deprecated":false,"firstVersion":"1.0.0","label":"mail","javaType":"org.apache.camel.component.mail.MailComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-mail","version":"4.18.0","scheme":"smtp","extendsScheme":"","alternativeSchemes":"imap,imaps,pop3,pop3s,smtp,smtps","syntax":"smtp:host:port","alternativeSyntax":"s [...]
+,
+{"component":{"kind":"component","name":"smtps","title":"SMTPS","description":"Send and receive emails using imap, pop3 and smtp protocols.","deprecated":false,"firstVersion":"1.0.0","label":"mail","javaType":"org.apache.camel.component.mail.MailComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-mail","version":"4.18.0","scheme":"smtps","extendsScheme":"","alternativeSchemes":"imap,imaps,pop3,pop3s,smtp,smtps","syntax":"smtps:host:port","alternativeSyntax [...]
+,
+{"component":{"kind":"component","name":"snmp","title":"SNMP","description":"Receive traps and poll SNMP (Simple Network Management Protocol) capable devices.","deprecated":false,"firstVersion":"2.1.0","label":"monitoring","javaType":"org.apache.camel.component.snmp.SnmpComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-snmp","version":"4.18.0","scheme":"snmp","extendsScheme":"","syntax":"snmp:host:port","async":false,"api":false,"consumerOnly":false,"pro [...]
+,
+{"component":{"kind":"component","name":"solr","title":"Solr","description":"Perform operations against Apache Lucene Solr.","deprecated":false,"firstVersion":"4.8.0","label":"search,monitoring","javaType":"org.apache.camel.component.solr.SolrComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-solr","version":"4.18.0","scheme":"solr","extendsScheme":"","syntax":"solr:host:port/basePath","async":false,"api":false,"consumerOnly":false,"producerOnly":true,"le [...]
+,
+{"component":{"kind":"component","name":"splunk","title":"Splunk","description":"Publish or search for events in Splunk.","deprecated":false,"firstVersion":"2.13.0","label":"iot,monitoring","javaType":"org.apache.camel.component.splunk.SplunkComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-splunk","version":"4.18.0","scheme":"splunk","extendsScheme":"","syntax":"splunk:name","async":false,"api":false,"consumerOnly":false,"producerOnly":false,"lenientPro [...]
+,
+{"component":{"kind":"component","name":"splunk-hec","title":"Splunk HEC","description":"The splunk component allows publishing events in Splunk using the HTTP Event Collector.","deprecated":false,"firstVersion":"3.3.0","label":"monitoring","javaType":"org.apache.camel.component.splunkhec.SplunkHECComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-splunk-hec","version":"4.18.0","scheme":"splunk-hec","extendsScheme":"","syntax":"splunk-hec:splunkURL","asyn [...]
+,
+{"component":{"kind":"component","name":"spring-ai-chat","title":"Spring AI Chat","description":"Perform chat operations using Spring AI.","deprecated":false,"firstVersion":"4.17.0","label":"ai","javaType":"org.apache.camel.component.springai.chat.SpringAiChatComponent","supportLevel":"Preview","groupId":"org.apache.camel","artifactId":"camel-spring-ai-chat","version":"4.18.0","scheme":"spring-ai-chat","extendsScheme":"","syntax":"spring-ai-chat:chatId","async":false,"api":false,"consume [...]
+,
+{"component":{"kind":"component","name":"spring-ai-embeddings","title":"Spring AI Embeddings","description":"Spring AI Embeddings","deprecated":false,"firstVersion":"4.17.0","label":"ai","javaType":"org.apache.camel.component.springai.embeddings.SpringAiEmbeddingsComponent","supportLevel":"Preview","groupId":"org.apache.camel","artifactId":"camel-spring-ai-embeddings","version":"4.18.0","scheme":"spring-ai-embeddings","extendsScheme":"","syntax":"spring-ai-embeddings:embeddingId","async" [...]
+,
+{"component":{"kind":"component","name":"spring-ai-tools","title":"Spring AI Tools","description":"Spring AI Tools and Function Calling Features","deprecated":false,"firstVersion":"4.17.0","label":"ai","javaType":"org.apache.camel.component.springai.tools.SpringAiToolsComponent","supportLevel":"Preview","groupId":"org.apache.camel","artifactId":"camel-spring-ai-tools","version":"4.18.0","scheme":"spring-ai-tools","extendsScheme":"","syntax":"spring-ai-tools:toolId","async":false,"api":fa [...]
+,
+{"component":{"kind":"component","name":"spring-ai-vector-store","title":"Spring AI Vector Store","description":"Spring AI Vector Store","deprecated":false,"firstVersion":"4.17.0","label":"ai","javaType":"org.apache.camel.component.springai.vectorstore.SpringAiVectorStoreComponent","supportLevel":"Preview","groupId":"org.apache.camel","artifactId":"camel-spring-ai-vector-store","version":"4.18.0","scheme":"spring-ai-vector-store","extendsScheme":"","syntax":"spring-ai-vector-store:storeI [...]
+,
+{"component":{"kind":"component","name":"spring-batch","title":"Spring Batch","description":"Send messages to Spring Batch for further processing.","deprecated":false,"firstVersion":"2.10.0","label":"workflow","javaType":"org.apache.camel.component.spring.batch.SpringBatchComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-spring-batch","version":"4.18.0","scheme":"spring-batch","extendsScheme":"","syntax":"spring-batch:jobName","async":false,"api":false," [...]
+,
+{"component":{"kind":"component","name":"spring-event","title":"Spring Event","description":"Listen for Spring Application Events.","deprecated":false,"firstVersion":"1.4.0","label":"messaging","javaType":"org.apache.camel.component.event.EventComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-spring","version":"4.18.0","scheme":"spring-event","extendsScheme":"","syntax":"spring-event:name","async":false,"api":false,"consumerOnly":false,"producerOnly":fal [...]
+,
+{"component":{"kind":"component","name":"spring-jdbc","title":"Spring JDBC","description":"Access databases through SQL and JDBC with Spring Transaction support.","deprecated":false,"firstVersion":"3.10.0","label":"database","javaType":"org.apache.camel.component.spring.jdbc.SpringJdbcComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-spring-jdbc","version":"4.18.0","scheme":"spring-jdbc","extendsScheme":"","syntax":"spring-jdbc:dataSourceName","async":fa [...]
+,
+{"component":{"kind":"component","name":"spring-ldap","title":"Spring LDAP","description":"Perform searches in LDAP servers using filters as the message payload.","deprecated":false,"firstVersion":"2.11.0","label":"security","javaType":"org.apache.camel.component.springldap.SpringLdapComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-spring-ldap","version":"4.18.0","scheme":"spring-ldap","extendsScheme":"","syntax":"spring-ldap:templateName","async":false [...]
+,
+{"component":{"kind":"component","name":"spring-rabbitmq","title":"Spring RabbitMQ","description":"Send and receive messages from RabbitMQ using the Spring RabbitMQ client.","deprecated":false,"firstVersion":"3.8.0","label":"messaging","javaType":"org.apache.camel.component.springrabbit.SpringRabbitMQComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-spring-rabbitmq","version":"4.18.0","scheme":"spring-rabbitmq","extendsScheme":"","syntax":"spring-rabbitm [...]
+,
+{"component":{"kind":"component","name":"spring-redis","title":"Spring Redis","description":"Send and receive messages from Redis.","deprecated":false,"firstVersion":"2.11.0","label":"cache","javaType":"org.apache.camel.component.redis.RedisComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-spring-redis","version":"4.18.0","scheme":"spring-redis","extendsScheme":"","syntax":"spring-redis:host:port","async":false,"api":false,"consumerOnly":false,"producerO [...]
+,
+{"component":{"kind":"component","name":"spring-ws","title":"Spring WebService","description":"Access external web services as a client or expose your own web services.","deprecated":false,"firstVersion":"2.6.0","label":"webservice","javaType":"org.apache.camel.component.spring.ws.SpringWebserviceComponent","supportLevel":"Stable","metadata":{"protocol":"http"},"groupId":"org.apache.camel","artifactId":"camel-spring-ws","version":"4.18.0","scheme":"spring-ws","extendsScheme":"","syntax": [...]
+,
+{"component":{"kind":"component","name":"sql","title":"SQL","description":"Perform SQL queries using Spring JDBC.","deprecated":false,"firstVersion":"1.4.0","label":"database","javaType":"org.apache.camel.component.sql.SqlComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-sql","version":"4.18.0","scheme":"sql","extendsScheme":"","syntax":"sql:query","async":false,"api":false,"consumerOnly":false,"producerOnly":false,"lenientProperties":false,"browsable":f [...]
+,
+{"component":{"kind":"component","name":"sql-stored","title":"SQL Stored Procedure","description":"Perform SQL queries as a JDBC Stored Procedures using Spring JDBC.","deprecated":false,"firstVersion":"2.17.0","label":"database","javaType":"org.apache.camel.component.sql.stored.SqlStoredComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-sql","version":"4.18.0","scheme":"sql-stored","extendsScheme":"","syntax":"sql-stored:template","async":false,"api":fals [...]
+,
+{"component":{"kind":"component","name":"ssh","title":"SSH","description":"Execute commands on remote hosts using SSH.","deprecated":false,"firstVersion":"2.10.0","label":"file","javaType":"org.apache.camel.component.ssh.SshComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-ssh","version":"4.18.0","scheme":"ssh","extendsScheme":"","syntax":"ssh:host:port","alternativeSyntax":"ssh:username:password@host:port","async":false,"api":false,"consumerOnly":false, [...]
+,
+{"component":{"kind":"component","name":"stax","title":"StAX","description":"Process XML payloads by a SAX ContentHandler.","deprecated":false,"firstVersion":"2.9.0","label":"transformation","javaType":"org.apache.camel.component.stax.StAXComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-stax","version":"4.18.0","scheme":"stax","extendsScheme":"","syntax":"stax:contentHandlerClass","async":false,"api":false,"consumerOnly":false,"producerOnly":true,"lenie [...]
+,
+{"component":{"kind":"component","name":"stitch","title":"Stitch","description":"Stitch is a cloud ETL service that integrates various data sources into a central data warehouse through various integrations.","deprecated":false,"firstVersion":"3.8.0","label":"cloud,api,saas,bigdata","javaType":"org.apache.camel.component.stitch.StitchComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-stitch","version":"4.18.0","scheme":"stitch","extendsScheme":"","syntax" [...]
+,
+{"component":{"kind":"component","name":"stream","title":"Stream","description":"Read from system-in and write to system-out and system-err streams.","deprecated":false,"firstVersion":"1.3.0","label":"file,core","javaType":"org.apache.camel.component.stream.StreamComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-stream","version":"4.18.0","scheme":"stream","extendsScheme":"","syntax":"stream:kind","async":false,"api":false,"consumerOnly":false,"producerO [...]
+,
+{"component":{"kind":"component","name":"string-template","title":"String Template","description":"Transform messages using StringTemplate engine.","deprecated":false,"firstVersion":"1.2.0","label":"transformation,script","javaType":"org.apache.camel.component.stringtemplate.StringTemplateComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-stringtemplate","version":"4.18.0","scheme":"string-template","extendsScheme":"","syntax":"string-template:resourceUri [...]
+,
+{"component":{"kind":"component","name":"stripe","title":"Stripe","description":"Interact with the Stripe payment platform.","deprecated":false,"firstVersion":"4.17.0","label":"saas,finance","javaType":"org.apache.camel.component.stripe.StripeComponent","supportLevel":"Preview","groupId":"org.apache.camel","artifactId":"camel-stripe","version":"4.18.0","scheme":"stripe","extendsScheme":"","syntax":"stripe:operation","async":false,"api":false,"consumerOnly":false,"producerOnly":true,"leni [...]
+,
+{"component":{"kind":"component","name":"stub","title":"Stub","description":"Stub out any physical endpoints while in development or testing.","deprecated":false,"firstVersion":"2.10.0","label":"core,testing","javaType":"org.apache.camel.component.stub.StubComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-stub","version":"4.18.0","scheme":"stub","extendsScheme":"","syntax":"stub:name","async":true,"api":false,"consumerOnly":false,"producerOnly":false,"le [...]
+,
+{"component":{"kind":"component","name":"tahu-edge","title":"Tahu Edge Node / Device","description":"Sparkplug B Edge Node and Device support over MQTT using Eclipse Tahu","deprecated":false,"firstVersion":"4.8.0","label":"messaging,iot,monitoring","javaType":"org.apache.camel.component.tahu.TahuEdgeComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-tahu","version":"4.18.0","scheme":"tahu-edge","extendsScheme":"","syntax":"tahu-edge:groupId/edgeNode","alt [...]
+,
+{"component":{"kind":"component","name":"tahu-host","title":"Tahu Host Application","description":"Sparkplug B Host Application support over MQTT using Eclipse Tahu","deprecated":false,"firstVersion":"4.8.0","label":"messaging,iot,monitoring","javaType":"org.apache.camel.component.tahu.TahuHostComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-tahu","version":"4.18.0","scheme":"tahu-host","extendsScheme":"","syntax":"tahu-host:hostId","async":false,"api": [...]
+,
+{"component":{"kind":"component","name":"telegram","title":"Telegram","description":"Send and receive messages using the Telegram Bot API.","deprecated":false,"firstVersion":"2.18.0","label":"cloud,api,chat","javaType":"org.apache.camel.component.telegram.TelegramComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-telegram","version":"4.18.0","scheme":"telegram","extendsScheme":"","syntax":"telegram:type","async":false,"api":false,"consumerOnly":false,"pro [...]
+,
+{"component":{"kind":"component","name":"tensorflow-serving","title":"TensorFlow Serving","description":"Provide access to TensorFlow Serving model servers to run inference with TensorFlow saved models remotely","deprecated":false,"firstVersion":"4.10.0","label":"ai","javaType":"org.apache.camel.component.tensorflow.serving.TensorFlowServingComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-tensorflow-serving","version":"4.18.0","scheme":"tensorflow-servi [...]
+,
+{"component":{"kind":"component","name":"thrift","title":"Thrift","description":"Call and expose remote procedures (RPC) with Apache Thrift data format and serialization mechanism.","deprecated":false,"firstVersion":"2.20.0","label":"rpc,transformation","javaType":"org.apache.camel.component.thrift.ThriftComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-thrift","version":"4.18.0","scheme":"thrift","extendsScheme":"","syntax":"thrift:host:port/service","a [...]
+,
+{"component":{"kind":"component","name":"thymeleaf","title":"Thymeleaf","description":"Transform messages using a Thymeleaf template.","deprecated":false,"firstVersion":"4.1.0","label":"transformation","javaType":"org.apache.camel.component.thymeleaf.ThymeleafComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-thymeleaf","version":"4.18.0","scheme":"thymeleaf","extendsScheme":"","syntax":"thymeleaf:resourceUri","async":false,"api":false,"consumerOnly":fals [...]
+,
+{"component":{"kind":"component","name":"tika","title":"Tika","description":"Parse documents and extract metadata and text using Apache Tika.","deprecated":false,"firstVersion":"2.19.0","label":"document,transformation","javaType":"org.apache.camel.component.tika.TikaComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-tika","version":"4.18.0","scheme":"tika","extendsScheme":"","syntax":"tika:operation","async":false,"api":false,"consumerOnly":false,"produc [...]
+,
+{"component":{"kind":"component","name":"timer","title":"Timer","description":"Generate messages in specified intervals using java.util.Timer.","deprecated":false,"firstVersion":"1.0.0","label":"core,scheduling","javaType":"org.apache.camel.component.timer.TimerComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-timer","version":"4.18.0","scheme":"timer","extendsScheme":"","syntax":"timer:timerName","async":false,"api":false,"consumerOnly":true,"producerOn [...]
+,
+{"component":{"kind":"component","name":"twilio","title":"Twilio","description":"Interact with Twilio REST APIs using Twilio Java SDK.","deprecated":false,"firstVersion":"2.20.0","label":"api,messaging,cloud","javaType":"org.apache.camel.component.twilio.TwilioComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-twilio","version":"4.18.0","scheme":"twilio","extendsScheme":"","syntax":"twilio:apiName/methodName","async":false,"api":true,"apiSyntax":"apiName/ [...]
+,
+{"component":{"kind":"component","name":"twitter-directmessage","title":"Twitter Direct Message","description":"Send and receive Twitter direct messages.","deprecated":false,"firstVersion":"2.10.0","label":"saas,social","javaType":"org.apache.camel.component.twitter.directmessage.TwitterDirectMessageComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-twitter","version":"4.18.0","scheme":"twitter-directmessage","extendsScheme":"","syntax":"twitter-directmes [...]
+,
+{"component":{"kind":"component","name":"twitter-search","title":"Twitter Search","description":"Access Twitter Search.","deprecated":false,"firstVersion":"2.10.0","label":"saas,social","javaType":"org.apache.camel.component.twitter.search.TwitterSearchComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-twitter","version":"4.18.0","scheme":"twitter-search","extendsScheme":"","syntax":"twitter-search:keywords","async":false,"api":false,"consumerOnly":false, [...]
+,
+{"component":{"kind":"component","name":"twitter-timeline","title":"Twitter Timeline","description":"Send tweets and receive tweets from user's timeline.","deprecated":false,"firstVersion":"2.10.0","label":"saas,social","javaType":"org.apache.camel.component.twitter.timeline.TwitterTimelineComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-twitter","version":"4.18.0","scheme":"twitter-timeline","extendsScheme":"","syntax":"twitter-timeline:timelineType"," [...]
+,
+{"component":{"kind":"component","name":"undertow","title":"Undertow","description":"Expose HTTP and WebSocket endpoints and access external HTTP/WebSocket servers.","deprecated":false,"firstVersion":"2.16.0","label":"http,networking","javaType":"org.apache.camel.component.undertow.UndertowComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-undertow","version":"4.18.0","scheme":"undertow","extendsScheme":"","syntax":"undertow:httpURI","async":true,"api":fa [...]
+,
+{"component":{"kind":"component","name":"validator","title":"Validator","description":"Validate the payload using XML Schema and JAXP Validation.","deprecated":false,"firstVersion":"1.1.0","label":"core,validation","javaType":"org.apache.camel.component.validator.ValidatorComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-validator","version":"4.18.0","scheme":"validator","extendsScheme":"","syntax":"validator:resourceUri","async":false,"api":false,"consu [...]
+,
+{"component":{"kind":"component","name":"velocity","title":"Velocity","description":"Transform messages using a Velocity template.","deprecated":false,"firstVersion":"1.2.0","label":"transformation","javaType":"org.apache.camel.component.velocity.VelocityComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-velocity","version":"4.18.0","scheme":"velocity","extendsScheme":"","syntax":"velocity:resourceUri","async":false,"api":false,"consumerOnly":false,"produ [...]
+,
+{"component":{"kind":"component","name":"vertx","title":"Vert.x","description":"Send and receive messages to/from Vert.x Event Bus.","deprecated":false,"firstVersion":"2.12.0","label":"messaging","javaType":"org.apache.camel.component.vertx.VertxComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-vertx","version":"4.18.0","scheme":"vertx","extendsScheme":"","syntax":"vertx:address","async":true,"api":false,"consumerOnly":false,"producerOnly":false,"lenient [...]
+,
+{"component":{"kind":"component","name":"vertx-http","title":"Vert.x HTTP Client","description":"Send requests to external HTTP servers using Vert.x","deprecated":false,"firstVersion":"3.5.0","label":"http","javaType":"org.apache.camel.component.vertx.http.VertxHttpComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-vertx-http","version":"4.18.0","scheme":"vertx-http","extendsScheme":"","syntax":"vertx-http:httpUri","async":false,"api":false,"consumerOnly" [...]
+,
+{"component":{"kind":"component","name":"vertx-websocket","title":"Vert.x WebSocket","description":"Expose WebSocket endpoints and connect to remote WebSocket servers using Vert.x","deprecated":false,"firstVersion":"3.5.0","label":"http,networking","javaType":"org.apache.camel.component.vertx.websocket.VertxWebsocketComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-vertx-websocket","version":"4.18.0","scheme":"vertx-websocket","extendsScheme":"","syntax" [...]
+,
+{"component":{"kind":"component","name":"wasm","title":"Wasm","description":"Invoke Wasm functions.","deprecated":false,"firstVersion":"4.4.0","label":"core,script","javaType":"org.apache.camel.component.wasm.WasmComponent","supportLevel":"Experimental","groupId":"org.apache.camel","artifactId":"camel-wasm","version":"4.18.0","scheme":"wasm","extendsScheme":"","syntax":"wasm:functionName","async":false,"api":false,"consumerOnly":false,"producerOnly":true,"lenientProperties":false,"browsa [...]
+,
+{"component":{"kind":"component","name":"weather","title":"Weather","description":"Poll the weather information from Open Weather Map.","deprecated":false,"firstVersion":"2.12.0","label":"api","javaType":"org.apache.camel.component.weather.WeatherComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-weather","version":"4.18.0","scheme":"weather","extendsScheme":"","syntax":"weather:name","async":false,"api":false,"consumerOnly":false,"producerOnly":false,"le [...]
+,
+{"component":{"kind":"component","name":"weaviate","title":"weaviate","description":"Perform operations on the Weaviate Vector Database.","deprecated":false,"firstVersion":"4.12.0","label":"database,ai","javaType":"org.apache.camel.component.weaviate.WeaviateVectorDbComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-weaviate","version":"4.18.0","scheme":"weaviate","extendsScheme":"","syntax":"weaviate:collection","async":false,"api":false,"consumerOnly":f [...]
+,
+{"component":{"kind":"component","name":"web3j","title":"Web3j Ethereum Blockchain","description":"Interact with Ethereum nodes using web3j client API.","deprecated":false,"firstVersion":"2.22.0","label":"blockchain","javaType":"org.apache.camel.component.web3j.Web3jComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-web3j","version":"4.18.0","scheme":"web3j","extendsScheme":"","syntax":"web3j:nodeAddress","async":false,"api":false,"consumerOnly":false,"pr [...]
+,
+{"component":{"kind":"component","name":"webhook","title":"Webhook","description":"Expose webhook endpoints to receive push notifications for other Camel components.","deprecated":false,"firstVersion":"3.0.0","label":"cloud","javaType":"org.apache.camel.component.webhook.WebhookComponent","supportLevel":"Stable","metadata":{"protocol":"http"},"groupId":"org.apache.camel","artifactId":"camel-webhook","version":"4.18.0","scheme":"webhook","extendsScheme":"","syntax":"webhook:endpointUri"," [...]
+,
+{"component":{"kind":"component","name":"whatsapp","title":"WhatsApp","description":"Send messages to WhatsApp.","deprecated":false,"firstVersion":"3.19.0","label":"cloud,api,chat","javaType":"org.apache.camel.component.whatsapp.WhatsAppComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-whatsapp","version":"4.18.0","scheme":"whatsapp","extendsScheme":"","syntax":"whatsapp:phoneNumberId","async":false,"api":false,"consumerOnly":false,"producerOnly":true,"l [...]
+,
+{"component":{"kind":"component","name":"wordpress","title":"WordPress","description":"Manage posts and users using the WordPress API.","deprecated":false,"firstVersion":"2.21.0","label":"cloud,api,cms","javaType":"org.apache.camel.component.wordpress.WordpressComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-wordpress","version":"4.18.0","scheme":"wordpress","extendsScheme":"","syntax":"wordpress:operation","async":false,"api":false,"consumerOnly":false [...]
+,
+{"component":{"kind":"component","name":"workday","title":"Workday","description":"Detect and parse documents using Workday.","deprecated":false,"firstVersion":"3.1.0","label":"cloud,api,saas","javaType":"org.apache.camel.component.workday.WorkdayComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-workday","version":"4.18.0","scheme":"workday","extendsScheme":"","syntax":"workday:entity:path","async":false,"api":false,"consumerOnly":false,"producerOnly":tr [...]
+,
+{"component":{"kind":"component","name":"xchange","title":"XChange","description":"Access market data and trade on Bitcoin and Altcoin exchanges.","deprecated":false,"firstVersion":"2.21.0","label":"blockchain","javaType":"org.apache.camel.component.xchange.XChangeComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-xchange","version":"4.18.0","scheme":"xchange","extendsScheme":"","syntax":"xchange:name","async":false,"api":false,"consumerOnly":false,"produ [...]
+,
+{"component":{"kind":"component","name":"xj","title":"XJ","description":"Transform JSON and XML message using a XSLT.","deprecated":false,"firstVersion":"3.0.0","label":"transformation","javaType":"org.apache.camel.component.xj.XJComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-xj","version":"4.18.0","scheme":"xj","extendsScheme":"","syntax":"xj:resourceUri","async":false,"api":false,"consumerOnly":false,"producerOnly":true,"lenientProperties":false,"br [...]
+,
+{"component":{"kind":"component","name":"xmlsecurity-sign","title":"XML Security Sign","description":"Sign XML payloads using the XML signature specification.","deprecated":false,"firstVersion":"2.12.0","label":"security,transformation","javaType":"org.apache.camel.component.xmlsecurity.XmlSignerComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-xmlsecurity","version":"4.18.0","scheme":"xmlsecurity-sign","extendsScheme":"","syntax":"xmlsecurity-sign:name" [...]
+,
+{"component":{"kind":"component","name":"xmlsecurity-verify","title":"XML Security Verify","description":"Verify XML payloads using the XML signature specification.","deprecated":false,"firstVersion":"2.12.0","label":"security,transformation","javaType":"org.apache.camel.component.xmlsecurity.XmlVerifierComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-xmlsecurity","version":"4.18.0","scheme":"xmlsecurity-verify","extendsScheme":"","syntax":"xmlsecurity- [...]
+,
+{"component":{"kind":"component","name":"xmpp","title":"XMPP","description":"Send and receive messages to/from an XMPP chat server.","deprecated":false,"firstVersion":"1.0","label":"chat,messaging","javaType":"org.apache.camel.component.xmpp.XmppComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-xmpp","version":"4.18.0","scheme":"xmpp","extendsScheme":"","syntax":"xmpp:host:port/participant","alternativeSyntax":"xmpp:user:password@host:port/participant"," [...]
+,
+{"component":{"kind":"component","name":"xquery","title":"XQuery","description":"Query and/or transform XML payloads using XQuery and Saxon.","deprecated":false,"firstVersion":"1.0.0","label":"transformation","javaType":"org.apache.camel.component.xquery.XQueryComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-saxon","version":"4.18.0","scheme":"xquery","extendsScheme":"","syntax":"xquery:resourceUri","async":false,"api":false,"consumerOnly":false,"produc [...]
+,
+{"component":{"kind":"component","name":"xslt","title":"XSLT","description":"Transforms XML payload using an XSLT template.","deprecated":false,"firstVersion":"1.3.0","label":"core,transformation","javaType":"org.apache.camel.component.xslt.XsltComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-xslt","version":"4.18.0","scheme":"xslt","extendsScheme":"","syntax":"xslt:resourceUri","async":false,"api":false,"consumerOnly":false,"producerOnly":true,"lenient [...]
+,
+{"component":{"kind":"component","name":"xslt-saxon","title":"XSLT Saxon","description":"Transform XML payloads using an XSLT template using Saxon.","deprecated":false,"firstVersion":"3.0.0","label":"core,transformation","javaType":"org.apache.camel.component.xslt.saxon.XsltSaxonComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-xslt-saxon","version":"4.18.0","scheme":"xslt-saxon","extendsScheme":"","syntax":"xslt-saxon:resourceUri","async":false,"api":fa [...]
+,
+{"component":{"kind":"component","name":"zeebe","title":"Zeebe","description":"Zeebe component which integrates with Camunda Zeebe to interact with the API.","deprecated":false,"firstVersion":"3.21.0","label":"workflow,saas","javaType":"org.apache.camel.component.zeebe.ZeebeComponent","supportLevel":"Preview","groupId":"org.apache.camel","artifactId":"camel-zeebe","version":"4.18.0","scheme":"zeebe","extendsScheme":"","syntax":"zeebe:operationName","async":false,"api":false,"consumerOnly [...]
+,
+{"component":{"kind":"component","name":"zendesk","title":"Zendesk","description":"Manage Zendesk tickets, users, organizations, etc.","deprecated":false,"firstVersion":"2.19.0","label":"cloud,api,saas","javaType":"org.apache.camel.component.zendesk.ZendeskComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-zendesk","version":"4.18.0","scheme":"zendesk","extendsScheme":"","syntax":"zendesk:methodName","async":false,"api":true,"apiSyntax":"methodName","cons [...]
+,
+{"component":{"kind":"component","name":"zookeeper","title":"ZooKeeper","description":"Manage ZooKeeper clusters.","deprecated":false,"firstVersion":"2.9.0","label":"clustering,management,bigdata","javaType":"org.apache.camel.component.zookeeper.ZooKeeperComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-zookeeper","version":"4.18.0","scheme":"zookeeper","extendsScheme":"","syntax":"zookeeper:serverUrls/path","async":false,"api":false,"consumerOnly":false [...]
+,
+{"component":{"kind":"component","name":"zookeeper-master","title":"ZooKeeper Master","description":"Have only a single consumer in a cluster consuming from a given endpoint; with automatic failover if the JVM dies.","deprecated":false,"firstVersion":"2.19.0","label":"clustering,management,bigdata","javaType":"org.apache.camel.component.zookeepermaster.MasterComponent","supportLevel":"Stable","groupId":"org.apache.camel","artifactId":"camel-zookeeper-master","version":"4.18.0","scheme":" [...]
+]
\ No newline at end of file
diff --git a/karavan-vscode/metadata/kamelets.yaml b/karavan-vscode/metadata/kamelets.yaml
new file mode 100644
index 00000000..14673930
--- /dev/null
+++ b/karavan-vscode/metadata/kamelets.yaml
@@ -0,0 +1,22588 @@
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: avro-deserialize-action
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "Actions"
+ camel.apache.org/kamelet.namespace: "Transformation"
+ labels:
+ camel.apache.org/kamelet.type: "action"
+spec:
+ definition:
+ title: "Avro Deserialize Action"
+ description: "Deserialize payload to Avro."
+ type: object
+ properties:
+ schema:
+ title: Schema
+ description: The Avro schema to use during serialization (as single-line, using JSON format)
+ type: string
+ example: '{"type": "record", "namespace": "com.example", "name": "FullName", "fields": [{"name": "first", "type": "string"},{"name": "last", "type": "string"}]}'
+ validate:
+ title: Validate
+ description: Indicates if the content must be validated against the schema
+ type: boolean
+ default: true
+ dependencies:
+ - "camel:kamelet"
+ - "camel:core"
+ - "camel:jackson-avro"
+ template:
+ beans:
+ - name: schemaResolver
+ type: "#class:org.apache.camel.component.jackson.avro.transform.AvroSchemaResolver"
+ properties:
+ validate: "{{validate}}"
+ schema: "{{schema:}}"
+ from:
+ uri: kamelet:source
+ steps:
+ - unmarshal:
+ avro:
+ library: Jackson
+ unmarshalType: com.fasterxml.jackson.databind.JsonNode
+ schemaResolver: "#bean:{{schemaResolver}}"
+ - removeHeader:
+ name: "Content-Type"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: avro-serialize-action
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "Actions"
+ camel.apache.org/kamelet.namespace: "Transformation"
+ labels:
+ camel.apache.org/kamelet.type: "action"
+spec:
+ definition:
+ title: "Avro Serialize Action"
+ description: "Serialize payload to Avro."
+ type: object
+ properties:
+ schema:
+ title: Schema
+ description: The Avro schema to use during serialization (as single-line, using JSON format)
+ type: string
+ example: '{"type": "record", "namespace": "com.example", "name": "FullName", "fields": [{"name": "first", "type": "string"},{"name": "last", "type": "string"}]}'
+ validate:
+ title: Validate
+ description: Indicates if the content must be validated against the schema
+ type: boolean
+ default: true
+ dependencies:
+ - "camel:kamelet"
+ - "camel:core"
+ - "camel:jackson-avro"
+ template:
+ beans:
+ - name: schemaResolver
+ type: "#class:org.apache.camel.component.jackson.avro.transform.AvroSchemaResolver"
+ properties:
+ validate: "{{validate}}"
+ schema: "{{schema:}}"
+ from:
+ uri: kamelet:source
+ steps:
+ - marshal:
+ avro:
+ library: Jackson
+ unmarshalType: com.fasterxml.jackson.databind.JsonNode
+ schemaResolver: "#bean:{{schemaResolver}}"
+ - setHeader:
+ name: "Content-Type"
+ constant: "application/avro"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: aws-bedrock-agent-runtime-sink
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/PjxzdmcgZGF0YS1uYW1lPSJMYXllciAxIiBpZD0iTGF5ZXJfMSIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQzMC40MiwxOTYuMzJjOC0xMS4zOSwyMS4xNS0zOC4zMywwLTcyLjEzYTUyLjc5LDUyLjc5LDAsMCwwLTE3LjA2LTE3LjMxYy0xLjUzLTgtNy41NC0yNy4yNi0zMS40Mi00My45MUMzNTksNDcsMzI1LjUyLDQ5LjUzLDMxOS40NCw1MC4xNmE2NC4yNyw2NC4yNywwLDAsMC0xNi4wNy0yLjk0Yy0xNy4xNy0uODEtMzAuMzcsMy44OS0zOS43OCwxNC [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "AWS Bedrock"
+ camel.apache.org/kamelet.namespace: "AWS"
+ labels:
+ camel.apache.org/kamelet.type: "sink"
+spec:
+ definition:
+ title: "AWS Bedrock Agent Runtime Sink"
+ description: Send data for invoking a knowledge base from AWS Bedrock.
+ required:
+ - modelId
+ - knowledgeBaseId
+ - region
+ type: object
+ properties:
+ modelId:
+ title: Model Id
+ description: The model Id to be used to generate responses.
+ type: string
+ enum: ["anthropic.claude-instant-v1", "anthropic.claude-v2", "anthropic.claude-v2:1", "anthropic.claude-3-sonnet-20240229-v1:0"]
+ knowledgeBaseId:
+ title: Knowledge Base Id
+ description: The Knowledge Base Id to be used to retrieve and generate responses.
+ type: string
+ accessKey:
+ title: Access Key
+ description: The access key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ secretKey:
+ title: Secret Key
+ description: The secret key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ region:
+ title: AWS Region
+ description: The AWS region to access.
+ type: string
+ enum: ["us-east-1", "us-west-1"]
+ useDefaultCredentialsProvider:
+ title: Default Credentials Provider
+ description: If true, the Bedrock client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
+ type: boolean
+ default: false
+ useProfileCredentialsProvider:
+ title: Profile Credentials Provider
+ description: Set whether the Bedrock client should expect to load credentials through a profile credentials provider.
+ type: boolean
+ default: false
+ useSessionCredentials:
+ title: Session Credentials
+ description: Set whether the Bedrock client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in Bedrock.
+ type: boolean
+ default: false
+ profileCredentialsName:
+ title: Profile Credentials Name
+ description: If using a profile credentials provider this parameter sets the profile name.
+ type: string
+ sessionToken:
+ title: Session Token
+ description: Amazon AWS Session Token used when the user needs to assume a IAM role.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ uriEndpointOverride:
+ title: Overwrite Endpoint URI
+ description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
+ type: string
+ overrideEndpoint:
+ title: Endpoint Overwrite
+ description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
+ type: boolean
+ default: false
+ dependencies:
+ - "camel:core"
+ - "camel:aws-bedrock"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: "kamelet:source"
+ steps:
+ - to:
+ uri: "aws-bedrock-agent-runtime:bedrock-knowledge"
+ parameters:
+ secretKey: "{{?secretKey}}"
+ accessKey: "{{?accessKey}}"
+ region: "{{region}}"
+ modelId: "{{modelId}}"
+ knowledgeBaseId: "{{knowledgeBaseId}}"
+ operation: retrieveAndGenerate
+ useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+ useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
+ useSessionCredentials: "{{useSessionCredentials}}"
+ uriEndpointOverride: "{{?uriEndpointOverride}}"
+ profileCredentialsName: "{{?profileCredentialsName}}"
+ sessionToken: "{{?sessionToken}}"
+ overrideEndpoint: "{{overrideEndpoint}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: aws-bedrock-text-sink
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/PjxzdmcgZGF0YS1uYW1lPSJMYXllciAxIiBpZD0iTGF5ZXJfMSIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQzMC40MiwxOTYuMzJjOC0xMS4zOSwyMS4xNS0zOC4zMywwLTcyLjEzYTUyLjc5LDUyLjc5LDAsMCwwLTE3LjA2LTE3LjMxYy0xLjUzLTgtNy41NC0yNy4yNi0zMS40Mi00My45MUMzNTksNDcsMzI1LjUyLDQ5LjUzLDMxOS40NCw1MC4xNmE2NC4yNyw2NC4yNywwLDAsMC0xNi4wNy0yLjk0Yy0xNy4xNy0uODEtMzAuMzcsMy44OS0zOS43OCwxNC [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "AWS Bedrock"
+ camel.apache.org/kamelet.namespace: "AWS"
+ labels:
+ camel.apache.org/kamelet.type: "sink"
+spec:
+ definition:
+ title: "AWS Bedrock Text Sink"
+ description: Send data for invoking a text model of Amazon Bedrock.
+ required:
+ - modelId
+ - region
+ type: object
+ properties:
+ modelId:
+ title: Model Id
+ description: The model Id to be used.
+ type: string
+ enum: ["amazon.titan-text-express-v1", "amazon.titan-text-lite-v1", "ai21.j2-ultra-v1", "ai21.j2-mid-v1", "anthropic.claude-instant-v1", "anthropic.claude-v2", "anthropic.claude-v2:1", "anthropic.claude-3-sonnet-20240229-v1:0"]
+ accessKey:
+ title: Access Key
+ description: The access key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ secretKey:
+ title: Secret Key
+ description: The secret key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ region:
+ title: AWS Region
+ description: The AWS region to access.
+ type: string
+ enum: ["us-east-1", "us-west-1", "ap-southeast-1", "ap-northeast-1", "eu-central-1"]
+ useDefaultCredentialsProvider:
+ title: Default Credentials Provider
+ description: If true, the Bedrock client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
+ type: boolean
+ default: false
+ useProfileCredentialsProvider:
+ title: Profile Credentials Provider
+ description: Set whether the Bedrock client should expect to load credentials through a profile credentials provider.
+ type: boolean
+ default: false
+ useSessionCredentials:
+ title: Session Credentials
+ description: Set whether the Bedrock client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in Bedrock.
+ type: boolean
+ default: false
+ profileCredentialsName:
+ title: Profile Credentials Name
+ description: If using a profile credentials provider this parameter sets the profile name.
+ type: string
+ sessionToken:
+ title: Session Token
+ description: Amazon AWS Session Token used when the user needs to assume a IAM role.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ uriEndpointOverride:
+ title: Overwrite Endpoint URI
+ description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
+ type: string
+ overrideEndpoint:
+ title: Endpoint Overwrite
+ description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
+ type: boolean
+ default: false
+ dependencies:
+ - "camel:core"
+ - "camel:aws-bedrock"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: "kamelet:source"
+ steps:
+ - setHeader:
+ name: "CamelAwsBedrockContentType"
+ constant: "application/json"
+ - setHeader:
+ name: "CamelAwsBedrockAcceptContentType"
+ constant: "application/json"
+ - to:
+ uri: "aws-bedrock:bedrock-text"
+ parameters:
+ secretKey: "{{?secretKey}}"
+ accessKey: "{{?accessKey}}"
+ region: "{{region}}"
+ modelId: "{{modelId}}"
+ operation: invokeTextModel
+ useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+ useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
+ useSessionCredentials: "{{useSessionCredentials}}"
+ uriEndpointOverride: "{{?uriEndpointOverride}}"
+ profileCredentialsName: "{{?profileCredentialsName}}"
+ sessionToken: "{{?sessionToken}}"
+ overrideEndpoint: "{{overrideEndpoint}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: aws-cloudtrail-source
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgNzQuMzc1IDg1IiBmaWxsPSIjZmZmIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiIHN0cm9rZT0iIzAwMCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBzdHJva2UtbGluZWpvaW49InJvdW5kIj48dXNlIHhsaW5rOmhyZWY9IiNBIiB4PSIyLjE4OCIgeT0iMi41Ii8+PHN5bWJvbCBpZD0iQSIgb3ZlcmZsb3c9InZpc2libGUiPjxnIHN0cm9rZT0ibm9uZSI+PHBhdGggZD0iTTkuOTY2IDM1LjQ5M2wtMi4yODguMT [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "AWS Cloudtrail"
+ camel.apache.org/kamelet.namespace: "AWS"
+ labels:
+ camel.apache.org/kamelet.type: "source"
+spec:
+ definition:
+ title: "AWS Cloudtrail Source"
+ description: Receive data from an AWS Cloudtrail.
+ required:
+ - region
+ type: object
+ properties:
+ accessKey:
+ title: Access Key
+ description: The access key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ secretKey:
+ title: Secret Key
+ description: The secret key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ region:
+ title: AWS Region
+ description: The AWS region to access.
+ type: string
+ enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
+ useDefaultCredentialsProvider:
+ title: Default Credentials Provider
+ description: If true, the Cloudtrail client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
+ type: boolean
+ default: false
+ useProfileCredentialsProvider:
+ title: Profile Credentials Provider
+ description: Set whether the Cloudtrail client should expect to load credentials through a profile credentials provider.
+ type: boolean
+ default: false
+ useSessionCredentials:
+ title: Session Credentials
+ description: Set whether the CloudTrail client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in CloudTrail.
+ type: boolean
+ default: false
+ profileCredentialsName:
+ title: Profile Credentials Name
+ description: If using a profile credentials provider this parameter sets the profile name.
+ type: string
+ sessionToken:
+ title: Session Token
+ description: Amazon AWS Session Token used when the user needs to assume a IAM role.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ uriEndpointOverride:
+ title: Overwrite Endpoint URI
+ description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
+ type: string
+ overrideEndpoint:
+ title: Endpoint Overwrite
+ description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
+ type: boolean
+ default: false
+ maxResults:
+ title: Max Results
+ description: Maximum number of records that are fetched in each poll.
+ type: integer
+ default: 1
+ eventSource:
+ title: Event Source
+ description: Specify an event source to select events.
+ type: string
+ example: secretsmanager.amazonaws.com
+ dataTypes:
+ out:
+ default: text
+ headers:
+ CamelAwsCloudTrailEventId:
+ title: Cloudtrail Event Id
+ description: The event ID of the cloud trail event consumed
+ type: string
+ CamelAwsCloudTrailEventName:
+ title: Cloudtrail Event Name
+ description: The event Name of the cloud trail event consumed
+ type: string
+ CamelAwsCloudTrailEventSource:
+ title: Cloudtrail Event Source
+ description: The event Source of the cloud trail event consumed
+ type: string
+ CamelAwsCloudTrailEventUsername:
+ title: Cloudtrail Event Username
+ description: The associated username of the event of the cloud trail event consumed
+ type: string
+ types:
+ text:
+ format: "text-plain"
+ description: Default text representation of the Cloudtrail Event
+ mediaType: text/plain
+ cloudevents:
+ format: "aws-cloudtrail:application-cloudevents"
+ description: Data type transformer converts AWS Cloudtrail lookup events response to CloudEvent v1_0 data format. The data type sets Camel specific CloudEvent headers with values extracted from AWS Cloudtrail lookup events response.
+ headers:
+ CamelCloudEventID:
+ title: CloudEvent ID
+ description: The Camel exchange id set as event id
+ type: string
+ CamelCloudEventType:
+ title: CloudEvent Type
+ description: The event type
+ default: "org.apache.camel.event.aws.cloudtrail.lookupEvents"
+ type: string
+ CamelCloudEventSource:
+ title: CloudEvent Source
+ description: The event source. By default, the Cloudtrail event source name with prefix "aws.cloudtrail.event.source.".
+ type: string
+ CamelCloudEventSubject:
+ title: CloudEvent Subject
+ description: The event subject. The Cloudtrail Event Id.
+ type: string
+ CamelCloudEventTime:
+ title: CloudEvent Time
+ description: The exchange creation timestamp as event time.
+ type: string
+ dependencies:
+ - "camel:core"
+ - "camel:aws-cloudtrail"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: "aws-cloudtrail:cloudtrail"
+ parameters:
+ secretKey: "{{?secretKey}}"
+ accessKey: "{{?accessKey}}"
+ region: "{{region}}"
+ eventSource: "{{?eventSource}}"
+ useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+ useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
+ useSessionCredentials: "{{useSessionCredentials}}"
+ uriEndpointOverride: "{{?uriEndpointOverride}}"
+ profileCredentialsName: "{{?profileCredentialsName}}"
+ sessionToken: "{{?sessionToken}}"
+ overrideEndpoint: "{{overrideEndpoint}}"
+ maxResults: "{{maxResults}}"
+ steps:
+ - to: "kamelet:sink"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: aws-cloudwatch-sink
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjIwNyIgaGVpZ2h0PSIyNTAwIiB2aWV3Qm94PSIwIDAgMjU2IDI5MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+PHBhdGggZD0iTTI1NiAxOTkuMzA1bC0xMjcuOTU3LTE4Ljc5N0wwIDE5OS4zMjlsMTI4LjAxIDQ3LjQzOUwyNTYgMTk5LjMwNSIgZmlsbD0iI0I3Q0E5RCIvPjxwYXRoIGQ9Ik0yNS42MjEgMTk3LjExM2wyMS42MyA2Ljc2MSAxLjk3MS0yLjIzOFY1MC4yODRsLTEuOTcxLTIuNTg1LTIxLjYzIDguMjc0djE0MS4xNCIgZmlsbD0iIzRCNjEyQyIvPjxwYXRoIG [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "AWS Cloudwatch"
+ camel.apache.org/kamelet.namespace: "AWS"
+ labels:
+ camel.apache.org/kamelet.type: "sink"
+spec:
+ definition:
+ title: "AWS CloudWatch Metrics Sink"
+ description: Send data to Amazon CloudWatch metrics.
+ required:
+ - cwNamespace
+ - region
+ type: object
+ properties:
+ cwNamespace:
+ title: Cloud Watch Namespace
+ description: The CloudWatch metric namespace.
+ type: string
+ accessKey:
+ title: Access Key
+ description: The access key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ secretKey:
+ title: Secret Key
+ description: The secret key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ region:
+ title: AWS Region
+ description: The AWS region to access.
+ type: string
+ enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
+ useDefaultCredentialsProvider:
+ title: Default Credentials Provider
+ description: If true, the Cloudwatch client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
+ type: boolean
+ default: false
+ useProfileCredentialsProvider:
+ title: Profile Credentials Provider
+ description: Set whether the Cloudwatch client should expect to load credentials through a profile credentials provider.
+ type: boolean
+ default: false
+ useSessionCredentials:
+ title: Session Credentials
+ description: Set whether the Cloudwatch client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in Cloudwatch.
+ type: boolean
+ default: false
+ profileCredentialsName:
+ title: Profile Credentials Name
+ description: If using a profile credentials provider this parameter sets the profile name.
+ type: string
+ sessionToken:
+ title: Session Token
+ description: Amazon AWS Session Token used when the user needs to assume a IAM role.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ uriEndpointOverride:
+ title: Overwrite Endpoint URI
+ description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
+ type: string
+ overrideEndpoint:
+ title: Endpoint Overwrite
+ description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
+ type: boolean
+ default: false
+ dependencies:
+ - "camel:core"
+ - "camel:aws2-cw"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: kamelet:source
+ steps:
+ - choice:
+ when:
+ - simple: "${header[metric-name]}"
+ steps:
+ - setHeader:
+ name: CamelAwsCwMetricName
+ simple: "${header[metric-name]}"
+ - simple: "${header[ce-metricname]}"
+ steps:
+ - setHeader:
+ name: CamelAwsCwMetricName
+ simple: "${header[ce-metricname]}"
+ - choice:
+ when:
+ - simple: "${header[metric-value]}"
+ steps:
+ - setHeader:
+ name: CamelAwsCwMetricValue
+ simple: "${header[metric-value]}"
+ - simple: "${header[ce-metricvalue]}"
+ steps:
+ - setHeader:
+ name: CamelAwsCwMetricValue
+ simple: "${header[ce-metricvalue]}"
+ - choice:
+ when:
+ - simple: "${header[metric-unit]}"
+ steps:
+ - setHeader:
+ name: CamelAwsCwMetricUnit
+ simple: "${header[metric-unit]}"
+ - simple: "${header[ce-metricunit]}"
+ steps:
+ - setHeader:
+ name: CamelAwsCwMetricUnit
+ simple: "${header[ce-metricunit]}"
+ - choice:
+ when:
+ - simple: "${header[metric-timestamp]}"
+ steps:
+ - setHeader:
+ name: CamelAwsCwMetricTimestamp
+ simple: "${header[metric-timestamp]}"
+ - simple: "${header[ce-metrictimestamp]}"
+ steps:
+ - setHeader:
+ name: CamelAwsCwMetricTimestamp
+ simple: "${header[ce-metrictimestamp]}"
+ - choice:
+ when:
+ - simple: "${header[metric-dimension-name]}"
+ steps:
+ - setHeader:
+ name: CamelAwsCwMetricDimensionName
+ simple: "${header[metric-dimension-name]}"
+ - simple: "${header[ce-metricdimensionname]}"
+ steps:
+ - setHeader:
+ name: CamelAwsCwMetricDimensionName
+ simple: "${header[ce-metricdimensionname]}"
+ - choice:
+ when:
+ - simple: "${header[metric-dimension-value]}"
+ steps:
+ - setHeader:
+ name: CamelAwsCwMetricDimensionValue
+ simple: "${header[metric-dimension-value]}"
+ - simple: "${header[ce-metricdimensionvalue]}"
+ steps:
+ - setHeader:
+ name: CamelAwsCwMetricDimensionValue
+ simple: "${header[ce-metricdimensionvalue]}"
+ - to:
+ uri: "aws2-cw:{{cwNamespace}}"
+ parameters:
+ secretKey: "{{?secretKey}}"
+ accessKey: "{{?accessKey}}"
+ region: "{{region}}"
+ useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+ useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
+ useSessionCredentials: "{{useSessionCredentials}}"
+ uriEndpointOverride: "{{?uriEndpointOverride}}"
+ profileCredentialsName: "{{?profileCredentialsName}}"
+ sessionToken: "{{?sessionToken}}"
+ overrideEndpoint: "{{overrideEndpoint}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: aws-comprehend-sink
+ annotations:
+ camel.apache.org/kamelet.support.level: "Preview"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/PjxzdmcgZGF0YS1uYW1lPSJMYXllciAxIiBpZD0iTGF5ZXJfMSIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQzMC40MiwxOTYuMzJjOC0xMS4zOSwyMS4xNS0zOC4zMywwLTcyLjEzYTUyLjc5LDUyLjc5LDAsMCwwLTE3LjA2LTE3LjMxYy0xLjUzLTgtNy41NC0yNy4yNi0zMS40Mi00My45MUMzNTksNDcsMzI1LjUyLDQ5LjUzLDMxOS40NCw1MC4xNmE2NC4yNyw2NC4yNywwLDAsMC0xNi4wNy0yLjk0Yy0xNy4xNy0uODEtMzAuMzcsMy44OS0zOS43OCwxNC [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "AWS Comprehend"
+ camel.apache.org/kamelet.namespace: "AWS"
+ labels:
+ camel.apache.org/kamelet.type: "sink"
+spec:
+ definition:
+ title: "AWS Comprehend Sink"
+ description: Send data to AWS Comprehend for natural language processing.
+ required:
+ - region
+ type: object
+ properties:
+ operation:
+ title: Operation
+ description: The operation to perform on the input text.
+ type: string
+ default: detectDominantLanguage
+ enum: ["detectDominantLanguage", "detectEntities", "detectKeyPhrases", "detectSentiment", "detectSyntax", "detectPiiEntities", "detectToxicContent", "classifyDocument", "containsPiiEntities"]
+ languageCode:
+ title: Language Code
+ description: The language code of the input text. Required for all operations except detectDominantLanguage. Use a 2-letter ISO 639-1 code (e.g., 'en' for English, 'es' for Spanish).
+ type: string
+ endpointArn:
+ title: Endpoint ARN
+ description: The Amazon Resource Name (ARN) of the endpoint to use for document classification. Required for classifyDocument operation.
+ type: string
+ accessKey:
+ title: Access Key
+ description: The access key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ secretKey:
+ title: Secret Key
+ description: The secret key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ region:
+ title: AWS Region
+ description: The AWS region to access.
+ type: string
+ enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
+ useDefaultCredentialsProvider:
+ title: Default Credentials Provider
+ description: If true, the Comprehend client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
+ type: boolean
+ default: false
+ useProfileCredentialsProvider:
+ title: Profile Credentials Provider
+ description: Set whether the Comprehend client should expect to load credentials through a profile credentials provider.
+ type: boolean
+ default: false
+ useSessionCredentials:
+ title: Session Credentials
+ description: Set whether the Comprehend client should expect to use Session Credentials. This is useful in a situation in which the user needs to assume an IAM role for doing operations in Comprehend.
+ type: boolean
+ default: false
+ profileCredentialsName:
+ title: Profile Credentials Name
+ description: If using a profile credentials provider this parameter sets the profile name.
+ type: string
+ sessionToken:
+ title: Session Token
+ description: Amazon AWS Session Token used when the user needs to assume an IAM role.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ uriEndpointOverride:
+ title: Overwrite Endpoint URI
+ description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
+ type: string
+ overrideEndpoint:
+ title: Endpoint Overwrite
+ description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
+ type: boolean
+ default: false
+ dependencies:
+ - "camel:core"
+ - "camel:aws2-comprehend"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: "kamelet:source"
+ steps:
+ - to:
+ uri: "aws2-comprehend:comprehend"
+ parameters:
+ secretKey: "{{?secretKey}}"
+ accessKey: "{{?accessKey}}"
+ region: "{{region}}"
+ operation: "{{operation}}"
+ languageCode: "{{?languageCode}}"
+ endpointArn: "{{?endpointArn}}"
+ useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+ useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
+ useSessionCredentials: "{{useSessionCredentials}}"
+ uriEndpointOverride: "{{?uriEndpointOverride}}"
+ profileCredentialsName: "{{?profileCredentialsName}}"
+ sessionToken: "{{?sessionToken}}"
+ overrideEndpoint: "{{overrideEndpoint}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: aws-ddb-sink
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjEwMCIgd2lkdGg9IjEwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBmaWxsPSIjMkQ3MkI4IiBkPSJNNzQuMTc0IDMxLjgwN2w3LjQzNyA1LjM2N3YtNy42MDJsLTcuNDgtOC43NjV2MTAuOTU3bC4wNDMuMDE1eiIvPjxwYXRoIGZpbGw9IiM1Mjk0Q0YiIGQ9Ik01OS44MzggODUuNjY2bDE0LjI5My03LjE0NlYyMC43OTFsLTE0LjMwMy03LjEyNHoiLz48cGF0aCBmaWxsPSIjMjA1Qjk4IiBkPSJNMzkuNDk2IDg1LjY2NkwyNS4yMDMgNzguNTJWMjAuNzkxbDE0LjMwMy03LjEyNHoiLz48cGF0aCBmaWxsPSIjMkQ3Mk [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "AWS DynamoDB Streams"
+ camel.apache.org/kamelet.namespace: "AWS"
+ labels:
+ camel.apache.org/kamelet.type: "sink"
+spec:
+ definition:
+ title: "AWS DynamoDB Sink"
+ description: Send data to Amazon DynamoDB. The sent data inserts, updates, or deletes an item on the specified AWS DynamoDB table.
+ required:
+ - table
+ - region
+ type: object
+ properties:
+ table:
+ title: Table
+ description: The name of the DynamoDB table.
+ type: string
+ accessKey:
+ title: Access Key
+ description: The access key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ secretKey:
+ title: Secret Key
+ description: The secret key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ region:
+ title: AWS Region
+ description: The AWS region to access.
+ type: string
+ enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
+ operation:
+ title: Operation
+ description: "The operation to perform."
+ type: string
+ enum: ["PutItem", "UpdateItem", "DeleteItem"]
+ default: PutItem
+ example: PutItem
+ useDefaultCredentialsProvider:
+ title: Default Credentials Provider
+ description: If true, the DynamoDB client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
+ type: boolean
+ default: false
+ useProfileCredentialsProvider:
+ title: Profile Credentials Provider
+ description: Set whether the DynamoDB client should expect to load credentials through a profile credentials provider.
+ type: boolean
+ default: false
+ useSessionCredentials:
+ title: Session Credentials
+ description: Set whether the DynamoDB client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in DynamoDB.
+ type: boolean
+ default: false
+ profileCredentialsName:
+ title: Profile Credentials Name
+ description: If using a profile credentials provider this parameter sets the profile name.
+ type: string
+ sessionToken:
+ title: Session Token
+ description: Amazon AWS Session Token used when the user needs to assume a IAM role.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ uriEndpointOverride:
+ title: Overwrite Endpoint URI
+ description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
+ type: string
+ overrideEndpoint:
+ title: Endpoint Overwrite
+ description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
+ type: boolean
+ default: false
+ dataTypes:
+ in:
+ default: json
+ types:
+ json:
+ format: "aws2-ddb:application-json"
+ description: Json representation of a DDB operation. The input type supports the operations PutItem, UpdateItem, DeleteItem. For PutItem operation the Json body defines all item attributes. For DeleteItem operation the Json body defines only the primary key attributes that identify the item to delete. For UpdateItem operation the Json body defines both key attributes to identify the item to be updated and all item attributes that get updated on the item.
+ headers:
+ CamelAwsDdbOperation:
+ title: Operation
+ description: "The operation to perform. Overwrites the operation given in the Json body. One of PutItem, UpdateItem, DeleteItem."
+ default: PutItem
+ type: string
+ CamelAwsDdbReturnValues:
+ title: Return Values
+ description: Use this parameter if you want to get the attribute name-value pairs before or after they are modified. Possible values are NONE, ALL_OLD, UPDATED_OLD, ALL_NEW, UPDATED_NEW.
+ type: string
+ mediaType: application/json
+ schema:
+ type: object
+ required: [ "key" ]
+ properties:
+ operation:
+ type: string
+ description: The operator to perform. One of PutItem, UpdateItem, DeleteItem
+ key:
+ type: object
+ description: The primary key specifies the selection criteria for the query.
+ item:
+ type: object
+ description: Attribute value map specifies all attributes to change with the given operation.
+ dependencies:
+ - "camel:core"
+ - "camel:jackson"
+ - "camel:aws2-ddb"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: "kamelet:source"
+ steps:
+ - setProperty:
+ name: operation
+ constant: "{{operation}}"
+ - transform:
+ toType: "aws2-ddb:application-json"
+ - to:
+ uri: "aws2-ddb:{{table}}"
+ parameters:
+ secretKey: "{{?secretKey}}"
+ accessKey: "{{?accessKey}}"
+ region: "{{region}}"
+ operation: "{{operation}}"
+ useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+ useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
+ useSessionCredentials: "{{useSessionCredentials}}"
+ uriEndpointOverride: "{{?uriEndpointOverride}}"
+ profileCredentialsName: "{{?profileCredentialsName}}"
+ sessionToken: "{{?sessionToken}}"
+ overrideEndpoint: "{{overrideEndpoint}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: aws-ddb-streams-source
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjEwMCIgd2lkdGg9IjEwMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBmaWxsPSIjMkQ3MkI4IiBkPSJNNzQuMTc0IDMxLjgwN2w3LjQzNyA1LjM2N3YtNy42MDJsLTcuNDgtOC43NjV2MTAuOTU3bC4wNDMuMDE1eiIvPjxwYXRoIGZpbGw9IiM1Mjk0Q0YiIGQ9Ik01OS44MzggODUuNjY2bDE0LjI5My03LjE0NlYyMC43OTFsLTE0LjMwMy03LjEyNHoiLz48cGF0aCBmaWxsPSIjMjA1Qjk4IiBkPSJNMzkuNDk2IDg1LjY2NkwyNS4yMDMgNzguNTJWMjAuNzkxbDE0LjMwMy03LjEyNHoiLz48cGF0aCBmaWxsPSIjMkQ3Mk [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "AWS DynamoDB Streams"
+ camel.apache.org/kamelet.namespace: "AWS"
+ labels:
+ camel.apache.org/kamelet.type: "source"
+spec:
+ definition:
+ title: "AWS DynamoDB Streams Source"
+ description: Receive events from Amazon DynamoDB Streams.
+ required:
+ - table
+ - region
+ type: object
+ properties:
+ table:
+ title: Table
+ description: The name of the DynamoDB table.
+ type: string
+ accessKey:
+ title: Access Key
+ description: The access key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ secretKey:
+ title: Secret Key
+ description: The secret key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ region:
+ title: AWS Region
+ description: The AWS region to access.
+ type: string
+ enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
+ streamIteratorType:
+ title: Stream Iterator Type
+ description: Defines where in the DynamoDB stream to start getting records. There are two enums and the value can be one of FROM_LATEST and FROM_START. Note that using FROM_START can cause a significant delay before the stream has caught up to real-time.
+ type: string
+ default: FROM_LATEST
+ useDefaultCredentialsProvider:
+ title: Default Credentials Provider
+ description: If `true`, the DynamoDB client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
+ type: boolean
+ default: false
+ useProfileCredentialsProvider:
+ title: Profile Credentials Provider
+ description: Set whether the DynamoDB client should expect to load credentials through a profile credentials provider.
+ type: boolean
+ default: false
+ useSessionCredentials:
+ title: Session Credentials
+ description: Set whether the DynamoDB client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in DynamoDB.
+ type: boolean
+ default: false
+ profileCredentialsName:
+ title: Profile Credentials Name
+ description: If using a profile credentials provider this parameter sets the profile name.
+ type: string
+ sessionToken:
+ title: Session Token
+ description: Amazon AWS Session Token used when the user needs to assume a IAM role.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ uriEndpointOverride:
+ title: Overwrite Endpoint URI
+ description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
+ type: string
+ overrideEndpoint:
+ title: Endpoint Overwrite
+ description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
+ type: boolean
+ default: false
+ delay:
+ title: Delay
+ description: The number of milliseconds before the next poll from the database.
+ type: integer
+ default: 500
+ dataTypes:
+ out:
+ default: json
+ headers:
+ CamelAwsDdbStreamEventSource:
+ title: The DDB Stream Event Source
+ description: The Amazon Web Services service from which the stream record originated. For DynamoDB Streams, this is aws:dynamodb.
+ type: string
+ CamelAwsDdbStreamEventId:
+ title: The DDB Stream Event Id
+ description: A globally unique identifier for the event that was recorded in this stream record.
+ type: string
+ types:
+ json:
+ format: "application-json"
+ description: Default Json representation of a DDB Stream Event.
+ mediaType: application/json
+ cloudevents:
+ format: "aws2-ddbstream:application-cloudevents"
+ description: Data type transformer converts AWS Dynamo DB Streams get records response to CloudEvent v1_0 data format. The data type sets Camel specific CloudEvent headers with values extracted from AWS Dynamo DB Streams get records.
+ headers:
+ CamelCloudEventID:
+ title: CloudEvent ID
+ description: The Camel exchange id set as event id.
+ type: string
+ CamelCloudEventType:
+ title: CloudEvent Type
+ description: The event type.
+ default: "org.apache.camel.event.aws.ddbstream.getRecords"
+ type: string
+ CamelCloudEventSource:
+ title: CloudEvent Source
+ description: The event source. By default, the DDB Stream Event source receipt handle with prefix "aws.ddbstream.".
+ type: string
+ CamelCloudEventSubject:
+ title: CloudEvent Subject
+ description: The event subject. The DDB Stream Event Id.
+ type: string
+ CamelCloudEventTime:
+ title: CloudEvent Time
+ description: The exchange creation timestamp as event time.
+ type: string
+ dependencies:
+ - "camel:gson"
+ - "camel:aws2-ddb"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: "aws2-ddbstream:{{table}}"
+ parameters:
+ secretKey: "{{?secretKey}}"
+ accessKey: "{{?accessKey}}"
+ region: "{{region}}"
+ streamIteratorType: "{{streamIteratorType}}"
+ useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+ useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
+ useSessionCredentials: "{{useSessionCredentials}}"
+ uriEndpointOverride: "{{?uriEndpointOverride}}"
+ profileCredentialsName: "{{?profileCredentialsName}}"
+ sessionToken: "{{?sessionToken}}"
+ overrideEndpoint: "{{overrideEndpoint}}"
+ delay: "{{delay}}"
+ steps:
+ - transform:
+ toType: "aws2-ddb:application-x-struct"
+ - to: "kamelet:sink"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: aws-ec2-sink
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjA2NSIgaGVpZ2h0PSIyNTAwIiB2aWV3Qm94PSIwIDAgMjU2IDMxMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+PHBhdGggZD0iTTQyLjc1NCAyNDQuNDk1bC0yOS45MTggNi44MjZWNTcuNTY1bDI5LjkxOCA2LjgzOXYxODAuMDkxIiBmaWxsPSIjRjY4NTM2Ii8+PHBhdGggZD0iTTgwLjA4MiAyNTUuOTMxbC0zNy4zMjggMTAuNjA4VjQyLjYxMmwzNy4zMjggMTAuNTk1djIwMi43MjRNMTI3Ljk2NiAyNjcuNjgxbC00Ny44ODQgMTcuNTI0VjIzLjk0Nmw0Ny44ODQgMTcuNT [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "AWS EC2"
+ camel.apache.org/kamelet.namespace: "AWS"
+ labels:
+ camel.apache.org/kamelet.type: "sink"
+spec:
+ definition:
+ title: "AWS EC2 Sink"
+ description: Check the status of EC2 instances
+ required:
+ - region
+ type: object
+ properties:
+ accessKey:
+ title: Access Key
+ description: The access key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ secretKey:
+ title: Secret Key
+ description: The secret key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ region:
+ title: AWS Region
+ description: The AWS region to access.
+ type: string
+ enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
+ useDefaultCredentialsProvider:
+ title: Default Credentials Provider
+ description: If true, the EC2 client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
+ type: boolean
+ default: false
+ useProfileCredentialsProvider:
+ title: Profile Credentials Provider
+ description: Set whether the EC2 client should expect to load credentials through a profile credentials provider.
+ type: boolean
+ default: false
+ useSessionCredentials:
+ title: Session Credentials
+ description: Set whether the EC2 client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in EC2.
+ type: boolean
+ default: false
+ profileCredentialsName:
+ title: Profile Credentials Name
+ description: If using a profile credentials provider this parameter sets the profile name.
+ type: string
+ sessionToken:
+ title: Session Token
+ description: Amazon AWS Session Token used when the user needs to assume a IAM role.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ uriEndpointOverride:
+ title: Overwrite Endpoint URI
+ description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
+ type: string
+ overrideEndpoint:
+ title: Endpoint Overwrite
+ description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
+ type: boolean
+ default: false
+ dependencies:
+ - "camel:core"
+ - "camel:aws2-ec2"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: kamelet:source
+ steps:
+ - choice:
+ when:
+ - simple: "${header[instanceIds]}"
+ steps:
+ - setHeader:
+ name: CamelAwsEC2InstancesIds
+ simple: "${header[instanceIds]}"
+ - simple: "${header[ce-instanceids]}"
+ steps:
+ - setHeader:
+ name: CamelAwsEC2InstancesIds
+ simple: "${header[ce-instanceids]}"
+ - to:
+ uri: "aws2-ec2:ec2-route"
+ parameters:
+ accessKey: "{{?accessKey}}"
+ secretKey: "{{?secretKey}}"
+ region: "{{region}}"
+ operation: "describeInstancesStatus"
+ useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+ useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
+ useSessionCredentials: "{{useSessionCredentials}}"
+ uriEndpointOverride: "{{?uriEndpointOverride}}"
+ profileCredentialsName: "{{?profileCredentialsName}}"
+ sessionToken: "{{?sessionToken}}"
+ overrideEndpoint: "{{overrideEndpoint}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: aws-eventbridge-sink
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB3aWR0aD0iMWVtIiBoZWlnaHQ9IjFlbSIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQgbWVldCIgdmlld0JveD0iMCAwIDI1NiAyNTYiIHN0eWxlPSItbXMtdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTsgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpOyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJJY29uaWZ5SWQtMTgyM2Y2NTU1NjktYWYxZGQ1LT [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "AWS Eventbridge"
+ camel.apache.org/kamelet.namespace: "AWS"
+ labels:
+ camel.apache.org/kamelet.type: "sink"
+spec:
+ definition:
+ title: "AWS Eventbridge Sink"
+ description: Send events to an Amazon Eventbridge Eventbus.
+
+ In the headers, you can set the `resources-arn` / `ce-resources-arn` property to specify the ARN of resources related to the event.
+
+ In the headers, you can set the `detail-type` / `ce-detail-type` property to specify the detail type related to the event.
+
+ In the headers, you can set the `event-source` / `ce-event-source` property to specify the event source related to the event.
+
+ If you do not set the property in the header, the Kamelet uses the given Kamelet properties as a default.
+ required:
+ - eventbusNameOrArn
+ - region
+ type: object
+ properties:
+ eventbusNameOrArn:
+ title: Eventbus Name
+ description: The Eventbridge Eventbus name or Amazon Resource Name (ARN).
+ type: string
+ resourcesArn:
+ title: Event Resource ARN
+ description: The ARN of resources related to the AWS event (e.g. `arn:aws:s3:eu-east-1:000000000001:test`).
+ type: string
+ eventSourcePrefix:
+ title: Event Source Prefix
+ description: The event source prefix set for all events sent to the eventbus.
+ type: string
+ default: ""
+ eventSource:
+ title: Event Source
+ description: The event source related to the AWS event (e.g. `aws.s3`).
+ type: string
+ detailType:
+ title: Event Detail Type
+ description: The event detail type related to the AWS event.
+ type: string
+ accessKey:
+ title: Access Key
+ description: The access key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ secretKey:
+ title: Secret Key
+ description: The secret key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ region:
+ title: AWS Region
+ description: The AWS region to access.
+ type: string
+ enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
+ useDefaultCredentialsProvider:
+ title: Default Credentials Provider
+ description: If true, the Eventbridge client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
+ type: boolean
+ default: false
+ useProfileCredentialsProvider:
+ title: Profile Credentials Provider
+ description: Set whether the Eventbridge client should expect to load credentials through a profile credentials provider.
+ type: boolean
+ default: false
+ useSessionCredentials:
+ title: Session Credentials
+ description: Set whether the Eventbridge client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in Eventbridge.
+ type: boolean
+ default: false
+ profileCredentialsName:
+ title: Profile Credentials Name
+ description: If using a profile credentials provider this parameter sets the profile name.
+ type: string
+ sessionToken:
+ title: Session Token
+ description: Amazon AWS Session Token used when the user needs to assume a IAM role.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ uriEndpointOverride:
+ title: Overwrite Endpoint URI
+ description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
+ type: string
+ overrideEndpoint:
+ title: Endpoint Overwrite
+ description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
+ type: boolean
+ default: false
+ dependencies:
+ - "camel:core"
+ - "camel:aws2-eventbridge"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: "kamelet:source"
+ steps:
+ - choice:
+ when:
+ - simple: "${header[resources-arn]}"
+ steps:
+ - setHeader:
+ name: CamelAwsEventbridgeResourcesArn
+ simple: "${header[resources-arn]}"
+ - simple: "${header[ce-resources-arn]}"
+ steps:
+ - setHeader:
+ name: CamelAwsEventbridgeResourcesArn
+ simple: "${header[ce-resources-arn]}"
+ otherwise:
+ steps:
+ - setHeader:
+ name: CamelAwsEventbridgeResourcesArn
+ simple: "{{?resourcesArn}}"
+ - choice:
+ when:
+ - simple: "${header[detail-type]}"
+ steps:
+ - setHeader:
+ name: CamelAwsEventbridgeDetailType
+ simple: "${header[detail-type]}"
+ - simple: "${header[ce-detail-type]}"
+ steps:
+ - setHeader:
+ name: CamelAwsEventbridgeDetailType
+ simple: "${header[ce-detail-type]}"
+ otherwise:
+ steps:
+ - setHeader:
+ name: CamelAwsEventbridgeDetailType
+ simple: "{{?detailType}}"
+ - choice:
+ when:
+ - simple: "${header[event-source]}"
+ steps:
+ - setHeader:
+ name: CamelAwsEventbridgeSource
+ simple: "{{?eventSourcePrefix}}${header[event-source]}"
+ - simple: "${header[ce-event-source]}"
+ steps:
+ - setHeader:
+ name: CamelAwsEventbridgeSource
+ simple: "{{?eventSourcePrefix}}${header[ce-event-source]}"
+ - simple: "${header[ce-source]}"
+ steps:
+ - setHeader:
+ name: CamelAwsEventbridgeSource
+ simple: "{{?eventSourcePrefix}}${header[ce-source]}"
+ otherwise:
+ steps:
+ - setHeader:
+ name: CamelAwsEventbridgeSource
+ simple: "{{?eventSourcePrefix}}{{?eventSource}}"
+ - to:
+ uri: "aws2-eventbridge:{{eventbusNameOrArn}}"
+ parameters:
+ secretKey: "{{?secretKey}}"
+ accessKey: "{{?accessKey}}"
+ region: "{{region}}"
+ useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+ useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
+ useSessionCredentials: "{{useSessionCredentials}}"
+ uriEndpointOverride: "{{?uriEndpointOverride}}"
+ profileCredentialsName: "{{?profileCredentialsName}}"
+ sessionToken: "{{?sessionToken}}"
+ overrideEndpoint: "{{overrideEndpoint}}"
+ operation: "putEvent"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: aws-kinesis-firehose-sink
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgODUgODUiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9IjIuNSIgeT0iMi41Ii8+PHN5bWJvbCBpZD0iQSIgb3ZlcmZsb3c9InZpc2libGUiPjxnIHN0cm9rZT0ibm9uZSI+PHBhdGggZD0iTTEzLjc2NiAzLjEyaDUyLjQ2OGMzLjY1MSAwID [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "AWS Kinesis Firehose"
+ camel.apache.org/kamelet.namespace: "AWS"
+ labels:
+ camel.apache.org/kamelet.type: "sink"
+spec:
+ definition:
+ title: "AWS Kinesis Firehose Sink"
+ description: Send message to an AWS Kinesis Firehose Stream.
+ required:
+ - streamName
+ - region
+ type: object
+ properties:
+ streamName:
+ title: Stream Name
+ description: The name of the stream we want to send to data to.
+ type: string
+ accessKey:
+ title: Access Key
+ description: The access key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ secretKey:
+ title: Secret Key
+ description: The secret key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ region:
+ title: AWS Region
+ description: The AWS region to access.
+ type: string
+ enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
+ useDefaultCredentialsProvider:
+ title: Default Credentials Provider
+ description: Set whether the Kinesis Firehose client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in.
+ type: boolean
+ default: false
+ useProfileCredentialsProvider:
+ title: Profile Credentials Provider
+ description: Set whether the Kinesis Firehose client should expect to load credentials through a profile credentials provider.
+ type: boolean
+ default: false
+ useSessionCredentials:
+ title: Session Credentials
+ description: Set whether the Kinesis Firehose client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in Kinesis Firehose.
+ type: boolean
+ default: false
+ profileCredentialsName:
+ title: Profile Credentials Name
+ description: If using a profile credentials provider this parameter sets the profile name.
+ type: string
+ sessionToken:
+ title: Session Token
+ description: Amazon AWS Session Token used when the user needs to assume a IAM role.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ uriEndpointOverride:
+ title: Overwrite Endpoint URI
+ description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
+ type: string
+ overrideEndpoint:
+ title: Endpoint Overwrite
+ description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
+ type: boolean
+ default: false
+ dependencies:
+ - "camel:aws2-kinesis"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: kamelet:source
+ steps:
+ - to:
+ uri: "aws2-kinesis-firehose:{{streamName}}"
+ parameters:
+ accessKey: "{{?accessKey}}"
+ secretKey: "{{?secretKey}}"
+ region: "{{region}}"
+ useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+ useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
+ useSessionCredentials: "{{useSessionCredentials}}"
+ uriEndpointOverride: "{{?uriEndpointOverride}}"
+ profileCredentialsName: "{{?profileCredentialsName}}"
+ sessionToken: "{{?sessionToken}}"
+ overrideEndpoint: "{{overrideEndpoint}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: aws-kinesis-sink
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMzA4LjIzNDAxIj48dGl0bGU+YXdzLWtpbmVzaXM8L3RpdGxlPjxwYXRoIGQ9Ik0wLDE3Mi4wODdsMTI3Ljc1NCw1OC44MSwxMjcuNzUyLTU4LjgxLTEyNy43NTItNS4yOTNaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMDAwMDUpIiBmaWxsPSIjZmNiZjkyIi8+PHBhdGggZD0iTTEyOC4xNDcsMCwuMDU5LDYzLjg4MXY5MC4xMzZIMTUzLjY0OFYxMi43NTFaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMD [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "AWS Kinesis"
+ camel.apache.org/kamelet.namespace: "AWS"
+ labels:
+ camel.apache.org/kamelet.type: "sink"
+spec:
+ definition:
+ title: "AWS Kinesis Sink"
+ description: Send data to AWS Kinesis.
+ required:
+ - stream
+ - region
+ type: object
+ properties:
+ stream:
+ title: Stream Name
+ description: The Kinesis stream that you want to access. The Kinesis stream that you specify must already exist.
+ type: string
+ accessKey:
+ title: Access Key
+ description: The access key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ secretKey:
+ title: Secret Key
+ description: The secret key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ region:
+ title: AWS Region
+ description: The AWS region to access.
+ type: string
+ enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
+ useDefaultCredentialsProvider:
+ title: Default Credentials Provider
+ description: If true, the Kinesis client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
+ type: boolean
+ default: false
+ useProfileCredentialsProvider:
+ title: Profile Credentials Provider
+ description: Set whether the Kinesis client should expect to load credentials through a profile credentials provider.
+ type: boolean
+ default: false
+ useSessionCredentials:
+ title: Session Credentials
+ description: Set whether the Kinesis client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in Kinesis.
+ type: boolean
+ default: false
+ profileCredentialsName:
+ title: Profile Credentials Name
+ description: If using a profile credentials provider this parameter sets the profile name.
+ type: string
+ sessionToken:
+ title: Session Token
+ description: Amazon AWS Session Token used when the user needs to assume a IAM role.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ uriEndpointOverride:
+ title: Overwrite Endpoint URI
+ description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
+ type: string
+ overrideEndpoint:
+ title: Endpoint Overwrite
+ description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
+ type: boolean
+ default: false
+ types:
+ in:
+ mediaType: application/octet-stream
+ dependencies:
+ - "camel:core"
+ - "camel:aws2-kinesis"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: kamelet:source
+ steps:
+ - choice:
+ when:
+ - simple: "${header[partition]}"
+ steps:
+ - setHeader:
+ name: CamelAwsKinesisPartitionKey
+ simple: "${header[partition]}"
+ - simple: "${header[ce-partition]}"
+ steps:
+ - setHeader:
+ name: CamelAwsKinesisPartitionKey
+ simple: "${header[ce-partition]}"
+ otherwise:
+ steps:
+ - setHeader:
+ name: CamelAwsKinesisPartitionKey
+ simple: "${exchangeId}"
+ - choice:
+ when:
+ - simple: "${header[sequence-number]}"
+ steps:
+ - setHeader:
+ name: CamelAwsKinesisSequenceNumber
+ simple: "${header[sequence-number]}"
+ - simple: "${header[ce-sequencenumber]}"
+ steps:
+ - setHeader:
+ name: CamelAwsKinesisSequenceNumber
+ simple: "${header[ce-sequencenumber]}"
+ - to:
+ uri: "aws2-kinesis:{{stream}}"
+ parameters:
+ secretKey: "{{?secretKey}}"
+ accessKey: "{{?accessKey}}"
+ region: "{{region}}"
+ useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+ useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
+ useSessionCredentials: "{{useSessionCredentials}}"
+ uriEndpointOverride: "{{?uriEndpointOverride}}"
+ profileCredentialsName: "{{?profileCredentialsName}}"
+ sessionToken: "{{?sessionToken}}"
+ overrideEndpoint: "{{overrideEndpoint}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: aws-kinesis-source
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBpZD0iTGF5ZXJfMSIgZGF0YS1uYW1lPSJMYXllciAxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMzA4LjIzNDAxIj48dGl0bGU+YXdzLWtpbmVzaXM8L3RpdGxlPjxwYXRoIGQ9Ik0wLDE3Mi4wODdsMTI3Ljc1NCw1OC44MSwxMjcuNzUyLTU4LjgxLTEyNy43NTItNS4yOTNaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMDAwMDUpIiBmaWxsPSIjZmNiZjkyIi8+PHBhdGggZD0iTTEyOC4xNDcsMCwuMDU5LDYzLjg4MXY5MC4xMzZIMTUzLjY0OFYxMi43NTFaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwIDAuMD [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "AWS Kinesis"
+ camel.apache.org/kamelet.namespace: "AWS"
+ labels:
+ camel.apache.org/kamelet.type: "source"
+spec:
+ definition:
+ title: "AWS Kinesis Source"
+ description: Receive data from AWS Kinesis.
+ required:
+ - stream
+ - region
+ type: object
+ properties:
+ stream:
+ title: Stream Name
+ description: The Kinesis stream that you want to access. The Kinesis stream that you specify must already exist.
+ type: string
+ accessKey:
+ title: Access Key
+ description: The access key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ secretKey:
+ title: Secret Key
+ description: The secret key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ region:
+ title: AWS Region
+ description: The AWS region to access.
+ type: string
+ enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
+ useDefaultCredentialsProvider:
+ title: Default Credentials Provider
+ description: If true, the Kinesis client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
+ type: boolean
+ default: false
+ useProfileCredentialsProvider:
+ title: Profile Credentials Provider
+ description: Set whether the Kinesis client should expect to load credentials through a profile credentials provider.
+ type: boolean
+ default: false
+ useSessionCredentials:
+ title: Session Credentials
+ description: Set whether the Kinesis client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in Kinesis.
+ type: boolean
+ default: false
+ profileCredentialsName:
+ title: Profile Credentials Name
+ description: If using a profile credentials provider this parameter sets the profile name.
+ type: string
+ sessionToken:
+ title: Session Token
+ description: Amazon AWS Session Token used when the user needs to assume a IAM role.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ uriEndpointOverride:
+ title: Overwrite Endpoint URI
+ description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
+ type: string
+ overrideEndpoint:
+ title: Endpoint Overwrite
+ description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
+ type: boolean
+ default: false
+ delay:
+ title: Delay
+ description: The number of milliseconds before the next poll of the selected stream.
+ type: integer
+ default: 500
+ asyncClient:
+ title: Async Client
+ description: If we want a KinesisAsyncClient instance set it to true.
+ type: boolean
+ default: false
+ useKclConsumers:
+ title: KCL Consumer
+ description: If we want to a KCL Consumer set it to true
+ type: boolean
+ default: false
+ kclDisableCloudwatchMetricsExport:
+ title: KCL Disable Cloudwatch Metrics Export
+ description: Define if we want to use a KCL Consumer and disable the CloudWatch Metrics Export
+ type: boolean
+ default: false
+ types:
+ out:
+ mediaType: application/octet-stream
+ dependencies:
+ - "camel:aws2-kinesis"
+ - "camel:kamelet"
+ - "camel:core"
+ template:
+ from:
+ uri: aws2-kinesis:{{stream}}
+ parameters:
+ secretKey: "{{?secretKey}}"
+ accessKey: "{{?accessKey}}"
+ region: "{{region}}"
+ useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+ useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
+ useSessionCredentials: "{{useSessionCredentials}}"
+ uriEndpointOverride: "{{?uriEndpointOverride}}"
+ profileCredentialsName: "{{?profileCredentialsName}}"
+ sessionToken: "{{?sessionToken}}"
+ overrideEndpoint: "{{overrideEndpoint}}"
+ delay: "{{delay}}"
+ useKclConsumers: "{{useKclConsumers}}"
+ asyncClient: "{{asyncClient}}"
+ kclDisableCloudwatchMetricsExport: "{{kclDisableCloudwatchMetricsExport}}"
+ steps:
+ - to: "kamelet:sink"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: aws-lambda-sink
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjA2NSIgaGVpZ2h0PSIyNTAwIiB2aWV3Qm94PSIwIDAgMjU2IDMxMCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+PHBhdGggZD0iTTAgMjQ1LjI2MmwxNi4zMjIgOC4xNjFMMTkgMjQ4LjY2OFY1OS4zMzNsLTIuNjc4LTMuNDk0TDAgNjR2MTgxLjI2MiIgZmlsbD0iIzlENTAyNSIvPjxwYXRoIGQ9Ik00Ny42NzggNjMuNTdsLTMxLjM1Ni03LjczMXYxOTcuNTg0bDMxLjM1Ni03LjMwMlY2My41NyIgZmlsbD0iI0Y2ODUzNiIvPjxwYXRoIGQ9Ik0xNDMuODkzIDc4LjYwNGwyMi [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "AWS Lambda"
+ camel.apache.org/kamelet.namespace: "AWS"
+ labels:
+ camel.apache.org/kamelet.type: "sink"
+spec:
+ definition:
+ title: "AWS Lambda Sink"
+ description: Send a payload to an AWS Lambda function.
+ required:
+ - function
+ - region
+ type: object
+ properties:
+ function:
+ title: Function Name
+ description: The Lambda Function name.
+ type: string
+ accessKey:
+ title: Access Key
+ description: The access key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ secretKey:
+ title: Secret Key
+ description: The secret key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ region:
+ title: AWS Region
+ description: The AWS region to access.
+ type: string
+ enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
+ useDefaultCredentialsProvider:
+ title: Default Credentials Provider
+ description: If true, the Lambda client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
+ type: boolean
+ default: false
+ useProfileCredentialsProvider:
+ title: Profile Credentials Provider
+ description: Set whether the Lambda client should expect to load credentials through a profile credentials provider.
+ type: boolean
+ default: false
+ useSessionCredentials:
+ title: Session Credentials
+ description: Set whether the Lambda client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in Lambda.
+ type: boolean
+ default: false
+ profileCredentialsName:
+ title: Profile Credentials Name
+ description: If using a profile credentials provider this parameter sets the profile name.
+ type: string
+ sessionToken:
+ title: Session Token
+ description: Amazon AWS Session Token used when the user needs to assume a IAM role.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ dependencies:
+ - "camel:aws2-lambda"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: kamelet:source
+ steps:
+ - to:
+ uri: "aws2-lambda:{{function}}"
+ parameters:
+ accessKey: "{{?accessKey}}"
+ secretKey: "{{?secretKey}}"
+ region: "{{region}}"
+ useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+ useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
+ useSessionCredentials: "{{useSessionCredentials}}"
+ profileCredentialsName: "{{?profileCredentialsName}}"
+ sessionToken: "{{?sessionToken}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: aws-polly-sink
+ annotations:
+ camel.apache.org/kamelet.support.level: "Preview"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiA/PjxzdmcgZGF0YS1uYW1lPSJMYXllciAxIiBpZD0iTGF5ZXJfMSIgdmlld0JveD0iMCAwIDUxMiA1MTIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0iTTQzMC40MiwxOTYuMzJjOC0xMS4zOSwyMS4xNS0zOC4zMywwLTcyLjEzYTUyLjc5LDUyLjc5LDAsMCwwLTE3LjA2LTE3LjMxYy0xLjUzLTgtNy41NC0yNy4yNi0zMS40Mi00My45MUMzNTksNDcsMzI1LjUyLDQ5LjUzLDMxOS40NCw1MC4xNmE2NC4yNyw2NC4yNywwLDAsMC0xNi4wNy0yLjk0Yy0xNy4xNy0uODEtMzAuMzcsMy44OS0zOS43OCwxNC [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "AWS Polly"
+ camel.apache.org/kamelet.namespace: "AWS"
+ labels:
+ camel.apache.org/kamelet.type: "sink"
+spec:
+ definition:
+ title: "AWS Polly Sink"
+ description: Synthesize speech from text using AWS Polly.
+ required:
+ - region
+ type: object
+ properties:
+ voiceId:
+ title: Voice Id
+ description: The voice ID to use for speech synthesis (e.g., Joanna, Matthew, Amy, Brian).
+ type: string
+ outputFormat:
+ title: Output Format
+ description: The audio format in which the resulting stream will be encoded.
+ type: string
+ default: MP3
+ enum: ["MP3", "OggVorbis", "Pcm", "Json"]
+ textType:
+ title: Text Type
+ description: Specifies whether the input text is plain text or SSML.
+ type: string
+ default: TEXT
+ enum: ["TEXT", "SSML"]
+ engine:
+ title: Engine
+ description: Specifies the engine (standard, neural, long-form, generative) for Amazon Polly to use when processing input text for speech synthesis.
+ type: string
+ enum: ["standard", "neural", "long-form", "generative"]
+ sampleRate:
+ title: Sample Rate
+ description: The audio frequency in Hz.
+ type: string
+ languageCode:
+ title: Language Code
+ description: Optional language code for voice synthesis. This is only necessary if using a bilingual voice.
+ type: string
+ accessKey:
+ title: Access Key
+ description: The access key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ secretKey:
+ title: Secret Key
+ description: The secret key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ region:
+ title: AWS Region
+ description: The AWS region to access.
+ type: string
+ enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
+ useDefaultCredentialsProvider:
+ title: Default Credentials Provider
+ description: If true, the Polly client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
+ type: boolean
+ default: false
+ useProfileCredentialsProvider:
+ title: Profile Credentials Provider
+ description: Set whether the Polly client should expect to load credentials through a profile credentials provider.
+ type: boolean
+ default: false
+ useSessionCredentials:
+ title: Session Credentials
+ description: Set whether the Polly client should expect to use Session Credentials. This is useful in a situation in which the user needs to assume an IAM role for doing operations in Polly.
+ type: boolean
+ default: false
+ profileCredentialsName:
+ title: Profile Credentials Name
+ description: If using a profile credentials provider this parameter sets the profile name.
+ type: string
+ sessionToken:
+ title: Session Token
+ description: Amazon AWS Session Token used when the user needs to assume an IAM role.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ uriEndpointOverride:
+ title: Overwrite Endpoint URI
+ description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
+ type: string
+ overrideEndpoint:
+ title: Endpoint Overwrite
+ description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
+ type: boolean
+ default: false
+ dependencies:
+ - "camel:core"
+ - "camel:aws2-polly"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: "kamelet:source"
+ steps:
+ - to:
+ uri: "aws2-polly:polly"
+ parameters:
+ secretKey: "{{?secretKey}}"
+ accessKey: "{{?accessKey}}"
+ region: "{{region}}"
+ operation: synthesizeSpeech
+ voiceId: "{{?voiceId}}"
+ outputFormat: "{{outputFormat}}"
+ textType: "{{textType}}"
+ engine: "{{?engine}}"
+ sampleRate: "{{?sampleRate}}"
+ languageCode: "{{?languageCode}}"
+ useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+ useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
+ useSessionCredentials: "{{useSessionCredentials}}"
+ uriEndpointOverride: "{{?uriEndpointOverride}}"
+ profileCredentialsName: "{{?profileCredentialsName}}"
+ sessionToken: "{{?sessionToken}}"
+ overrideEndpoint: "{{overrideEndpoint}}"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: aws-redshift-sink
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxNjE1IDE3ODMuNyIgdmlld0JveD0iMCAwIDE2MTUgMTc4My43IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Im04MDcuNSAxMzYzLjggNjc4LjMgMTYxLjV2LTEyNzAuNWwtNjc4LjMgMTYxLjV6IiBmaWxsPSIjMjA1Yjk3Ii8+PHBhdGggZD0ibTE0ODUuOCAyNTQuOCAxMjkuMiA2NC42djExNDEuM2wtMTI5LjIgNjQuNnptLTY3OC4zIDExMDktNjc4LjMgMTYxLjV2LTEyNzAuNWw2NzguMyAxNjEuNXoiIGZpbGw9IiM1MTkzY2UiLz48cGF0aCBkPSJtMTI5LjIgMjU0LjgtMTI5Lj [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "AWS Redshift"
+ camel.apache.org/kamelet.namespace: "AWS"
+ labels:
+ camel.apache.org/kamelet.type: "sink"
+spec:
+ definition:
+ title: "AWS Redshift Sink"
+ description: Send data to an AWS Redshift Database. This Kamelet expects a JSON-formatted body. Use key:value pairs to map the JSON fields and parameters.
+ required:
+ - serverName
+ - username
+ - password
+ - query
+ - databaseName
+ type: object
+ properties:
+ serverName:
+ title: Server Name
+ description: The server name for the data source.
+ type: string
+ example: localhost
+ serverPort:
+ title: Server Port
+ description: The server port for the AWS RedShi data source.
+ type: string
+ default: 5439
+ username:
+ title: Username
+ description: The username to access a secured AWS Redshift Database.
+ type: string
+ x-descriptors:
+ - urn:camel:group:credentials
+ password:
+ title: Password
+ description: The password to access a secured AWS Redshift Database.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ query:
+ title: Query
+ description: The query to execute against the AWS Redshift Database.
+ type: string
+ example: 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)'
+ databaseName:
+ title: Database Name
+ description: The name of the AWS RedShift Database.
+ type: string
+ types:
+ in:
+ mediaType: application/json
+ dependencies:
+ - "camel:jackson"
+ - "camel:kamelet"
+ - "camel:sql"
+ - "mvn:com.amazon.redshift:redshift-jdbc42:2.2.4"
+ - "mvn:org.apache.commons:commons-dbcp2:2.14.0"
+ template:
+ beans:
+ - name: local-sql-redshift-sink
+ type: "#class:org.apache.camel.component.sql.SqlComponent"
+ properties:
+ autowiredEnabled: "false"
+ - name: dsBean
+ type: "#class:org.apache.commons.dbcp2.BasicDataSource"
+ properties:
+ username: '{{username}}'
+ password: '{{password}}'
+ url: 'jdbc:redshift://{{serverName}}:{{serverPort}}/{{databaseName}}'
+ driverClassName: 'com.amazon.redshift.jdbc.Driver'
+ from:
+ uri: "kamelet:source"
+ steps:
+ - unmarshal:
+ json:
+ library: Jackson
+ - to:
+ uri: "{{local-sql-redshift-sink}}:{{query}}"
+ parameters:
+ dataSource: "#bean:{{dsBean}}"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: aws-redshift-source
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxNjE1IDE3ODMuNyIgdmlld0JveD0iMCAwIDE2MTUgMTc4My43IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Im04MDcuNSAxMzYzLjggNjc4LjMgMTYxLjV2LTEyNzAuNWwtNjc4LjMgMTYxLjV6IiBmaWxsPSIjMjA1Yjk3Ii8+PHBhdGggZD0ibTE0ODUuOCAyNTQuOCAxMjkuMiA2NC42djExNDEuM2wtMTI5LjIgNjQuNnptLTY3OC4zIDExMDktNjc4LjMgMTYxLjV2LTEyNzAuNWw2NzguMyAxNjEuNXoiIGZpbGw9IiM1MTkzY2UiLz48cGF0aCBkPSJtMTI5LjIgMjU0LjgtMTI5Lj [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "AWS Redshift"
+ camel.apache.org/kamelet.namespace: "AWS"
+ labels:
+ camel.apache.org/kamelet.type: "source"
+spec:
+ definition:
+ title: "AWS Redshift Source"
+ description: Query data from an AWS RedShift Database.
+ required:
+ - serverName
+ - username
+ - password
+ - query
+ - databaseName
+ type: object
+ properties:
+ serverName:
+ title: Server Name
+ description: The server name for the data source.
+ type: string
+ example: localhost
+ serverPort:
+ title: Server Port
+ description: The server port for the data source.
+ type: string
+ default: 5439
+ username:
+ title: Username
+ description: The username to access a secured AWS RedShift Database.
+ type: string
+ x-descriptors:
+ - urn:camel:group:credentials
+ password:
+ title: Password
+ description: The password to access a secured AWS RedShift Database.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ query:
+ title: Query
+ description: The query to execute against the AWS RedShift Database.
+ type: string
+ example: 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)'
+ databaseName:
+ title: Database Name
+ description: The name of the AWS RedShift Database.
+ type: string
+ consumedQuery:
+ title: Consumed Query
+ description: A query to run on a tuple consumed.
+ type: string
+ example: 'DELETE FROM accounts where user_id = :#user_id'
+ delay:
+ title: Delay
+ description: The number of milliseconds before the next poll from the AWS RedShift database.
+ type: integer
+ default: 500
+ types:
+ out:
+ mediaType: application/json
+ dependencies:
+ - "camel:jackson"
+ - "camel:kamelet"
+ - "camel:sql"
+ - "mvn:com.amazon.redshift:redshift-jdbc42:2.2.4"
+ - "mvn:org.apache.commons:commons-dbcp2:2.14.0"
+ template:
+ beans:
+ - name: local-sql-redshift-source
+ type: "#class:org.apache.camel.component.sql.SqlComponent"
+ properties:
+ autowiredEnabled: "false"
+ - name: dsBean
+ type: "#class:org.apache.commons.dbcp2.BasicDataSource"
+ properties:
+ username: '{{username}}'
+ password: '{{password}}'
+ url: 'jdbc:redshift://{{serverName}}:{{serverPort}}/{{databaseName}}'
+ driverClassName: 'com.amazon.redshift.jdbc.Driver'
+ from:
+ uri: "{{local-sql-redshift-source}}:{{query}}"
+ parameters:
+ dataSource: "#bean:{{dsBean}}"
+ onConsume: "{{?consumedQuery}}"
+ delay: "{{delay}}"
+ steps:
+ - marshal:
+ json:
+ library: Jackson
+ - to: "kamelet:sink"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: aws-s3-event-based-source
+ annotations:
+ camel.apache.org/kamelet.support.level: Preview
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: >-
+ data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFRE [...]
+ camel.apache.org/provider: Apache Software Foundation
+ camel.apache.org/kamelet.group: AWS S3 Event-Based
+ camel.apache.org/kamelet.namespace: "AWS"
+ labels:
+ camel.apache.org/kamelet.type: "source"
+spec:
+ definition:
+ title: "AWS S3 Event Based Source"
+ description: Receive data from AWS SQS subscribed to Eventbridge Bus reporting events related to an S3 bucket or multiple buckets.
+ required:
+ - accessKey
+ - secretKey
+ - queueNameOrArn
+ - region
+ type: object
+ properties:
+ queueNameOrArn:
+ title: Queue Name
+ description: The SQS Queue Name or ARN
+ type: string
+ deleteAfterRead:
+ title: Auto-delete Messages
+ description: Delete messages after consuming them
+ type: boolean
+ default: true
+ accessKey:
+ title: Access Key
+ description: The access key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - 'urn:camel:group:credentials'
+ secretKey:
+ title: Secret Key
+ description: The secret key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - 'urn:camel:group:credentials'
+ region:
+ title: AWS Region
+ description: The AWS region to access.
+ type: string
+ enum:
+ - ap-south-1
+ - eu-south-1
+ - us-gov-east-1
+ - me-central-1
+ - ca-central-1
+ - eu-central-1
+ - us-iso-west-1
+ - us-west-1
+ - us-west-2
+ - af-south-1
+ - eu-north-1
+ - eu-west-3
+ - eu-west-2
+ - eu-west-1
+ - ap-northeast-3
+ - ap-northeast-2
+ - ap-northeast-1
+ - me-south-1
+ - sa-east-1
+ - ap-east-1
+ - cn-north-1
+ - us-gov-west-1
+ - ap-southeast-1
+ - ap-southeast-2
+ - us-iso-east-1
+ - ap-southeast-3
+ - us-east-1
+ - us-east-2
+ - cn-northwest-1
+ - us-isob-east-1
+ - aws-global
+ - aws-cn-global
+ - aws-us-gov-global
+ - aws-iso-global
+ - aws-iso-b-global
+ autoCreateQueue:
+ title: Autocreate Queue
+ description: Setting the autocreation of the SQS queue.
+ type: boolean
+ default: false
+ amazonAWSHost:
+ title: AWS Host
+ description: The hostname of the Amazon AWS cloud.
+ type: string
+ default: amazonaws.com
+ protocol:
+ title: Protocol
+ description: The underlying protocol used to communicate with SQS
+ type: string
+ example: http or https
+ default: https
+ queueURL:
+ title: Queue URL
+ description: The full SQS Queue URL
+ type: string
+ uriEndpointOverride:
+ title: Overwrite Endpoint URI
+ description: >-
+ The overriding endpoint URI. To use this option, you must also select
+ the `overrideEndpoint` option.
+ type: string
+ overrideEndpoint:
+ title: Endpoint Overwrite
+ description: >-
+ Select this option to override the endpoint URI. To use this option,
+ you must also provide a URI for the `uriEndpointOverride` option.
+ type: boolean
+ default: false
+ delay:
+ title: Delay
+ description: The number of milliseconds before the next poll of the selected stream
+ type: integer
+ default: 500
+ greedy:
+ title: Greedy Scheduler
+ description: >-
+ If greedy is enabled, then the polling will happen immediately again,
+ if the previous run polled 1 or more messages.
+ type: boolean
+ default: false
+ getObject:
+ title: Greedy Object in Bucket
+ description: >-
+ If `getObject` is enabled, then the file created in the bucket is
+ retrieved and returned as body. If not, only the event will returned as body.
+ type: boolean
+ default: false
+ dependencies:
+ - 'camel:core'
+ - 'camel:aws2-sqs'
+ - 'camel:aws2-s3'
+ - 'camel:jsonpath'
+ - 'camel:kamelet'
+ - 'camel:jackson'
+ template:
+ from:
+ uri: 'aws2-sqs:{{queueNameOrArn}}'
+ parameters:
+ autoCreateQueue: '{{autoCreateQueue}}'
+ secretKey: '{{?secretKey}}'
+ accessKey: '{{?accessKey}}'
+ region: '{{region}}'
+ deleteAfterRead: '{{deleteAfterRead}}'
+ amazonAWSHost: '{{?amazonAWSHost}}'
+ protocol: '{{?protocol}}'
+ uriEndpointOverride: '{{?uriEndpointOverride}}'
+ overrideEndpoint: '{{overrideEndpoint}}'
+ delay: '{{delay}}'
+ greedy: '{{greedy}}'
+ steps:
+ - choice:
+ precondition: true
+ when:
+ - simple: '${properties:getObject:true}'
+ steps:
+ - unmarshal:
+ json:
+ library: Jackson
+ unmarshalType: com.fasterxml.jackson.databind.JsonNode
+ - setProperty:
+ name: s3-event-name
+ jsonpath: $.detail.reason
+ - choice:
+ when:
+ - simple: '${exchangeProperty.s3-event-name} == "PutObject"'
+ steps:
+ - setProperty:
+ name: aws-s3-name
+ jsonpath: $.detail.object.key
+ - setProperty:
+ name: aws-s3-bucket
+ jsonpath: $.detail.bucket.name
+ - toD: >-
+ aws2-s3:${exchangeProperty.aws-s3-bucket}?accessKey={{accessKey}}&secretKey={{secretKey}}®ion={{region}}&operation=getObject&keyName=${exchangeProperty.aws-s3-name}
+ - to: 'kamelet:sink'
+
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: aws-s3-sink
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHg9IjAiIHk9IjAiIHZpZXdCb3g9IjAgMCAyNDguMiAzMDAiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxzdHlsZT4uc3QyOHtmaWxsOiM4YzMxMjN9LnN0Mjl7ZmlsbDojZTA1MjQzfTwvc3R5bGU+PHBhdGggY2xhc3M9InN0MjgiIGQ9Ik0yMCA1Mi4xTDAgNjJ2MTc1LjVsMjAgOS45LjEtLjFWNTIuMmwtLjEtLjEiLz48cGF0aCBjbGFzcz0ic3QyOSIgZD0iTTEyNyAyMjJMMjAgMjQ3LjVWNTIuMUwxMjcgNzd2MTQ1Ii8+PHBhdGggY2xhc3M9InN0MjgiIG [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "AWS S3"
+ camel.apache.org/kamelet.namespace: "AWS"
+ labels:
+ camel.apache.org/kamelet.type: "sink"
+spec:
+ definition:
+ title: "AWS S3 Sink"
+ description: Upload data to an Amazon S3 Bucket.
+ required:
+ - bucketNameOrArn
+ - region
+ type: object
+ properties:
+ bucketNameOrArn:
+ title: Bucket Name
+ description: The S3 Bucket name or Amazon Resource Name (ARN).
+ type: string
+ accessKey:
+ title: Access Key
+ description: The access key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ secretKey:
+ title: Secret Key
+ description: The secret key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ region:
+ title: AWS Region
+ description: The AWS region to access.
+ type: string
+ enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
+ autoCreateBucket:
+ title: Autocreate Bucket
+ description: Specifies to automatically create the S3 bucket.
+ type: boolean
+ default: false
+ useDefaultCredentialsProvider:
+ title: Default Credentials Provider
+ description: If true, the S3 client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
+ type: boolean
+ default: false
+ useProfileCredentialsProvider:
+ title: Profile Credentials Provider
+ description: Set whether the S3 client should expect to load credentials through a profile credentials provider.
+ type: boolean
+ default: false
+ useSessionCredentials:
+ title: Session Credentials
+ description: Set whether the S3 client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in S3.
+ type: boolean
+ default: false
+ profileCredentialsName:
+ title: Profile Credentials Name
+ description: If using a profile credentials provider this parameter sets the profile name.
+ type: string
+ sessionToken:
+ title: Session Token
+ description: Amazon AWS Session Token used when the user needs to assume a IAM role.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ uriEndpointOverride:
+ title: Overwrite Endpoint URI
+ description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
+ type: string
+ overrideEndpoint:
+ title: Endpoint Overwrite
+ description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
+ type: boolean
+ default: false
+ forcePathStyle:
+ title: Force Path Style
+ description: Forces path style when accessing AWS S3 buckets.
+ type: boolean
+ default: false
+ keyName:
+ title: Key Name
+ description: The key name for saving an element in the bucket.
+ type: string
+ dependencies:
+ - "camel:core"
+ - "camel:aws2-s3"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: "kamelet:source"
+ steps:
+ - choice:
+ precondition: true
+ when:
+ - simple: '${propertiesExist:!keyName}'
+ steps:
+ - choice:
+ when:
+ - simple: "${header[file]}"
+ steps:
+ - setHeader:
+ name: CamelAwsS3Key
+ simple: "${header[file]}"
+ - simple: "${header[ce-file]}"
+ steps:
+ - setHeader:
+ name: CamelAwsS3Key
+ simple: "${header[ce-file]}"
+ otherwise:
+ steps:
+ - setHeader:
+ name: CamelAwsS3Key
+ simple: "${exchangeId}"
+ - to:
+ uri: "aws2-s3:{{bucketNameOrArn}}"
+ parameters:
+ secretKey: "{{?secretKey}}"
+ accessKey: "{{?accessKey}}"
+ region: "{{region}}"
+ autoCreateBucket: "{{autoCreateBucket}}"
+ useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+ useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
+ useSessionCredentials: "{{useSessionCredentials}}"
+ uriEndpointOverride: "{{?uriEndpointOverride}}"
+ profileCredentialsName: "{{?profileCredentialsName}}"
+ sessionToken: "{{?sessionToken}}"
+ overrideEndpoint: "{{overrideEndpoint}}"
+ forcePathStyle: "{{forcePathStyle}}"
+ keyName: "{{?keyName}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: aws-s3-source
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHg9IjAiIHk9IjAiIHZpZXdCb3g9IjAgMCAyNDguMiAzMDAiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxzdHlsZT4uc3QyOHtmaWxsOiM4YzMxMjN9LnN0Mjl7ZmlsbDojZTA1MjQzfTwvc3R5bGU+PHBhdGggY2xhc3M9InN0MjgiIGQ9Ik0yMCA1Mi4xTDAgNjJ2MTc1LjVsMjAgOS45LjEtLjFWNTIuMmwtLjEtLjEiLz48cGF0aCBjbGFzcz0ic3QyOSIgZD0iTTEyNyAyMjJMMjAgMjQ3LjVWNTIuMUwxMjcgNzd2MTQ1Ii8+PHBhdGggY2xhc3M9InN0MjgiIG [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "AWS S3"
+ camel.apache.org/kamelet.namespace: "AWS"
+ labels:
+ camel.apache.org/kamelet.type: "source"
+spec:
+ definition:
+ title: "AWS S3 Source"
+ description: Receive data from an Amazon S3 Bucket.
+ required:
+ - bucketNameOrArn
+ - region
+ type: object
+ properties:
+ bucketNameOrArn:
+ title: Bucket Name
+ description: The S3 Bucket name or Amazon Resource Name (ARN).
+ type: string
+ deleteAfterRead:
+ title: Auto-delete Objects
+ description: Specifies to delete objects after consuming them.
+ type: boolean
+ default: true
+ moveAfterRead:
+ title: Move Objects After Delete
+ description: Move objects from S3 bucket to a different bucket after they have been retrieved.
+ type: boolean
+ default: false
+ destinationBucket:
+ title: Destination Bucket
+ description: Define the destination bucket where an object must be moved when moveAfterRead is set to true.
+ type: string
+ destinationBucketPrefix:
+ title: Destination Bucket Prefix
+ description: Define the destination bucket prefix to use when an object must be moved, and moveAfterRead is set to true.
+ type: string
+ destinationBucketSuffix:
+ title: Destination Bucket Suffix
+ description: Define the destination bucket suffix to use when an object must be moved, and moveAfterRead is set to true.
+ type: string
+ accessKey:
+ title: Access Key
+ description: The access key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ secretKey:
+ title: Secret Key
+ description: The secret key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ region:
+ title: AWS Region
+ description: The AWS region to access.
+ type: string
+ enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
+ autoCreateBucket:
+ title: Autocreate Bucket
+ description: Specifies to automatically create the S3 bucket.
+ type: boolean
+ default: false
+ prefix:
+ title: Prefix
+ description: The AWS S3 bucket prefix to consider while searching.
+ type: string
+ example: 'folder/'
+ ignoreBody:
+ title: Ignore Body
+ description: If true, the S3 Object body is ignored. Setting this to true overrides any behavior defined by the `includeBody` option. If false, the S3 object is put in the body.
+ type: boolean
+ default: false
+ useDefaultCredentialsProvider:
+ title: Default Credentials Provider
+ description: If true, the S3 client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
+ type: boolean
+ default: false
+ useProfileCredentialsProvider:
+ title: Profile Credentials Provider
+ description: Set whether the S3 client should expect to load credentials through a profile credentials provider.
+ type: boolean
+ default: false
+ useSessionCredentials:
+ title: Session Credentials
+ description: Set whether the S3 client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in S3.
+ type: boolean
+ default: false
+ profileCredentialsName:
+ title: Profile Credentials Name
+ description: If using a profile credentials provider this parameter sets the profile name.
+ type: string
+ sessionToken:
+ title: Session Token
+ description: Amazon AWS Session Token used when the user needs to assume a IAM role.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ uriEndpointOverride:
+ title: Overwrite Endpoint URI
+ description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
+ type: string
+ overrideEndpoint:
+ title: Endpoint Overwrite
+ description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
+ type: boolean
+ default: false
+ forcePathStyle:
+ title: Force Path Style
+ description: Forces path style when accessing AWS S3 buckets.
+ type: boolean
+ default: false
+ delay:
+ title: Delay
+ description: The number of milliseconds before the next poll of the selected bucket.
+ type: integer
+ default: 500
+ maxMessagesPerPoll:
+ title: Max Messages Per Poll
+ description: Gets the maximum number of messages as a limit to poll at each polling. Gets the maximum number of messages as a limit to poll at each polling. The default value is 10. Use 0 or a negative number to set it as unlimited.
+ type: integer
+ default: 10
+ dataTypes:
+ out:
+ default: binary
+ headers:
+ CamelAwsS3BucketName:
+ title: S3 Bucket Name
+ description: The bucket name which has been used to retrieve objects
+ type: string
+ CamelAwsS3Key:
+ title: S3 Key
+ description: The key under which the retrieved object is stored.
+ type: string
+ CamelAwsS3ContentType:
+ title: Content Type
+ description: The content type of the retrieved object.
+ default: application/octet-stream
+ type: string
+ CamelAwsS3ETag:
+ title: ETag Value
+ description: The hex encoded 128-bit MD5 digest of the associated object according to RFC 1864.
+ type: string
+ types:
+ binary:
+ format: "application-octet-stream"
+ description: Default binary representation of the S3 object retrieved from the bucket.
+ mediaType: application/octet-stream
+ cloudevents:
+ format: "aws2-s3:application-cloudevents"
+ description: Output data type represents AWS S3 get object response as CloudEvent V1. The data type sets Camel specific CloudEvent headers on the exchange with respective data from the S3 bucket and its derived object.
+ headers:
+ CamelCloudEventID:
+ title: CloudEvent ID
+ description: The Camel exchange id set as event id
+ type: string
+ CamelCloudEventType:
+ title: CloudEvent Type
+ description: The event type
+ default: "org.apache.camel.event.aws.s3.getObject"
+ type: string
+ CamelCloudEventSource:
+ title: CloudEvent Source
+ description: The event source. By default, the S3 bucket name with prefix "aws.s3.bucket.".
+ type: string
+ CamelCloudEventSubject:
+ title: CloudEvent Subject
+ description: The event subject. Usually the S3 key.
+ type: string
+ CamelCloudEventTime:
+ title: CloudEvent Time
+ description: The exchange creation timestamp as event time.
+ type: string
+ dependencies:
+ - "camel:core"
+ - "camel:aws2-s3"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: "aws2-s3:{{bucketNameOrArn}}"
+ parameters:
+ autoCreateBucket: "{{autoCreateBucket}}"
+ secretKey: "{{?secretKey}}"
+ accessKey: "{{?accessKey}}"
+ region: "{{region}}"
+ ignoreBody: "{{ignoreBody}}"
+ deleteAfterRead: "{{deleteAfterRead}}"
+ moveAfterRead: "{{moveAfterRead}}"
+ destinationBucket: "{{?destinationBucket}}"
+ destinationBucketPrefix: "{{?destinationBucketPrefix}}"
+ destinationBucketSuffix: "{{?destinationBucketSuffix}}"
+ prefix: "{{?prefix}}"
+ useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+ useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
+ useSessionCredentials: "{{useSessionCredentials}}"
+ uriEndpointOverride: "{{?uriEndpointOverride}}"
+ profileCredentialsName: "{{?profileCredentialsName}}"
+ sessionToken: "{{?sessionToken}}"
+ overrideEndpoint: "{{overrideEndpoint}}"
+ forcePathStyle: "{{forcePathStyle}}"
+ delay: "{{delay}}"
+ maxMessagesPerPoll: "{{maxMessagesPerPoll}}"
+ steps:
+ - to: "kamelet:sink"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: aws-s3-streaming-upload-sink
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHg9IjAiIHk9IjAiIHZpZXdCb3g9IjAgMCAyNDguMiAzMDAiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxzdHlsZT4uc3QyOHtmaWxsOiM4YzMxMjN9LnN0Mjl7ZmlsbDojZTA1MjQzfTwvc3R5bGU+PHBhdGggY2xhc3M9InN0MjgiIGQ9Ik0yMCA1Mi4xTDAgNjJ2MTc1LjVsMjAgOS45LjEtLjFWNTIuMmwtLjEtLjEiLz48cGF0aCBjbGFzcz0ic3QyOSIgZD0iTTEyNyAyMjJMMjAgMjQ3LjVWNTIuMUwxMjcgNzd2MTQ1Ii8+PHBhdGggY2xhc3M9InN0MjgiIG [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "AWS S3"
+ camel.apache.org/kamelet.namespace: "AWS"
+ labels:
+ camel.apache.org/kamelet.type: "sink"
+spec:
+ definition:
+ title: "AWS S3 Streaming upload Sink"
+ description: Upload data to AWS S3 in streaming upload mode.
+ required:
+ - bucketNameOrArn
+ - region
+ - keyName
+ type: object
+ properties:
+ bucketNameOrArn:
+ title: Bucket Name
+ description: The S3 Bucket name or Amazon Resource Name (ARN).
+ type: string
+ accessKey:
+ title: Access Key
+ description: The access key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ secretKey:
+ title: Secret Key
+ description: The secret key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ region:
+ title: AWS Region
+ description: The AWS region to access.
+ type: string
+ enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
+ autoCreateBucket:
+ title: Autocreate Bucket
+ description: Setting the autocreation of the S3 bucket bucketName.
+ type: boolean
+ default: false
+ restartingPolicy:
+ title: Restarting Policy
+ description: The restarting policy to use in streaming upload mode. There are 2 enums and the value can be one of `override`, `lastPart`.
+ type: string
+ default: "lastPart"
+ batchMessageNumber:
+ title: Batch Message Number
+ description: The number of messages composing a batch in streaming upload mode.
+ type: integer
+ default: 10
+ batchSize:
+ title: Batch Size
+ description: The batch size (in bytes) in streaming upload mode.
+ type: integer
+ default: 1000000
+ streamingUploadTimeout:
+ title: Streaming Upload Timeout
+ description: While streaming upload mode is true, this option set the timeout to complete upload.
+ type: integer
+ namingStrategy:
+ title: Naming Strategy
+ description: The naming strategy to use in streaming upload mode. There are 2 enums and the value can be one of progressive, random.
+ type: string
+ default: "progressive"
+ keyName:
+ title: Key Name
+ description: Setting the key name for an element in the bucket through endpoint parameter. In Streaming Upload, with the default configuration, this is the base for the progressive creation of files.
+ type: string
+ useDefaultCredentialsProvider:
+ title: Default Credentials Provider
+ description: Set whether the S3 client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in.
+ type: boolean
+ default: false
+ useProfileCredentialsProvider:
+ title: Profile Credentials Provider
+ description: Set whether the S3 client should expect to load credentials through a profile credentials provider.
+ type: boolean
+ default: false
+ useSessionCredentials:
+ title: Session Credentials
+ description: Set whether the S3 client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in S3.
+ type: boolean
+ default: false
+ profileCredentialsName:
+ title: Profile Credentials Name
+ description: If using a profile credentials provider this parameter sets the profile name.
+ type: string
+ sessionToken:
+ title: Session Token
+ description: Amazon AWS Session Token used when the user needs to assume a IAM role.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ uriEndpointOverride:
+ title: Overwrite Endpoint URI
+ description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
+ type: string
+ overrideEndpoint:
+ title: Endpoint Overwrite
+ description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
+ type: boolean
+ default: false
+ forcePathStyle:
+ title: Force Path Style
+ description: Forces path style when accessing AWS S3 buckets.
+ type: boolean
+ default: false
+ dependencies:
+ - "camel:aws2-s3"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: "kamelet:source"
+ steps:
+ - to:
+ uri: "aws2-s3:{{bucketNameOrArn}}"
+ parameters:
+ secretKey: "{{?secretKey}}"
+ accessKey: "{{?accessKey}}"
+ region: "{{region}}"
+ autoCreateBucket: "{{autoCreateBucket}}"
+ streamingUploadMode: "true"
+ restartingPolicy: "{{restartingPolicy}}"
+ batchMessageNumber: "{{batchMessageNumber}}"
+ batchSize: "{{batchSize}}"
+ namingStrategy: "{{namingStrategy}}"
+ keyName: "{{keyName}}"
+ streamingUploadTimeout: "{{?streamingUploadTimeout}}"
+ useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+ useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
+ useSessionCredentials: "{{useSessionCredentials}}"
+ uriEndpointOverride: "{{?uriEndpointOverride}}"
+ profileCredentialsName: "{{?profileCredentialsName}}"
+ sessionToken: "{{?sessionToken}}"
+ overrideEndpoint: "{{overrideEndpoint}}"
+ forcePathStyle: "{{forcePathStyle}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: aws-secrets-manager-sink
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgNzUgNzUiIHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6dXJsKCNSZWRHcmFkaWVudCk7fS5jbHMtMntmaWxsOiNmZmY7fTwvc3R5bGU+PGxpbmVhckdyYWRpZW50IGlkPSJSZWRHcmFkaWVudCIgeDE9Ii0yMDQyLjU0IiB5MT0iMTk4NS40NyIgeDI9Ii0xOTM2LjQ3IiB5Mj0iMjA5MS41NCIgZ3JhZGllbnRUcmFuc2Zvcm09InRyYW5zbGF0ZSgtMjAwMSAtMT [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "AWS Secrets Manager"
+ camel.apache.org/kamelet.namespace: "AWS"
+ labels:
+ camel.apache.org/kamelet.type: "sink"
+spec:
+ definition:
+ title: "AWS Secrets Manager Sink"
+ description: Create a secret in AWS Secrets Manager.
+ required:
+ - region
+ type: object
+ properties:
+ accessKey:
+ title: Access Key
+ description: The access key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ secretKey:
+ title: Secret Key
+ description: The secret key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ region:
+ title: AWS Region
+ description: The AWS region to access.
+ type: string
+ enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
+ useDefaultCredentialsProvider:
+ title: Default Credentials Provider
+ description: Set whether the Secrets Manager client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in.
+ type: boolean
+ default: false
+ useProfileCredentialsProvider:
+ title: Profile Credentials Provider
+ description: Set whether the Secrets Manager client should expect to load credentials through a profile credentials provider.
+ type: boolean
+ default: false
+ useSessionCredentials:
+ title: Session Credentials
+ description: Set whether the Secrets Manager client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in Secrets Manager.
+ type: boolean
+ default: false
+ profileCredentialsName:
+ title: Profile Credentials Name
+ description: If using a profile credentials provider this parameter sets the profile name.
+ type: string
+ sessionToken:
+ title: Session Token
+ description: Amazon AWS Session Token used when the user needs to assume a IAM role.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ dependencies:
+ - "camel:core"
+ - "camel:aws-secrets-manager"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: "kamelet:source"
+ steps:
+ - choice:
+ when:
+ - simple: "${header[secret-name]}"
+ steps:
+ - setHeader:
+ name: CamelAwsSecretsManagerSecretName
+ simple: "${header[secret-name]}"
+ - simple: "${header[ce-secret-name]}"
+ steps:
+ - setHeader:
+ name: CamelAwsSecretsManagerSecretName
+ simple: "${header[ce-secret-name]}"
+ otherwise:
+ steps:
+ - setHeader:
+ name: CamelAwsSecretsManagerSecretName
+ simple: "${exchangeId}"
+ - to:
+ uri: "aws-secrets-manager:kamelet"
+ parameters:
+ secretKey: "{{?secretKey}}"
+ accessKey: "{{?accessKey}}"
+ region: "{{region}}"
+ useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+ useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
+ useSessionCredentials: "{{useSessionCredentials}}"
+ operation: "createSecret"
+ profileCredentialsName: "{{?profileCredentialsName}}"
+ sessionToken: "{{?sessionToken}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: aws-ses-sink
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjI1NnB4IiBoZWlnaHQ9IjI5OXB4IiB2aWV3Qm94PSIwIDAgMjU2IDI5OSIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCI+Cgk8Zz4KCQk8cGF0aCBkPSJNNjAuNTU2LDQ3LjYwMiBMMCwxNDQuMDEgTDYwLjU1NiwyNDAuNDM0IEw2MS42MTIsMjM5LjY4MSBMNjAuODM3LDQ3LjggTD [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "AWS SES"
+ camel.apache.org/kamelet.namespace: "AWS"
+ labels:
+ camel.apache.org/kamelet.type: "sink"
+spec:
+ definition:
+ title: "AWS SES Sink"
+ description: Send email through the Amazon Simple Email Service (SES).
+ required:
+ - from
+ - region
+ type: object
+ properties:
+ from:
+ title: From
+ description: From address
+ type: string
+ example: user@example.com
+ accessKey:
+ title: Access Key
+ description: The access key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ secretKey:
+ title: Secret Key
+ description: The secret key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ region:
+ title: AWS Region
+ description: The AWS region to access.
+ type: string
+ enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
+ useDefaultCredentialsProvider:
+ title: Default Credentials Provider
+ description: If true, the SES client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
+ type: boolean
+ default: false
+ useProfileCredentialsProvider:
+ title: Profile Credentials Provider
+ description: Set whether the SES client should expect to load credentials through a profile credentials provider.
+ type: boolean
+ default: false
+ useSessionCredentials:
+ title: Session Credentials
+ description: Set whether the SES client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in SES.
+ type: boolean
+ default: false
+ profileCredentialsName:
+ title: Profile Credentials Name
+ description: If using a profile credentials provider this parameter sets the profile name.
+ type: string
+ sessionToken:
+ title: Session Token
+ description: Amazon AWS Session Token used when the user needs to assume a IAM role.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ dependencies:
+ - "camel:core"
+ - "camel:aws2-ses"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: "kamelet:source"
+ steps:
+ - choice:
+ when:
+ - simple: "${header[subject]}"
+ steps:
+ - setHeader:
+ name: CamelAwsSesSubject
+ simple: "${header[subject]}"
+ - simple: "${header[ce-subject]}"
+ steps:
+ - setHeader:
+ name: CamelAwsSesSubject
+ simple: "${header[ce-subject]}"
+ otherwise:
+ steps:
+ - setHeader:
+ name: CamelAwsSesSubject
+ simple: "${exchangeId}"
+ - choice:
+ when:
+ - simple: "${header[to]}"
+ steps:
+ - setHeader:
+ name: CamelAwsSesTo
+ simple: "${header[to]}"
+ - simple: "${header[ce-to]}"
+ steps:
+ - setHeader:
+ name: CamelAwsSesTo
+ simple: "${header[ce-to]}"
+ - choice:
+ when:
+ - simple: "${header[reply-to-addresses]}"
+ steps:
+ - setHeader:
+ name: CamelAwsSesReplyToAddresses
+ simple: "${header[reply-to-addresses]}"
+ - simple: "${header[ce-reply-to-addresses]}"
+ steps:
+ - setHeader:
+ name: CamelAwsSesReplyToAddresses
+ simple: "${header[ce-reply-to-addresses]}"
+ - to:
+ uri: "aws2-ses://{{from}}"
+ parameters:
+ secretKey: "{{?secretKey}}"
+ accessKey: "{{?accessKey}}"
+ region: "{{region}}"
+ useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+ useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
+ useSessionCredentials: "{{useSessionCredentials}}"
+ profileCredentialsName: "{{?profileCredentialsName}}"
+ sessionToken: "{{?sessionToken}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: aws-sns-fifo-sink
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8c3ZnICAgdmlld0JveD0iMCAwIDI1NiAyNTciIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPg0KCTxnPg0KCQk8cGF0aCBkPSJNOTguODc1LDIzMi4wMzMgTDcyLjQ0MiwyMjQuNjI1IEw0Ny40NDEsMTk2LjExNyBMNzguNzEzLDE5NS4yNTQgTDk4Ljg3NSwyMzIuMDMzIiBmaWxsPSIjOTk1QjgwIj [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "AWS SNS"
+ camel.apache.org/kamelet.namespace: "AWS"
+ labels:
+ camel.apache.org/kamelet.type: "sink"
+spec:
+ definition:
+ title: "AWS SNS FIFO Sink"
+ description: Send message to an AWS SNS FIFO Topic.
+ required:
+ - topicNameOrArn
+ - region
+ type: object
+ properties:
+ topicNameOrArn:
+ title: Topic Name
+ description: The SNS Topic name or ARN.
+ type: string
+ accessKey:
+ title: Access Key
+ description: The access key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ secretKey:
+ title: Secret Key
+ description: The secret key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ region:
+ title: AWS Region
+ description: The AWS region to access.
+ type: string
+ enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
+ contentBasedDeduplication:
+ title: Content-Based Deduplication
+ description: Use content-based deduplication (should be enabled in the SQS FIFO queue first).
+ type: boolean
+ default: false
+ autoCreateTopic:
+ title: Autocreate Topic
+ description: Setting the autocreation of the SNS topic.
+ type: boolean
+ default: false
+ useDefaultCredentialsProvider:
+ title: Default Credentials Provider
+ description: Set whether the SNS client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in.
+ type: boolean
+ default: false
+ useProfileCredentialsProvider:
+ title: Profile Credentials Provider
+ description: Set whether the SNS client should expect to load credentials through a profile credentials provider.
+ type: boolean
+ default: false
+ useSessionCredentials:
+ title: Session Credentials
+ description: Set whether the SNS client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in SNS.
+ type: boolean
+ default: false
+ profileCredentialsName:
+ title: Profile Credentials Name
+ description: If using a profile credentials provider this parameter sets the profile name.
+ type: string
+ sessionToken:
+ title: Session Token
+ description: Amazon AWS Session Token used when the user needs to assume a IAM role.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ uriEndpointOverride:
+ title: Overwrite Endpoint URI
+ description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
+ type: string
+ overrideEndpoint:
+ title: Endpoint Overwrite
+ description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
+ type: boolean
+ default: false
+ dependencies:
+ - "camel:aws2-sns"
+ - "camel:core"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: kamelet:source
+ steps:
+ - choice:
+ when:
+ - simple: "${header[subject]}"
+ steps:
+ - setHeader:
+ name: CamelAwsSnsSubject
+ simple: "${header[subject]}"
+ - simple: "${header[ce-subject]}"
+ steps:
+ - setHeader:
+ name: CamelAwsSnsSubject
+ simple: "${header[ce-subject]}"
+ - setProperty:
+ name: contentBasedDeduplication
+ constant: "{{contentBasedDeduplication}}"
+ - choice:
+ when:
+ - simple: "${header[group]}"
+ steps:
+ - setProperty:
+ name: CamelAwsSnsMessageGroupId
+ simple: "${header[group]}"
+ - simple: "${header[ce-group]}"
+ steps:
+ - setProperty:
+ name: CamelAwsSnsMessageGroupId
+ simple: "${header[ce-group]}"
+ otherwise:
+ steps:
+ - setProperty:
+ name: CamelAwsSnsMessageGroupId
+ simple: "${exchangeId}"
+ - choice:
+ when:
+ - simple: "${exchangeProperty.contentBasedDeduplication} == 'true'"
+ steps:
+ - to:
+ uri: "aws2-sns:{{topicNameOrArn}}"
+ parameters:
+ autoCreateTopic: "{{autoCreateTopic}}"
+ accessKey: "{{?accessKey}}"
+ secretKey: "{{?secretKey}}"
+ region: "{{region}}"
+ useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+ useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
+ useSessionCredentials: "{{useSessionCredentials}}"
+ messageGroupIdStrategy: "usePropertyValue"
+ messageDeduplicationIdStrategy: "useContentBasedDeduplication"
+ profileCredentialsName: "{{?profileCredentialsName}}"
+ sessionToken: "{{?sessionToken}}"
+ uriEndpointOverride: "{{?uriEndpointOverride}}"
+ overrideEndpoint: "{{overrideEndpoint}}"
+ otherwise:
+ steps:
+ - to:
+ uri: "aws2-sns:{{topicNameOrArn}}"
+ parameters:
+ autoCreateTopic: "{{autoCreateTopic}}"
+ accessKey: "{{?accessKey}}"
+ secretKey: "{{?secretKey}}"
+ region: "{{region}}"
+ useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+ useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
+ useSessionCredentials: "{{useSessionCredentials}}"
+ messageGroupIdStrategy: "usePropertyValue"
+ messageDeduplicationIdStrategy: "useExchangeId"
+ profileCredentialsName: "{{?profileCredentialsName}}"
+ sessionToken: "{{?sessionToken}}"
+ uriEndpointOverride: "{{?uriEndpointOverride}}"
+ overrideEndpoint: "{{overrideEndpoint}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: aws-sns-sink
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+DQo8c3ZnICAgdmlld0JveD0iMCAwIDI1NiAyNTciIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiPg0KCTxnPg0KCQk8cGF0aCBkPSJNOTguODc1LDIzMi4wMzMgTDcyLjQ0MiwyMjQuNjI1IEw0Ny40NDEsMTk2LjExNyBMNzguNzEzLDE5NS4yNTQgTDk4Ljg3NSwyMzIuMDMzIiBmaWxsPSIjOTk1QjgwIj [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "AWS SNS"
+ camel.apache.org/kamelet.namespace: "AWS"
+ labels:
+ camel.apache.org/kamelet.type: "sink"
+spec:
+ definition:
+ title: "AWS SNS Sink"
+ description: Send message to an Amazon Simple Notification Service (SNS) topic.
+ required:
+ - topicNameOrArn
+ - region
+ type: object
+ properties:
+ topicNameOrArn:
+ title: Topic Name
+ description: The SNS topic name name or Amazon Resource Name (ARN).
+ type: string
+ accessKey:
+ title: Access Key
+ description: The access key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ secretKey:
+ title: Secret Key
+ description: The secret key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ region:
+ title: AWS Region
+ description: The AWS region to access.
+ type: string
+ enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
+ autoCreateTopic:
+ title: Autocreate Topic
+ description: Setting the autocreation of the SNS topic.
+ type: boolean
+ default: false
+ useDefaultCredentialsProvider:
+ title: Default Credentials Provider
+ description: If true, the SNS client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
+ type: boolean
+ default: false
+ useProfileCredentialsProvider:
+ title: Profile Credentials Provider
+ description: Set whether the SNS client should expect to load credentials through a profile credentials provider.
+ type: boolean
+ default: false
+ useSessionCredentials:
+ title: Session Credentials
+ description: Set whether the SNS client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in SNS.
+ type: boolean
+ default: false
+ profileCredentialsName:
+ title: Profile Credentials Name
+ description: If using a profile credentials provider this parameter sets the profile name.
+ type: string
+ sessionToken:
+ title: Session Token
+ description: Amazon AWS Session Token used when the user needs to assume a IAM role.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ uriEndpointOverride:
+ title: Overwrite Endpoint URI
+ description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
+ type: string
+ overrideEndpoint:
+ title: Endpoint Overwrite
+ description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
+ type: boolean
+ default: false
+ dependencies:
+ - "camel:core"
+ - "camel:aws2-sns"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: kamelet:source
+ steps:
+ - choice:
+ when:
+ - simple: "${header[subject]}"
+ steps:
+ - setHeader:
+ name: CamelAwsSnsSubject
+ simple: "${header[subject]}"
+ - simple: "${header[ce-subject]}"
+ steps:
+ - setHeader:
+ name: CamelAwsSnsSubject
+ simple: "${header[ce-subject]}"
+ - to:
+ uri: "aws2-sns:{{topicNameOrArn}}"
+ parameters:
+ autoCreateTopic: "{{autoCreateTopic}}"
+ accessKey: "{{?accessKey}}"
+ secretKey: "{{?secretKey}}"
+ region: "{{region}}"
+ useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+ useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
+ useSessionCredentials: "{{useSessionCredentials}}"
+ uriEndpointOverride: "{{?uriEndpointOverride}}"
+ profileCredentialsName: "{{?profileCredentialsName}}"
+ sessionToken: "{{?sessionToken}}"
+ overrideEndpoint: "{{overrideEndpoint}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: aws-sqs-batch-sink
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "AWS SQS"
+ camel.apache.org/kamelet.namespace: "AWS"
+ labels:
+ camel.apache.org/kamelet.type: "sink"
+spec:
+ definition:
+ title: "AWS SQS Batch Sink"
+ description: Send Batch message to an AWS SQS Queue.
+ required:
+ - queueNameOrArn
+ - region
+ - batchSeparator
+ type: object
+ properties:
+ queueNameOrArn:
+ title: Queue Name
+ description: The SQS Queue name or ARN
+ type: string
+ accessKey:
+ title: Access Key
+ description: The access key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ secretKey:
+ title: Secret Key
+ description: The secret key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ region:
+ title: AWS Region
+ description: The AWS region to access.
+ type: string
+ enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
+ autoCreateQueue:
+ title: Autocreate Queue
+ description: Setting the autocreation of the SQS queue.
+ type: boolean
+ default: false
+ batchSeparator:
+ title: Batch Separator
+ description: The batch separator string
+ type: string
+ example: ","
+ amazonAWSHost:
+ title: AWS Host
+ description: The hostname of the Amazon AWS cloud.
+ type: string
+ default: amazonaws.com
+ protocol:
+ title: Protocol
+ description: The underlying protocol used to communicate with SQS
+ type: string
+ example: http or https
+ default: https
+ useDefaultCredentialsProvider:
+ title: Default Credentials Provider
+ description: Set whether the SQS client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in.
+ type: boolean
+ default: false
+ useProfileCredentialsProvider:
+ title: Profile Credentials Provider
+ description: Set whether the SQS client should expect to load credentials through a profile credentials provider.
+ type: boolean
+ default: false
+ useSessionCredentials:
+ title: Session Credentials
+ description: Set whether the SQS client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in SQS.
+ type: boolean
+ default: false
+ profileCredentialsName:
+ title: Profile Credentials Name
+ description: If using a profile credentials provider this parameter sets the profile name.
+ type: string
+ sessionToken:
+ title: Session Token
+ description: Amazon AWS Session Token used when the user needs to assume a IAM role.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ uriEndpointOverride:
+ title: Overwrite Endpoint URI
+ description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
+ type: string
+ overrideEndpoint:
+ title: Endpoint Overwrite
+ description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
+ type: boolean
+ default: false
+ dependencies:
+ - "camel:aws2-sqs"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: kamelet:source
+ steps:
+ - to:
+ uri: "aws2-sqs:{{queueNameOrArn}}"
+ parameters:
+ autoCreateQueue: "{{autoCreateQueue}}"
+ accessKey: "{{?accessKey}}"
+ secretKey: "{{?secretKey}}"
+ region: "{{region}}"
+ batchSeparator: "{{batchSeparator}}"
+ operation: "sendBatchMessage"
+ amazonAWSHost: "{{?amazonAWSHost}}"
+ protocol: "{{?protocol}}"
+ useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+ useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
+ useSessionCredentials: "{{useSessionCredentials}}"
+ uriEndpointOverride: "{{?uriEndpointOverride}}"
+ profileCredentialsName: "{{?profileCredentialsName}}"
+ sessionToken: "{{?sessionToken}}"
+ overrideEndpoint: "{{overrideEndpoint}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: aws-sqs-fifo-sink
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "AWS SQS"
+ camel.apache.org/kamelet.namespace: "AWS"
+ labels:
+ camel.apache.org/kamelet.type: "sink"
+spec:
+ definition:
+ title: "AWS SQS FIFO Sink"
+ description: Send message to an AWS SQS FIFO Queue.
+ required:
+ - queueNameOrArn
+ - region
+ type: object
+ properties:
+ queueNameOrArn:
+ title: Queue Name
+ description: The SQS Queue name or ARN
+ type: string
+ accessKey:
+ title: Access Key
+ description: The access key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ secretKey:
+ title: Secret Key
+ description: The secret key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ region:
+ title: AWS Region
+ description: The AWS region to access.
+ type: string
+ enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
+ contentBasedDeduplication:
+ title: Content-Based Deduplication
+ description: Use content-based deduplication (should be enabled in the SQS FIFO queue first)
+ type: boolean
+ default: false
+ autoCreateQueue:
+ title: Autocreate Queue
+ description: Setting the autocreation of the SQS queue.
+ type: boolean
+ default: false
+ amazonAWSHost:
+ title: AWS Host
+ description: The hostname of the Amazon AWS cloud.
+ type: string
+ default: amazonaws.com
+ protocol:
+ title: Protocol
+ description: The underlying protocol used to communicate with SQS
+ type: string
+ example: http or https
+ default: https
+ useDefaultCredentialsProvider:
+ title: Default Credentials Provider
+ description: Set whether the SQS client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in.
+ type: boolean
+ default: false
+ useProfileCredentialsProvider:
+ title: Profile Credentials Provider
+ description: Set whether the SQS client should expect to load credentials through a profile credentials provider.
+ type: boolean
+ default: false
+ useSessionCredentials:
+ title: Session Credentials
+ description: Set whether the SQS client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in SQS.
+ type: boolean
+ default: false
+ profileCredentialsName:
+ title: Profile Credentials Name
+ description: If using a profile credentials provider this parameter sets the profile name.
+ type: string
+ sessionToken:
+ title: Session Token
+ description: Amazon AWS Session Token used when the user needs to assume a IAM role.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ uriEndpointOverride:
+ title: Overwrite Endpoint URI
+ description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
+ type: string
+ overrideEndpoint:
+ title: Endpoint Overwrite
+ description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
+ type: boolean
+ default: false
+ dependencies:
+ - "camel:aws2-sqs"
+ - "camel:core"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: kamelet:source
+ steps:
+ - setProperty:
+ name: contentBasedDeduplication
+ constant: "{{contentBasedDeduplication}}"
+ - choice:
+ when:
+ - simple: "${header[group]}"
+ steps:
+ - setProperty:
+ name: CamelAwsMessageGroupId
+ simple: "${header[group]}"
+ - simple: "${header[ce-group]}"
+ steps:
+ - setProperty:
+ name: CamelAwsMessageGroupId
+ simple: "${header[ce-group]}"
+ otherwise:
+ steps:
+ - setProperty:
+ name: CamelAwsMessageGroupId
+ simple: "${exchangeId}"
+ - choice:
+ when:
+ - simple: "${exchangeProperty.contentBasedDeduplication} == 'true'"
+ steps:
+ - to:
+ uri: "aws2-sqs:{{queueNameOrArn}}"
+ parameters:
+ autoCreateQueue: "{{autoCreateQueue}}"
+ accessKey: "{{?accessKey}}"
+ secretKey: "{{?secretKey}}"
+ region: "{{region}}"
+ useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+ useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
+ useSessionCredentials: "{{useSessionCredentials}}"
+ messageGroupIdStrategy: "usePropertyValue"
+ messageDeduplicationIdStrategy: "useContentBasedDeduplication"
+ amazonAWSHost: "{{?amazonAWSHost}}"
+ protocol: "{{?protocol}}"
+ uriEndpointOverride: "{{?uriEndpointOverride}}"
+ profileCredentialsName: "{{?profileCredentialsName}}"
+ sessionToken: "{{?sessionToken}}"
+ overrideEndpoint: "{{overrideEndpoint}}"
+ otherwise:
+ steps:
+ - to:
+ uri: "aws2-sqs:{{queueNameOrArn}}"
+ parameters:
+ autoCreateQueue: "{{autoCreateQueue}}"
+ accessKey: "{{?accessKey}}"
+ secretKey: "{{?secretKey}}"
+ region: "{{region}}"
+ useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+ useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
+ useSessionCredentials: "{{useSessionCredentials}}"
+ messageGroupIdStrategy: "usePropertyValue"
+ messageDeduplicationIdStrategy: "useExchangeId"
+ amazonAWSHost: "{{?amazonAWSHost}}"
+ protocol: "{{?protocol}}"
+ uriEndpointOverride: "{{?uriEndpointOverride}}"
+ profileCredentialsName: "{{?profileCredentialsName}}"
+ sessionToken: "{{?sessionToken}}"
+ overrideEndpoint: "{{overrideEndpoint}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: aws-sqs-sink
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "AWS SQS"
+ camel.apache.org/kamelet.namespace: "AWS"
+ labels:
+ camel.apache.org/kamelet.type: "sink"
+spec:
+ definition:
+ title: "AWS SQS Sink"
+ description: Send messages to an Amazon Simple Queue Service (SQS) queue.
+ required:
+ - queueNameOrArn
+ - region
+ type: object
+ properties:
+ queueNameOrArn:
+ title: Queue Name
+ description: The SQS Queue name or or Amazon Resource Name (ARN).
+ type: string
+ accessKey:
+ title: Access Key
+ description: The access key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ secretKey:
+ title: Secret Key
+ description: The secret key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ region:
+ title: AWS Region
+ description: The AWS region to access.
+ type: string
+ enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
+ autoCreateQueue:
+ title: Autocreate Queue
+ description: Automatically create the SQS queue.
+ type: boolean
+ default: false
+ amazonAWSHost:
+ title: AWS Host
+ description: The hostname of the Amazon AWS cloud.
+ type: string
+ default: amazonaws.com
+ protocol:
+ title: Protocol
+ description: The underlying protocol used to communicate with SQS.
+ type: string
+ example: http or https
+ default: https
+ useDefaultCredentialsProvider:
+ title: Default Credentials Provider
+ description: If true, the SQS client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
+ type: boolean
+ default: false
+ useProfileCredentialsProvider:
+ title: Profile Credentials Provider
+ description: Set whether the SQS client should expect to load credentials through a profile credentials provider.
+ type: boolean
+ default: false
+ useSessionCredentials:
+ title: Session Credentials
+ description: Set whether the SQS client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in SQS.
+ type: boolean
+ default: false
+ profileCredentialsName:
+ title: Profile Credentials Name
+ description: If using a profile credentials provider this parameter sets the profile name.
+ type: string
+ sessionToken:
+ title: Session Token
+ description: Amazon AWS Session Token used when the user needs to assume a IAM role.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ uriEndpointOverride:
+ title: Overwrite Endpoint URI
+ description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
+ type: string
+ overrideEndpoint:
+ title: Endpoint Overwrite
+ description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
+ type: boolean
+ default: false
+ dependencies:
+ - "camel:aws2-sqs"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: kamelet:source
+ steps:
+ - to:
+ uri: "aws2-sqs:{{queueNameOrArn}}"
+ parameters:
+ autoCreateQueue: "{{autoCreateQueue}}"
+ accessKey: "{{?accessKey}}"
+ secretKey: "{{?secretKey}}"
+ region: "{{region}}"
+ amazonAWSHost: "{{?amazonAWSHost}}"
+ protocol: "{{?protocol}}"
+ useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+ useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
+ useSessionCredentials: "{{useSessionCredentials}}"
+ uriEndpointOverride: "{{?uriEndpointOverride}}"
+ profileCredentialsName: "{{?profileCredentialsName}}"
+ sessionToken: "{{?sessionToken}}"
+ overrideEndpoint: "{{overrideEndpoint}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: aws-sqs-source
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "AWS SQS"
+ camel.apache.org/kamelet.namespace: "AWS"
+ labels:
+ camel.apache.org/kamelet.type: "source"
+spec:
+ definition:
+ title: "AWS SQS Source"
+ description: Receive data from AWS SQS.
+ required:
+ - queueNameOrArn
+ - region
+ type: object
+ properties:
+ queueNameOrArn:
+ title: Queue Name
+ description: The SQS Queue Name or ARN.
+ type: string
+ deleteAfterRead:
+ title: Auto-delete Messages
+ description: Delete messages after consuming them.
+ type: boolean
+ default: true
+ accessKey:
+ title: Access Key
+ description: The access key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ secretKey:
+ title: Secret Key
+ description: The secret key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ region:
+ title: AWS Region
+ description: The AWS region to access.
+ type: string
+ enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
+ autoCreateQueue:
+ title: Autocreate Queue
+ description: Setting the autocreation of the SQS queue.
+ type: boolean
+ default: false
+ amazonAWSHost:
+ title: AWS Host
+ description: The hostname of the Amazon AWS cloud.
+ type: string
+ default: amazonaws.com
+ protocol:
+ title: Protocol
+ description: The underlying protocol used to communicate with SQS.
+ type: string
+ example: http or https
+ default: https
+ queueURL:
+ title: Queue URL
+ description: The full SQS Queue URL.
+ type: string
+ useDefaultCredentialsProvider:
+ title: Default Credentials Provider
+ description: If true, the SQS client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
+ type: boolean
+ default: false
+ useProfileCredentialsProvider:
+ title: Profile Credentials Provider
+ description: Set whether the SQS client should expect to load credentials through a profile credentials provider.
+ type: boolean
+ default: false
+ useSessionCredentials:
+ title: Session Credentials
+ description: Set whether the SQS client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in SQS.
+ type: boolean
+ default: false
+ profileCredentialsName:
+ title: Profile Credentials Name
+ description: If using a profile credentials provider this parameter sets the profile name.
+ type: string
+ sessionToken:
+ title: Session Token
+ description: Amazon AWS Session Token used when the user needs to assume a IAM role.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ uriEndpointOverride:
+ title: Overwrite Endpoint URI
+ description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
+ type: string
+ overrideEndpoint:
+ title: Endpoint Overwrite
+ description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
+ type: boolean
+ default: false
+ delay:
+ title: Delay
+ description: The number of milliseconds before the next poll of the selected stream.
+ type: integer
+ default: 500
+ greedy:
+ title: Greedy Scheduler
+ description: If greedy is enabled, then the polling will happen immediately again, if the previous run polled 1 or more messages.
+ type: boolean
+ default: false
+ maxMessagesPerPoll:
+ title: Max Messages Per Poll
+ description: The maximum number of messages to return. Amazon SQS never returns more messages than this value (however, fewer messages might be returned). Valid values 1 to 10. Default 1.
+ type: integer
+ minimum: "1"
+ maximum: "10"
+ default: 1
+ waitTimeSeconds:
+ title: Wait Time Seconds
+ description: The duration (in seconds) for which the call waits for a message to arrive in the queue before returning. If a message is available, the call returns sooner than WaitTimeSeconds. If no messages are available and the wait time expires, the call does not return a message list.
+ type: integer
+ minimum: "0"
+ visibilityTimeout:
+ title: Visibility Timeout
+ description: The duration (in seconds) that the received messages are hidden from subsequent retrieve requests after being retrieved by a ReceiveMessage request.
+ type: integer
+ minimum: "0"
+ dataTypes:
+ out:
+ default: text
+ headers:
+ CamelAwsSqsMessageId:
+ title: The SQS Message Id
+ description: The Amazon SQS message ID.
+ type: string
+ CamelAwsSqsReceiptHandle:
+ title: The SQS Message Receipt Handle
+ description: The Amazon SQS message receipt handle.
+ type: string
+ CamelAwsSqsMD5OfBody:
+ title: The SQS Message MD5 Checksum
+ description: The content type of the retrieved object.
+ default: application/octet-stream
+ type: string
+ CamelAwsSqsAttributes:
+ title: The SQS Message System Attributes
+ description: A map of the attributes requested in ReceiveMessage to their respective values, the Map type is Map<MessageSystemAttributeName, String>
+ type: object
+ CamelAwsSqsMessageAttributes:
+ title: The SQS Message Attributes
+ description: The Amazon SQS message attributes, the Map type is Map<String, MessageAttributeValue>
+ type: object
+ types:
+ text:
+ format: "text-plain"
+ description: Default String representation of the SQS message received from the queue.
+ mediaType: text/plain
+ cloudevents:
+ format: "aws2-sqs:application-cloudevents"
+ description: Output data type represents AWS SQS receive message response as CloudEvent V1. The data type sets Camel specific CloudEvent headers on the exchange with respective data from the SQS message and its derived object.
+ headers:
+ CamelCloudEventID:
+ title: CloudEvent ID
+ description: The Camel exchange id set as event id.
+ type: string
+ CamelCloudEventType:
+ title: CloudEvent Type
+ description: The event type.
+ default: "org.apache.camel.event.aws.sqs.receiveMessage"
+ type: string
+ CamelCloudEventSource:
+ title: CloudEvent Source
+ description: The event source. By default, the SQS Received message receipt handle with prefix "aws.sqs.queue.".
+ type: string
+ CamelCloudEventSubject:
+ title: CloudEvent Subject
+ description: The event subject. The SQS message ID.
+ type: string
+ CamelCloudEventTime:
+ title: CloudEvent Time
+ description: The exchange creation timestamp as event time.
+ type: string
+ dependencies:
+ - "camel:core"
+ - "camel:aws2-sqs"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: "aws2-sqs:{{queueNameOrArn}}"
+ parameters:
+ autoCreateQueue: "{{autoCreateQueue}}"
+ secretKey: "{{?secretKey}}"
+ accessKey: "{{?accessKey}}"
+ region: "{{region}}"
+ deleteAfterRead: "{{deleteAfterRead}}"
+ amazonAWSHost: "{{?amazonAWSHost}}"
+ protocol: "{{?protocol}}"
+ useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+ useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
+ useSessionCredentials: "{{useSessionCredentials}}"
+ uriEndpointOverride: "{{?uriEndpointOverride}}"
+ profileCredentialsName: "{{?profileCredentialsName}}"
+ sessionToken: "{{?sessionToken}}"
+ overrideEndpoint: "{{overrideEndpoint}}"
+ delay: "{{delay}}"
+ greedy: "{{greedy}}"
+ maxMessagesPerPoll: "{{maxMessagesPerPoll}}"
+ waitTimeSeconds: "{{?waitTimeSeconds}}"
+ visibilityTimeout: "{{?visibilityTimeout}}"
+ steps:
+ - to: "kamelet:sink"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: aws-sts-assume-role-action
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjQ5MCIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pZFlNaWQiIHZpZXdCb3g9IjAgMCAyNTYgNDkwIiB3aWR0aD0iMjU2IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxnIGZpbGw9IiMzYzQ5MjkiPjxwYXRoIGQ9Im0yMSAxNjUuNzUtMjEgNi44NTYgMjEuNzUgMi41MTl6Ii8+PHBhdGggZD0ibTE5Ljk1NSAyMDYuODA2IDEwOC4wNDUgNi45MDggMTA4LjA0NS02LjkwOC0xMDguMDQ1LTIxLjA1NnoiLz48cGF0aCBkPSJtMjM0LjUgMTc1LjEyNSAyMS41LTIuNTE5LTIxLjUtNS43MzF6Ii8+PC9nPjxwYXRoIGQ9Im0xNTcuMzg3ID [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "AWS STS"
+ camel.apache.org/kamelet.namespace: "AWS"
+ labels:
+ camel.apache.org/kamelet.type: "action"
+spec:
+ definition:
+ title: "AWS STS Assume Role Action"
+ description: Assume a role through STS
+ required:
+ - region
+ type: object
+ properties:
+ accessKey:
+ title: Access Key
+ description: The access key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ secretKey:
+ title: Secret Key
+ description: The secret key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ region:
+ title: AWS Region
+ description: The AWS region to access.
+ type: string
+ enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
+ useDefaultCredentialsProvider:
+ title: Default Credentials Provider
+ description: Set whether the STS client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in.
+ type: boolean
+ default: false
+ useProfileCredentialsProvider:
+ title: Profile Credentials Provider
+ description: Set whether the STS client should expect to load credentials through a profile credentials provider.
+ type: boolean
+ default: false
+ useSessionCredentials:
+ title: Session Credentials
+ description: Set whether the STS client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in STS.
+ type: boolean
+ default: false
+ profileCredentialsName:
+ title: Profile Credentials Name
+ description: If using a profile credentials provider this parameter sets the profile name.
+ type: string
+ sessionToken:
+ title: Session Token
+ description: Amazon AWS Session Token used when the user needs to assume a IAM role.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ dependencies:
+ - "camel:kamelet"
+ - "camel:core"
+ - "camel:aws2-sts"
+ template:
+ from:
+ uri: "kamelet:source"
+ steps:
+ - choice:
+ when:
+ - simple: "${header[role-arn]}"
+ steps:
+ - setHeader:
+ name: CamelAwsStsRoleArn
+ simple: "${header[role-arn]}"
+ - simple: "${header[ce-role-arn]}"
+ steps:
+ - setHeader:
+ name: CamelAwsStsRoleArn
+ simple: "${header[ce-role-arn]}"
+ - choice:
+ when:
+ - simple: "${header[role-session-name]}"
+ steps:
+ - setHeader:
+ name: CamelAwsStsRoleSessionName
+ simple: "${header[role-session-name]}"
+ - simple: "${header[ce-role-session-name]}"
+ steps:
+ - setHeader:
+ name: CamelAwsStsRoleSessionName
+ simple: "${header[ce-role-session-name]}"
+ - to:
+ uri: "aws2-sts://default"
+ parameters:
+ secretKey: "{{?secretKey}}"
+ accessKey: "{{?accessKey}}"
+ region: "{{region}}"
+ operation: "assumeRole"
+ useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+ useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
+ useSessionCredentials: "{{useSessionCredentials}}"
+ profileCredentialsName: "{{?profileCredentialsName}}"
+ sessionToken: "{{?sessionToken}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: aws-timestream-query-sink
+ annotations:
+ camel.apache.org/kamelet.support.level: "Preview"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyB3aWR0aD0iMjU2cHgiIGhlaWdodD0iMjU2cHgiIHZpZXdCb3g9IjAgMCAyNTYgMjU2IiB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaWRZTWlkIj4KICAgIDx0aXRsZT5BV1MgVGltZXN0cmVhbTwvdGl0bGU+CiAgICA8ZGVmcz4KICAgICAgICA8bGluZWFyR3JhZGllbnQgeDE9IjAlIiB5MT0iMTAwJSIgeDI9IjEwMCUiIHkyPSIwJS [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "AWS Timestream"
+ camel.apache.org/kamelet.namespace: "AWS"
+ labels:
+ camel.apache.org/kamelet.type: "sink"
+spec:
+ definition:
+ title: "AWS Timestream Query Sink"
+ description: Query an AWS Timestream Database
+ required:
+ - region
+ type: object
+ properties:
+ accessKey:
+ title: Access Key
+ description: The access key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ secretKey:
+ title: Secret Key
+ description: The secret key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ region:
+ title: AWS Region
+ description: The AWS region to access.
+ type: string
+ enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
+ useDefaultCredentialsProvider:
+ title: Default Credentials Provider
+ description: If true, the CloudWatch client loads credentials through a default credentials provider. If false, it uses the basic authentication method (access key and secret key).
+ type: boolean
+ default: false
+ useProfileCredentialsProvider:
+ title: Profile Credentials Provider
+ description: Set whether the Timestream client should expect to load credentials through a profile credentials provider.
+ type: boolean
+ default: false
+ useSessionCredentials:
+ title: Session Credentials
+ description: Set whether the Timestream client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in Timestream.
+ type: boolean
+ default: false
+ profileCredentialsName:
+ title: Profile Credentials Name
+ description: If using a profile credentials provider this parameter sets the profile name.
+ type: string
+ sessionToken:
+ title: Session Token
+ description: Amazon AWS Session Token used when the user needs to assume a IAM role.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ uriEndpointOverride:
+ title: Overwrite Endpoint URI
+ description: The overriding endpoint URI. To use this option, you must also select the `overrideEndpoint` option.
+ type: string
+ overrideEndpoint:
+ title: Endpoint Overwrite
+ description: Select this option to override the endpoint URI. To use this option, you must also provide a URI for the `uriEndpointOverride` option.
+ type: boolean
+ default: false
+ dependencies:
+ - "camel:core"
+ - "camel:aws2-timestream"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: kamelet:source
+ steps:
+ - choice:
+ when:
+ - simple: "${header[query]}"
+ steps:
+ - setHeader:
+ name: CamelAwsTimestreamQueryString
+ simple: "${header[query]}"
+ - simple: "${header[ce-query]}"
+ steps:
+ - setHeader:
+ name: CamelAwsTimestreamQueryString
+ simple: "${header[ce-query]}"
+ - to:
+ uri: "aws2-timestream:query"
+ parameters:
+ accessKey: "{{?accessKey}}"
+ secretKey: "{{?secretKey}}"
+ region: "{{region}}"
+ operation: "query"
+ useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+ useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
+ useSessionCredentials: "{{useSessionCredentials}}"
+ uriEndpointOverride: "{{?uriEndpointOverride}}"
+ profileCredentialsName: "{{?profileCredentialsName}}"
+ sessionToken: "{{?sessionToken}}"
+ overrideEndpoint: "{{overrideEndpoint}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: aws-translate-action
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTIyLjg4IDg0LjgxIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxMjIuODggODQuODEiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+LnN0MHtmaWxsLXJ1bGU6ZXZlbm9kZDtjbGlwLXJ1bGU6ZXZlbm9kZD [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "AWS Translate"
+ camel.apache.org/kamelet.namespace: "AWS"
+ labels:
+ camel.apache.org/kamelet.type: "action"
+spec:
+ definition:
+ title: "AWS Translate Action"
+ description: Translate a text in a specific language.
+ required:
+ - region
+ - sourceLanguage
+ - targetLanguage
+ type: object
+ properties:
+ accessKey:
+ title: Access Key
+ description: The access key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ secretKey:
+ title: Secret Key
+ description: The secret key obtained from AWS.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ region:
+ title: AWS Region
+ description: The AWS region to access.
+ type: string
+ enum: ["ap-south-1", "eu-south-1", "us-gov-east-1", "me-central-1", "ca-central-1", "eu-central-1", "us-iso-west-1", "us-west-1", "us-west-2", "af-south-1", "eu-north-1", "eu-west-3", "eu-west-2", "eu-west-1", "ap-northeast-3", "ap-northeast-2", "ap-northeast-1", "me-south-1", "sa-east-1", "ap-east-1", "cn-north-1", "us-gov-west-1", "ap-southeast-1", "ap-southeast-2", "us-iso-east-1", "ap-southeast-3", "us-east-1", "us-east-2", "cn-northwest-1", "us-isob-east-1", "aws-global", "a [...]
+ sourceLanguage:
+ title: Source Language
+ description: The source language of the translating text.
+ type: string
+ example: it
+ enum: ["ar", "zh", "zh-TW", "cs", "da", "nl", "en", "fi", "fr", "de", "he", "hi", "id", "it", "ja", "ko", "ms", "no", "fa", "pl", "pt", "ru", "es", "sv", "tr"]
+ targetLanguage:
+ title: Target Language
+ description: The target language of the translating text.
+ type: string
+ example: it
+ enum: ["ar", "zh", "zh-TW", "cs", "da", "nl", "en", "fi", "fr", "de", "he", "hi", "id", "it", "ja", "ko", "ms", "no", "fa", "pl", "pt", "ru", "es", "sv", "tr"]
+ useDefaultCredentialsProvider:
+ title: Default Credentials Provider
+ description: Set whether the Translate client should expect to load credentials through a default credentials provider or to expect static credentials to be passed in.
+ type: boolean
+ default: false
+ useProfileCredentialsProvider:
+ title: Profile Credentials Provider
+ description: Set whether the Translate client should expect to load credentials through a profile credentials provider.
+ type: boolean
+ default: false
+ useSessionCredentials:
+ title: Session Credentials
+ description: Set whether the Translate client should expect to use Session Credentials. This is useful in situation in which the user needs to assume a IAM role for doing operations in Translate.
+ type: boolean
+ default: false
+ profileCredentialsName:
+ title: Profile Credentials Name
+ description: If using a profile credentials provider this parameter sets the profile name.
+ type: string
+ sessionToken:
+ title: Session Token
+ description: Amazon AWS Session Token used when the user needs to assume a IAM role.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ dependencies:
+ - "camel:dns"
+ - "camel:kamelet"
+ - "camel:aws2-translate"
+ template:
+ from:
+ uri: "kamelet:source"
+ steps:
+ - to:
+ uri: "aws2-translate://translate"
+ parameters:
+ secretKey: "{{?secretKey}}"
+ accessKey: "{{?accessKey}}"
+ region: "{{region}}"
+ sourceLanguage: "{{sourceLanguage}}"
+ targetLanguage: "{{targetLanguage}}"
+ useDefaultCredentialsProvider: "{{useDefaultCredentialsProvider}}"
+ useProfileCredentialsProvider: "{{useProfileCredentialsProvider}}"
+ useSessionCredentials: "{{useSessionCredentials}}"
+ profileCredentialsName: "{{?profileCredentialsName}}"
+ sessionToken: "{{?sessionToken}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: azure-cosmosdb-sink
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxOCAxOCI+PGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPSJhIiBjeD0iLTEwNS4wMDYiIGN5PSItMTAuNDA5IiByPSI1Ljk1NCIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgxLjAzNiAwIDAgMS4wMjcgMTE3LjczOSAxOS42NDQpIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agb2Zmc2V0PSIuMTgzIiBzdG9wLWNvbG9yPSIjNWVhMGVmIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMDA3OGQ0Ii8+PC9yYWRpYWxHcmFkaWVudD48Y2xpcFBhdG [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "Azure CosmosDB"
+ camel.apache.org/kamelet.namespace: "Azure"
+ labels:
+ camel.apache.org/kamelet.type: "sink"
+spec:
+ definition:
+ title: "Azure CosmosDB Sink"
+ description: Send Data to an Azure CosmosDB instance
+ required:
+ - databaseName
+ - containerName
+ - databaseEndpoint
+ type: object
+ properties:
+ databaseName:
+ title: Database Name
+ description: The Azure Cosmos database name.
+ type: string
+ containerName:
+ title: Container Name
+ description: The Azure Cosmos container name.
+ type: string
+ accountKey:
+ title: Account Key
+ description: The Azure Cosmos account Key.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ databaseEndpoint:
+ title: Database Endpoint
+ description: Sets the Azure Cosmos database endpoint the component will connect to.
+ type: string
+ itemPartitionKey:
+ title: Item Partition Key
+ description: Represents a partition key value in the Azure Cosmos DB database service. A partition key identifies the partition where the item is stored in.
+ type: string
+ credentialType:
+ title: Credential Type
+ description: Determines the credential strategy to adopt.
+ type: string
+ enum: ["SHARED_ACCOUNT_KEY", "AZURE_IDENTITY"]
+ default: "SHARED_ACCOUNT_KEY"
+ types:
+ in:
+ mediaType: application/json
+ dependencies:
+ - "camel:azure-cosmosdb"
+ - "camel:kamelet"
+ - "camel:jackson"
+ - "camel:core"
+ template:
+ from:
+ uri: "kamelet:source"
+ steps:
+ - choice:
+ precondition: true
+ when:
+ - simple: '${propertiesExist:!itemPartitionKey}'
+ steps:
+ - choice:
+ when:
+ - simple: "${header[itemPartitionKey]}"
+ steps:
+ - setHeader:
+ name: CamelAzureCosmosDbItemPartitionKey
+ simple: "${header[itemPartitionKey]}"
+ - simple: "${header[ce-itemPartitionKey]}"
+ steps:
+ - setHeader:
+ name: CamelAzureCosmosDbItemPartitionKey
+ simple: "${header[ce-itemPartitionKey]}"
+ - unmarshal:
+ json:
+ library: Jackson
+ - to:
+ uri: "azure-cosmosdb:{{databaseName}}/{{containerName}}"
+ parameters:
+ accountKey: "{{?accountKey}}"
+ databaseEndpoint: "{{databaseEndpoint}}"
+ itemPartitionKey: "{{?itemPartitionKey}}"
+ operation: createItem
+ credentialType: "{{credentialType}}"
+
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: azure-cosmosdb-source
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxOCAxOCI+PGRlZnM+PHJhZGlhbEdyYWRpZW50IGlkPSJhIiBjeD0iLTEwNS4wMDYiIGN5PSItMTAuNDA5IiByPSI1Ljk1NCIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCgxLjAzNiAwIDAgMS4wMjcgMTE3LjczOSAxOS42NDQpIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agb2Zmc2V0PSIuMTgzIiBzdG9wLWNvbG9yPSIjNWVhMGVmIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMDA3OGQ0Ii8+PC9yYWRpYWxHcmFkaWVudD48Y2xpcFBhdG [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "Azure CosmosDB"
+ camel.apache.org/kamelet.namespace: "Azure"
+ labels:
+ camel.apache.org/kamelet.type: "source"
+spec:
+ definition:
+ title: "Azure CosmosDB Source"
+ description: Consume Changes from a CosmosDB instance.
+ required:
+ - databaseName
+ - containerName
+ - databaseEndpoint
+ type: object
+ properties:
+ databaseName:
+ title: Database Name
+ description: The Azure Cosmos database name.
+ type: string
+ containerName:
+ title: Container Name
+ description: The Azure Cosmos container name.
+ type: string
+ accountKey:
+ title: Account Key
+ description: The Azure Cosmos account Key.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ leaseDatabaseName:
+ title: Lease Database Name
+ description: Sets the lease container which acts as a state storage and coordinates processing the change feed across multiple workers.
+ type: string
+ leaseContainerName:
+ title: Lease Container Name
+ description: Sets the lease database where the `leaseContainerName` is stored.
+ type: string
+ createLeaseDatabaseIfNotExists:
+ title: Autocreate Lease Database
+ description: Sets if the component should create Cosmos lease database for the consumer automatically in case it doesn’t exist in Cosmos account.
+ type: boolean
+ default: false
+ createLeaseContainerIfNotExists:
+ title: Autocreate Lease Container
+ description: Sets if the component should create Cosmos lease container for the consumer automatically in case it doesn’t exist in Cosmos database.
+ type: boolean
+ default: false
+ databaseEndpoint:
+ title: Database Endpoint
+ description: Sets the Azure Cosmos database endpoint the component will connect to.
+ type: string
+ credentialType:
+ title: Credential Type
+ description: Determines the credential strategy to adopt.
+ type: string
+ enum: ["SHARED_ACCOUNT_KEY", "AZURE_IDENTITY"]
+ default: "SHARED_ACCOUNT_KEY"
+ dataTypes:
+ out:
+ default: json
+ headers:
+ types:
+ json:
+ format: "application-json"
+ description: Json mapping of Change Feed records
+ mediaType: application/json
+ cloudevents:
+ format: "azure-cosmosdb:application-cloudevents"
+ description: Data type transformer converts Azure CosmosDB Change Feed processor response to CloudEvent v1_0 data format. The data type sets Camel specific CloudEvent headers with values extracted from Azure CosmosDB Change Feed processor response.
+ headers:
+ CamelCloudEventID:
+ title: CloudEvent ID
+ description: The Camel exchange id set as event id
+ type: string
+ CamelCloudEventType:
+ title: CloudEvent Type
+ description: The event type
+ default: "org.apache.camel.event.azure.cosmosdb.changes"
+ type: string
+ CamelCloudEventSource:
+ title: CloudEvent Source
+ description: The event source.
+ type: string
+ default: "org.apache.camel.event.azure.cosmosdb.changefeed"
+ CamelCloudEventSubject:
+ title: CloudEvent Subject
+ description: The event subject.
+ type: string
+ default: "org.apache.camel.event.azure.cosmosdb.changefeed"
+ CamelCloudEventTime:
+ title: CloudEvent Time
+ description: The exchange creation timestamp as event time.
+ type: string
+ dependencies:
+ - "camel:azure-cosmosdb"
+ - "camel:kamelet"
+ - "camel:jackson"
+ template:
+ from:
+ uri: "azure-cosmosdb:{{databaseName}}/{{containerName}}"
+ parameters:
+ leaseDatabaseName: "{{?leaseDatabaseName}}"
+ leaseContainerName: "{{?leaseContainerName}}"
+ accountKey: "{{?accountKey}}"
+ createLeaseDatabaseIfNotExists: "{{createLeaseDatabaseIfNotExists}}"
+ createLeaseContainerIfNotExists: "{{createLeaseContainerIfNotExists}}"
+ databaseEndpoint: "{{databaseEndpoint}}"
+ credentialType: "{{credentialType}}"
+ steps:
+ - marshal:
+ json: {}
+ - to: "kamelet:sink"
+
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: azure-eventhubs-sink
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI1MDAiIHZpZXdCb3g9Ii0uMDc1IC0uMTc0IDE1OC40IDE2My4xMDEiIHdpZHRoPSIyNDM5IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxnIGZpbGw9IiMwMDZmZDQiPjxwYXRoIGQ9Im02LjIyNS4wMjZoMTQ2LjZjMS4zIDAgMy0uMiA0LjEuNS45LjYuOCAxLjUuOCAyLjR2MzEuOGMwIC45LS4xIDEuOC0uOCAyLjQtLjguOC0xLjcuOC0yLjguOGgtMTQuMWMtMS4yIDAtMi40LS4xLTMuMi0xLS43LS44LS43LTEuOS0uNy0yLjl2LTEyLjVoLTExNHYxMi44YzAgMS0uMSAyLS44IDIuOC0uOC44LTEuOC44LTIuOC44aC0xNC44Yy [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "Azure Eventhubs"
+ camel.apache.org/kamelet.namespace: "Azure"
+ labels:
+ camel.apache.org/kamelet.type: "sink"
+spec:
+ definition:
+ title: "Azure Eventhubs Sink"
+ description: Send events to Azure Event Hubs.
+ required:
+ - namespaceName
+ - eventhubName
+ type: object
+ properties:
+ namespaceName:
+ title: Eventhubs Namespace
+ description: The Event Hubs namespace.
+ type: string
+ eventhubName:
+ title: Eventhubs Name
+ description: The Event Hub name.
+ type: string
+ sharedAccessName:
+ title: Share Access Name
+ description: The Event Hubs SAS key name.
+ type: string
+ x-descriptors:
+ - urn:camel:group:credentials
+ sharedAccessKey:
+ title: Share Access Key
+ description: The key for the Event Hubs SAS key name.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ credentialType:
+ title: Credential Type
+ description: Determines the credential strategy to adopt.
+ type: string
+ enum: ["CONNECTION_STRING", "AZURE_IDENTITY"]
+ default: "CONNECTION_STRING"
+ dependencies:
+ - "camel:core"
+ - "camel:azure-eventhubs"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: "kamelet:source"
+ steps:
+ - choice:
+ when:
+ - simple: "${header[partition-id]}"
+ steps:
+ - setHeader:
+ name: CamelAzureEventHubsPartitionId
+ simple: "${header[partition-id]}"
+ - simple: "${header[ce-partition-id]}"
+ steps:
+ - setHeader:
+ name: CamelAzureEventHubsPartitionId
+ simple: "${header[ce-partition-id]}"
+ - to:
+ uri: "azure-eventhubs://{{namespaceName}}/{{eventhubName}}"
+ parameters:
+ sharedAccessName: "{{?sharedAccessName}}"
+ sharedAccessKey: "{{?sharedAccessKey}}"
+ credentialType: "{{credentialType}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: azure-eventhubs-source
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI1MDAiIHZpZXdCb3g9Ii0uMDc1IC0uMTc0IDE1OC40IDE2My4xMDEiIHdpZHRoPSIyNDM5IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxnIGZpbGw9IiMwMDZmZDQiPjxwYXRoIGQ9Im02LjIyNS4wMjZoMTQ2LjZjMS4zIDAgMy0uMiA0LjEuNS45LjYuOCAxLjUuOCAyLjR2MzEuOGMwIC45LS4xIDEuOC0uOCAyLjQtLjguOC0xLjcuOC0yLjguOGgtMTQuMWMtMS4yIDAtMi40LS4xLTMuMi0xLS43LS44LS43LTEuOS0uNy0yLjl2LTEyLjVoLTExNHYxMi44YzAgMS0uMSAyLS44IDIuOC0uOC44LTEuOC44LTIuOC44aC0xNC44Yy [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "Azure Eventhubs"
+ camel.apache.org/kamelet.namespace: "Azure"
+ labels:
+ camel.apache.org/kamelet.type: "source"
+spec:
+ definition:
+ title: "Azure Eventhubs Source"
+ description: Receive events from Azure Event Hubs.
+ required:
+ - namespaceName
+ - eventhubName
+ - blobAccountName
+ - blobAccessKey
+ - blobContainerName
+ type: object
+ properties:
+ namespaceName:
+ title: Eventhubs Namespace
+ description: The Event Hubs namespace.
+ type: string
+ eventhubName:
+ title: Eventhubs Name
+ description: The Event Hub name.
+ type: string
+ sharedAccessName:
+ title: Share Access Name
+ description: The Event Hubs SAS key name.
+ type: string
+ x-descriptors:
+ - urn:camel:group:credentials
+ sharedAccessKey:
+ title: Share Access Key
+ description: The key for the Event Hubs SAS key name.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ blobAccountName:
+ title: Azure Storage Blob Account Name
+ description: The name of the Storage Blob account.
+ type: string
+ blobContainerName:
+ title: Azure Storage Blob Container Name
+ description: The name of the Storage Blob container.
+ type: string
+ blobAccessKey:
+ title: Azure Storage Blob Access Key
+ description: The key for the Azure Storage Blob service that is associated with the Storage Blob account name.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ credentialType:
+ title: Credential Type
+ description: Determines the credential strategy to adopt.
+ type: string
+ enum: ["CONNECTION_STRING", "AZURE_IDENTITY"]
+ default: "CONNECTION_STRING"
+ dataTypes:
+ out:
+ default: binary
+ headers:
+ CamelAzureEventHubsPartitionId:
+ title: Azure Storage Event Hubs Partiton Id
+ description: It sets the partition id of the Event Hub.
+ type: string
+ CamelAzureEventHubsOffset :
+ title: Azure Storage Event Hubs Event Offset
+ description: It sets the offset of the event when it was received from the associated Event Hub partition. This is only present on a received EventData.
+ type: string
+ CamelAzureEventHubsEnqueuedTime:
+ title: Azure Event Hubs Event Enqueued Time
+ description: It sets the instant, in UTC, of when the event was enqueued in the Event Hub partition. This is only present on a received EventData.
+ type: java.time.Instant
+ CamelAzureEventHubsSequenceNumber:
+ title: Azure Event Hubs Event Sequence Number
+ description: It sets the sequence number assigned to the event when it was enqueued in the associated Event Hub partition. This is unique for every message received in the Event Hub partition. This is only present on a received EventData.
+ type: long
+ CamelAzureEventHubsMetadata:
+ title: Azure Event Hubs Event Metadata
+ description: The set of free-form event properties which may be used for passing metadata associated with the event with the event body during Event Hubs operations.
+ type: object
+ CamelMessageTimestamp:
+ title: Azure Event Hubs Message Timestamp
+ description: The timestamp of the message.
+ type: long
+ CamelAzureEventHubsCheckpointUpdatedBy:
+ title: Azure Event Hubs Checkpoint Updated By
+ description: It sets the reason for the checkpoint to have been updated. This is only present on a received EventData.
+ type: string
+ types:
+ binary:
+ format: "application-octet-stream"
+ description: Default binary representation of the Azure Event Hubs Event retrieved.
+ mediaType: application/octet-stream
+ cloudevents:
+ format: "azure-eventhubs:application-cloudevents"
+ description: Data type transformer converts Azure Eventhubs consumer response to CloudEvent v1_0 data format. The data type sets
+ headers:
+ CamelCloudEventID:
+ title: CloudEvent ID
+ description: The Camel exchange id set as event id
+ type: string
+ CamelCloudEventType:
+ title: CloudEvent Type
+ description: The event type
+ default: "org.apache.camel.event.azure.eventhubs.consume"
+ type: string
+ CamelCloudEventSource:
+ title: CloudEvent Source
+ description: The event source. By default, the Partition Id with prefix "azure.eventhubs.".
+ type: string
+ CamelCloudEventSubject:
+ title: CloudEvent Subject
+ description: The event subject. The Azure Event Hubs Event Sequence Number.
+ type: string
+ CamelCloudEventTime:
+ title: CloudEvent Time
+ description: The exchange creation timestamp as event time.
+ type: string
+ dependencies:
+ - "camel:azure-eventhubs"
+ - "camel:kamelet"
+ - "camel:jackson"
+ template:
+ from:
+ uri: 'azure-eventhubs://{{namespaceName}}/{{eventhubName}}'
+ parameters:
+ sharedAccessName: "{{?sharedAccessName}}"
+ sharedAccessKey: "{{?sharedAccessKey}}"
+ blobAccountName: "{{blobAccountName}}"
+ blobAccessKey: "{{blobAccessKey}}"
+ blobContainerName: "{{blobContainerName}}"
+ credentialType: "{{credentialType}}"
+ steps:
+ - to: "kamelet:sink"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: azure-functions-sink
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjE4LjI0IDIxLjQ2IDY0IDY0IiB3aWR0aD0iNjQiIGhlaWdodD0iNjQiPjxwYXRoIGQ9Ik04MS44MzcgNTMuODVjLjU4NS0uNTg1LjQ4Ny0xLjcgMC0yLjMwN2wtMy4wODctMy4wODctMTMuOC0xMy4zODZjLS41ODUtLjU4NS0xLjQ5NS0uNTg1LTIuMiAwLS41ODUuNTg1LS44MTIgMS43IDAgMi4zMDdsMTQuNSAxNC4xOThjLjU4NS41ODUuNTg1IDEuNyAwIDIuMzA3TDYyLjQ0IDY4LjU2OGMtLjU4NS41ODUtLjU4NSAxLjcgMCAyLjMwNy41ODUuNTg1IDEuNy40ODcgMi4yIDBsMTMuOC [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "Azure Functions"
+ camel.apache.org/kamelet.namespace: "Azure"
+ labels:
+ camel.apache.org/kamelet.type: "sink"
+spec:
+ definition:
+ title: "Azure Function Sink"
+ description: Forward data to an Azure Function.
+ required:
+ - url
+ type: object
+ properties:
+ url:
+ title: URL
+ description: The Azure Functions URL you want to send the data to.
+ type: string
+ example: "https://azure-function-demo-12234.azurewebsites.net/api/httpexample"
+ pattern: "^(https)://.*"
+ method:
+ title: Method
+ description: The HTTP method to use.
+ type: string
+ default: POST
+ enum: ["GET", "POST", "PUT", "DELETE", "HEAD", "OPTIONS", "TRACE", "PATCH"]
+ key:
+ title: Key
+ description: A function-specific API key is required, if the authLevel of the function is FUNCTION or master key if the authLevel is ADMIN.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ dependencies:
+ - "camel:vertx-http"
+ - "camel:kamelet"
+ - "camel:core"
+ template:
+ from:
+ uri: kamelet:source
+ steps:
+ - removeHeader:
+ name: CamelHttpUri
+ - setHeader:
+ name: CamelHttpMethod
+ constant: "{{method}}"
+ - to: "vertx-http:{{url}}?code={{?key}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: azure-servicebus-sink
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgODEgODIiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNMS4zMzMgMEMuNTMzIDAgMCAuNTMzIDAgMS4zMzN2MTZjMCAuOC41MzMgMS4zMz [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "Azure Servicebus"
+ camel.apache.org/kamelet.namespace: "Azure"
+ labels:
+ camel.apache.org/kamelet.type: "sink"
+spec:
+ definition:
+ title: "Azure Servicebus Sink"
+ description: Send Messages to Azure Servicebus.
+ required:
+ - topicOrQueueName
+ - connectionString
+ type: object
+ properties:
+ topicOrQueueName:
+ title: Topic Or Queue Name
+ description: Topic Or Queue Name for the Azure Servicebus instance
+ type: string
+ connectionString:
+ title: Connection String
+ description: Connection String for Azure Servicebus instance
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ serviceBusType:
+ title: Servicebus Type
+ description: The service bus type of connection to execute. Queue is for typical queue option and topic for subscription based model.
+ type: string
+ default: queue
+ enum: ["queue", "topic"]
+ credentialType:
+ title: Credential Type
+ description: Determines the credential strategy to adopt.
+ type: string
+ enum: ["AZURE_IDENTITY", "CONNECTION_STRING", "TOKEN_CREDENTIAL"]
+ default: "CONNECTION_STRING"
+ types:
+ in:
+ mediaType: application/octet-stream
+ dependencies:
+ - "camel:azure-servicebus"
+ - "camel:kamelet"
+ - "camel:core"
+ template:
+ from:
+ uri: kamelet:source
+ steps:
+ - to:
+ uri: "azure-servicebus:{{topicOrQueueName}}"
+ parameters:
+ connectionString: "{{connectionString}}"
+ serviceBusType: "{{serviceBusType}}"
+ producerOperation: "sendMessages"
+ credentialType: "{{credentialType}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: azure-servicebus-source
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgODEgODIiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNMS4zMzMgMEMuNTMzIDAgMCAuNTMzIDAgMS4zMzN2MTZjMCAuOC41MzMgMS4zMz [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "Azure Servicebus"
+ camel.apache.org/kamelet.namespace: "Azure"
+ labels:
+ camel.apache.org/kamelet.type: "source"
+spec:
+ definition:
+ title: "Azure Servicebus Source"
+ description: Consume Messages from Azure Servicebus.
+ required:
+ - topicOrQueueName
+ - connectionString
+ type: object
+ properties:
+ topicOrQueueName:
+ title: Topic Or Queue Name
+ description: Topic Or Queue Name for the Azure Servicebus instance
+ type: string
+ connectionString:
+ title: Connection String
+ description: Connection String for Azure Servicebus instance
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ serviceBusReceiveMode:
+ title: Servicebus Receive Mode
+ description: Sets the receive mode for the receiver
+ type: string
+ default: PEEK_LOCK
+ enum: ["PEEK_LOCK", "RECEIVE_AND_DELETE"]
+ subscriptionName:
+ title: Subscription Name
+ description: Sets the name of the subscription in the topic to listen to. This parameter is mandatory in case of topic.
+ type: string
+ serviceBusType:
+ title: Servicebus Type
+ description: The service bus type of connection to execute. Queue is for typical queue option and topic for subscription based model.
+ type: string
+ default: queue
+ enum: ["queue", "topic"]
+ credentialType:
+ title: Credential Type
+ description: Determines the credential strategy to adopt.
+ type: string
+ enum: ["AZURE_IDENTITY", "CONNECTION_STRING", "TOKEN_CREDENTIAL"]
+ default: "CONNECTION_STRING"
+ types:
+ out:
+ mediaType: application/octet-stream
+ dependencies:
+ - "camel:azure-servicebus"
+ - "camel:kamelet"
+ - "camel:core"
+ template:
+ from:
+ uri: "azure-servicebus:{{topicOrQueueName}}"
+ parameters:
+ connectionString: "{{connectionString}}"
+ serviceBusReceiveMode: "{{serviceBusReceiveMode}}"
+ subscriptionName: "{{?subscriptionName}}"
+ serviceBusType: "{{serviceBusType}}"
+ credentialType: "{{credentialType}}"
+ steps:
+ - setBody:
+ simple: "${body.toBytes()}"
+ - to: "kamelet:sink"
+
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: azure-storage-blob-append-sink
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgOTEgODEiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNNjcuNTU4IDBIMjIuNDQxTDAgNDBsMjIuNDQxIDQwaDQ1LjExN0w5MCA0MCA2Ny [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "Azure Storage Blob"
+ camel.apache.org/kamelet.namespace: "Azure"
+ labels:
+ camel.apache.org/kamelet.type: "sink"
+spec:
+ definition:
+ title: "Azure Storage Blob Append Sink"
+ description: Upload data in append mode to Azure Storage Blob.
+ required:
+ - accountName
+ - containerName
+ type: object
+ properties:
+ accountName:
+ title: Account Name
+ description: The Azure Storage Blob account name.
+ type: string
+ x-descriptors:
+ - urn:camel:group:credentials
+ containerName:
+ title: Container Name
+ description: The Azure Storage Blob container name.
+ type: string
+ accessKey:
+ title: Access Key
+ description: The Azure Storage Blob access key.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ clientId:
+ title: Client Id
+ description: The Azure Storage Blob client Id.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ clientSecret:
+ title: Client Secret
+ description: The Azure Storage Blob client secret.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ tenantId:
+ title: Tenant Id
+ description: The Azure Storage Blob tenant id.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ credentialType:
+ title: Credential Type
+ description: Determines the credential strategy to adopt.
+ type: string
+ enum: ["SHARED_ACCOUNT_KEY", "AZURE_IDENTITY", "CLIENT_SECRET"]
+ default: "SHARED_ACCOUNT_KEY"
+ dependencies:
+ - "camel:core"
+ - "camel:azure-storage-blob"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: "kamelet:source"
+ steps:
+ - choice:
+ when:
+ - simple: "${header[file]}"
+ steps:
+ - setHeader:
+ name: CamelAzureStorageBlobBlobName
+ simple: "${header[file]}"
+ - simple: "${header[ce-file]}"
+ steps:
+ - setHeader:
+ name: CamelAzureStorageBlobBlobName
+ simple: "${header[ce-file]}"
+ otherwise:
+ steps:
+ - setHeader:
+ name: CamelAzureStorageBlobBlobName
+ simple: "${exchangeId}"
+ - to:
+ uri: "azure-storage-blob://{{accountName}}/{{containerName}}"
+ parameters:
+ accessKey: "{{?accessKey}}"
+ azureClientId: "{{?clientId}}"
+ azureClientSecret: "{{?clientSecret}}"
+ azureTenantId: "{{?tenantId}}"
+ operation: "commitAppendBlob"
+ blobType: "appendBlob"
+ credentialType: "{{credentialType}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: azure-storage-blob-changefeed-source
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgOTEgODEiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNNjcuNTU4IDBIMjIuNDQxTDAgNDBsMjIuNDQxIDQwaDQ1LjExN0w5MCA0MCA2Ny [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "Azure Storage Blob Changefeed"
+ camel.apache.org/kamelet.namespace: "Azure"
+ labels:
+ camel.apache.org/kamelet.type: "source"
+spec:
+ definition:
+ title: "Azure Storage Blob Changefeed Source"
+ description: Consume events from an Azure Storage Blob change feed.
+ required:
+ - period
+ - accountName
+ type: object
+ properties:
+ period:
+ title: Period between Polls
+ description: The interval (in milliseconds) between fetches to the Azure Storage change feed.
+ type: integer
+ default: 10000
+ accountName:
+ title: Account Name
+ description: The Azure Storage Blob account name.
+ type: string
+ x-descriptors:
+ - urn:camel:group:credentials
+ accessKey:
+ title: Access Key
+ description: The Azure Storage Blob access Key.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ clientId:
+ title: Client Id
+ description: The Azure Storage Blob client Id.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ clientSecret:
+ title: Client Secret
+ description: The Azure Storage Blob client secret.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ tenantId:
+ title: Tenant Id
+ description: The Azure Storage Blob tenant id.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ credentialType:
+ title: Credential Type
+ description: Determines the credential strategy to adopt.
+ type: string
+ enum: ["SHARED_ACCOUNT_KEY", "AZURE_IDENTITY", "CLIENT_SECRET"]
+ default: "SHARED_ACCOUNT_KEY"
+ dependencies:
+ - "camel:azure-storage-blob"
+ - "camel:kamelet"
+ - "camel:core"
+ - "camel:jackson"
+ - "camel:jsonpath"
+ - "camel:timer"
+ template:
+ from:
+ uri: "timer:azure-storage-blob-stream"
+ parameters:
+ period: "{{period}}"
+ steps:
+ - to:
+ uri: "azure-storage-blob:{{accountName}}"
+ parameters:
+ operation: "getChangeFeed"
+ accessKey: "{{?accessKey}}"
+ azureClientId: "{{?clientId}}"
+ azureClientSecret: "{{?clientSecret}}"
+ azureTenantId: "{{?tenantId}}"
+ credentialType: "{{credentialType}}"
+ - split:
+ expression:
+ simple: "${body}"
+ - marshal:
+ json:
+ library: Jackson
+ unmarshalType: com.fasterxml.jackson.databind.JsonNode
+ - setHeader:
+ name: "azure-storage-blob-changefeed-topic"
+ jsonpath:
+ suppressExceptions: true
+ expression: $.topic
+ - setHeader:
+ name: "azure-storage-blob-changefeed-subject"
+ jsonpath:
+ suppressExceptions: true
+ expression: $.subject
+ - setHeader:
+ name: "azure-storage-blob-changefeed-eventType"
+ jsonpath:
+ suppressExceptions: true
+ expression: $.eventType
+ - setHeader:
+ name: "azure-storage-blob-changefeed-eventTime"
+ jsonpath:
+ suppressExceptions: true
+ expression: $.eventTime
+ - setHeader:
+ name: "azure-storage-blob-changefeed-id"
+ jsonpath:
+ suppressExceptions: true
+ expression: $.id
+ - setHeader:
+ name: "azure-storage-blob-changefeed-dataVersion"
+ jsonpath:
+ suppressExceptions: true
+ expression: $.dataVersion
+ - setHeader:
+ name: "azure-storage-blob-changefeed-metadataVersion"
+ jsonpath:
+ suppressExceptions: true
+ expression: $.metadataVersion
+ - setBody:
+ jsonpath:
+ expression: $.data
+ - marshal:
+ json:
+ library: Jackson
+ module-class-names: com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
+ - to: "kamelet:sink"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: azure-storage-blob-event-based-source
+ annotations:
+ camel.apache.org/kamelet.support.level: "Preview"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgODEgODIiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNMS4zMzMgMEMuNTMzIDAgMCAuNTMzIDAgMS4zMzN2MTZjMCAuOC41MzMgMS4zMz [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "Azure Storage Blob Event Based"
+ camel.apache.org/kamelet.namespace: "Azure"
+ labels:
+ camel.apache.org/kamelet.type: "source"
+spec:
+ definition:
+ title: "Azure Storage Blob Event-based Source"
+ description: Receive data from Azure Service Bus subscribed to Azure Eventgrid reporting events related to a Azure Storage Blob account.
+ required:
+ - topicOrQueueName
+ - connectionString
+ - accountName
+ - containerName
+ type: object
+ properties:
+ topicOrQueueName:
+ title: Topic Or Queue Name
+ description: Topic Or Queue Name for the Azure Servicebus instance
+ type: string
+ connectionString:
+ title: Connection String
+ description: Connection String for Azure Servicebus instance
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ serviceBusReceiveMode:
+ title: Servicebus Receive Mode
+ description: Sets the receive mode for the receiver.
+ type: string
+ default: RECEIVE_AND_DELETE
+ enum: ["RECEIVE_AND_DELETE", "PEEK_LOCK"]
+ subscriptionName:
+ title: Subscription Name
+ description: Sets the name of the subscription in the topic to listen to. This parameter is mandatory in case of topic.
+ type: string
+ accountName:
+ title: Account Name
+ description: The Azure Storage Blob account name.
+ type: string
+ x-descriptors:
+ - urn:camel:group:credentials
+ containerName:
+ title: Container Name
+ description: The Azure Storage Blob container name.
+ type: string
+ accessKey:
+ title: Access Key
+ description: The Azure Storage Blob access key.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ clientId:
+ title: Client Id
+ description: The Azure Storage Blob client Id.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ clientSecret:
+ title: Client Secret
+ description: The Azure Storage Blob client secret.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ tenantId:
+ title: Tenant Id
+ description: The Azure Storage Blob tenant id.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ credentialType:
+ title: Credential Type
+ description: Determines the credential strategy to adopt.
+ type: string
+ default: SHARED_ACCOUNT_KEY
+ enum: ["SHARED_ACCOUNT_KEY", "SHARED_KEY_CREDENTIAL", "AZURE_IDENTITY", "CLIENT_SECRET"]
+ getBlob:
+ title: Get Object in Container
+ description: >-
+ If `getBlob` is enabled, then the file created in the container is
+ retrieved and returned as body. If not only the event is returned as body.
+ type: boolean
+ default: false
+ types:
+ out:
+ mediaType: application/octet-stream
+ dependencies:
+ - "camel:azure-servicebus"
+ - "camel:azure-storage-blob"
+ - "camel:kamelet"
+ - "camel:core"
+ - 'camel:jsonpath'
+ - 'camel:jackson'
+ template:
+ from:
+ uri: "azure-servicebus:{{topicOrQueueName}}"
+ parameters:
+ connectionString: "{{connectionString}}"
+ serviceBusReceiveMode: "{{serviceBusReceiveMode}}"
+ subscriptionName: "{{?subscriptionName}}"
+ steps:
+ - choice:
+ precondition: true
+ when:
+ - simple: '${properties:getBlob:true}'
+ steps:
+ - setBody:
+ simple: ${body.toString()}
+ - unmarshal:
+ json:
+ library: Jackson
+ unmarshalType: com.fasterxml.jackson.databind.JsonNode
+ - setProperty:
+ name: azure-storage-blob-event-type
+ jsonpath: $.eventType
+ - setProperty:
+ name: azure-storage-blob-subject
+ jsonpath: $.subject
+ - setProperty:
+ name: azure-storage-blob-blob-name
+ simple: '${exchangeProperty.azure-storage-blob-subject.substring(${exchangeProperty.azure-storage-blob-subject.lastIndexOf("/")}++)}'
+ - log: "${exchangeProperty.azure-storage-blob-event-type} - ${exchangeProperty.azure-storage-blob-subject} - ${exchangeProperty.azure-storage-blob-blob-name}"
+ - choice:
+ when:
+ - simple: '${exchangeProperty.azure-storage-blob-event-type} == "Microsoft.Storage.BlobCreated" && ${exchangeProperty.azure-storage-blob-subject} contains "{{containerName}}"'
+ steps:
+ - toD: >-
+ azure-storage-blob:{{accountName}}/{{containerName}}?accessKey=RAW({{?accessKey}})&azureClientId=RAW({{?clientId}})&azureClientSecret=RAW({{?clientSecret}})&azureTenantId=RAW({{?tenantId}})&operation=getBlob&blobName=${exchangeProperty.azure-storage-blob-blob-name}&credentialType={{credentialType}}
+ - to: 'kamelet:sink'
+
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: azure-storage-blob-sink
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgOTEgODEiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNNjcuNTU4IDBIMjIuNDQxTDAgNDBsMjIuNDQxIDQwaDQ1LjExN0w5MCA0MCA2Ny [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "Azure Storage Blob"
+ camel.apache.org/kamelet.namespace: "Azure"
+ labels:
+ camel.apache.org/kamelet.type: "sink"
+spec:
+ definition:
+ title: "Azure Storage Blob Sink"
+ description: Upload data to Azure Storage Blob.
+ required:
+ - accountName
+ - containerName
+ type: object
+ properties:
+ accountName:
+ title: Account Name
+ description: The Azure Storage Blob account name.
+ type: string
+ x-descriptors:
+ - urn:camel:group:credentials
+ containerName:
+ title: Container Name
+ description: The Azure Storage Blob container name.
+ type: string
+ accessKey:
+ title: Access Key
+ description: The Azure Storage Blob access key.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ clientId:
+ title: Client Id
+ description: The Azure Storage Blob client Id.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ clientSecret:
+ title: Client Secret
+ description: The Azure Storage Blob client secret.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ tenantId:
+ title: Tenant Id
+ description: The Azure Storage Blob tenant id.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ credentialType:
+ title: Credential Type
+ description: Determines the credential strategy to adopt.
+ type: string
+ enum: ["SHARED_ACCOUNT_KEY", "AZURE_IDENTITY", "CLIENT_SECRET"]
+ default: "SHARED_ACCOUNT_KEY"
+ dependencies:
+ - "camel:core"
+ - "camel:azure-storage-blob"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: "kamelet:source"
+ steps:
+ - choice:
+ when:
+ - simple: "${header[file]}"
+ steps:
+ - setHeader:
+ name: CamelAzureStorageBlobBlobName
+ simple: "${header[file]}"
+ - simple: "${header[ce-file]}"
+ steps:
+ - setHeader:
+ name: CamelAzureStorageBlobBlobName
+ simple: "${header[ce-file]}"
+ otherwise:
+ steps:
+ - setHeader:
+ name: CamelAzureStorageBlobBlobName
+ simple: "${exchangeId}"
+ - to:
+ uri: "azure-storage-blob://{{accountName}}/{{containerName}}"
+ parameters:
+ accessKey: "{{?accessKey}}"
+ azureClientId: "{{?clientId}}"
+ azureClientSecret: "{{?clientSecret}}"
+ azureTenantId: "{{?tenantId}}"
+ operation: "uploadBlockBlob"
+ credentialType: "{{credentialType}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: azure-storage-blob-source
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgOTEgODEiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNNjcuNTU4IDBIMjIuNDQxTDAgNDBsMjIuNDQxIDQwaDQ1LjExN0w5MCA0MCA2Ny [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "Azure Storage Blob"
+ camel.apache.org/kamelet.namespace: "Azure"
+ labels:
+ camel.apache.org/kamelet.type: "source"
+spec:
+ definition:
+ title: "Azure Storage Blob Source"
+ description: Consume files from Azure Storage Blob.
+ required:
+ - accountName
+ - containerName
+ type: object
+ properties:
+ accountName:
+ title: Account Name
+ description: The Azure Storage Blob account name.
+ type: string
+ x-descriptors:
+ - urn:camel:group:credentials
+ containerName:
+ title: Container Name
+ description: The Azure Storage Blob container name.
+ type: string
+ accessKey:
+ title: Access Key
+ description: The Azure Storage Blob access key.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ clientId:
+ title: Client Id
+ description: The Azure Storage Blob client Id.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ clientSecret:
+ title: Client Secret
+ description: The Azure Storage Blob client secret.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ tenantId:
+ title: Tenant Id
+ description: The Azure Storage Blob tenant id.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ delay:
+ title: Delay
+ description: The number of milliseconds before the next poll of the selected blob.
+ type: integer
+ default: 500
+ deleteAfterRead:
+ title: Auto-delete Blob
+ description: Specifies to delete blobs after consuming them
+ type: boolean
+ default: false
+ credentialType:
+ title: Credential Type
+ description: Determines the credential strategy to adopt.
+ type: string
+ enum: ["SHARED_ACCOUNT_KEY", "AZURE_IDENTITY", "CLIENT_SECRET"]
+ default: "SHARED_ACCOUNT_KEY"
+ dataTypes:
+ out:
+ default: binary
+ headers:
+ CamelAzureStorageBlobBlobName:
+ title: Azure Storage Blob Name
+ description: The name of the blob retrieved
+ type: string
+ CamelAzureStorageBlobBlobType:
+ title: The Azure Storage Blob Type
+ description: The Blob type, one of blockblob, appendblob or pageblob
+ type: string
+ CamelAzureStorageBlobContentType:
+ title: Content Type
+ description: The content type of the retrieved object.
+ default: application/octet-stream
+ type: string
+ CamelAzureStorageBlobETag:
+ title: ETag Value
+ description: The E tag of the blob
+ type: string
+ CamelAzureStorageBlobCreationTime:
+ title: Creation time
+ description: The Creation time of the blob
+ type: string
+ CamelAzureStorageBlobLastModified:
+ title: Last modification time
+ description: The Last modification time of the blob
+ type: string
+ CamelAzureStorageBlobLeaseStatus:
+ title: Lease status
+ description: Status of the lease on the blob, one of locked or unlocked
+ type: string
+ CamelAzureStorageBlobMetadata:
+ title: Blob Metadata
+ description: Additional Metadata of the blob of type Map<String,Object>
+ type: object
+ types:
+ binary:
+ format: "application-octet-stream"
+ description: Default binary representation of the Blob object retrieved from the container.
+ mediaType: application/octet-stream
+ cloudevents:
+ format: "azure-storage-blob:application-cloudevents"
+ description: Output data type represents Azure Storage Blob get blob response as CloudEvent V1. The data type sets Camel specific CloudEvent headers on the exchange with respective data from the Azure container and its derived object.
+ headers:
+ CamelCloudEventID:
+ title: CloudEvent ID
+ description: The Camel exchange id set as event id
+ type: string
+ CamelCloudEventType:
+ title: CloudEvent Type
+ description: The event type
+ default: "org.apache.camel.event.azure.storage.blob.getBlob"
+ type: string
+ CamelCloudEventSource:
+ title: CloudEvent Source
+ description: The event source. By default, the E Tag name of the blob with prefix "azure.storage.blob.".
+ type: string
+ CamelCloudEventSubject:
+ title: CloudEvent Subject
+ description: The event subject. Usually the Azure Storage Blob name.
+ type: string
+ CamelCloudEventTime:
+ title: CloudEvent Time
+ description: The exchange creation timestamp as event time.
+ type: string
+ dependencies:
+ - "camel:azure-storage-blob"
+ - "camel:kamelet"
+ - "camel:core"
+ - "camel:jsonpath"
+ - "camel:timer"
+ template:
+ from:
+ uri: "azure-storage-blob:{{accountName}}/{{containerName}}"
+ parameters:
+ accessKey: "{{?accessKey}}"
+ azureClientId: "{{?clientId}}"
+ azureClientSecret: "{{?clientSecret}}"
+ azureTenantId: "{{?tenantId}}"
+ credentialType: "{{credentialType}}"
+ delay: "{{delay}}"
+ steps:
+ - to: "kamelet:sink"
+ - choice:
+ precondition: true
+ when:
+ - simple: '${properties:deleteAfterRead:true}'
+ steps:
+ - to:
+ uri: "azure-storage-blob:{{accountName}}/{{containerName}}"
+ parameters:
+ operation: "deleteBlob"
+ accessKey: "{{?accessKey}}"
+ azureClientId: "{{?clientId}}"
+ azureClientSecret: "{{?clientSecret}}"
+ azureTenantId: "{{?tenantId}}"
+ credentialType: "{{credentialType}}"
+
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: azure-storage-datalake-sink
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyNi4wLjMsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4wIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCAxMTU4LjIgODYwLjQiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMC [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "Azure Storage Blob Data Lake"
+ camel.apache.org/kamelet.namespace: "Azure"
+ labels:
+ camel.apache.org/kamelet.type: "sink"
+spec:
+ definition:
+ title: "Azure Storage Blob Data Lake Sink"
+ description: Send data to Azure Storage Blob Data Lake.
+ required:
+ - accountName
+ - clientId
+ - clientSecret
+ - tenantId
+ - fileSystemName
+ type: object
+ properties:
+ accountName:
+ title: Account Name
+ description: The Azure Storage Blob Data lake account name.
+ type: string
+ x-descriptors:
+ - urn:camel:group:credentials
+ clientId:
+ title: Client Id
+ description: The Azure Storage Blob Data lake client Id.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ clientSecret:
+ title: Client Secret
+ description: The Azure Storage Blob Data lake client secret.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ tenantId:
+ title: Tenant Id
+ description: The Azure Storage Blob Data lake tenant id.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ fileSystemName:
+ title: File System Name
+ description: The Azure Storage Blob Data lake File system name.
+ type: string
+ x-descriptors:
+ - urn:camel:group:credentials
+ credentialType:
+ title: Credential Type
+ description: Determines the credential strategy to adopt.
+ type: string
+ enum: ["CLIENT_SECRET", "SHARED_KEY_CREDENTIAL", "AZURE_IDENTITY", "AZURE_SAS", "SERVICE_CLIENT_INSTANCE"]
+ default: "CLIENT_SECRET"
+ dependencies:
+ - "camel:azure-storage-datalake"
+ - "camel:kamelet"
+ - "camel:core"
+ - "camel:timer"
+ template:
+ from:
+ uri: "kamelet:source"
+ steps:
+ - choice:
+ when:
+ - simple: "${header[file]}"
+ steps:
+ - setHeader:
+ name: CamelAzureStorageDataLakeFileName
+ simple: "${header[file]}"
+ - simple: "${header[ce-file]}"
+ steps:
+ - setHeader:
+ name: CamelAzureStorageDataLakeFileName
+ simple: "${header[ce-file]}"
+ otherwise:
+ steps:
+ - setHeader:
+ name: CamelAzureStorageDataLakeFileName
+ simple: "${exchangeId}"
+ - to:
+ uri: "azure-storage-datalake:{{accountName}}/{{fileSystemName}}"
+ parameters:
+ clientId: "{{clientId}}"
+ clientSecret: "{{clientSecret}}"
+ tenantId: "{{tenantId}}"
+ operation: "upload"
+ credentialType: "{{credentialType}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: azure-storage-datalake-source
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAyNi4wLjMsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4wIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCAxMTU4LjIgODYwLjQiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMC [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "Azure Storage Blob Data Lake"
+ camel.apache.org/kamelet.namespace: "Azure"
+ labels:
+ camel.apache.org/kamelet.type: "source"
+spec:
+ definition:
+ title: "Azure Storage Blob Data Lake Source"
+ description: Consume files from Azure Storage Blob Data Lake.
+ required:
+ - accountName
+ - clientId
+ - clientSecret
+ - tenantId
+ - fileSystemName
+ type: object
+ properties:
+ accountName:
+ title: Account Name
+ description: The Azure Storage Blob Data lake account name.
+ type: string
+ x-descriptors:
+ - urn:camel:group:credentials
+ clientId:
+ title: Client Id
+ description: The Azure Storage Blob Data lake client Id.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ clientSecret:
+ title: Client Secret
+ description: The Azure Storage Blob Data lake client secret.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ tenantId:
+ title: Tenant Id
+ description: The Azure Storage Blob Data lake tenant id.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ fileSystemName:
+ title: File System Name
+ description: The Azure Storage Blob Data lake File system name.
+ type: string
+ x-descriptors:
+ - urn:camel:group:credentials
+ delay:
+ title: Delay
+ description: The number of milliseconds before the next poll of the selected blob.
+ type: integer
+ default: 500
+ credentialType:
+ title: Credential Type
+ description: Determines the credential strategy to adopt.
+ type: string
+ enum: ["CLIENT_SECRET", "SHARED_KEY_CREDENTIAL", "AZURE_IDENTITY", "AZURE_SAS", "SERVICE_CLIENT_INSTANCE"]
+ default: "CLIENT_SECRET"
+ dataTypes:
+ out:
+ default: binary
+ headers:
+ CamelAzureStorageDataLakeFileName:
+ title: Azure Storage Datalake File Name
+ description: The name of the file retrieved
+ type: string
+ CamelAzureStorageDataLakeRawHttpHeaders:
+ title: Azure Storage Data Lake Raw Http Headers
+ description: Non parsed http headers that can be used by the user.
+ type: object
+ CamelAzureStorageDataLakeAccessTier:
+ title: Azure Storage Data Lake File Access Tier
+ description: Access tier of file.
+ type: object
+ CamelAzureStorageDataLakeAccessTierChangeTime:
+ title: Azure Storage Data Lake Access Tier Change Time.
+ description: Datetime when the access tier of the blob last changed.
+ type: object
+ CamelAzureStorageDataLakeArchiveStatus:
+ title: Azure Storage Data Lake Archive Status
+ description: Archive status of file
+ type: object
+ CamelAzureStorageDataLakeCacheControl:
+ title: Azure Storage Data Lake File Cache Control
+ description: Cache control specified for the file.
+ type: string
+ CamelAzureStorageDataLakeContentDisposition:
+ title: Azure Storage Data Lake File Content Disposition
+ description: Content disposition specified for the file.
+ type: string
+ CamelAzureStorageDataLakeContentEncoding:
+ title: Azure Storage Data Lake File Content Encoding
+ description: Content encoding specified for the file.
+ type: string
+ CamelAzureStorageDataLakeContentLanguage:
+ title: Azure Storage Data Lake File Content Language
+ description: Content language specified for the file.
+ type: string
+ CamelAzureStorageDataLakeContentType:
+ title: Azure Storage Data Lake File Content Type
+ description: Content Type specified for the file.
+ type: string
+ CamelAzureStorageDataLakeCopyCompletionTime:
+ title: Azure Storage Data Lake File Copy Completion time
+ description: Conclusion time of the last attempted Copy Blob operation where this file was the destination file.
+ type: object
+ CamelAzureStorageDataLakeCopyId:
+ title: Azure Storage Data Lake File Copy Id
+ description: String identifier for this copy operation.
+ type: string
+ amelAzureStorageDataLakeCopyProgress:
+ title: Azure Storage Data Lake File Copy Progress
+ description: Contains the number of bytes copied and the total bytes in the source in the last attempted Copy Blob operation where this file was the destination file.
+ type: string
+ CamelAzureStorageDataLakeCopySource:
+ title: Azure Storage Data Lake File Copy Source
+ description: URL up to 2 KB in length that specifies the source file or file used in the last attempted Copy Blob operation where this file was the destination file.
+ type: string
+ CamelAzureStorageDataLakeCopyStatus:
+ title: Azure Storage Data Lake File Copy Status
+ description: Status of the last copy operation performed on the file.
+ type: object
+ CamelAzureStorageDataLakeCopyStatusDescription:
+ title: Azure Storage Data Lake File Copy Status Description
+ description: The description of the copy’s status.
+ type: string
+ CamelAzureStorageDataLakeCreationTime:
+ title: Azure Storage Data Lake File Creation Time.
+ description: Creation time of the file.
+ type: object
+ CamelAzureStorageDataLakeEncryptionKeySha256:
+ title: Azure Storage Data Lake File SHA-256 Hash
+ description: The SHA-256 hash of the encryption key used to encrypt the file.
+ type: string
+ CamelAzureStorageDataLakeETag:
+ title: Azure Storage Data Lake File E Tag
+ description: The E Tag of the file.
+ type: string
+ CamelAzureStorageDataLakeFileSize:
+ title: Azure Storage Data Lake File Size
+ description: The File Size
+ type: long
+ CamelAzureStorageDataLakeLastModified:
+ title: Azure Storage Data Lake File Last Modified Date
+ description: Datetime when the file was last modified.
+ type: object
+ CamelAzureStorageDataLakeLeaseDuration:
+ title: Azure Storage Data Lake File Lease Duration
+ description: Type of lease on the file.
+ type: object
+ CamelAzureStorageDataLakeLeaseState:
+ title: Azure Storage Data Lake File Lease State
+ description: State of the lease on the file.
+ type: object
+ CamelAzureStorageDataLakeLeaseStatus:
+ title: Azure Storage Data Lake File Lease Status
+ description: Status of the lease on the file.
+ type: object
+ CamelAzureStorageDataLakeServerEncrypted:
+ title: Azure Storage Data Lake File Content Encrypted
+ description: Flag indicating if the file’s content is encrypted on the server.
+ type: boolean
+ CamelAzureStorageDataLakeDownloadLink:
+ title: Azure Storage Data Lake File Download Link
+ description: The link that can be used to download the file from data lake.
+ type: string
+ types:
+ binary:
+ format: "application-octet-stream"
+ description: Default binary representation of the object retrieved from the Azure Data Lake.
+ mediaType: application/octet-stream
+ cloudevents:
+ format: "azure-storage-datalake:application-cloudevents"
+ description: Data type transformer converts Azure Data Lake consumer response to CloudEvent v1_0 data format. The data type sets Camel specific CloudEvent headers with values extracted from Azure Data Lake consumer response.
+ headers:
+ CamelCloudEventID:
+ title: CloudEvent ID
+ description: The Camel exchange id set as event id
+ type: string
+ CamelCloudEventType:
+ title: CloudEvent Type
+ description: The event type
+ default: "org.apache.camel.event.azure.storage.datalake.consume"
+ type: string
+ CamelCloudEventSource:
+ title: CloudEvent Source
+ description: The event source. By default, the Archive Status of the file with prefix "azure.storage.datalake.".
+ type: string
+ CamelCloudEventSubject:
+ title: CloudEvent Subject
+ description: The event subject. Usually the Azure Storage Datalake E Tag of file.
+ type: string
+ CamelCloudEventTime:
+ title: CloudEvent Time
+ description: The exchange creation timestamp as event time.
+ type: string
+ dependencies:
+ - "camel:azure-storage-datalake"
+ - "camel:kamelet"
+ - "camel:core"
+ - "camel:timer"
+ template:
+ from:
+ uri: "azure-storage-datalake:{{accountName}}/{{fileSystemName}}"
+ parameters:
+ clientId: "{{clientId}}"
+ clientSecret: "{{clientSecret}}"
+ tenantId: "{{tenantId}}"
+ delay: "{{delay}}"
+ credentialType: "{{credentialType}}"
+ steps:
+ - to: "kamelet:sink"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: azure-storage-files-sink
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgOTEgODEiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNNjcuNTU4IDBIMjIuNDQxTDAgNDBsMjIuNDQxIDQwaDQ1LjExN0w5MCA0MCA2Ny [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "Azure Storage Blob"
+ camel.apache.org/kamelet.namespace: "Azure"
+ labels:
+ camel.apache.org/kamelet.type: "sink"
+spec:
+ definition:
+ title: "Azure Storage Files Sink"
+ description: Upload data to Azure Storage Files Share.
+ required:
+ - accountName
+ - shareName
+ type: object
+ properties:
+ accountName:
+ title: Account Name
+ description: The Azure Storage Blob account name.
+ type: string
+ x-descriptors:
+ - urn:camel:group:credentials
+ shareName:
+ title: Share Name
+ description: The Azure Storage File Share share name.
+ type: string
+ sharedKey:
+ title: Shared Access Key
+ description: The Azure Storage Blob access key.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ credentialType:
+ title: Credential Type
+ description: Determines the credential strategy to adopt.
+ type: string
+ enum: ["SHARED_ACCOUNT_KEY", "AZURE_IDENTITY", "SHARED_KEY_CREDENTIAL", "AZURE_SAS"]
+ default: "SHARED_ACCOUNT_KEY"
+ directoryName:
+ title: Directory Name
+ description: The directory from where the producer will upload the file.
+ type: string
+ default: "."
+ dependencies:
+ - "camel:core"
+ - "camel:azure-storage-blob"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: "kamelet:source"
+ steps:
+ - choice:
+ when:
+ - simple: "${header[file]}"
+ steps:
+ - setHeader:
+ name: CamelFileName
+ simple: "${header[file]}"
+ - simple: "${header[ce-file]}"
+ steps:
+ - setHeader:
+ name: CamelFileName
+ simple: "${header[ce-file]}"
+ otherwise:
+ steps:
+ - setHeader:
+ name: CamelFileName
+ simple: "${exchangeId}"
+ - to:
+ uri: "azure-files://{{accountName}}/{{shareName}}/{{directoryName}}"
+ parameters:
+ sharedKey: "{{?sharedKey}}"
+ credentialType: "{{credentialType}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: azure-storage-files-source
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgOTEgODEiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNNjcuNTU4IDBIMjIuNDQxTDAgNDBsMjIuNDQxIDQwaDQ1LjExN0w5MCA0MCA2Ny [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "Azure Storage Blob"
+ camel.apache.org/kamelet.namespace: "Azure"
+ labels:
+ camel.apache.org/kamelet.type: "source"
+spec:
+ definition:
+ title: "Azure Storage File Source"
+ description: Consume files from Azure Storage File Shares.
+ required:
+ - accountName
+ - shareName
+ type: object
+ properties:
+ accountName:
+ title: Account Name
+ description: The Azure Storage File Share account name.
+ type: string
+ x-descriptors:
+ - urn:camel:group:credentials
+ shareName:
+ title: Share Name
+ description: The Azure Storage File Share share name.
+ type: string
+ sharedKey:
+ title: Shared Access Key
+ description: The Azure Storage Blob access key.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ delay:
+ title: Delay
+ description: The number of milliseconds before the next poll of the selected blob.
+ type: integer
+ default: 500
+ deleteAfterRead:
+ title: Auto-delete Blob
+ description: Specifies to delete blobs after consuming them
+ type: boolean
+ default: false
+ credentialType:
+ title: Credential Type
+ description: Determines the credential strategy to adopt.
+ type: string
+ enum: ["SHARED_ACCOUNT_KEY", "AZURE_IDENTITY", "SHARED_KEY_CREDENTIAL", "AZURE_SAS"]
+ default: "SHARED_ACCOUNT_KEY"
+ directoryName:
+ title: Directory Name
+ description: The directory from where the consumer will start reading files.
+ type: string
+ default: "."
+ recursive:
+ title: Recursive Mode
+ description: If a directory, the consumer will look for files in all the sub-directories as well.
+ type: boolean
+ default: false
+ dataTypes:
+ out:
+ default: binary
+ headers:
+ CamelFileLength:
+ title: Azure Storage Files File Length
+ description: A long value containing the file size
+ type: long
+ CamelFileLastModified:
+ title: Azure Storage Files File Last Modified Date
+ description: A Long value containing the last modified timestamp of the file.
+ type: long
+ CamelFileNameOnly:
+ title: Azure Storage Files File Name Only
+ description: Only the file name (the name with no leading paths).
+ type: string
+ CamelFileName:
+ title: Azure Storage Files File Name
+ description: Name of the consumed file as a relative file path with offset from the starting directory configured on the endpoint.
+ type: string
+ CamelFileNameConsumed:
+ title: Azure Storage Files Consumed File Name
+ description: The name of the file that has been consumed.
+ type: string
+ CamelFileAbsolute:
+ title: Azure Storage Files Consumed Absolute Format
+ description: A boolean option specifying whether the consumed file denotes an absolute path or not.
+ type: boolean
+ CamelFileAbsolutePath:
+ title: Azure Storage Files Consumed Absolute Path
+ description: The absolute path to the file. For relative files this path holds the relative path instead.
+ type: string
+ CamelFileExtendedAttributes:
+ title: Azure Storage Files Extended Attributes
+ description: Additional Metadata of the file of type Map<String,Object>
+ type: object
+ CamelFileContentType:
+ title: Content Type
+ description: The content type of the retrieved object.
+ default: application/octet-stream
+ type: string
+ CamelFilePath:
+ title: Azure Storage Files File Path
+ description: The file path. For relative files this is the starting directory the relative filename. For absolute files this is the absolute path.
+ type: string
+ CamelFileRelativePath:
+ title: Azure Storage Files File Relative Path
+ description: The relative path.
+ type: string
+ CamelFileParent:
+ title: Azure Storage Files File Relative Path
+ description: The parent path.
+ type: string
+ types:
+ binary:
+ format: "application-octet-stream"
+ description: Default binary representation of the File retrieved from Azure Storage Files.
+ mediaType: application/octet-stream
+ cloudevents:
+ format: "azure-files:application-cloudevents"
+ description: Data type transformer converts Azure Storage Files poll response to CloudEvent v1_0 data format. The data type sets Camel specific CloudEvent headers with values extracted from Azure Storage Files poll response.
+ headers:
+ CamelCloudEventID:
+ title: CloudEvent ID
+ description: The Camel exchange id set as event id
+ type: string
+ CamelCloudEventType:
+ title: CloudEvent Type
+ description: The event type
+ default: "org.apache.camel.event.azure.storage.files.poll"
+ type: string
+ CamelCloudEventSource:
+ title: CloudEvent Source
+ description: The event source. By default, the Host name of the share with prefix "azure.storage.files.".
+ type: string
+ CamelCloudEventSubject:
+ title: CloudEvent Subject
+ description: The event subject. Usually the Azure Storage Files file name.
+ type: string
+ CamelCloudEventTime:
+ title: CloudEvent Time
+ description: The exchange creation timestamp as event time.
+ type: string
+ dependencies:
+ - "camel:azure-files"
+ - "camel:kamelet"
+ - "camel:core"
+ - "camel:timer"
+ template:
+ from:
+ uri: "azure-files:{{accountName}}/{{shareName}}/{{directoryName}}"
+ parameters:
+ sharedKey: "{{?sharedKey}}"
+ credentialType: "{{credentialType}}"
+ delay: "{{delay}}"
+ delete: "{{deleteAfterRead}}"
+ recursive: "{{recursive}}"
+ steps:
+ - to: "kamelet:sink"
+
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: azure-storage-queue-sink
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgOTEgODEiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNNzAuMDUzIDM0LjYzNEg1MC41OGw5LjczNiA3LjgwNXptLTM5LjQyIDEwLjQ4OG [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "Azure Storage Queue"
+ camel.apache.org/kamelet.namespace: "Azure"
+ labels:
+ camel.apache.org/kamelet.type: "sink"
+spec:
+ definition:
+ title: "Azure Storage Queue Sink"
+ description: Send events to Azure Storage queues.
+ required:
+ - accountName
+ - queueName
+ - accessKey
+ type: object
+ properties:
+ accountName:
+ title: Account Name
+ description: The Azure Storage Queue account name.
+ type: string
+ x-descriptors:
+ - urn:camel:group:credentials
+ queueName:
+ title: Queue Name
+ description: The Azure Storage Queue container name.
+ type: string
+ accessKey:
+ title: Access Key
+ description: The Azure Storage Queue access key.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ credentialType:
+ title: Credential Type
+ description: Determines the credential strategy to adopt.
+ type: string
+ enum: ["SHARED_ACCOUNT_KEY", "SHARED_KEY_CREDENTIAL", "AZURE_IDENTITY"]
+ default: "SHARED_ACCOUNT_KEY"
+ dependencies:
+ - "camel:core"
+ - "camel:azure-storage-queue"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: "kamelet:source"
+ steps:
+ - choice:
+ when:
+ - simple: "${header[expiration]}"
+ steps:
+ - setHeader:
+ name: CamelAzureStorageQueueTimeToLive
+ simple: "${header[expiration]}"
+ - simple: "${header[ce-expiration]}"
+ steps:
+ - setHeader:
+ name: CamelAzureStorageQueueTimeToLive
+ simple: "${header[ce-expiration]}"
+ - to:
+ uri: "azure-storage-queue://{{accountName}}/{{queueName}}"
+ parameters:
+ accessKey: "{{accessKey}}"
+ credentialType: "{{credentialType}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: azure-storage-queue-source
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgOTEgODEiIGZpbGw9IiNmZmYiIGZpbGwtcnVsZT0iZXZlbm9kZCIgc3Ryb2tlPSIjMDAwIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiPjx1c2UgeGxpbms6aHJlZj0iI0EiIHg9Ii41IiB5PSIuNSIvPjxzeW1ib2wgaWQ9IkEiIG92ZXJmbG93PSJ2aXNpYmxlIj48cGF0aCBkPSJNNzAuMDUzIDM0LjYzNEg1MC41OGw5LjczNiA3LjgwNXptLTM5LjQyIDEwLjQ4OG [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "Azure Storage Queue"
+ camel.apache.org/kamelet.namespace: "Azure"
+ labels:
+ camel.apache.org/kamelet.type: "source"
+spec:
+ definition:
+ title: "Azure Storage Queue Source"
+ description: Receive events from Azure Storage queues.
+ required:
+ - accountName
+ - queueName
+ - accessKey
+ type: object
+ properties:
+ accountName:
+ title: Account Name
+ description: The Azure Storage Queue account name.
+ type: string
+ x-descriptors:
+ - urn:camel:group:credentials
+ queueName:
+ title: Queue Name
+ description: The Azure Storage Queue container name.
+ type: string
+ accessKey:
+ title: Access Key
+ description: The Azure Storage Queue access key.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ maxMessages:
+ title: Maximum Messages
+ description: The maximum number of messages to get. You can specify a value between 1 and 32. The default is 1 (one message). If there are fewer than the maximum number of messages in the queue, then all the messages are returned.
+ type: integer
+ default: 1
+ credentialType:
+ title: Credential Type
+ description: Determines the credential strategy to adopt.
+ type: string
+ enum: ["SHARED_ACCOUNT_KEY", "SHARED_KEY_CREDENTIAL", "AZURE_IDENTITY"]
+ default: "SHARED_ACCOUNT_KEY"
+ dataTypes:
+ out:
+ default: text
+ headers:
+ CamelAzureStorageQueueMessageId:
+ title: Azure Storage Queue Message Id
+ description: The id of the message.
+ type: string
+ CamelAzureStorageQueueInsertionTime:
+ title: Azure Storage Queue Message Insertion Time
+ description: The time the Message was inserted into the Queue.
+ type: OffsetDateTime
+ CamelAzureStorageQueueExpirationTime:
+ title: Azure Storage Queue Message Expiration Time
+ description: The time that the Message will expire and be automatically deleted.
+ type: OffsetDateTime
+ CamelAzureStorageQueuePopReceipt:
+ title: Pop Receipt
+ description: Unique identifier that must match for the message to be deleted or updated. If deletion fails using this pop receipt then the message has been dequeued by another client.
+ type: string
+ CamelAzureStorageQueueTimeNextVisible:
+ title: Azure Storage Queue Message Time Next Visible
+ description: The time that the message will again become visible in the Queue.
+ type: OffsetDateTime
+ CamelAzureStorageQueueDequeueCount:
+ title: Dequeue Count
+ description: The number of times the message has been dequeued.
+ type: long
+ types:
+ text:
+ format: "text-plain"
+ description: Default text representation of the Message dequeued from the queue.
+ mediaType: text/plain
+ cloudevents:
+ format: "azure-storage-queue:application-cloudevents"
+ description: Output data type represents Azure Storage Queue receive messages operation as CloudEvent V1. The data type sets Camel specific CloudEvent headers on the exchange.
+ headers:
+ CamelCloudEventID:
+ title: CloudEvent ID
+ description: The Camel exchange id set as event id.
+ type: string
+ CamelCloudEventType:
+ title: CloudEvent Type
+ description: The event type.
+ default: "org.apache.camel.event.azure.storage.queue.receiveMessages"
+ type: string
+ CamelCloudEventSource:
+ title: CloudEvent Source
+ description: The event source. By default, the Message Id of the message received with prefix "azure.storage.queue.".
+ type: string
+ CamelCloudEventSubject:
+ title: CloudEvent Subject
+ description: The event subject. Usually the Pop receipt of the message dequeued.
+ type: string
+ CamelCloudEventTime:
+ title: CloudEvent Time
+ description: The exchange creation timestamp as event time.
+ type: string
+ dependencies:
+ - "camel:azure-storage-queue"
+ - "camel:kamelet"
+ - "camel:core"
+ template:
+ from:
+ uri: "azure-storage-queue://{{accountName}}/{{queueName}}"
+ parameters:
+ accessKey: "{{accessKey}}"
+ maxMessages: "{{maxMessages}}"
+ credentialType: "{{credentialType}}"
+ steps:
+ - to: "kamelet:sink"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: bitcoin-source
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PCEtLSBDcmVhdGVkIHdpdGggSW5rc2NhcGUgKGh0dHA6Ly93d3cuaW5rc2NhcGUub3JnLykgLS0+CjxzdmcgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iNjQiIHdpZHRoPSI2NCIgdmVyc2lvbj0iMS4xIiB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPgo8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjAwNjMwODc2LC0wLjAwMzAxOT [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "Bitcoin"
+ camel.apache.org/kamelet.namespace: "Bitcoin"
+ labels:
+ camel.apache.org/kamelet.type: "source"
+spec:
+ definition:
+ title: "Bitcoin Source"
+ description: Provides a feed of the value of the Bitcoin compared to USDT using the Binance service.
+ type: object
+ properties:
+ period:
+ title: Period between Updates
+ description: The interval between updates in milliseconds.
+ type: integer
+ default: 10000
+ types:
+ out:
+ mediaType: application/json
+ schema:
+ type: object
+ properties:
+ currencyPair:
+ type: string
+ open:
+ type: number
+ last:
+ type: number
+ bid:
+ type: number
+ ask:
+ type: number
+ high:
+ type: number
+ low:
+ type: number
+ vwap:
+ type: number
+ volume:
+ type: number
+ quoteVolume:
+ type: number
+ bidSize:
+ type: number
+ askSize:
+ type: number
+ dependencies:
+ - "camel:xchange"
+ - "camel:kamelet"
+ - "camel:jackson"
+ - "camel:timer"
+ template:
+ from:
+ uri: "timer:update"
+ parameters:
+ period: "{{period}}"
+ steps:
+ - to: "xchange:binance?service=marketdata&method=ticker¤cyPair=BTC/USDT"
+ - marshal:
+ json: {}
+ - to: "kamelet:sink"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: caffeine-action
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDIxLjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9ItCh0LvQvtC5XzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAyODEuOCAyNzMuOCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwID [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "Caffeine"
+ camel.apache.org/kamelet.namespace: "Cache"
+ labels:
+ camel.apache.org/kamelet.type: "action"
+spec:
+ definition:
+ title: "Caffeine Action"
+ description: Perform operations on a caffeine cache
+ required:
+ - cacheName
+ type: object
+ properties:
+ cacheName:
+ title: Cache name
+ description: The name of the cache we want to use
+ type: string
+ default: caffeine-cache
+ dependencies:
+ - "camel:core"
+ - "camel:caffeine"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: "kamelet:source"
+ steps:
+ - choice:
+ when:
+ - simple: "${header[caffeine-key]}"
+ steps:
+ - setHeader:
+ name: CamelCaffeineKey
+ simple: "${header[caffeine-key]}"
+ - simple: "${header[ce-caffeinekey]}"
+ steps:
+ - setHeader:
+ name: CamelCaffeineKey
+ simple: "${header[ce-caffeinekey]}"
+ otherwise:
+ steps:
+ - setHeader:
+ name: CamelCaffeineKey
+ simple: "${body}"
+ - choice:
+ when:
+ - simple: "${header[caffeine-operation]}"
+ steps:
+ - setHeader:
+ name: CamelCaffeineAction
+ simple: "${header[caffeine-operation]}"
+ - simple: "${header[ce-caffeineoperation]}"
+ steps:
+ - setHeader:
+ name: CamelCaffeineAction
+ simple: "${header[ce-caffeineoperation]}"
+ otherwise:
+ steps:
+ - setHeader:
+ name: CamelCaffeineAction
+ constant: "GET"
+ - to:
+ uri: "caffeine-cache:{{cacheName}}"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: cassandra-sink
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDIyLjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAzMiAzMiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMzIgMzI7Ii [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "Cassandra"
+ camel.apache.org/kamelet.namespace: "Nosql"
+ labels:
+ camel.apache.org/kamelet.type: "sink"
+spec:
+ definition:
+ title: "Cassandra Sink"
+ description: Send data to an Apache Cassandra cluster.
+ required:
+ - connectionHost
+ - connectionPort
+ - keyspace
+ - query
+ type: object
+ properties:
+ connectionHost:
+ title: Connection Host
+ description: The hostname(s) for the Cassandra server(s). Use a comma to separate multiple hostnames.
+ type: string
+ example: localhost
+ connectionPort:
+ title: Connection Port
+ description: The port number(s) of the cassandra server(s). Use a comma to separate multiple port numbers.
+ type: string
+ example: 9042
+ keyspace:
+ title: Keyspace
+ description: The keyspace to use.
+ type: string
+ example: customers
+ username:
+ title: Username
+ description: The username for accessing a secured Cassandra cluster.
+ type: string
+ x-descriptors:
+ - urn:camel:group:credentials
+ password:
+ title: Password
+ description: The password for accessing a secured Cassandra cluster.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ consistencyLevel:
+ title: Consistency Level
+ description: The consistency level to use.
+ type: string
+ default: ANY
+ enum: ["ANY", "ONE", "TWO", "THREE", "QUORUM", "ALL", "LOCAL_QUORUM", "EACH_QUORUM", "LOCAL_ONE"]
+ prepareStatements:
+ title: Prepare Statements
+ description: If true, specifies to use PreparedStatements as the query. If false, specifies to use regular Statements as the query.
+ type: boolean
+ default: true
+ query:
+ title: Query
+ description: The query to execute against the Cassandra cluster table.
+ type: string
+ extraTypeCodecs:
+ title: Extra Type Codecs
+ description: To use a specific comma separated list of Extra Type codecs.
+ type: string
+ enum: ["BLOB_TO_ARRAY", "BOOLEAN_LIST_TO_ARRAY", "BYTE_LIST_TO_ARRAY", "SHORT_LIST_TO_ARRAY", "INT_LIST_TO_ARRAY", "LONG_LIST_TO_ARRAY", "FLOAT_LIST_TO_ARRAY", "DOUBLE_LIST_TO_ARRAY", "TIMESTAMP_UTC", "TIMESTAMP_MILLIS_SYSTEM", "TIMESTAMP_MILLIS_UTC", "ZONED_TIMESTAMP_SYSTEM", "ZONED_TIMESTAMP_UTC", "ZONED_TIMESTAMP_PERSISTED", "LOCAL_TIMESTAMP_SYSTEM", "LOCAL_TIMESTAMP_UTC"]
+ jsonPayload:
+ title: JSON Payload
+ description: If we want to transform the payload in json or not
+ type: boolean
+ default: true
+ types:
+ in:
+ mediaType: application/json
+ dependencies:
+ - "camel:jackson"
+ - "camel:kamelet"
+ - "camel:cassandraql"
+ - "camel:core"
+ template:
+ beans:
+ - name: local-sql-cassandraql-sink
+ type: "#class:org.apache.camel.component.cassandra.CassandraComponent"
+ properties:
+ autowiredEnabled: "false"
+ from:
+ uri: "kamelet:source"
+ steps:
+ - choice:
+ precondition: true
+ when:
+ - simple: '${properties:jsonPayload:true}'
+ steps:
+ - unmarshal:
+ json:
+ library: Jackson
+ useList: true
+ - to:
+ uri: "{{local-sql-cassandraql-sink}}://{{connectionHost}}:{{connectionPort}}/{{keyspace}}"
+ parameters:
+ username: "{{?username}}"
+ password: "{{?password}}"
+ prepareStatements: "{{prepareStatements}}"
+ consistencyLevel: "{{consistencyLevel}}"
+ cql: "{{query}}"
+ extraTypeCodecs: "{{?extraTypeCodecs}}"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: cassandra-source
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDIyLjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCAzMiAzMiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMzIgMzI7Ii [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "Cassandra"
+ camel.apache.org/kamelet.namespace: "Nosql"
+ labels:
+ camel.apache.org/kamelet.type: "source"
+spec:
+ definition:
+ title: "Cassandra Source"
+ description: Send a query to an Apache Cassandra cluster table.
+ required:
+ - connectionHost
+ - connectionPort
+ - keyspace
+ - query
+ type: object
+ properties:
+ connectionHost:
+ title: Connection Host
+ description: The hostname(s) for the Cassandra server(s). Use a comma to separate multiple hostnames.
+ type: string
+ example: localhost
+ connectionPort:
+ title: Connection Port
+ description: The port number(s) of the cassandra server(s). Use a comma to separate multiple port numbers.
+ type: string
+ example: 9042
+ keyspace:
+ title: Keyspace
+ description: The keyspace to use.
+ type: string
+ example: customers
+ username:
+ title: Username
+ description: The username for accessing a secured Cassandra cluster.
+ type: string
+ x-descriptors:
+ - urn:camel:group:credentials
+ password:
+ title: Password
+ description: The password for accessing a secured Cassandra cluster.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ resultStrategy:
+ title: Result Strategy
+ description: The strategy to convert the result set of the query.
+ type: string
+ default: ALL
+ enum: ["ALL", "ONE", "LIMIT_10", "LIMIT_100"]
+ consistencyLevel:
+ title: Consistency Level
+ description: The consistency level to use.
+ type: string
+ default: QUORUM
+ enum: ["ONE", "TWO", "THREE", "QUORUM", "ALL", "LOCAL_QUORUM", "EACH_QUORUM", "SERIAL", "LOCAL_SERIAL", "LOCAL_ONE"]
+ query:
+ title: Query
+ description: The query to execute against the Cassandra cluster table.
+ type: string
+ extraTypeCodecs:
+ title: Extra Type Codecs
+ description: To use a specific comma separated list of Extra Type codecs.
+ type: string
+ enum: ["BLOB_TO_ARRAY", "BOOLEAN_LIST_TO_ARRAY", "BYTE_LIST_TO_ARRAY", "SHORT_LIST_TO_ARRAY", "INT_LIST_TO_ARRAY", "LONG_LIST_TO_ARRAY", "FLOAT_LIST_TO_ARRAY", "DOUBLE_LIST_TO_ARRAY", "TIMESTAMP_UTC", "TIMESTAMP_MILLIS_SYSTEM", "TIMESTAMP_MILLIS_UTC", "ZONED_TIMESTAMP_SYSTEM", "ZONED_TIMESTAMP_UTC", "ZONED_TIMESTAMP_PERSISTED", "LOCAL_TIMESTAMP_SYSTEM", "LOCAL_TIMESTAMP_UTC"]
+ types:
+ out:
+ mediaType: application/json
+ dependencies:
+ - "camel:jackson"
+ - "camel:kamelet"
+ - "camel:cassandraql"
+ template:
+ beans:
+ - name: local-sql-cassandraql-source
+ type: "#class:org.apache.camel.component.cassandra.CassandraComponent"
+ properties:
+ autowiredEnabled: "false"
+ from:
+ uri: "{{local-sql-cassandraql-source}}://{{connectionHost}}:{{connectionPort}}/{{keyspace}}"
+ parameters:
+ username: "{{?username}}"
+ password: "{{?password}}"
+ cql: "{{query}}"
+ consistencyLevel: "{{consistencyLevel}}"
+ resultSetConversionStrategy: "{{resultStrategy}}"
+ extraTypeCodecs: "{{?extraTypeCodecs}}"
+ steps:
+ - marshal:
+ json: {}
+ - to: "kamelet:sink"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: ceph-sink
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4gPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNjAiIGhlaWdodD0iMTU3IiB2aWV3Qm94PSIwIDAgMTYwIDE1NyIgZmlsbD0ibm9uZSI+PGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwKSI+PHBhdGggZD0iTTc5LjgxNTIgOTYuMDczOUM4OC42ODM2IDk2LjA3MzkgOTUuNzA0NCA4OS4wNTMxIDk1LjcwNDQgODAuMTg0OEM5NS43MDQ0IDcxLjMxNjQgODguNjgzNiA2NC4yOTU2IDc5LjgxNTIgNjQuMjk1NkM3MC45NDY5IDY0LjI5NTYgNjMuOTI2MSA3MS4zMTY0IDYzLj [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "Ceph"
+ camel.apache.org/kamelet.namespace: "Cloud"
+ labels:
+ camel.apache.org/kamelet.type: "sink"
+spec:
+ definition:
+ title: "Ceph Sink"
+ description: Upload data to an Ceph Bucket managed by a Object Storage Gateway.
+ required:
+ - cephUrl
+ - accessKey
+ - secretKey
+ - bucketName
+ - zoneGroup
+ type: object
+ properties:
+ bucketName:
+ title: Bucket Name
+ description: The Ceph Bucket name.
+ type: string
+ accessKey:
+ title: Access Key
+ description: The access key.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ secretKey:
+ title: Secret Key
+ description: The secret key.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ zoneGroup:
+ title: Bucket Zone Group
+ description: The bucket zone group.
+ type: string
+ autoCreateBucket:
+ title: Autocreate Bucket
+ description: Specifies to automatically create the bucket.
+ type: boolean
+ default: false
+ cephUrl:
+ title: Ceph Url Address
+ description: Set the Ceph Object Storage Address Url.
+ type: string
+ example: "http://ceph-storage-address.com"
+ keyName:
+ title: Key Name
+ description: The key name for saving an element in the bucket.
+ type: string
+ dependencies:
+ - "camel:core"
+ - "camel:aws2-s3"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: "kamelet:source"
+ steps:
+ - choice:
+ when:
+ - simple: "${header[file]}"
+ steps:
+ - setHeader:
+ name: CamelAwsS3Key
+ simple: "${header[file]}"
+ - simple: "${header[ce-file]}"
+ steps:
+ - setHeader:
+ name: CamelAwsS3Key
+ simple: "${header[ce-file]}"
+ - simple: "'{{?keyName}}' == ''"
+ steps:
+ - setHeader:
+ name: CamelAwsS3Key
+ simple: "${exchangeId}"
+ - to:
+ uri: "aws2-s3:{{bucketName}}"
+ parameters:
+ secretKey: "{{?secretKey}}"
+ accessKey: "{{?accessKey}}"
+ region: "{{zoneGroup}}"
+ autoCreateBucket: "{{autoCreateBucket}}"
+ uriEndpointOverride: "{{?cephUrl}}"
+ overrideEndpoint: "true"
+ keyName: "{{?keyName}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: ceph-source
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4gPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNjAiIGhlaWdodD0iMTU3IiB2aWV3Qm94PSIwIDAgMTYwIDE1NyIgZmlsbD0ibm9uZSI+PGcgY2xpcC1wYXRoPSJ1cmwoI2NsaXAwKSI+PHBhdGggZD0iTTc5LjgxNTIgOTYuMDczOUM4OC42ODM2IDk2LjA3MzkgOTUuNzA0NCA4OS4wNTMxIDk1LjcwNDQgODAuMTg0OEM5NS43MDQ0IDcxLjMxNjQgODguNjgzNiA2NC4yOTU2IDc5LjgxNTIgNjQuMjk1NkM3MC45NDY5IDY0LjI5NTYgNjMuOTI2MSA3MS4zMTY0IDYzLj [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "Ceph"
+ camel.apache.org/kamelet.namespace: "Cloud"
+ labels:
+ camel.apache.org/kamelet.type: "source"
+spec:
+ definition:
+ title: "Ceph Source"
+ description: Receive data from an Ceph Bucket, managed by a Object Storage Gateway.
+ required:
+ - cephUrl
+ - accessKey
+ - secretKey
+ - bucketName
+ - zoneGroup
+ type: object
+ properties:
+ bucketName:
+ title: Bucket Name
+ description: The Ceph Bucket name.
+ type: string
+ deleteAfterRead:
+ title: Auto-delete Objects
+ description: Specifies to delete objects after consuming them.
+ type: boolean
+ default: true
+ accessKey:
+ title: Access Key
+ description: The access key.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ secretKey:
+ title: Secret Key
+ description: The secret key.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ zoneGroup:
+ title: Bucket Zone Group
+ description: The bucket zone group.
+ type: string
+ autoCreateBucket:
+ title: Autocreate Bucket
+ description: Specifies to automatically create the bucket.
+ type: boolean
+ default: false
+ includeBody:
+ title: Include Body
+ description: If true, the exchange is consumed and put into the body and closed. If false, the Object stream is put raw into the body and the headers are set with the object metadata.
+ type: boolean
+ default: true
+ prefix:
+ title: Prefix
+ description: The bucket prefix to consider while searching.
+ type: string
+ example: 'folder/'
+ ignoreBody:
+ title: Ignore Body
+ description: If true, the Object body is ignored. Setting this to true overrides any behavior defined by the `includeBody` option. If false, the object is put in the body.
+ type: boolean
+ default: false
+ cephUrl:
+ title: Ceph Url Address
+ description: Set the Ceph Object Storage Address Url.
+ type: string
+ example: "http://ceph-storage-address.com"
+ delay:
+ title: Delay
+ description: The number of milliseconds before the next poll of the selected bucket.
+ type: integer
+ default: 500
+ dependencies:
+ - "camel:aws2-s3"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: "aws2-s3:{{bucketName}}"
+ parameters:
+ autoCreateBucket: "{{autoCreateBucket}}"
+ secretKey: "{{?secretKey}}"
+ accessKey: "{{?accessKey}}"
+ region: "{{zoneGroup}}"
+ includeBody: "{{includeBody}}"
+ ignoreBody: "{{ignoreBody}}"
+ deleteAfterRead: "{{deleteAfterRead}}"
+ prefix: "{{?prefix}}"
+ uriEndpointOverride: "{{cephUrl}}"
+ overrideEndpoint: "true"
+ delay: "{{delay}}"
+ steps:
+ - to: "kamelet:sink"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: chuck-norris-source
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDA [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "Chuck Norris"
+ camel.apache.org/kamelet.namespace: "Dataset"
+ labels:
+ camel.apache.org/kamelet.type: "source"
+spec:
+ definition:
+ title: "Chuck Norris Source"
+ description: Gets periodically Chuck Norris jokes
+ type: object
+ properties:
+ period:
+ title: Period
+ description: The interval (msec) to wait before getting the next joke
+ type: integer
+ default: 10000
+ types:
+ out:
+ mediaType: text/plain
+ dependencies:
+ - "camel:kamelet"
+ - "camel:timer"
+ - "camel:http"
+ - "camel:jsonpath"
+ template:
+ from:
+ uri: "timer:chuck"
+ parameters:
+ period: "{{period}}"
+ steps:
+ - to: "https://api.chucknorris.io/jokes/random"
+ - removeHeaders:
+ pattern: '*'
+ - setBody:
+ jsonpath: "$.value"
+ - to: "kamelet:sink"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: chunk-template-action
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "Actions"
+ camel.apache.org/kamelet.namespace: "Transformation"
+ labels:
+ camel.apache.org/kamelet.type: "action"
+spec:
+ definition:
+ title: "Chunk Template Action"
+ description: Apply a Chunk Template.
+ required:
+ - template
+ type: object
+ properties:
+ template:
+ title: Template
+ description: The inline template
+ type: binary
+ dependencies:
+ - "camel:chunk"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: "kamelet:source"
+ steps:
+ - to:
+ uri: "chunk:"
+ parameters:
+ resourceUri: "base64:{{template}}"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: couchbase-sink
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgNjguMzQzIDY4LjM0MyIgZmlsbD0iI2ZmZiIgZmlsbC1ydWxlPSJldmVub2RkIiBzdHJva2U9IiMwMDAiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHVzZSB4bGluazpocmVmPSIjQSIgeD0iMi4xNzEiIHk9IjIuMTcxIi8+PHN5bWJvbCBpZD0iQSIgb3ZlcmZsb3c9InZpc2libGUiPjxwYXRoIGQ9Ik0zMi4wMDIgMEMxNC4zMzEuMDAyLjAwNSAxNC4zMjYgMC [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "Couchbase"
+ camel.apache.org/kamelet.namespace: "Nosql"
+ labels:
+ camel.apache.org/kamelet.type: "sink"
+spec:
+ definition:
+ title: "Couchbase Sink"
+ description: Send documents to Couchbase.
+ required:
+ - protocol
+ - couchbaseHostname
+ - bucket
+ type: object
+ properties:
+ protocol:
+ title: Protocol
+ description: The protocol to use
+ type: string
+ couchbaseHostname:
+ title: Hostname
+ description: The hostname to use
+ type: string
+ couchbasePort:
+ title: Port
+ description: The port to use
+ type: integer
+ default: 8091
+ bucket:
+ title: Bucket
+ description: The bucket to use
+ type: string
+ username:
+ title: Username
+ description: Username to connect to Couchbase.
+ type: string
+ x-descriptors:
+ - urn:camel:group:credentials
+ password:
+ title: Password
+ description: Password to connect to Couchbase.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ startingId:
+ title: Starting Id
+ description: The starting id
+ type: integer
+ default: 1
+ autoStartId:
+ title: Auto Start Id
+ description: Auto Start Id or not
+ type: boolean
+ default: true
+ dependencies:
+ - "camel:couchbase"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: "kamelet:source"
+ steps:
+ - to:
+ uri: "couchbase:{{protocol}}://{{couchbaseHostname}}:{{couchbasePort}}"
+ parameters:
+ bucket: "{{bucket}}"
+ autoStartIdForInserts: "{{autoStartId}}"
+ startingIdForInsertsFrom: "{{startingId}}"
+ username: "{{username}}"
+ password: "{{password}}"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: counter-source
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gU3ZnIFZlY3RvciBJY29ucyA6IGh0dHA6Ly93d3cub25saW5ld2ViZm9udHMuY29tL2ljb24gLS0+DQo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm9 [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "Timer"
+ camel.apache.org/kamelet.namespace: "Scheduling"
+ labels:
+ camel.apache.org/kamelet.type: "source"
+ camel.apache.org/kamelet.verified: "true"
+spec:
+ definition:
+ title: "Counter Source"
+ description: Generates sequential number events starting from a configurable value, incrementing by a specified step. Useful for testing, scheduled tasks, or creating ordered event sequences.
+ type: object
+ properties:
+ period:
+ title: Period
+ description: The time interval between two numbers
+ type: integer
+ default: 1000
+ start:
+ title: Starting Number
+ description: The starting number
+ type: integer
+ default: 1
+ numbers:
+ title: Numbers
+ description: How many numbers to generate
+ type: integer
+ dependencies:
+ - "camel:timer"
+ - "camel:core"
+ - "camel:bean"
+ - "camel:kamelet"
+ template:
+ beans:
+ - name: counter
+ type: java.util.concurrent.atomic.AtomicInteger
+ constructors:
+ "0": "{{start}}"
+ from:
+ uri: timer:counter
+ parameters:
+ period: "{{period}}"
+ repeatCount: "{{?numbers}}"
+ steps:
+ - bean:
+ ref: "{{counter}}"
+ method: getAndIncrement
+ - setHeader:
+ name: "Content-Type"
+ constant: "text/plain"
+ - to: kamelet:sink
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: cron-source
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNTAwIiBoZWlnaHQ9IjI1MDAiIHZpZXdCb3g9IjAgMCAxOTIuNzU2IDE5Mi43NTYiPjxnIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIj48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMCAwaDE5Mi43NTZ2MTkyLjc1NkgwVjB6Ii8+PHBhdGggZD0iTTQyLjE2IDEwMy4wNzJsNS45MDEgMS40OTZjLTEuMjQyIDQuODY1LTMuNDc2IDguNTc0LTYuNzAxIDExLjEyOXMtNy4xNjcgMy44MzItMTEuODI2IDMuODMyYy00LjgyMyAwLTguNzQ2LS45ODItMTEuNzY3LTIuOTQ3LT [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "Cron"
+ camel.apache.org/kamelet.namespace: "Scheduling"
+ labels:
+ camel.apache.org/kamelet.type: "source"
+spec:
+ definition:
+ title: "Cron Source"
+ description: Send events at specific time.
+ required:
+ - schedule
+ - message
+ type: object
+ properties:
+ schedule:
+ title: Cron Schedule
+ description: A cron expression that is used to trigger events generation.
+ type: string
+ example: "0/3 10 * * * ?"
+ message:
+ title: Message
+ description: The message to generate
+ type: string
+ example: hello world
+ types:
+ out:
+ mediaType: text/plain
+ dependencies:
+ - "camel:quartz"
+ - "camel:core"
+ - "camel:cron"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: "cron:tick"
+ parameters:
+ schedule: "{{schedule}}"
+ steps:
+ - setBody:
+ constant: "{{message}}"
+ - to: "kamelet:sink"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: data-type-action
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "Actions"
+ camel.apache.org/kamelet.namespace: "Transformation"
+ labels:
+ camel.apache.org/kamelet.type: "action"
+spec:
+ definition:
+ title: "Data Type Action"
+ description: Applies a given data type with respective data transformation.
+ required:
+ - format
+ type: object
+ properties:
+ scheme:
+ title: Component Scheme
+ description: The data type component scheme enables users to apply Camel component specific data type conversions.
+ type: string
+ format:
+ title: Data Type Format
+ description: Defines the data type that is applied by this action. Apache Camel and the Kamelet catalog support different data types and performs automatic message conversion according to the given type.
+ type: string
+ dependencies:
+ - "camel:kamelet"
+ - "camel:core"
+ template:
+ beans:
+ - name: dataTypeProcessor
+ type: "#class:org.apache.camel.processor.transformer.DataTypeProcessor"
+ from:
+ uri: "kamelet:source"
+ steps:
+ - choice:
+ when:
+ - simple: "'{{?scheme}}' != ''"
+ steps:
+ - setProperty:
+ name: CamelDataType
+ simple: "{{?scheme}}:{{format}}"
+ otherwise:
+ steps:
+ - setProperty:
+ name: CamelDataType
+ simple: "{{format}}"
+ - bean:
+ ref: "{{dataTypeProcessor}}"
+ method: process
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: databricks-sink
+ annotations:
+ camel.apache.org/kamelet.support.level: "Preview"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MCA0MCIgd2lkdGg9IjQwIiBoZWlnaHQ9IjQwIj4KICA8cGF0aCBmaWxsPSIjRkYzNjIxIiBkPSJNMjAgMEw0MCA4LjI3VjEzLjFMMjAgMjAuNUwwIDEzLjFWOC4yN0wyMCAwWiIvPgogIDxwYXRoIGZpbGw9IiNGRjM2MjEiIGQ9Ik0wIDEzLjFMMjAgMjAuNVYyNi45TDAgMTkuNVYxMy4xWiIvPgogIDxwYXRoIGZpbGw9IiNGRjM2MjEiIGQ9Ik00MCAxMy4xTDIwIDIwLjVWMjYuOUw0MCAxOS41VjEzLjFaIi8+CiAgPHBhdGggZmlsbD0iI0ZGMzYyMSIgZD0iTTAgMTkuNUwyMC [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "SQL"
+ camel.apache.org/kamelet.namespace: "Database"
+ labels:
+ camel.apache.org/kamelet.type: "sink"
+spec:
+ definition:
+ title: "Databricks Sink"
+ description: Send data to a Databricks Database. This Kamelet expects a JSON-formatted body. Use key:value pairs to map the JSON fields and parameters. For Unity Catalog workspaces, specify catalog and schema parameters.
+ required:
+ - serverHostname
+ - httpPath
+ - accessToken
+ - query
+ type: object
+ properties:
+ serverHostname:
+ title: Server Hostname
+ description: The Databricks server hostname.
+ type: string
+ example: adb-1234567890123456.7.azuredatabricks.net
+ serverPort:
+ title: Server Port
+ description: The server port for the Databricks data source.
+ type: string
+ default: 443
+ httpPath:
+ title: HTTP Path
+ description: The HTTP path to the Databricks SQL Warehouse or cluster.
+ type: string
+ example: /sql/1.0/warehouses/abc123def456
+ accessToken:
+ title: Access Token
+ description: The personal access token to access Databricks.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ query:
+ title: Query
+ description: The query to execute against the Databricks Database.
+ type: string
+ example: 'INSERT INTO accounts (username,city) VALUES (:#username,:#city)'
+ extraOptions:
+ title: Extra Options
+ description: Additional JDBC connection options (e.g., ConnCatalog=main;ConnSchema=default).
+ type: string
+ default: ''
+ types:
+ in:
+ mediaType: application/json
+ dependencies:
+ - "camel:jackson"
+ - "camel:kamelet"
+ - "camel:sql"
+ - "mvn:com.databricks:databricks-jdbc:3.0.7"
+ - "mvn:org.apache.commons:commons-dbcp2:2.14.0"
+ template:
+ beans:
+ - name: local-sql-databricks-sink
+ type: "#class:org.apache.camel.component.sql.SqlComponent"
+ properties:
+ autowiredEnabled: "false"
+ - name: dsBean
+ type: "#class:org.apache.commons.dbcp2.BasicDataSource"
+ properties:
+ password: '{{accessToken}}'
+ url: 'jdbc:databricks://{{serverHostname}}:{{serverPort}};httpPath={{httpPath}};AuthMech=3;transportMode=http;ssl=1;UID=token;PWD={{accessToken}}{{extraOptions}}'
+ driverClassName: 'com.databricks.client.jdbc.Driver'
+ from:
+ uri: "kamelet:source"
+ steps:
+ - unmarshal:
+ json:
+ library: Jackson
+ - to:
+ uri: "{{local-sql-databricks-sink}}:{{query}}"
+ parameters:
+ dataSource: "#bean:{{dsBean}}"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: databricks-source
+ annotations:
+ camel.apache.org/kamelet.support.level: "Preview"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0MCA0MCIgd2lkdGg9IjQwIiBoZWlnaHQ9IjQwIj4KICA8cGF0aCBmaWxsPSIjRkYzNjIxIiBkPSJNMjAgMEw0MCA4LjI3VjEzLjFMMjAgMjAuNUwwIDEzLjFWOC4yN0wyMCAwWiIvPgogIDxwYXRoIGZpbGw9IiNGRjM2MjEiIGQ9Ik0wIDEzLjFMMjAgMjAuNVYyNi45TDAgMTkuNVYxMy4xWiIvPgogIDxwYXRoIGZpbGw9IiNGRjM2MjEiIGQ9Ik00MCAxMy4xTDIwIDIwLjVWMjYuOUw0MCAxOS41VjEzLjFaIi8+CiAgPHBhdGggZmlsbD0iI0ZGMzYyMSIgZD0iTTAgMTkuNUwyMC [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "SQL"
+ camel.apache.org/kamelet.namespace: "Database"
+ labels:
+ camel.apache.org/kamelet.type: "source"
+spec:
+ definition:
+ title: "Databricks Source"
+ description: Query data from a Databricks Database. For Unity Catalog workspaces, specify catalog and schema parameters.
+ required:
+ - serverHostname
+ - httpPath
+ - accessToken
+ - query
+ type: object
+ properties:
+ serverHostname:
+ title: Server Hostname
+ description: The Databricks server hostname.
+ type: string
+ example: adb-1234567890123456.7.azuredatabricks.net
+ serverPort:
+ title: Server Port
+ description: The server port for the Databricks data source.
+ type: string
+ default: 443
+ httpPath:
+ title: HTTP Path
+ description: The HTTP path to the Databricks SQL Warehouse or cluster.
+ type: string
+ example: /sql/1.0/warehouses/abc123def456
+ accessToken:
+ title: Access Token
+ description: The personal access token to access Databricks.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ query:
+ title: Query
+ description: The query to execute against the Databricks Database.
+ type: string
+ example: 'SELECT * FROM accounts'
+ extraOptions:
+ title: Extra Options
+ description: Additional JDBC connection options (e.g., ConnCatalog=main;ConnSchema=default).
+ type: string
+ default: ''
+ consumedQuery:
+ title: Consumed Query
+ description: A query to run on a tuple consumed.
+ type: string
+ example: 'DELETE FROM accounts where user_id = :#user_id'
+ delay:
+ title: Delay
+ description: The number of milliseconds before the next poll from the Databricks database.
+ type: integer
+ default: 500
+ types:
+ out:
+ mediaType: application/json
+ dependencies:
+ - "camel:jackson"
+ - "camel:kamelet"
+ - "camel:sql"
+ - "mvn:com.databricks:databricks-jdbc:3.0.7"
+ - "mvn:org.apache.commons:commons-dbcp2:2.14.0"
+ template:
+ beans:
+ - name: local-sql-databricks-source
+ type: "#class:org.apache.camel.component.sql.SqlComponent"
+ properties:
+ autowiredEnabled: "false"
+ - name: dsBean
+ type: "#class:org.apache.commons.dbcp2.BasicDataSource"
+ properties:
+ password: '{{accessToken}}'
+ url: 'jdbc:databricks://{{serverHostname}}:{{serverPort}};httpPath={{httpPath}};AuthMech=3;transportMode=http;ssl=1;UID=token;PWD={{accessToken}}{{extraOptions}}'
+ driverClassName: 'com.databricks.client.jdbc.Driver'
+ from:
+ uri: "{{local-sql-databricks-source}}:{{query}}"
+ parameters:
+ dataSource: "#bean:{{dsBean}}"
+ onConsume: "{{?consumedQuery}}"
+ delay: "{{delay}}"
+ steps:
+ - marshal:
+ json:
+ library: Jackson
+ - to: "kamelet:sink"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: delay-action
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTIyLjg4IDEwMC42IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxMjIuODggMTAwLjYiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+LnN0MHtmaWxsOiMyNzI3Mjc7fSAuc3Qxe2ZpbGwtcnVsZTpldmVub2 [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "Delay"
+ camel.apache.org/kamelet.namespace: "EIP"
+ labels:
+ camel.apache.org/kamelet.type: "action"
+spec:
+ definition:
+ title: "Delay Action"
+ description: Delay the processing using a specific amount of time
+ required:
+ - milliseconds
+ type: object
+ properties:
+ milliseconds:
+ title: Milliseconds
+ description: The number of milliseconds of delay
+ type: integer
+ example: 1000
+ dependencies:
+ - "camel:core"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: "kamelet:source"
+ steps:
+ - delay:
+ constant: "{{milliseconds}}"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: djl-image-to-text-action
+ annotations:
+ camel.apache.org/kamelet.support.level: "Preview"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+Cjxzdmcgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmlld0JveD0iMCAwIDU1OCA1MjIiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIgeG [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "Actions"
+ camel.apache.org/kamelet.namespace: "AI"
+ labels:
+ camel.apache.org/kamelet.type: "action"
+spec:
+ definition:
+ title: "Image-to-Text Action"
+ description: Detect and classify objects in an image into texts using the SSD and ResNet models and the ImageNet dataset.
+ type: object
+ types:
+ out:
+ mediaType: application/json
+ dependencies:
+ - "mvn:ai.djl.pytorch:pytorch-engine:0.29.0"
+ - "mvn:ai.djl.pytorch:pytorch-model-zoo:0.29.0"
+ - "camel:core"
+ - "camel:kamelet"
+ - "camel:jackson"
+ - "camel:djl"
+ template:
+ beans:
+ - name: imageNetUtil
+ type: "#class:org.apache.camel.component.djl.ImageNetUtil"
+ from:
+ uri: "kamelet:source"
+ steps:
+ - to: "djl:cv/object_detection?artifactId=ssd"
+ - convertBodyTo: "ai.djl.modality.cv.Image[]"
+ - split:
+ expression:
+ simple: "${body}"
+ aggregationStrategy: "#class:org.apache.camel.processor.aggregate.GroupedBodyAggregationStrategy"
+ steps:
+ - to: "djl:cv/image_classification?artifactId=resnet"
+ # The output from the image classification model is classified
+ # as one of 1000 labels from WordNet.
+ # Since it's too fine-grained, we want to find the higher-level
+ # group (= hypernym) for the classification using the WordNet
+ # dictionary.
+ - bean:
+ ref: "{{imageNetUtil}}"
+ method: extractClassName
+ - bean:
+ ref: "{{imageNetUtil}}"
+ method: addHypernym
+ - marshal:
+ json: {}
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: dns-dig-action
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTIyLjg3OSAxMjIuODgxIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxMjIuODc5IDEyMi44ODEiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxnPjxwYXRoIGQ9Ik0xMDkuNDY3LDg5LjUwNWMwLjE4MiwwLDAuMzU5LDAuMDE5LDAuNTMxLDAuMDUzYzEuMT [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "DNS"
+ camel.apache.org/kamelet.namespace: "Networking"
+ labels:
+ camel.apache.org/kamelet.type: "action"
+spec:
+ definition:
+ title: "DNS DIG Action"
+ description: Query a DNS through Dig.
+ type: object
+ dependencies:
+ - "camel:core"
+ - "camel:dns"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: "kamelet:source"
+ steps:
+ - choice:
+ when:
+ - simple: "${header[domain-name]}"
+ steps:
+ - setHeader:
+ name: dns.name
+ simple: "${header[domain-name]}"
+ - simple: "${header[ce-domainname]}"
+ steps:
+ - setHeader:
+ name: dns.name
+ simple: "${header[ce-domainname]}"
+ otherwise:
+ steps:
+ - setHeader:
+ name: dns.name
+ simple: "${body}"
+ - choice:
+ when:
+ - simple: "${header[dns-type]}"
+ steps:
+ - setHeader:
+ name: dns.type
+ simple: "${header[dns-type]}"
+ - simple: "${header[ce-dnstype]}"
+ steps:
+ - setHeader:
+ name: dns.type
+ simple: "${header[ce-dnstype]}"
+ otherwise:
+ steps:
+ - setHeader:
+ name: dns.type
+ constant: "A"
+ - to:
+ uri: "dns:dig"
+ - convertBodyTo:
+ type: "java.lang.String"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: dns-ip-action
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTIyLjg3OSAxMjIuODgxIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxMjIuODc5IDEyMi44ODEiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxnPjxwYXRoIGQ9Ik0xMDkuNDY3LDg5LjUwNWMwLjE4MiwwLDAuMzU5LDAuMDE5LDAuNTMxLDAuMDUzYzEuMT [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "DNS"
+ camel.apache.org/kamelet.namespace: "Networking"
+ labels:
+ camel.apache.org/kamelet.type: "action"
+spec:
+ definition:
+ title: "DNS IP Action"
+ description: Get an IP from a DNS
+ type: object
+ dependencies:
+ - "camel:core"
+ - "camel:dns"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: "kamelet:source"
+ steps:
+ - choice:
+ when:
+ - simple: "${header[domain]}"
+ steps:
+ - setHeader:
+ name: dns.domain
+ simple: "${header[domain]}"
+ - simple: "${header[ce-domain]}"
+ steps:
+ - setHeader:
+ name: dns.domain
+ simple: "${header[ce-domain]}"
+ otherwise:
+ steps:
+ - setHeader:
+ name: dns.domain
+ simple: "${body}"
+ - to:
+ uri: "dns:ip"
+ - convertBodyTo:
+ type: "java.lang.String"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: dns-lookup-action
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz48c3ZnIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTIyLjg3OSAxMjIuODgxIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAxMjIuODc5IDEyMi44ODEiIHhtbDpzcGFjZT0icHJlc2VydmUiPjxnPjxwYXRoIGQ9Ik0xMDkuNDY3LDg5LjUwNWMwLjE4MiwwLDAuMzU5LDAuMDE5LDAuNTMxLDAuMDUzYzEuMT [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "DNS"
+ camel.apache.org/kamelet.namespace: "Networking"
+ labels:
+ camel.apache.org/kamelet.type: "action"
+spec:
+ definition:
+ title: "DNS Lookup Action"
+ description: Lookup for a domain
+ type: object
+ types:
+ out:
+ mediaType: application/json
+ dependencies:
+ - "camel:core"
+ - "camel:jackson"
+ - "camel:dns"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: "kamelet:source"
+ steps:
+ - choice:
+ when:
+ - simple: "${header[domain-name]}"
+ steps:
+ - setHeader:
+ name: dns.domain
+ simple: "${header[domain-name]}"
+ - simple: "${header[ce-domainname]}"
+ steps:
+ - setHeader:
+ name: dns.domain
+ simple: "${header[ce-domainname]}"
+ otherwise:
+ steps:
+ - setHeader:
+ name: dns.domain
+ simple: "${body}"
+ - to:
+ uri: "dns:lookup"
+ - marshal:
+ json: {}
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: drop-field-action
+ labels:
+ camel.apache.org/kamelet.type: "action"
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "Actions"
+ camel.apache.org/kamelet.namespace: "Transformation"
+spec:
+ definition:
+ title: "Drop Field Action"
+ description: Removes a custom field by given name from the message in transit.
+ required:
+ - field
+ properties:
+ field:
+ title: Field
+ description: The name of the field to be removed
+ type: string
+ type: object
+ dependencies:
+ - "camel:core"
+ - "camel:jackson"
+ - "camel:kamelet"
+ - "camel:kafka"
+ template:
+ beans:
+ - name: dropField
+ type: "#class:org.apache.camel.component.kafka.transform.DropField"
+ properties:
+ field: '{{field}}'
+ from:
+ uri: kamelet:source
+ steps:
+ - choice:
+ when:
+ - simple: "${header[Content-Type]} == 'application/json'"
+ steps:
+ - setProperty:
+ name: deserialized
+ constant: "true"
+ - unmarshal:
+ json:
+ library: Jackson
+ unmarshalType: com.fasterxml.jackson.databind.JsonNode
+ - process:
+ ref: "{{dropField}}"
+ - choice:
+ when:
+ - simple: "${exchangeProperty[deserialized]} == 'true'"
+ steps:
+ - marshal:
+ json:
+ library: Jackson
+ unmarshalType: com.fasterxml.jackson.databind.JsonNode
+ - setHeader:
+ name: "Content-Type"
+ constant: "application/json"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: drop-header-action
+ labels:
+ camel.apache.org/kamelet.type: "action"
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "Actions"
+ camel.apache.org/kamelet.namespace: "EIP"
+spec:
+ definition:
+ title: "Drop Header Action"
+ description: "Remove an header from the message in transit."
+ required:
+ - name
+ properties:
+ name:
+ title: Name
+ description: The name of the header to be removed.
+ type: string
+ example: headername
+ type: object
+ dependencies:
+ - "camel:core"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: kamelet:source
+ steps:
+ - removeHeader:
+ name: "{{name}}"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: drop-headers-action
+ labels:
+ camel.apache.org/kamelet.type: "action"
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "Actions"
+ camel.apache.org/kamelet.namespace: "EIP"
+spec:
+ definition:
+ title: "Drop Headers Action"
+ description: "Remove headers from the message in transit based on a pattern."
+ required:
+ - pattern
+ properties:
+ pattern:
+ title: Pattern
+ description: Name or pattern of headers to remove. The pattern is matched in the following order, 1 = exact match 2 = wildcard (pattern ends with a and the name starts with the pattern) 3 = regular expression (all of above is case in-sensitive).
+ type: string
+ example: Camel*
+ excludePattern:
+ title: Exclusion Pattern
+ description: Name or pattern of headers to not remove. The pattern is matched in the following order, 1 = exact match 2 = wildcard (pattern ends with a and the name starts with the pattern) 3 = regular expression (all of above is case in-sensitive).
+ type: string
+ example: Camel*
+ type: object
+ dependencies:
+ - "camel:core"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: kamelet:source
+ steps:
+ - removeHeaders:
+ pattern: "{{pattern}}"
+ excludePattern: "{{?excludePattern}}"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: dropbox-sink
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjQzcHgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQzIDQwIiB2ZXJzaW9uPSIxLjEiIGhlaWdodD0iNDBweCI+CiA8cGF0aCBkPSJtMTIuNSAwbC0xMi41IDguMSA4LjcgNyAxMi41LTcuOC04LjctNy4zem0tMTIuNSAyMS45bDEyLjUgOC4yIDguNy03LjMtMTIuNS03LjctOC43IDYuOHptMjEuMiAwLjlsOC44IDcuMyAxMi40LTguMS04LjYtNi45LTEyLjYgNy43em0yMS4yLTE0LjdsLTEyLjQtOC4xLTguOC [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "Dropbox"
+ camel.apache.org/kamelet.namespace: "Cloud"
+ labels:
+ camel.apache.org/kamelet.type: "sink"
+spec:
+ definition:
+ title: "Dropbox Sink"
+ description: Upload Files to Dropbox.
+ required:
+ - accessToken
+ - clientIdentifier
+ - remotePath
+ - uploadMode
+ type: object
+ properties:
+ accessToken:
+ title: Dropbox Access Token
+ description: The access Token to use to access Dropbox
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ clientIdentifier:
+ title: Client Identifier
+ description: Dropbox App client Identifier
+ type: string
+ x-descriptors:
+ - urn:camel:group:credentials
+ remotePath:
+ title: Remote Path
+ description: Original file or folder to work with
+ type: string
+ uploadMode:
+ title: Upload Mode
+ description: The uploading mode in case a file with the same name exists on Dropbox. Choose `add` or `force`. With `add`, the new file is renamed. With `force`, the existing file is overwritten.
+ type: string
+ default: add
+ dependencies:
+ - "camel:core"
+ - "camel:dropbox"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: "kamelet:source"
+ steps:
+ - choice:
+ when:
+ - simple: "${header[file]}"
+ steps:
+ - setHeader:
+ name: CamelDropboxPutFileName
+ simple: "${header[file]}"
+ - simple: "${header[ce-file]}"
+ steps:
+ - setHeader:
+ name: CamelDropboxPutFileName
+ simple: "${header[ce-file]}"
+ - to:
+ uri: 'dropbox:put'
+ parameters:
+ accessToken: '{{accessToken}}'
+ remotePath: '{{remotePath}}'
+ clientIdentifier: '{{clientIdentifier}}'
+ uploadMode: '{{uploadMode}}'
+
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: dropbox-source
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+Cjxzdmcgd2lkdGg9IjQzcHgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDQzIDQwIiB2ZXJzaW9uPSIxLjEiIGhlaWdodD0iNDBweCI+CiA8cGF0aCBkPSJtMTIuNSAwbC0xMi41IDguMSA4LjcgNyAxMi41LTcuOC04LjctNy4zem0tMTIuNSAyMS45bDEyLjUgOC4yIDguNy03LjMtMTIuNS03LjctOC43IDYuOHptMjEuMiAwLjlsOC44IDcuMyAxMi40LTguMS04LjYtNi45LTEyLjYgNy43em0yMS4yLTE0LjdsLTEyLjQtOC4xLTguOC [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "Dropbox"
+ camel.apache.org/kamelet.namespace: "Cloud"
+ labels:
+ camel.apache.org/kamelet.type: "source"
+spec:
+ definition:
+ title: "Dropbox Source"
+ description: Consume Files from Dropbox.
+ required:
+ - period
+ - accessToken
+ - clientIdentifier
+ - remotePath
+ - query
+ type: object
+ properties:
+ period:
+ title: Period between Polls
+ description: The interval between fetches to the Dropbox remote path in milliseconds
+ type: integer
+ default: 10000
+ accessToken:
+ title: Dropbox Access Token
+ description: The access Token to use to access Dropbox
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ clientIdentifier:
+ title: Client Identifier
+ description: Dropbox App client Identifier
+ type: string
+ x-descriptors:
+ - urn:camel:group:credentials
+ remotePath:
+ title: Remote Path
+ description: Original file or folder to work with
+ type: string
+ query:
+ title: Queries
+ description: A space-separated list of sub-strings to search for. A file matches only if it contains all the sub-strings. If this option is not set, all files is matched.
+ type: string
+ dependencies:
+ - "camel:dropbox"
+ - "camel:kamelet"
+ - "camel:core"
+ - "camel:jsonpath"
+ - "camel:timer"
+ template:
+ from:
+ uri: "timer:dropbox-stream"
+ parameters:
+ period: "{{period}}"
+ steps:
+ - to:
+ uri: "dropbox:search"
+ parameters:
+ accessToken: "{{accessToken}}"
+ remotePath: "{{remotePath}}"
+ clientIdentifier: "{{clientIdentifier}}"
+ query: "{{query}}"
+ - split:
+ jsonpath: "$.*"
+ steps:
+ - setProperty:
+ name: dropboxFileName
+ simple: ${body.metadata.pathDisplay}
+ - toD: "dropbox:get?accessToken={{accessToken}}&clientIdentifier={{clientIdentifier}}&remotePath=${exchangeProperty.dropboxFileName}"
+ - to: "kamelet:sink"
+ - toD: "dropbox:del?accessToken={{accessToken}}&clientIdentifier={{clientIdentifier}}&remotePath=${exchangeProperty.dropboxFileName}"
+
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: earthquake-source
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9JzEwMHB4JyB3aWR0aD0nMTAwcHgnICBmaWxsPSIjMDAwMDAwIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMTAwLjAwMyA3OS45OTciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDEwMC4wMDMgNzkuOTk3IiB4bWw6c3BhY2U9InByZXNlcnZlIj48cGF0aCBkPSJNODEuNjUzLDQyLjk0Yy0xLjM4NywwLTIuNjY2LDAuNzY3LTMuMzE1LDEuOTkyTDcyLjk0Miw1NS4xbC02Lj [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "Earthquake"
+ camel.apache.org/kamelet.namespace: "Dataset"
+ labels:
+ camel.apache.org/kamelet.type: "source"
+ camel.apache.org/kamelet.verified: "true"
+spec:
+ definition:
+ title: "Earthquake Source"
+ description: Get data about current earthquake events happening in the world using the USGS API
+ type: object
+ properties:
+ period:
+ title: Period between Polls
+ description: The interval between fetches to the earthquake API in milliseconds.
+ type: integer
+ default: 60000
+ lookAhead:
+ title: Look-ahead Minutes
+ description: The amount of minutes to look ahead when starting the integration afresh.
+ type: integer
+ default: 120
+ types:
+ out:
+ mediaType: application/json
+ dependencies:
+ - "camel:caffeine"
+ - "camel:http"
+ - "camel:kamelet"
+ - "camel:core"
+ - "camel:jackson"
+ - "camel:jsonpath"
+ - "camel:timer"
+ template:
+ from:
+ uri: "timer:earthquake"
+ parameters:
+ period: "{{period}}"
+ steps:
+ - setHeader:
+ name: CamelCaffeineAction
+ constant: GET
+ - toD: "caffeine-cache:cache-${routeId}?key=lastUpdate"
+ - choice:
+ when:
+ - simple: "${header.CamelCaffeineActionHasResult}"
+ steps:
+ - setProperty:
+ name: lastUpdate
+ simple: "${body}"
+ otherwise:
+ steps:
+ - setProperty:
+ name: lastUpdate
+ simple: "${date-with-timezone:now-{{lookAhead}}m:UTC:yyyy-MM-dd'T'HH:mm:ss.SSS}"
+ - setHeader:
+ name: CamelHttpMethod
+ constant: GET
+ - toD: "https://earthquake.usgs.gov/fdsnws/event/1/query?format=geojson&updatedafter=${exchangeProperty.lastUpdate}&orderby=time-asc"
+ - removeHeader:
+ name: CamelHttpMethod
+ - unmarshal:
+ json: {}
+ - setProperty:
+ name: generated
+ simple: "${body[metadata][generated]}"
+ - setProperty:
+ name: lastUpdate
+ simple: "${date-with-timezone:exchangeProperty.generated:UTC:yyyy-MM-dd'T'HH:mm:ss.SSS}"
+ - claimCheck:
+ operation: Push
+ - setBody:
+ exchange-property: lastUpdate
+ - setHeader:
+ name: CamelCaffeineAction
+ constant: PUT
+ - toD: "caffeine-cache:cache-${routeId}?key=lastUpdate"
+ - claimCheck:
+ operation: Pop
+ - split:
+ jsonpath: "$.features[*]"
+ steps:
+ - marshal:
+ json: {}
+ - to: "kamelet:sink"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: elasticsearch-index-sink
+ labels:
+ camel.apache.org/kamelet.type: "sink"
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.group: "ElasticSearch"
+ camel.apache.org/kamelet.namespace: "Search"
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA1NTAgMjUwIiB2aWV3Qm94PSI3Nyw4Myw0MTAsOTAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiA8cGF0aCBkPSJtMTc4IDEwMi41aDMxM3Y0MWgtMzEzeiIgZmlsbD0ibm9uZSIvPgogPGcgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyI+CiAgPHBhdGggZD0ibTE5My4zIDEzOS40Yy00IDAtNy4yLTEuMi05LjUtMy41cy0zLjQtNS42LTMuNC05LjdjMC00LjIgMS4xLTcuNiAzLjItMTBzNS0zLjYgOC43LTMuNmMzLjQgMCA2Lj [...]
+spec:
+ definition:
+ title: "ElasticSearch Index Sink"
+ description: Stores JSON-formatted data into ElasticSearch.
+ required:
+ - clusterName
+ - hostAddresses
+ type: object
+ properties:
+ user:
+ title: Username
+ description: The username to connect to ElasticSearch.
+ type: string
+ x-descriptors:
+ - urn:camel:group:credentials
+ password:
+ title: Password
+ description: The password to connect to ElasticSearch.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ enableSSL:
+ title: Enable SSL
+ description: Specifies to connect by using SSL.
+ type: boolean
+ default: true
+ hostAddresses:
+ title: Host Addresses
+ description: A comma-separated list of remote transport addresses in `ip:port format`.
+ type: string
+ example: quickstart-es-http:9200
+ clusterName:
+ title: ElasticSearch Cluster Name
+ description: The name of the ElasticSearch cluster.
+ type: string
+ example: quickstart
+ indexName:
+ title: Index in ElasticSearch
+ description: The name of the ElasticSearch index.
+ type: string
+ example: data
+ certificate:
+ title: Certificate
+ description: The Certificate for accessing the Elasticsearch cluster. You must encode this value in base64.
+ type: string
+ types:
+ out:
+ mediaType: text/plain
+ in:
+ mediaType: application/json
+ dependencies:
+ - "camel:core"
+ - "camel:jackson"
+ - "camel:kamelet"
+ - "camel:elasticsearch"
+ - "camel:gson"
+ - "camel:bean"
+ template:
+ beans:
+ - name: local-es
+ type: "#class:org.apache.camel.component.es.ElasticsearchComponent"
+ properties:
+ user: "{{?user}}"
+ password: "{{?password}}"
+ from:
+ uri: kamelet:source
+ steps:
+ - choice:
+ when:
+ - simple: "${header[indexId]}"
+ steps:
+ - setHeader:
+ name: "indexId"
+ simple: "${header[indexId]}"
+ - simple: "${header[ce-indexid]}"
+ steps:
+ - setHeader:
+ name: "indexId"
+ simple: "${header[ce-indexid]}"
+ - choice:
+ when:
+ - simple: "${header[indexName]}"
+ steps:
+ - setHeader:
+ name: "indexName"
+ simple: "${header[indexName]}"
+ - simple: "${header[ce-indexname]}"
+ steps:
+ - setHeader:
+ name: "indexName"
+ simple: "${header[ce-indexname]}"
+ - unmarshal:
+ json: {}
+ - to:
+ uri: "{{local-es}}:{{clusterName}}"
+ parameters:
+ operation: "INDEX"
+ hostAddresses: "{{hostAddresses}}"
+ enableSSL: "{{enableSSL}}"
+ indexName: "{{?indexName}}"
+ certificatePath: "base64:{{?certificate}}"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: elasticsearch-search-source
+ labels:
+ camel.apache.org/kamelet.type: "source"
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.group: "ElasticSearch"
+ camel.apache.org/kamelet.namespace: "Search"
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHN2ZyBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA1NTAgMjUwIiB2aWV3Qm94PSI3Nyw4Myw0MTAsOTAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiA8cGF0aCBkPSJtMTc4IDEwMi41aDMxM3Y0MWgtMzEzeiIgZmlsbD0ibm9uZSIvPgogPGcgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyI+CiAgPHBhdGggZD0ibTE5My4zIDEzOS40Yy00IDAtNy4yLTEuMi05LjUtMy41cy0zLjQtNS42LTMuNC05LjdjMC00LjIgMS4xLTcuNiAzLjItMTBzNS0zLjYgOC43LTMuNmMzLjQgMCA2Lj [...]
+spec:
+ definition:
+ title: "ElasticSearch Search Source"
+ description: Search data on ElasticSearch
+ required:
+ - query
+ - clusterName
+ - indexName
+ - hostAddresses
+ type: object
+ properties:
+ period:
+ title: Period
+ description: The time interval between two searches
+ type: integer
+ default: 1000
+ query:
+ title: Query
+ description: The query we want to use to search on ElasticSearch.
+ type: string
+ user:
+ title: Username
+ description: Username to connect to ElasticSearch.
+ type: string
+ x-descriptors:
+ - urn:camel:group:credentials
+ password:
+ title: Password
+ description: Password to connect to ElasticSearch.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ enableSSL:
+ title: Enable SSL
+ description: Do we want to connect using SSL?
+ type: boolean
+ default: true
+ hostAddresses:
+ title: Host Addresses
+ description: Comma separated list with ip:port formatted remote transport addresses to use.
+ type: string
+ indexName:
+ title: Index in ElasticSearch
+ description: The name of the index to act against.
+ type: string
+ clusterName:
+ title: ElasticSearch Cluster Name
+ description: The name of the cluster.
+ type: string
+ certificate:
+ title: Certificate
+ description: The Certificate for accessing the Elasticsearch cluster. You must encode this value in base64.
+ type: string
+ types:
+ out:
+ mediaType: application/json
+ dependencies:
+ - "camel:core"
+ - "camel:kamelet"
+ - "camel:timer"
+ - "camel:elasticsearch"
+ - "camel:gson"
+ template:
+ beans:
+ - name: local-es
+ type: "#class:org.apache.camel.component.es.ElasticsearchComponent"
+ properties:
+ user: "{{?user}}"
+ password: "{{?password}}"
+ from:
+ uri: timer:tick
+ parameters:
+ period: "{{period}}"
+ steps:
+ - setBody:
+ constant: "{{query?nested=false}}"
+ - to:
+ uri: "{{local-es}}:{{clusterName}}"
+ parameters:
+ operation: "SEARCH"
+ indexName: "{{indexName}}"
+ hostAddresses: "{{hostAddresses}}"
+ enableSSL: "{{enableSSL}}"
+ certificatePath: "base64:{{?certificate}}"
+ - marshal:
+ json:
+ library: Gson
+ - to: kamelet:sink
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: exec-sink
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDIwMDEwOTA0Ly9FTiIKICJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy1TVkctMjAwMTA5MDQvRFREL3N2ZzEwLmR0ZCI+CjxzdmcgdmVyc2lvbj0iMS4wIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiB3aWR0aD0iMTI4MC4wMDAwMDBwdCIgaGVpZ2h0PSIxMDEyLjAwMDAwMHB0IiB2aWV3Qm94PSIwIDAgMTI4MC4wMDAwMDAgMTAxMi4wMDAwMDAiCiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCBtZW [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "Exec"
+ camel.apache.org/kamelet.namespace: "System"
+ labels:
+ camel.apache.org/kamelet.type: "sink"
+spec:
+ definition:
+ title: "Exec Sink"
+ description: Execute system commands
+ required:
+ - executable
+ type: object
+ properties:
+ executable:
+ title: Executable Command
+ description: The command to execute
+ type: string
+ dependencies:
+ - "camel:core"
+ - "camel:exec"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: kamelet:source
+ steps:
+ - choice:
+ when:
+ - simple: "${header[args]}"
+ steps:
+ - setHeader:
+ name: CamelExecCommandArgs
+ simple: "${header[args]}"
+ - simple: "${header[ce-args]}"
+ steps:
+ - setHeader:
+ name: CamelExecCommandArgs
+ simple: "${header[ce-args]}"
+ - to:
+ uri: "exec:{{executable}}"
+ - setBody:
+ simple: "${body.stdout}"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: extract-field-action
+ labels:
+ camel.apache.org/kamelet.type: "action"
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "Actions"
+ camel.apache.org/kamelet.namespace: "Transformation"
+spec:
+ definition:
+ title: "Extract Field Action"
+ description: Extract a field from the message body.
+ required:
+ - field
+ properties:
+ field:
+ title: Field
+ description: The name of the field to extract
+ type: string
+ headerOutput:
+ title: Header Output
+ description: If enable the action will store the extracted field in an header named CamelKameletsExtractFieldName
+ type: boolean
+ default: false
+ headerOutputName:
+ title: Header Output Name
+ description: A custom name for the header containing the extracted field
+ default: "none"
+ type: string
+ strictHeaderCheck:
+ title: Strict Header Check
+ description: If enabled the action will check if the header output name (custom or default) has been used already in the exchange. If so, the extracted field is stored in the message body, if not, the extracted field is stored in the selected header (custom or default).
+ type: boolean
+ default: false
+ trimField:
+ title: Trim Field
+ description: If enabled we return the Raw extracted field
+ type: boolean
+ default: false
+ type: object
+ dependencies:
+ - "camel:kamelet"
+ - "camel:core"
+ - "camel:jackson"
+ - "camel:kafka"
+ template:
+ beans:
+ - name: extractField
+ type: "#class:org.apache.camel.component.kafka.transform.ExtractField"
+ properties:
+ field: '{{field}}'
+ headerOutput: '{{headerOutput}}'
+ headerOutputName: '{{headerOutputName}}'
+ strictHeaderCheck: '{{strictHeaderCheck}}'
+ trimField: '{{trimField}}'
+ from:
+ uri: kamelet:source
+ steps:
+ - choice:
+ when:
+ - simple: "${header[Content-Type]} == 'application/json'"
+ steps:
+ - setProperty:
+ name: deserialized
+ constant: "true"
+ - unmarshal:
+ json:
+ library: Jackson
+ unmarshalType: com.fasterxml.jackson.databind.JsonNode
+ - process:
+ ref: "{{extractField}}"
+ - choice:
+ when:
+ - simple: "${exchangeProperty[trimField]} == 'false'"
+ steps:
+ - choice:
+ when:
+ - simple: "${exchangeProperty[deserialized]} == 'true'"
+ steps:
+ - marshal:
+ json:
+ library: Jackson
+ unmarshalType: com.fasterxml.jackson.databind.JsonNode
+ - setHeader:
+ name: "Content-Type"
+ constant: "application/json"
+---
+
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: fhir-sink
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxOTUuMiAzMDAiPjxzdHlsZT48L3N0eWxlPjxnIGlkPSJMYXllcl8yIj48bGluZWFyR3JhZGllbnQgaWQ9IlNWR0lEXzFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjYyLjY0NCIgeTE9IjI2OC4yMDEiIHgyPSIzMC43MjEiIHkyPSI4Ny4xNTUiPjxzdG9wIG9mZnNldD0iLjE1NCIgc3RvcC1jb2xvcj0iI2ZmZTQwZSIvPjxzdG9wIG9mZnNldD0iLjkxIiBzdG9wLWNvbG9yPSIjZTEwZTE5Ii8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBkPSJNNzkuNiA3OC [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "FHIR"
+ camel.apache.org/kamelet.namespace: "API"
+ labels:
+ camel.apache.org/kamelet.type: "sink"
+spec:
+ definition:
+ title: "FHIR Sink"
+ description: Forward data to a FHIR endpoint.
+ required:
+ - serverUrl
+ - methodName
+ type: object
+ properties:
+ apiName:
+ title: API Name
+ description: "What kind of operation to perform."
+ type: string
+ enum: ["CAPABILITIES", "CREATE", "DELETE", "HISTORY", "LOAD_PAGE", "META", "OPERATION", "PATCH", "READ", "SEARCH", "TRANSACTION", "UPDATE", "VALIDATE"]
+ methodName:
+ title: Method Name
+ description: "What sub operation to use for the selected operation."
+ type: string
+ encoding:
+ title: Encoding
+ description: "Encoding to use for all request. One of: [JSON] [XML]."
+ type: string
+ default: "JSON"
+ fhirVersion:
+ title: FHIR Version
+ description: "The FHIR Version to use."
+ type: string
+ enum: ["DSTU2", "DSTU2_HL7ORG", "DSTU2_1", "DSTU3", "R4", "R5"]
+ default: "R4"
+ log:
+ title: Log
+ description: "Will log every requests and responses."
+ type: boolean
+ default: false
+ prettyPrint:
+ title: Pretty Print
+ description: "Pretty print all request."
+ type: boolean
+ default: false
+ serverUrl:
+ title: Server URL
+ description: The FHIR server base URL.
+ type: string
+ lazyStartProducer:
+ title: Lazy Start Producer
+ description: "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel’s routing error handlers. Beware that when the first message is processed then creating and starting the [...]
+ type: boolean
+ default: false
+ proxyHost:
+ title: Proxy Host
+ description: The proxy host.
+ type: string
+ proxyPassword:
+ title: Proxy Password
+ description: The proxy password.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ proxyPort:
+ title: Proxy Port
+ description: The proxy port.
+ type: integer
+ proxyUser:
+ title: Proxy User
+ description: The proxy username.
+ type: string
+ x-descriptors:
+ - urn:camel:group:credentials
+ accessToken:
+ title: Access Token
+ description: OAuth access token.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ username:
+ title: Username
+ description: Username to use for basic authentication.
+ type: string
+ x-descriptors:
+ - urn:camel:group:credentials
+ password:
+ title: Password
+ description: Password to use for basic authentication.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ dependencies:
+ - "camel:fhir"
+ - "camel:core"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: kamelet:source
+ steps:
+ - choice:
+ precondition: true
+ when:
+ - simple: "${properties:encoding} =~ 'JSON'"
+ steps:
+ - unmarshal:
+ fhirJson:
+ fhirVersion: "{{fhirVersion}}"
+ prettyPrint: "{{prettyPrint}}"
+ - simple: "${properties:encoding} =~ 'XML'"
+ steps:
+ - unmarshal:
+ fhirXml:
+ fhirVersion: "{{fhirVersion}}"
+ prettyPrint: "{{prettyPrint}}"
+ - to:
+ uri: "fhir://{{apiName}}/{{methodName}}"
+ parameters:
+ serverUrl: "{{serverUrl}}"
+ inBody: "resource"
+ encoding: "{{encoding}}"
+ fhirVersion: "{{fhirVersion}}"
+ log: "{{log}}"
+ prettyPrint: "{{prettyPrint}}"
+ lazyStartProducer: "{{lazyStartProducer}}"
+ proxyHost: "{{?proxyHost}}"
+ proxyPassword: "{{?proxyPassword}}"
+ proxyPort: "{{?proxyPort}}"
+ proxyUser: "{{?proxyUser}}"
+ accessToken: "{{?accessToken}}"
+ username: "{{?username}}"
+ password: "{{?password}}"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: fhir-source
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxOTUuMiAzMDAiPjxzdHlsZT48L3N0eWxlPjxnIGlkPSJMYXllcl8yIj48bGluZWFyR3JhZGllbnQgaWQ9IlNWR0lEXzFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjYyLjY0NCIgeTE9IjI2OC4yMDEiIHgyPSIzMC43MjEiIHkyPSI4Ny4xNTUiPjxzdG9wIG9mZnNldD0iLjE1NCIgc3RvcC1jb2xvcj0iI2ZmZTQwZSIvPjxzdG9wIG9mZnNldD0iLjkxIiBzdG9wLWNvbG9yPSIjZTEwZTE5Ii8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBkPSJNNzkuNiA3OC [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "FHIR"
+ camel.apache.org/kamelet.namespace: "API"
+ labels:
+ camel.apache.org/kamelet.type: "source"
+spec:
+ definition:
+ title: "FHIR Source"
+ description: Receive data from FHIR server.
+ required:
+ - serverUrl
+ - username
+ - password
+ type: object
+ properties:
+ serverUrl:
+ title: Server URL
+ description: The FHIR server url.
+ type: string
+ url:
+ title: URL
+ description: The FHIR resource type url.
+ type: string
+ default: "/Patient"
+ encoding:
+ title: Encoding
+ description: Encoding to use for all request.
+ type: string
+ default: "JSON"
+ enum: ["JSON", "XML"]
+ fhirVersion:
+ title: FHIR Version
+ description: The FHIR Version to use.
+ type: string
+ default: "R4"
+ enum: ["DSTU2", "DSTU2_HL7ORG", "DSTU2_1", "DSTU3", "R4", "R5"]
+ username:
+ title: Username
+ description: The username to access the FHIR server.
+ type: string
+ x-descriptors:
+ - urn:camel:group:credentials
+ password:
+ title: Password
+ description: The password to access the FHIR server.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ prettyPrint:
+ title: Json Pretty Print
+ description: Define if the Json must be pretty print or not.
+ type: boolean
+ default: true
+ types:
+ out:
+ mediaType: application/json
+ dependencies:
+ - "camel:fhir"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: "fhir://search/searchByUrl"
+ parameters:
+ serverUrl: "{{serverUrl}}"
+ url: "{{url}}"
+ encoding: "{{encoding}}"
+ fhirVersion: "{{fhirVersion}}"
+ prettyPrint: "{{prettyPrint}}"
+ username: "{{username}}"
+ password: "{{password}}"
+ steps:
+ - marshal:
+ fhirJson:
+ fhirVersion: "{{fhirVersion}}"
+ prettyPrint: "{{prettyPrint}}"
+ - to: "kamelet:sink"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: file-watch-source
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE5LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPg0KPHN2ZyB2ZXJzaW9uPSIxLjEiIGlkPSJDYXBhXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4Ig0KCSB2aWV3Qm94PSIwIDAgMzY4LjU1MyAzNjguNTUzIiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bm [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "File Watch"
+ camel.apache.org/kamelet.namespace: "File"
+ labels:
+ camel.apache.org/kamelet.type: "source"
+spec:
+ definition:
+ title: "File Watch Source"
+ description: Receive events related to a file or folder. It may require a volume mounting on Kubernetes.
+ required:
+ - filePath
+ - events
+ type: object
+ properties:
+ filePath:
+ title: Path to Watch
+ description: Path of file or folder to watch
+ type: string
+ events:
+ title: Events
+ description: The type of events to consume
+ type: string
+ default: "CREATE,MODIFY,DELETE"
+ dependencies:
+ - "camel:file-watch"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: "file-watch:{{filePath}}"
+ parameters:
+ events: "{{events}}"
+ steps:
+ - to: "kamelet:sink"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: freemarker-template-action
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "Actions"
+ camel.apache.org/kamelet.namespace: "Transformation"
+ labels:
+ camel.apache.org/kamelet.type: "action"
+spec:
+ definition:
+ title: "Freemarker Template Action"
+ description: Apply a Freemarker Template.
+ required:
+ - template
+ type: object
+ properties:
+ template:
+ title: Template
+ description: The inline template
+ type: string
+ example: "file:////template.ftl"
+ pattern: "^(http|https|file|classpath|ref|bean)://.*"
+ dependencies:
+ - "camel:freemarker"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: "kamelet:source"
+ steps:
+ - to:
+ uri: "freemarker:"
+ parameters:
+ resourceUri: "{{template}}"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: ftp-sink
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCAyMjEuMSAzMDAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwID [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "FTP"
+ camel.apache.org/kamelet.namespace: "File"
+ labels:
+ camel.apache.org/kamelet.type: "sink"
+spec:
+ definition:
+ title: "FTP Sink"
+ description: Send data to an FTP server.
+ required:
+ - connectionHost
+ - connectionPort
+ - username
+ - password
+ - directoryName
+ type: object
+ properties:
+ connectionHost:
+ title: Connection Host
+ description: The hostname of the FTP server.
+ type: string
+ connectionPort:
+ title: Connection Port
+ description: The port of the FTP server.
+ type: string
+ default: 21
+ username:
+ title: Username
+ description: The username to access the FTP server.
+ type: string
+ x-descriptors:
+ - urn:camel:group:credentials
+ password:
+ title: Password
+ description: The password to access the FTP server.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ directoryName:
+ title: Directory Name
+ description: The starting directory.
+ type: string
+ passiveMode:
+ title: Passive Mode
+ description: Specifies to use passive mode connection.
+ type: boolean
+ default: false
+ fileExist:
+ title: File Existence
+ description: How to behave in case of file already existent.
+ type: string
+ default: Override
+ enum: ["Override", "Append", "Fail", "Ignore"]
+ binary:
+ title: Binary
+ description: Specifies the file transfer mode, BINARY or ASCII. Default is ASCII (false).
+ type: boolean
+ default: false
+ autoCreate:
+ title: Autocreate Missing Directories
+ description: Automatically create the directory the files should be written to.
+ type: boolean
+ default: true
+ dependencies:
+ - "camel:ftp"
+ - "camel:core"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: "kamelet:source"
+ steps:
+ - choice:
+ when:
+ - simple: "${header[file]}"
+ steps:
+ - setHeader:
+ name: CamelFileName
+ simple: "${header[file]}"
+ - simple: "${header[ce-file]}"
+ steps:
+ - setHeader:
+ name: CamelFileName
+ simple: "${header[ce-file]}"
+ - to:
+ uri: "ftp:{{username}}@{{connectionHost}}:{{connectionPort}}/{{directoryName}}"
+ parameters:
+ password: "{{password}}"
+ passiveMode: "{{passiveMode}}"
+ fileExist: "{{fileExist}}"
+ binary: "{{binary}}"
+ autoCreate: "{{autoCreate}}"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: ftp-source
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCAyMjEuMSAzMDAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwID [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "FTP"
+ camel.apache.org/kamelet.namespace: "File"
+ labels:
+ camel.apache.org/kamelet.type: "source"
+spec:
+ definition:
+ title: "FTP Source"
+ description: Receive data from an FTP server.
+ required:
+ - connectionHost
+ - connectionPort
+ - username
+ - password
+ - directoryName
+ type: object
+ properties:
+ connectionHost:
+ title: Connection Host
+ description: The hostname of the FTP server.
+ type: string
+ connectionPort:
+ title: Connection Port
+ description: The port of the FTP server.
+ type: string
+ default: 21
+ username:
+ title: Username
+ description: The username to access the FTP server.
+ type: string
+ x-descriptors:
+ - urn:camel:group:credentials
+ password:
+ title: Password
+ description: The password to access the FTP server.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ directoryName:
+ title: Directory Name
+ description: The starting directory
+ type: string
+ passiveMode:
+ title: Passive Mode
+ description: Specifes to use passive mode connection.
+ type: boolean
+ default: false
+ recursive:
+ title: Recursive
+ description: If a directory, look for files in all the sub-directories as well.
+ type: boolean
+ default: false
+ idempotent:
+ title: Idempotency
+ description: Skip already-processed files.
+ type: boolean
+ default: true
+ binary:
+ title: Binary
+ description: Specifies the file transfer mode, BINARY or ASCII. Default is ASCII (false).
+ type: boolean
+ default: false
+ autoCreate:
+ title: Autocreate Missing Directories
+ description: Automatically create starting directory.
+ type: boolean
+ default: true
+ delete:
+ title: Delete
+ description: If true, the file is deleted after it is processed successfully.
+ type: boolean
+ default: false
+ dependencies:
+ - "camel:ftp"
+ - "camel:core"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: "ftp:{{username}}@{{connectionHost}}:{{connectionPort}}/{{directoryName}}"
+ parameters:
+ password: "{{password}}"
+ passiveMode: "{{passiveMode}}"
+ recursive: "{{recursive}}"
+ idempotent: "{{idempotent}}"
+ binary: "{{binary}}"
+ autoCreate: "{{autoCreate}}"
+ delete: "{{delete}}"
+ steps:
+ - setHeader:
+ name: file
+ simple: "${header[CamelFileName]}"
+ - setHeader:
+ name: ce-file
+ simple: "${header[CamelFileName]}"
+ - convertBodyTo:
+ type: "java.io.InputStream"
+ - to: "kamelet:sink"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: ftps-sink
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCAyMjEuMSAzMDAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwID [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "FTP"
+ camel.apache.org/kamelet.namespace: "File"
+ labels:
+ camel.apache.org/kamelet.type: "sink"
+spec:
+ definition:
+ title: "FTPS Sink"
+ description: Send data to an FTPS server.
+ required:
+ - connectionHost
+ - connectionPort
+ - username
+ - password
+ - directoryName
+ type: object
+ properties:
+ connectionHost:
+ title: Connection Host
+ description: The hostname of the FTP server.
+ type: string
+ connectionPort:
+ title: Connection Port
+ description: The port of the FTP server.
+ type: string
+ default: 21
+ username:
+ title: Username
+ description: The username to access the FTP server.
+ type: string
+ x-descriptors:
+ - urn:camel:group:credentials
+ password:
+ title: Password
+ description: The password to access the FTP server.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ directoryName:
+ title: Directory Name
+ description: The starting directory.
+ type: string
+ passiveMode:
+ title: Passive Mode
+ description: Set the passive mode connection.
+ type: boolean
+ default: false
+ fileExist:
+ title: File Existence
+ description: "Specifies how the Kamelet behaves if the file already exists."
+ type: string
+ default: Override
+ enum: ["Override", "Append", "Fail", "Ignore"]
+ binary:
+ title: Binary
+ description: Specifies the file transfer mode, BINARY or ASCII. Default is ASCII (false).
+ type: boolean
+ default: false
+ autoCreate:
+ title: Autocreate Missing Directories
+ description: Automatically create the directory the files should be written to.
+ type: boolean
+ default: true
+ dependencies:
+ - "camel:ftp"
+ - "camel:core"
+ - "camel:kamelet"
+ template:
+ from:
+ uri: "kamelet:source"
+ steps:
+ - choice:
+ when:
+ - simple: "${header[file]}"
+ steps:
+ - setHeader:
+ name: CamelFileName
+ simple: "${header[file]}"
+ - simple: "${header[ce-file]}"
+ steps:
+ - setHeader:
+ name: CamelFileName
+ simple: "${header[ce-file]}"
+ - to:
+ uri: "ftps:{{username}}@{{connectionHost}}:{{connectionPort}}/{{directoryName}}"
+ parameters:
+ password: "{{password}}"
+ passiveMode: "{{passiveMode}}"
+ fileExist: "{{fileExist}}"
+ binary: "{{binary}}"
+ autoCreate: "{{autoCreate}}"
+---
+apiVersion: camel.apache.org/v1
+kind: Kamelet
+metadata:
+ name: ftps-source
+ annotations:
+ camel.apache.org/kamelet.support.level: "Stable"
+ camel.apache.org/catalog.version: "4.18.0"
+ camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjwhLS0gR2VuZXJhdG9yOiBBZG9iZSBJbGx1c3RyYXRvciAxOS4xLjAsIFNWRyBFeHBvcnQgUGx1Zy1JbiAuIFNWRyBWZXJzaW9uOiA2LjAwIEJ1aWxkIDApICAtLT4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iTGF5ZXJfMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiDQoJIHZpZXdCb3g9IjAgMCAyMjEuMSAzMDAiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwID [...]
+ camel.apache.org/provider: "Apache Software Foundation"
+ camel.apache.org/kamelet.group: "FTP"
+ camel.apache.org/kamelet.namespace: "File"
+ labels:
+ camel.apache.org/kamelet.type: "source"
+spec:
+ definition:
+ title: "FTPS Source"
+ description: Receive data from an FTPS server.
+ required:
+ - connectionHost
+ - connectionPort
+ - username
+ - password
+ - directoryName
+ type: object
+ properties:
+ connectionHost:
+ title: Connection Host
+ description: The hostname of the FTPS server.
+ type: string
+ connectionPort:
+ title: Connection Port
+ description: The port of the FTPS server.
+ type: string
+ default: 21
+ username:
+ title: Username
+ description: The username to access the FTPS server.
+ type: string
+ x-descriptors:
+ - urn:camel:group:credentials
+ password:
+ title: Password
+ description: The password to access the FTPS server.
+ type: string
+ format: password
+ x-descriptors:
+ - urn:camel:group:credentials
+ directoryName:
+ title: Directory Name
+ description: The starting directory.
+ type: string
+ passiveMode:
+ title: Passive Mode
+ description: Specifies to use passive mode connection.
+ type: boolean
+ default: false
+ recursive:
+ title: Recursive
+ description: If a directory, look for files in all sub-directories as well.
+ type: boolean
+ default: false
+ idempotent:
+ title: Idempotency
+ description: Skip already-processed files.
+ type: boolean
+ default: true
+ binary:
+ title: Binary
+ description: Specifies the file transfer mode, BINARY or ASCII. Default is ASCII (false).
+ type: boolean
+ default: false
+ autoCreate:
... 17637 lines suppressed ...
(camel-karavan) 01/04: vscode karavan-core for 4.18.0
Posted by ma...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
marat pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-karavan.git
commit 0dd7280c98d8e238c5a209fc68448bfac2d1280c
Author: Marat Gubaidullin <ma...@talismancloud.io>
AuthorDate: Fri Feb 27 19:23:01 2026 -0500
vscode karavan-core for 4.18.0
---
.../webview/core/api/CamelDefinitionApi.ts | 92 +++--
.../webview/core/api/CamelDefinitionApiExt.ts | 31 +-
.../webview/core/api/CamelDefinitionYaml.ts | 12 +-
.../webview/core/api/CamelDefinitionYamlStep.ts | 129 ++++---
karavan-vscode/webview/core/api/CamelUtil.ts | 43 ++-
karavan-vscode/webview/core/api/ComponentApi.ts | 2 +
.../webview/core/api/MainConfigurationApi.ts | 6 +-
karavan-vscode/webview/core/api/TopologyUtils.ts | 99 ++++--
.../webview/core/model/CamelDefinition.ts | 220 +++++++++---
karavan-vscode/webview/core/model/CamelMetadata.ts | 387 +++++++++++++--------
.../webview/core/model/TopologyDefinition.ts | 4 +-
11 files changed, 715 insertions(+), 310 deletions(-)
diff --git a/karavan-vscode/webview/core/api/CamelDefinitionApi.ts b/karavan-vscode/webview/core/api/CamelDefinitionApi.ts
index db35234f..920fffe8 100644
--- a/karavan-vscode/webview/core/api/CamelDefinitionApi.ts
+++ b/karavan-vscode/webview/core/api/CamelDefinitionApi.ts
@@ -122,6 +122,7 @@ import {
TokenizerDefinition,
TokenizerImplementationDefinition,
TransactedDefinition,
+ TransformDataTypeDefinition,
TransformDefinition,
TryDefinition,
UnmarshalDefinition,
@@ -153,6 +154,7 @@ import {
FlatpackDataFormat,
ForyDataFormat,
GrokDataFormat,
+ GroovyXmlDataFormat,
GzipDeflaterDataFormat,
HL7DataFormat,
IcalDataFormat,
@@ -163,7 +165,9 @@ import {
JsonDataFormat,
LZFDataFormat,
MimeMultipartDataFormat,
+ OcsfDataFormat,
PGPDataFormat,
+ PQCDataFormat,
ParquetAvroDataFormat,
ProtobufDataFormat,
RssDataFormat,
@@ -174,14 +178,12 @@ import {
SyslogDataFormat,
TarFileDataFormat,
ThriftDataFormat,
- TidyMarkupDataFormat,
UniVocityCsvDataFormat,
UniVocityFixedDataFormat,
UniVocityHeader,
UniVocityTsvDataFormat,
XMLSecurityDataFormat,
YAMLDataFormat,
- YAMLTypeFilterDefinition,
ZipDeflaterDataFormat,
ZipFileDataFormat,
DeadLetterChannelDefinition,
@@ -436,6 +438,9 @@ export class CamelDefinitionApi {
if (element?.transacted !== undefined) {
def.transacted = CamelDefinitionApi.createTransactedDefinition(element.transacted);
}
+ if (element?.transformDataType !== undefined) {
+ def.transformDataType = CamelDefinitionApi.createTransformDataTypeDefinition(element.transformDataType);
+ }
if (element?.transform !== undefined) {
def.transform = CamelDefinitionApi.createTransformDefinition(element.transform);
}
@@ -931,6 +936,9 @@ export class CamelDefinitionApi {
if (element?.grok !== undefined) {
def.grok = CamelDefinitionApi.createGrokDataFormat(element.grok);
}
+ if (element?.groovyXml !== undefined) {
+ def.groovyXml = CamelDefinitionApi.createGroovyXmlDataFormat(element.groovyXml);
+ }
if (element?.gzipDeflater !== undefined) {
def.gzipDeflater = CamelDefinitionApi.createGzipDeflaterDataFormat(element.gzipDeflater);
}
@@ -961,12 +969,18 @@ export class CamelDefinitionApi {
if (element?.mimeMultipart !== undefined) {
def.mimeMultipart = CamelDefinitionApi.createMimeMultipartDataFormat(element.mimeMultipart);
}
+ if (element?.ocsf !== undefined) {
+ def.ocsf = CamelDefinitionApi.createOcsfDataFormat(element.ocsf);
+ }
if (element?.parquetAvro !== undefined) {
def.parquetAvro = CamelDefinitionApi.createParquetAvroDataFormat(element.parquetAvro);
}
if (element?.pgp !== undefined) {
def.pgp = CamelDefinitionApi.createPGPDataFormat(element.pgp);
}
+ if (element?.pqc !== undefined) {
+ def.pqc = CamelDefinitionApi.createPQCDataFormat(element.pqc);
+ }
if (element?.protobuf !== undefined) {
def.protobuf = CamelDefinitionApi.createProtobufDataFormat(element.protobuf);
}
@@ -994,9 +1008,6 @@ export class CamelDefinitionApi {
if (element?.thrift !== undefined) {
def.thrift = CamelDefinitionApi.createThriftDataFormat(element.thrift);
}
- if (element?.tidyMarkup !== undefined) {
- def.tidyMarkup = CamelDefinitionApi.createTidyMarkupDataFormat(element.tidyMarkup);
- }
if (element?.univocityCsv !== undefined) {
def.univocityCsv = CamelDefinitionApi.createUniVocityCsvDataFormat(element.univocityCsv);
}
@@ -1560,6 +1571,12 @@ export class CamelDefinitionApi {
return def;
}
+ static createTransformDataTypeDefinition = (element: any): TransformDataTypeDefinition => {
+ const def = element ? new TransformDataTypeDefinition({...element}) : new TransformDataTypeDefinition();
+ def.uuid = element?.uuid ? element.uuid : def.uuid;
+ return def;
+ }
+
static createTransformDefinition = (element: any): TransformDefinition => {
const def = element ? new TransformDefinition({...element}) : new TransformDefinition();
def.uuid = element?.uuid ? element.uuid : def.uuid;
@@ -1630,6 +1647,9 @@ export class CamelDefinitionApi {
if (element?.grok !== undefined) {
def.grok = CamelDefinitionApi.createGrokDataFormat(element.grok);
}
+ if (element?.groovyXml !== undefined) {
+ def.groovyXml = CamelDefinitionApi.createGroovyXmlDataFormat(element.groovyXml);
+ }
if (element?.gzipDeflater !== undefined) {
def.gzipDeflater = CamelDefinitionApi.createGzipDeflaterDataFormat(element.gzipDeflater);
}
@@ -1660,12 +1680,18 @@ export class CamelDefinitionApi {
if (element?.mimeMultipart !== undefined) {
def.mimeMultipart = CamelDefinitionApi.createMimeMultipartDataFormat(element.mimeMultipart);
}
+ if (element?.ocsf !== undefined) {
+ def.ocsf = CamelDefinitionApi.createOcsfDataFormat(element.ocsf);
+ }
if (element?.parquetAvro !== undefined) {
def.parquetAvro = CamelDefinitionApi.createParquetAvroDataFormat(element.parquetAvro);
}
if (element?.pgp !== undefined) {
def.pgp = CamelDefinitionApi.createPGPDataFormat(element.pgp);
}
+ if (element?.pqc !== undefined) {
+ def.pqc = CamelDefinitionApi.createPQCDataFormat(element.pqc);
+ }
if (element?.protobuf !== undefined) {
def.protobuf = CamelDefinitionApi.createProtobufDataFormat(element.protobuf);
}
@@ -1693,9 +1719,6 @@ export class CamelDefinitionApi {
if (element?.thrift !== undefined) {
def.thrift = CamelDefinitionApi.createThriftDataFormat(element.thrift);
}
- if (element?.tidyMarkup !== undefined) {
- def.tidyMarkup = CamelDefinitionApi.createTidyMarkupDataFormat(element.tidyMarkup);
- }
if (element?.univocityCsv !== undefined) {
def.univocityCsv = CamelDefinitionApi.createUniVocityCsvDataFormat(element.univocityCsv);
}
@@ -1910,6 +1933,9 @@ export class CamelDefinitionApi {
if (element?.grok !== undefined) {
def.grok = CamelDefinitionApi.createGrokDataFormat(element.grok);
}
+ if (element?.groovyXml !== undefined) {
+ def.groovyXml = CamelDefinitionApi.createGroovyXmlDataFormat(element.groovyXml);
+ }
if (element?.gzipDeflater !== undefined) {
def.gzipDeflater = CamelDefinitionApi.createGzipDeflaterDataFormat(element.gzipDeflater);
}
@@ -1973,9 +1999,6 @@ export class CamelDefinitionApi {
if (element?.thrift !== undefined) {
def.thrift = CamelDefinitionApi.createThriftDataFormat(element.thrift);
}
- if (element?.tidyMarkup !== undefined) {
- def.tidyMarkup = CamelDefinitionApi.createTidyMarkupDataFormat(element.tidyMarkup);
- }
if (element?.univocityCsv !== undefined) {
def.univocityCsv = CamelDefinitionApi.createUniVocityCsvDataFormat(element.univocityCsv);
}
@@ -2039,6 +2062,12 @@ export class CamelDefinitionApi {
return def;
}
+ static createGroovyXmlDataFormat = (element: any): GroovyXmlDataFormat => {
+ const def = element ? new GroovyXmlDataFormat({...element}) : new GroovyXmlDataFormat();
+ def.uuid = element?.uuid ? element.uuid : def.uuid;
+ return def;
+ }
+
static createGzipDeflaterDataFormat = (element: any): GzipDeflaterDataFormat => {
const def = element ? new GzipDeflaterDataFormat({...element}) : new GzipDeflaterDataFormat();
def.uuid = element?.uuid ? element.uuid : def.uuid;
@@ -2099,12 +2128,24 @@ export class CamelDefinitionApi {
return def;
}
+ static createOcsfDataFormat = (element: any): OcsfDataFormat => {
+ const def = element ? new OcsfDataFormat({...element}) : new OcsfDataFormat();
+ def.uuid = element?.uuid ? element.uuid : def.uuid;
+ return def;
+ }
+
static createPGPDataFormat = (element: any): PGPDataFormat => {
const def = element ? new PGPDataFormat({...element}) : new PGPDataFormat();
def.uuid = element?.uuid ? element.uuid : def.uuid;
return def;
}
+ static createPQCDataFormat = (element: any): PQCDataFormat => {
+ const def = element ? new PQCDataFormat({...element}) : new PQCDataFormat();
+ def.uuid = element?.uuid ? element.uuid : def.uuid;
+ return def;
+ }
+
static createParquetAvroDataFormat = (element: any): ParquetAvroDataFormat => {
const def = element ? new ParquetAvroDataFormat({...element}) : new ParquetAvroDataFormat();
def.uuid = element?.uuid ? element.uuid : def.uuid;
@@ -2168,12 +2209,6 @@ export class CamelDefinitionApi {
return def;
}
- static createTidyMarkupDataFormat = (element: any): TidyMarkupDataFormat => {
- const def = element ? new TidyMarkupDataFormat({...element}) : new TidyMarkupDataFormat();
- def.uuid = element?.uuid ? element.uuid : def.uuid;
- return def;
- }
-
static createUniVocityCsvDataFormat = (element: any): UniVocityCsvDataFormat => {
const def = element ? new UniVocityCsvDataFormat({...element}) : new UniVocityCsvDataFormat();
def.uuid = element?.uuid ? element.uuid : def.uuid;
@@ -2210,13 +2245,6 @@ export class CamelDefinitionApi {
static createYAMLDataFormat = (element: any): YAMLDataFormat => {
const def = element ? new YAMLDataFormat({...element}) : new YAMLDataFormat();
def.uuid = element?.uuid ? element.uuid : def.uuid;
- def.typeFilter = element && element?.typeFilter ? element?.typeFilter.map((x:any) => CamelDefinitionApi.createYAMLTypeFilterDefinition(x)) :[];
- return def;
- }
-
- static createYAMLTypeFilterDefinition = (element: any): YAMLTypeFilterDefinition => {
- const def = element ? new YAMLTypeFilterDefinition({...element}) : new YAMLTypeFilterDefinition();
- def.uuid = element?.uuid ? element.uuid : def.uuid;
return def;
}
@@ -2915,6 +2943,9 @@ export class CamelDefinitionApi {
if (element?.grok !== undefined) {
def.grok = CamelDefinitionApi.createGrokDataFormat(element.grok);
}
+ if (element?.groovyXml !== undefined) {
+ def.groovyXml = CamelDefinitionApi.createGroovyXmlDataFormat(element.groovyXml);
+ }
if (element?.gzipDeflater !== undefined) {
def.gzipDeflater = CamelDefinitionApi.createGzipDeflaterDataFormat(element.gzipDeflater);
}
@@ -2978,9 +3009,6 @@ export class CamelDefinitionApi {
if (element?.thrift !== undefined) {
def.thrift = CamelDefinitionApi.createThriftDataFormat(element.thrift);
}
- if (element?.tidyMarkup !== undefined) {
- def.tidyMarkup = CamelDefinitionApi.createTidyMarkupDataFormat(element.tidyMarkup);
- }
if (element?.univocityCsv !== undefined) {
def.univocityCsv = CamelDefinitionApi.createUniVocityCsvDataFormat(element.univocityCsv);
}
@@ -3175,6 +3203,7 @@ export class CamelDefinitionApi {
case 'TokenizerDefinition': return CamelDefinitionApi.createTokenizerDefinition(newBody);
case 'TokenizerImplementationDefinition': return CamelDefinitionApi.createTokenizerImplementationDefinition(newBody);
case 'TransactedDefinition': return CamelDefinitionApi.createTransactedDefinition(newBody);
+ case 'TransformDataTypeDefinition': return CamelDefinitionApi.createTransformDataTypeDefinition(newBody);
case 'TransformDefinition': return CamelDefinitionApi.createTransformDefinition(newBody);
case 'TryDefinition': return CamelDefinitionApi.createTryDefinition(newBody);
case 'UnmarshalDefinition': return CamelDefinitionApi.createUnmarshalDefinition(newBody);
@@ -3206,6 +3235,7 @@ export class CamelDefinitionApi {
case 'FlatpackDataFormat': return CamelDefinitionApi.createFlatpackDataFormat(newBody);
case 'ForyDataFormat': return CamelDefinitionApi.createForyDataFormat(newBody);
case 'GrokDataFormat': return CamelDefinitionApi.createGrokDataFormat(newBody);
+ case 'GroovyXmlDataFormat': return CamelDefinitionApi.createGroovyXmlDataFormat(newBody);
case 'GzipDeflaterDataFormat': return CamelDefinitionApi.createGzipDeflaterDataFormat(newBody);
case 'HL7DataFormat': return CamelDefinitionApi.createHL7DataFormat(newBody);
case 'IcalDataFormat': return CamelDefinitionApi.createIcalDataFormat(newBody);
@@ -3216,7 +3246,9 @@ export class CamelDefinitionApi {
case 'JsonDataFormat': return CamelDefinitionApi.createJsonDataFormat(newBody);
case 'LZFDataFormat': return CamelDefinitionApi.createLZFDataFormat(newBody);
case 'MimeMultipartDataFormat': return CamelDefinitionApi.createMimeMultipartDataFormat(newBody);
+ case 'OcsfDataFormat': return CamelDefinitionApi.createOcsfDataFormat(newBody);
case 'PGPDataFormat': return CamelDefinitionApi.createPGPDataFormat(newBody);
+ case 'PQCDataFormat': return CamelDefinitionApi.createPQCDataFormat(newBody);
case 'ParquetAvroDataFormat': return CamelDefinitionApi.createParquetAvroDataFormat(newBody);
case 'ProtobufDataFormat': return CamelDefinitionApi.createProtobufDataFormat(newBody);
case 'RssDataFormat': return CamelDefinitionApi.createRssDataFormat(newBody);
@@ -3227,14 +3259,12 @@ export class CamelDefinitionApi {
case 'SyslogDataFormat': return CamelDefinitionApi.createSyslogDataFormat(newBody);
case 'TarFileDataFormat': return CamelDefinitionApi.createTarFileDataFormat(newBody);
case 'ThriftDataFormat': return CamelDefinitionApi.createThriftDataFormat(newBody);
- case 'TidyMarkupDataFormat': return CamelDefinitionApi.createTidyMarkupDataFormat(newBody);
case 'UniVocityCsvDataFormat': return CamelDefinitionApi.createUniVocityCsvDataFormat(newBody);
case 'UniVocityFixedDataFormat': return CamelDefinitionApi.createUniVocityFixedDataFormat(newBody);
case 'UniVocityHeader': return CamelDefinitionApi.createUniVocityHeader(newBody);
case 'UniVocityTsvDataFormat': return CamelDefinitionApi.createUniVocityTsvDataFormat(newBody);
case 'XMLSecurityDataFormat': return CamelDefinitionApi.createXMLSecurityDataFormat(newBody);
case 'YAMLDataFormat': return CamelDefinitionApi.createYAMLDataFormat(newBody);
- case 'YAMLTypeFilterDefinition': return CamelDefinitionApi.createYAMLTypeFilterDefinition(newBody);
case 'ZipDeflaterDataFormat': return CamelDefinitionApi.createZipDeflaterDataFormat(newBody);
case 'ZipFileDataFormat': return CamelDefinitionApi.createZipFileDataFormat(newBody);
case 'DeadLetterChannelDefinition': return CamelDefinitionApi.createDeadLetterChannelDefinition(newBody);
@@ -3371,6 +3401,7 @@ export class CamelDefinitionApi {
case 'FlatpackDataFormat': return CamelDefinitionApi.createFlatpackDataFormat(newBody);
case 'ForyDataFormat': return CamelDefinitionApi.createForyDataFormat(newBody);
case 'GrokDataFormat': return CamelDefinitionApi.createGrokDataFormat(newBody);
+ case 'GroovyXmlDataFormat': return CamelDefinitionApi.createGroovyXmlDataFormat(newBody);
case 'GzipDeflaterDataFormat': return CamelDefinitionApi.createGzipDeflaterDataFormat(newBody);
case 'HL7DataFormat': return CamelDefinitionApi.createHL7DataFormat(newBody);
case 'IcalDataFormat': return CamelDefinitionApi.createIcalDataFormat(newBody);
@@ -3381,8 +3412,10 @@ export class CamelDefinitionApi {
case 'JsonApiDataFormat': return CamelDefinitionApi.createJsonApiDataFormat(newBody);
case 'LZFDataFormat': return CamelDefinitionApi.createLZFDataFormat(newBody);
case 'MimeMultipartDataFormat': return CamelDefinitionApi.createMimeMultipartDataFormat(newBody);
+ case 'OcsfDataFormat': return CamelDefinitionApi.createOcsfDataFormat(newBody);
case 'ParquetAvroDataFormat': return CamelDefinitionApi.createParquetAvroDataFormat(newBody);
case 'PGPDataFormat': return CamelDefinitionApi.createPGPDataFormat(newBody);
+ case 'PQCDataFormat': return CamelDefinitionApi.createPQCDataFormat(newBody);
case 'ProtobufDataFormat': return CamelDefinitionApi.createProtobufDataFormat(newBody);
case 'RssDataFormat': return CamelDefinitionApi.createRssDataFormat(newBody);
case 'SmooksDataFormat': return CamelDefinitionApi.createSmooksDataFormat(newBody);
@@ -3392,7 +3425,6 @@ export class CamelDefinitionApi {
case 'SyslogDataFormat': return CamelDefinitionApi.createSyslogDataFormat(newBody);
case 'TarFileDataFormat': return CamelDefinitionApi.createTarFileDataFormat(newBody);
case 'ThriftDataFormat': return CamelDefinitionApi.createThriftDataFormat(newBody);
- case 'TidyMarkupDataFormat': return CamelDefinitionApi.createTidyMarkupDataFormat(newBody);
case 'UniVocityCsvDataFormat': return CamelDefinitionApi.createUniVocityCsvDataFormat(newBody);
case 'UniVocityFixedDataFormat': return CamelDefinitionApi.createUniVocityFixedDataFormat(newBody);
case 'UniVocityTsvDataFormat': return CamelDefinitionApi.createUniVocityTsvDataFormat(newBody);
diff --git a/karavan-vscode/webview/core/api/CamelDefinitionApiExt.ts b/karavan-vscode/webview/core/api/CamelDefinitionApiExt.ts
index f8dbfa27..96fd385e 100644
--- a/karavan-vscode/webview/core/api/CamelDefinitionApiExt.ts
+++ b/karavan-vscode/webview/core/api/CamelDefinitionApiExt.ts
@@ -14,17 +14,20 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-import { CamelMetadataApi, ElementMeta, Languages, PropertyMeta } from '../model/CamelMetadata';
-import { CamelUtil } from './CamelUtil';
+import {CamelMetadataApi, ElementMeta, Languages, PropertyMeta} from '../model/CamelMetadata';
+import {CamelUtil} from './CamelUtil';
import {
BeanFactoryDefinition,
ExpressionDefinition,
- RouteDefinition,
+ FromDefinition,
RestDefinition,
- RouteConfigurationDefinition, FromDefinition, RouteTemplateDefinition,
+ RouteConfigurationDefinition,
+ RouteDefinition,
+ RouteTemplateDefinition,
+ TemplatedRouteDefinition,
} from '../model/CamelDefinition';
-import { Beans, CamelElement, CamelElementMeta, Integration } from '../model/IntegrationDefinition';
-import { CamelDefinitionApi } from './CamelDefinitionApi';
+import {Beans, CamelElement, CamelElementMeta, Integration} from '../model/IntegrationDefinition';
+import {CamelDefinitionApi} from './CamelDefinitionApi';
const coreRoutishElements = ['RouteConfigurationDefinition', 'RouteTemplateDefinition', 'RouteDefinition']
@@ -430,6 +433,22 @@ export class CamelDefinitionApiExt {
return integration;
};
+ static addTemplatedRouteToIntegration = (
+ integration: Integration,
+ templatedRoute: TemplatedRouteDefinition,
+ ): Integration => {
+ integration.spec.flows?.push(templatedRoute);
+ return integration;
+ };
+
+ static addTemplatedRoutesToIntegration = (
+ integration: Integration,
+ templatedRoutes: TemplatedRouteDefinition[],
+ ): Integration => {
+ integration.spec.flows?.push(...templatedRoutes);
+ return integration;
+ };
+
static deleteRouteTemplateFromIntegration = (
integration: Integration,
routeTemplate: RouteTemplateDefinition,
diff --git a/karavan-vscode/webview/core/api/CamelDefinitionYaml.ts b/karavan-vscode/webview/core/api/CamelDefinitionYaml.ts
index 8239d2f9..5f3ac44d 100644
--- a/karavan-vscode/webview/core/api/CamelDefinitionYaml.ts
+++ b/karavan-vscode/webview/core/api/CamelDefinitionYaml.ts
@@ -15,14 +15,10 @@
* limitations under the License.
*/
import * as yaml from 'js-yaml';
-import { Beans, CamelElement, Integration } from '../model/IntegrationDefinition';
-import {
- BeanFactoryDefinition,
- RouteConfigurationDefinition,
- RouteDefinition,
-} from '../model/CamelDefinition';
-import { CamelUtil } from './CamelUtil';
-import { CamelDefinitionYamlStep } from './CamelDefinitionYamlStep';
+import {Beans, CamelElement, Integration} from '../model/IntegrationDefinition';
+import {BeanFactoryDefinition, RouteConfigurationDefinition, RouteDefinition,} from '../model/CamelDefinition';
+import {CamelUtil} from './CamelUtil';
+import {CamelDefinitionYamlStep} from './CamelDefinitionYamlStep';
export class CamelDefinitionYaml {
private constructor() {
diff --git a/karavan-vscode/webview/core/api/CamelDefinitionYamlStep.ts b/karavan-vscode/webview/core/api/CamelDefinitionYamlStep.ts
index bbc3bf6d..cd52cd75 100644
--- a/karavan-vscode/webview/core/api/CamelDefinitionYamlStep.ts
+++ b/karavan-vscode/webview/core/api/CamelDefinitionYamlStep.ts
@@ -123,6 +123,7 @@ import {
TokenizerDefinition,
TokenizerImplementationDefinition,
TransactedDefinition,
+ TransformDataTypeDefinition,
TransformDefinition,
TryDefinition,
UnmarshalDefinition,
@@ -154,6 +155,7 @@ import {
FlatpackDataFormat,
ForyDataFormat,
GrokDataFormat,
+ GroovyXmlDataFormat,
GzipDeflaterDataFormat,
HL7DataFormat,
IcalDataFormat,
@@ -164,7 +166,9 @@ import {
JsonDataFormat,
LZFDataFormat,
MimeMultipartDataFormat,
+ OcsfDataFormat,
PGPDataFormat,
+ PQCDataFormat,
ParquetAvroDataFormat,
ProtobufDataFormat,
RssDataFormat,
@@ -175,14 +179,12 @@ import {
SyslogDataFormat,
TarFileDataFormat,
ThriftDataFormat,
- TidyMarkupDataFormat,
UniVocityCsvDataFormat,
UniVocityFixedDataFormat,
UniVocityHeader,
UniVocityTsvDataFormat,
XMLSecurityDataFormat,
YAMLDataFormat,
- YAMLTypeFilterDefinition,
ZipDeflaterDataFormat,
ZipFileDataFormat,
DeadLetterChannelDefinition,
@@ -656,6 +658,13 @@ export class CamelDefinitionYamlStep {
def.tokenizer = CamelDefinitionYamlStep.readTokenizerDefinition(element.tokenizer);
}
}
+ if (element?.transformDataType !== undefined) {
+ if (Array.isArray(element.transformDataType)) {
+ def.transformDataType = CamelDefinitionYamlStep.readTransformDataTypeDefinition(element.transformDataType[0]);
+ } else {
+ def.transformDataType = CamelDefinitionYamlStep.readTransformDataTypeDefinition(element.transformDataType);
+ }
+ }
if (element?.filter !== undefined) {
if (Array.isArray(element.filter)) {
def.filter = CamelDefinitionYamlStep.readFilterDefinition(element.filter[0]);
@@ -1455,11 +1464,11 @@ export class CamelDefinitionYamlStep {
def.tarFile = CamelDefinitionYamlStep.readTarFileDataFormat(element.tarFile);
}
}
- if (element?.tidyMarkup !== undefined) {
- if (Array.isArray(element.tidyMarkup)) {
- def.tidyMarkup = CamelDefinitionYamlStep.readTidyMarkupDataFormat(element.tidyMarkup[0]);
+ if (element?.pqc !== undefined) {
+ if (Array.isArray(element.pqc)) {
+ def.pqc = CamelDefinitionYamlStep.readPQCDataFormat(element.pqc[0]);
} else {
- def.tidyMarkup = CamelDefinitionYamlStep.readTidyMarkupDataFormat(element.tidyMarkup);
+ def.pqc = CamelDefinitionYamlStep.readPQCDataFormat(element.pqc);
}
}
if (element?.csv !== undefined) {
@@ -1532,6 +1541,13 @@ export class CamelDefinitionYamlStep {
def.smooks = CamelDefinitionYamlStep.readSmooksDataFormat(element.smooks);
}
}
+ if (element?.ocsf !== undefined) {
+ if (Array.isArray(element.ocsf)) {
+ def.ocsf = CamelDefinitionYamlStep.readOcsfDataFormat(element.ocsf[0]);
+ } else {
+ def.ocsf = CamelDefinitionYamlStep.readOcsfDataFormat(element.ocsf);
+ }
+ }
if (element?.mimeMultipart !== undefined) {
if (Array.isArray(element.mimeMultipart)) {
def.mimeMultipart = CamelDefinitionYamlStep.readMimeMultipartDataFormat(element.mimeMultipart[0]);
@@ -1651,6 +1667,13 @@ export class CamelDefinitionYamlStep {
def.flatpack = CamelDefinitionYamlStep.readFlatpackDataFormat(element.flatpack);
}
}
+ if (element?.groovyXml !== undefined) {
+ if (Array.isArray(element.groovyXml)) {
+ def.groovyXml = CamelDefinitionYamlStep.readGroovyXmlDataFormat(element.groovyXml[0]);
+ } else {
+ def.groovyXml = CamelDefinitionYamlStep.readGroovyXmlDataFormat(element.groovyXml);
+ }
+ }
if (element?.swiftMx !== undefined) {
if (Array.isArray(element.swiftMx)) {
def.swiftMx = CamelDefinitionYamlStep.readSwiftMxDataFormat(element.swiftMx[0]);
@@ -2531,6 +2554,13 @@ export class CamelDefinitionYamlStep {
return def;
}
+ static readTransformDataTypeDefinition = (element: any): TransformDataTypeDefinition => {
+
+ let def = element ? new TransformDataTypeDefinition({...element}) : new TransformDataTypeDefinition();
+
+ return def;
+ }
+
static readTransformDefinition = (element: any): TransformDefinition => {
let def = element ? new TransformDefinition({...element}) : new TransformDefinition();
@@ -2589,11 +2619,11 @@ export class CamelDefinitionYamlStep {
def.tarFile = CamelDefinitionYamlStep.readTarFileDataFormat(element.tarFile);
}
}
- if (element?.tidyMarkup !== undefined) {
- if (Array.isArray(element.tidyMarkup)) {
- def.tidyMarkup = CamelDefinitionYamlStep.readTidyMarkupDataFormat(element.tidyMarkup[0]);
+ if (element?.pqc !== undefined) {
+ if (Array.isArray(element.pqc)) {
+ def.pqc = CamelDefinitionYamlStep.readPQCDataFormat(element.pqc[0]);
} else {
- def.tidyMarkup = CamelDefinitionYamlStep.readTidyMarkupDataFormat(element.tidyMarkup);
+ def.pqc = CamelDefinitionYamlStep.readPQCDataFormat(element.pqc);
}
}
if (element?.csv !== undefined) {
@@ -2666,6 +2696,13 @@ export class CamelDefinitionYamlStep {
def.smooks = CamelDefinitionYamlStep.readSmooksDataFormat(element.smooks);
}
}
+ if (element?.ocsf !== undefined) {
+ if (Array.isArray(element.ocsf)) {
+ def.ocsf = CamelDefinitionYamlStep.readOcsfDataFormat(element.ocsf[0]);
+ } else {
+ def.ocsf = CamelDefinitionYamlStep.readOcsfDataFormat(element.ocsf);
+ }
+ }
if (element?.mimeMultipart !== undefined) {
if (Array.isArray(element.mimeMultipart)) {
def.mimeMultipart = CamelDefinitionYamlStep.readMimeMultipartDataFormat(element.mimeMultipart[0]);
@@ -2785,6 +2822,13 @@ export class CamelDefinitionYamlStep {
def.flatpack = CamelDefinitionYamlStep.readFlatpackDataFormat(element.flatpack);
}
}
+ if (element?.groovyXml !== undefined) {
+ if (Array.isArray(element.groovyXml)) {
+ def.groovyXml = CamelDefinitionYamlStep.readGroovyXmlDataFormat(element.groovyXml[0]);
+ } else {
+ def.groovyXml = CamelDefinitionYamlStep.readGroovyXmlDataFormat(element.groovyXml);
+ }
+ }
if (element?.swiftMx !== undefined) {
if (Array.isArray(element.swiftMx)) {
def.swiftMx = CamelDefinitionYamlStep.readSwiftMxDataFormat(element.swiftMx[0]);
@@ -3091,13 +3135,6 @@ export class CamelDefinitionYamlStep {
def.tarFile = CamelDefinitionYamlStep.readTarFileDataFormat(element.tarFile);
}
}
- if (element?.tidyMarkup !== undefined) {
- if (Array.isArray(element.tidyMarkup)) {
- def.tidyMarkup = CamelDefinitionYamlStep.readTidyMarkupDataFormat(element.tidyMarkup[0]);
- } else {
- def.tidyMarkup = CamelDefinitionYamlStep.readTidyMarkupDataFormat(element.tidyMarkup);
- }
- }
if (element?.csv !== undefined) {
if (Array.isArray(element.csv)) {
def.csv = CamelDefinitionYamlStep.readCsvDataFormat(element.csv[0]);
@@ -3287,6 +3324,13 @@ export class CamelDefinitionYamlStep {
def.flatpack = CamelDefinitionYamlStep.readFlatpackDataFormat(element.flatpack);
}
}
+ if (element?.groovyXml !== undefined) {
+ if (Array.isArray(element.groovyXml)) {
+ def.groovyXml = CamelDefinitionYamlStep.readGroovyXmlDataFormat(element.groovyXml[0]);
+ } else {
+ def.groovyXml = CamelDefinitionYamlStep.readGroovyXmlDataFormat(element.groovyXml);
+ }
+ }
if (element?.swiftMx !== undefined) {
if (Array.isArray(element.swiftMx)) {
def.swiftMx = CamelDefinitionYamlStep.readSwiftMxDataFormat(element.swiftMx[0]);
@@ -3431,6 +3475,13 @@ export class CamelDefinitionYamlStep {
return def;
}
+ static readGroovyXmlDataFormat = (element: any): GroovyXmlDataFormat => {
+
+ let def = element ? new GroovyXmlDataFormat({...element}) : new GroovyXmlDataFormat();
+
+ return def;
+ }
+
static readGzipDeflaterDataFormat = (element: any): GzipDeflaterDataFormat => {
let def = element ? new GzipDeflaterDataFormat({...element}) : new GzipDeflaterDataFormat();
@@ -3501,6 +3552,13 @@ export class CamelDefinitionYamlStep {
return def;
}
+ static readOcsfDataFormat = (element: any): OcsfDataFormat => {
+
+ let def = element ? new OcsfDataFormat({...element}) : new OcsfDataFormat();
+
+ return def;
+ }
+
static readPGPDataFormat = (element: any): PGPDataFormat => {
let def = element ? new PGPDataFormat({...element}) : new PGPDataFormat();
@@ -3508,6 +3566,13 @@ export class CamelDefinitionYamlStep {
return def;
}
+ static readPQCDataFormat = (element: any): PQCDataFormat => {
+
+ let def = element ? new PQCDataFormat({...element}) : new PQCDataFormat();
+
+ return def;
+ }
+
static readParquetAvroDataFormat = (element: any): ParquetAvroDataFormat => {
let def = element ? new ParquetAvroDataFormat({...element}) : new ParquetAvroDataFormat();
@@ -3578,13 +3643,6 @@ export class CamelDefinitionYamlStep {
return def;
}
- static readTidyMarkupDataFormat = (element: any): TidyMarkupDataFormat => {
-
- let def = element ? new TidyMarkupDataFormat({...element}) : new TidyMarkupDataFormat();
-
- return def;
- }
-
static readUniVocityCsvDataFormat = (element: any): UniVocityCsvDataFormat => {
let def = element ? new UniVocityCsvDataFormat({...element}) : new UniVocityCsvDataFormat();
@@ -3626,7 +3684,6 @@ export class CamelDefinitionYamlStep {
static readYAMLDataFormat = (element: any): YAMLDataFormat => {
let def = element ? new YAMLDataFormat({...element}) : new YAMLDataFormat();
- def.typeFilter = element && element?.typeFilter ? element?.typeFilter.map((x:any) => CamelDefinitionYamlStep.readYAMLTypeFilterDefinition(x)) :[];
if (element.constructor !== undefined) {
def._constructor = element.constructor;
delete (def as any).constructor;
@@ -3634,13 +3691,6 @@ export class CamelDefinitionYamlStep {
return def;
}
- static readYAMLTypeFilterDefinition = (element: any): YAMLTypeFilterDefinition => {
-
- let def = element ? new YAMLTypeFilterDefinition({...element}) : new YAMLTypeFilterDefinition();
-
- return def;
- }
-
static readZipDeflaterDataFormat = (element: any): ZipDeflaterDataFormat => {
let def = element ? new ZipDeflaterDataFormat({...element}) : new ZipDeflaterDataFormat();
@@ -4454,13 +4504,6 @@ export class CamelDefinitionYamlStep {
def.tarFile = CamelDefinitionYamlStep.readTarFileDataFormat(element.tarFile);
}
}
- if (element?.tidyMarkup !== undefined) {
- if (Array.isArray(element.tidyMarkup)) {
- def.tidyMarkup = CamelDefinitionYamlStep.readTidyMarkupDataFormat(element.tidyMarkup[0]);
- } else {
- def.tidyMarkup = CamelDefinitionYamlStep.readTidyMarkupDataFormat(element.tidyMarkup);
- }
- }
if (element?.csv !== undefined) {
if (Array.isArray(element.csv)) {
def.csv = CamelDefinitionYamlStep.readCsvDataFormat(element.csv[0]);
@@ -4650,6 +4693,13 @@ export class CamelDefinitionYamlStep {
def.flatpack = CamelDefinitionYamlStep.readFlatpackDataFormat(element.flatpack);
}
}
+ if (element?.groovyXml !== undefined) {
+ if (Array.isArray(element.groovyXml)) {
+ def.groovyXml = CamelDefinitionYamlStep.readGroovyXmlDataFormat(element.groovyXml[0]);
+ } else {
+ def.groovyXml = CamelDefinitionYamlStep.readGroovyXmlDataFormat(element.groovyXml);
+ }
+ }
if (element?.swiftMx !== undefined) {
if (Array.isArray(element.swiftMx)) {
def.swiftMx = CamelDefinitionYamlStep.readSwiftMxDataFormat(element.swiftMx[0]);
@@ -4925,6 +4975,7 @@ export class CamelDefinitionYamlStep {
case 'toD': return CamelDefinitionYamlStep.readToDynamicDefinition(newBody);
case 'tokenizer': return CamelDefinitionYamlStep.readTokenizerDefinition(newBody);
case 'transacted': return CamelDefinitionYamlStep.readTransactedDefinition(newBody);
+ case 'transformDataType': return CamelDefinitionYamlStep.readTransformDataTypeDefinition(newBody);
case 'transform': return CamelDefinitionYamlStep.readTransformDefinition(newBody);
case 'doTry': return CamelDefinitionYamlStep.readTryDefinition(newBody);
case 'unmarshal': return CamelDefinitionYamlStep.readUnmarshalDefinition(newBody);
diff --git a/karavan-vscode/webview/core/api/CamelUtil.ts b/karavan-vscode/webview/core/api/CamelUtil.ts
index c05c20a8..b87af3b2 100644
--- a/karavan-vscode/webview/core/api/CamelUtil.ts
+++ b/karavan-vscode/webview/core/api/CamelUtil.ts
@@ -14,22 +14,27 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-import { Integration, CamelElement, Beans, MetadataLabels, KameletTypes } from '../model/IntegrationDefinition';
-import { CamelDefinitionApi } from './CamelDefinitionApi';
+import {Beans, CamelElement, Integration, KameletTypes, MetadataLabels} from '../model/IntegrationDefinition';
+import {CamelDefinitionApi} from './CamelDefinitionApi';
import {
- KameletDefinition,
BeanFactoryDefinition,
+ KameletDefinition,
RouteConfigurationDefinition,
- ToDefinition, RouteTemplateDefinition, SetVariableDefinition, SetHeaderDefinition,
+ RouteTemplateDefinition,
+ SetHeaderDefinition,
+ SetVariableDefinition,
+ ToDefinition,
} from '../model/CamelDefinition';
-import { KameletApi } from './KameletApi';
-import { KameletModel, Property } from '../model/KameletModels';
-import { ComponentProperty } from '../model/ComponentModels';
-import { ComponentApi } from './ComponentApi';
-import { CamelMetadataApi, SensitiveKeys } from '../model/CamelMetadata';
-import { CamelDefinitionApiExt } from './CamelDefinitionApiExt';
-import { v4 as uuidv4 } from 'uuid';
-import { CamelDefinitionYaml } from './CamelDefinitionYaml';
+import {KameletApi} from './KameletApi';
+import {KameletModel, Property} from '../model/KameletModels';
+import {ComponentProperty} from '../model/ComponentModels';
+import {ComponentApi} from './ComponentApi';
+import {CamelMetadataApi, SensitiveKeys} from '../model/CamelMetadata';
+import {CamelDefinitionApiExt} from './CamelDefinitionApiExt';
+import {v4 as uuidv4} from 'uuid';
+import {CamelDefinitionYaml} from './CamelDefinitionYaml';
+import {ProjectFile} from "@models/ProjectModels";
+import {KARAVAN_DOT_EXTENSION} from "@karavan-core/contants";
export class CamelUtil {
private constructor() {
@@ -387,4 +392,18 @@ export class CamelUtil {
}
return CamelDefinitionYaml.integrationToYaml(integration);
};
+
+ static hasRouteTemplateDefinitions = (file: ProjectFile): boolean => {
+ try {
+ if (file.name.endsWith(KARAVAN_DOT_EXTENSION.CAMEL_YAML)) {
+ const integration = CamelDefinitionYaml.yamlToIntegration("", file.code);
+ const templates = integration.spec.flows?.filter(flow => flow.dslName === 'RouteTemplateDefinition');
+ return templates?.length !== undefined && templates?.length > 0;
+ } else {
+ return false;
+ }
+ } catch (e) {
+ return false;
+ }
+ };
}
diff --git a/karavan-vscode/webview/core/api/ComponentApi.ts b/karavan-vscode/webview/core/api/ComponentApi.ts
index 9a8bb128..5b532f43 100644
--- a/karavan-vscode/webview/core/api/ComponentApi.ts
+++ b/karavan-vscode/webview/core/api/ComponentApi.ts
@@ -23,6 +23,8 @@ let SupportedOnly: boolean = false;
const BlockedComponents: string[] = [];
export const INTERNAL_COMPONENTS = ['direct', 'seda', 'vertx']
+export const INTERNAL_COMPONENTS_CONSUMER_ONLY = ['timer', 'cron', 'scheduler']
+export const INTERNAL_COMPONENTS_PRODUCER_ONLY = ['controlbus', 'cron', 'scheduler']
export class ComponentApi {
private constructor() {}
diff --git a/karavan-vscode/webview/core/api/MainConfigurationApi.ts b/karavan-vscode/webview/core/api/MainConfigurationApi.ts
index 1d12acc1..5e68434b 100644
--- a/karavan-vscode/webview/core/api/MainConfigurationApi.ts
+++ b/karavan-vscode/webview/core/api/MainConfigurationApi.ts
@@ -17,12 +17,12 @@
import { ApplicationProperty, ApplicationPropertyChange, ApplicationPropertyGroup } from '../model/MainConfigurationModel';
const KaravanProperties: ApplicationProperty[] = [
- new ApplicationProperty({name: 'camel.karavan.projectId', type: 'string', description: 'Project ID'}),
- new ApplicationProperty({name: 'camel.karavan.projectName', type: 'string', description: 'Project Name'}),
+ // new ApplicationProperty({name: 'camel.karavan.projectId', type: 'string', description: 'Project ID'}),
+ // new ApplicationProperty({name: 'camel.karavan.projectName', type: 'string', description: 'Project Name'}),
new ApplicationProperty({name: 'camel.context.dev-console', type: 'boolean', description: 'Enable/Disable Developer Console on CamelContext'})
]
const KaravanGroup: ApplicationPropertyGroup[] = [
- new ApplicationPropertyGroup({name: 'camel.karavan', description: 'Karavan'}),
+ // new ApplicationPropertyGroup({name: 'camel.karavan', description: 'Karavan'}),
new ApplicationPropertyGroup({name: 'camel.context', description: 'CamelContext'})
]
diff --git a/karavan-vscode/webview/core/api/TopologyUtils.ts b/karavan-vscode/webview/core/api/TopologyUtils.ts
index ae3ab09f..a2ba5024 100644
--- a/karavan-vscode/webview/core/api/TopologyUtils.ts
+++ b/karavan-vscode/webview/core/api/TopologyUtils.ts
@@ -23,25 +23,29 @@ import {
PatchDefinition,
PostDefinition,
PutDefinition,
- RestDefinition, RouteConfigurationDefinition, RouteDefinition, SagaDefinition,
+ RestDefinition,
+ RouteConfigurationDefinition,
+ RouteDefinition,
+ SagaDefinition,
} from '../model/CamelDefinition';
+import {CamelElement, Integration,} from '../model/IntegrationDefinition';
import {
- CamelElement,
- Integration,
-} from '../model/IntegrationDefinition';
-import {
- TopologyAsyncApiNode, TopologyAsyncApiOperation,
+ TopologyAsyncApiNode,
+ TopologyAsyncApiOperation,
TopologyBeanNode,
- TopologyIncomingNode, TopologyOpenApiNode, TopologyOpenApiOperation,
+ TopologyIncomingNode,
+ TopologyOpenApiNode,
+ TopologyOpenApiOperation,
TopologyOutgoingNode,
- TopologyRestNode, TopologyRouteConfigurationNode,
+ TopologyRestNode,
+ TopologyRouteConfigurationNode,
TopologyRouteNode,
} from '../model/TopologyDefinition';
-import { ComponentApi, INTERNAL_COMPONENTS } from './ComponentApi';
-import { CamelDefinitionApiExt } from './CamelDefinitionApiExt';
-import { CamelDisplayUtil } from './CamelDisplayUtil';
-import { CamelUtil } from './CamelUtil';
-import { ASYNCAPI_FILE_NAME_JSON, OPENAPI_FILE_NAME_JSON } from '../contants';
+import {ComponentApi, INTERNAL_COMPONENTS} from './ComponentApi';
+import {CamelDefinitionApiExt} from './CamelDefinitionApiExt';
+import {CamelDisplayUtil} from './CamelDisplayUtil';
+import {CamelUtil} from './CamelUtil';
+import {LANDSCAPE_FILE_NAME_JSON, OPENAPI_FILE_NAME_JSON, X_APPLICATION_ID} from '../contants';
const outgoingDefinitions: string[] = ['ToDefinition', 'KameletDefinition', 'ToDynamicDefinition', 'PollEnrichDefinition', 'EnrichDefinition', 'WireTapDefinition', 'SagaDefinition', 'PollDefinition'];
@@ -217,7 +221,7 @@ export class TopologyUtils {
return new TopologyOpenApiNode(OPENAPI_FILE_NAME_JSON, title, operations);
};
- static findTopologyAsyncApiNodes = (json: string): TopologyAsyncApiNode => {
+ static findTopologyAsyncApiNodes = (json: string, applicationName?: string): TopologyAsyncApiNode => {
const operations: TopologyAsyncApiOperation[] = [];
let title = 'AsyncAPI';
@@ -230,20 +234,23 @@ export class TopologyUtils {
if (asyncapi.operations) {
Object.keys(asyncapi.operations).forEach((operationId) => {
const operation = asyncapi.operations[operationId];
- operations.push(
- new TopologyAsyncApiOperation(
- operation.operationId,
- operation.title,
- operation.action,
- operation.channel?.$ref
- )
- );
+ const xApplication: string = operation?.[X_APPLICATION_ID]
+ if (applicationName === undefined || applicationName === xApplication) {
+ operations.push(
+ new TopologyAsyncApiOperation(
+ operationId,
+ operation.summary,
+ operation.action,
+ operation.channel?.$ref
+ )
+ );
+ }
});
}
} catch (err) {
console.error(err);
}
- return new TopologyAsyncApiNode(ASYNCAPI_FILE_NAME_JSON, title, operations);
+ return new TopologyAsyncApiNode(LANDSCAPE_FILE_NAME_JSON, title, operations);
};
static findTopologyIncomingNodes = (integration: Integration[]): TopologyIncomingNode[] => {
@@ -271,7 +278,7 @@ export class TopologyUtils {
const uniqueUri = TopologyUtils.getUniqueUri(r.from);
return new TopologyIncomingNode(id, type, connectorType, r.id, title, filename, r.from, uniqueUri);
}) || [];
- result.push(...templateElements);
+ // result.push(...templateElements);
} catch (e) {
console.error(e);
}
@@ -279,6 +286,21 @@ export class TopologyUtils {
return result;
};
+ static findTopologyRoutesIncomingNodes = (routes: TopologyRouteNode[]): TopologyIncomingNode[] => {
+ const result: TopologyIncomingNode[] = [];
+ const routeElements = routes?.map(r => {
+ const id = 'incoming-' + r.id;
+ const title = CamelDisplayUtil.getStepDescription(r.from);
+ const type = TopologyUtils.isElementInternalComponent(r.from) ? 'internal' : 'external';
+ const connectorType = TopologyUtils.getConnectorType(r.from);
+ let from = CamelUtil.cloneStep(r.from) as FromDefinition;
+ let uniqueUri = TopologyUtils.getUniqueUri(r.from);
+ return new TopologyIncomingNode(id, type, connectorType, r.routeId, title, r.fileName, from, uniqueUri);
+ }) || [];
+ result.push(...routeElements);
+ return result;
+ };
+
static findTopologyRouteNodes = (integration: Integration[]): TopologyRouteNode[] => {
const result: TopologyRouteNode[] = [];
integration.forEach(i => {
@@ -357,6 +379,35 @@ export class TopologyUtils {
return result;
};
+ static findTopologyRoutesOutgoingNodes = (routes: TopologyRouteNode[]): TopologyOutgoingNode[] => {
+ const result: TopologyOutgoingNode[] = [];
+ routes.forEach(route => {
+ try {
+ const filename = route.fileName;
+ const from: FromDefinition = route.from;
+ const elements = TopologyUtils.findOutgoingInStep(from, []);
+ elements.forEach((e: any) => {
+ const step: any = CamelUtil.cloneStep(e)
+ const id = 'outgoing-' + route.id + '-' + step.id;
+ const title = CamelDisplayUtil.getStepDescription(step);
+ const type = TopologyUtils.isElementInternalComponent(step) ? 'internal' : 'external';
+ const connectorType = TopologyUtils.getConnectorType(step);
+ let uniqueUri = TopologyUtils.getUniqueUri(step);
+ if (
+ connectorType !== 'kamelet' ||
+ CamelUtil.getKamelet(e)?.metadata.labels['camel.apache.org/kamelet.type'] !== 'action'
+ ) {
+ result.push(new TopologyOutgoingNode(id, type, connectorType, route.routeId, title, filename, step, uniqueUri));
+ }
+ });
+ result.push(...TopologyUtils.findDeadLetterChannelNodes(route.route, filename));
+ } catch (e) {
+ console.error(e);
+ }
+ });
+ return result;
+ };
+
static findDeadLetterChannelNodes(route: RouteDefinition, filename: string): TopologyOutgoingNode[] {
const result: TopologyOutgoingNode[] = [];
try {
diff --git a/karavan-vscode/webview/core/model/CamelDefinition.ts b/karavan-vscode/webview/core/model/CamelDefinition.ts
index d3d2ae64..cc8a7f99 100644
--- a/karavan-vscode/webview/core/model/CamelDefinition.ts
+++ b/karavan-vscode/webview/core/model/CamelDefinition.ts
@@ -80,6 +80,7 @@ export class ProcessorDefinition extends CamelElement {
toD?: string;
tokenizer?: TokenizerDefinition;
transacted?: TransactedDefinition;
+ transformDataType?: TransformDataTypeDefinition;
transform?: TransformDefinition;
doTry?: TryDefinition;
unmarshal?: UnmarshalDefinition;
@@ -138,6 +139,7 @@ export class OutputAwareFromDefinition extends CamelElement {
export class AggregateDefinition extends CamelElement {
stepName?: string = 'aggregate';
id?: string = 'aggregate' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
correlationExpression?: ExpressionSubElementDefinition;
@@ -177,6 +179,7 @@ export class AggregateDefinition extends CamelElement {
export class BeanDefinition extends CamelElement {
stepName?: string = 'bean';
id?: string = 'bean' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
ref?: string;
@@ -213,6 +216,7 @@ export class BeanFactoryDefinition extends CamelElement {
export class CatchDefinition extends CamelElement {
stepName?: string = 'doCatch';
id?: string = 'doCatch' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
exception?: string[] = [];
@@ -227,6 +231,7 @@ export class CatchDefinition extends CamelElement {
export class ChoiceDefinition extends CamelElement {
stepName?: string = 'choice';
id?: string = 'choice' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
when?: WhenDefinition[] = [];
@@ -241,6 +246,7 @@ export class ChoiceDefinition extends CamelElement {
export class CircuitBreakerDefinition extends CamelElement {
stepName?: string = 'circuitBreaker';
id?: string = 'circuitBreaker' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
configuration?: string;
@@ -257,6 +263,7 @@ export class CircuitBreakerDefinition extends CamelElement {
export class ClaimCheckDefinition extends CamelElement {
stepName?: string = 'claimCheck';
id?: string = 'claimCheck' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
operation?: string;
@@ -284,6 +291,7 @@ export class ContextScanDefinition extends CamelElement {
export class ConvertBodyDefinition extends CamelElement {
stepName?: string = 'convertBodyTo';
id?: string = 'convertBodyTo' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
type: string = '';
@@ -298,6 +306,7 @@ export class ConvertBodyDefinition extends CamelElement {
export class ConvertHeaderDefinition extends CamelElement {
stepName?: string = 'convertHeaderTo';
id?: string = 'convertHeaderTo' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
name: string = '';
@@ -314,6 +323,7 @@ export class ConvertHeaderDefinition extends CamelElement {
export class ConvertVariableDefinition extends CamelElement {
stepName?: string = 'convertVariableTo';
id?: string = 'convertVariableTo' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
name: string = '';
@@ -339,6 +349,7 @@ export class DataFormatDefinition extends CamelElement {
export class DelayDefinition extends CamelElement {
stepName?: string = 'delay';
id?: string = 'delay' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
expression?: ExpressionDefinition;
@@ -354,6 +365,7 @@ export class DelayDefinition extends CamelElement {
export class DynamicRouterDefinition extends CamelElement {
stepName?: string = 'dynamicRouter';
id?: string = 'dynamicRouter' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
expression?: ExpressionDefinition;
@@ -369,6 +381,7 @@ export class DynamicRouterDefinition extends CamelElement {
export class EnrichDefinition extends CamelElement {
stepName?: string = 'enrich';
id?: string = 'enrich' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
expression?: ExpressionDefinition;
@@ -460,6 +473,7 @@ export class FaultToleranceConfigurationDefinition extends CamelElement {
export class FilterDefinition extends CamelElement {
stepName?: string = 'filter';
id?: string = 'filter' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
expression?: ExpressionDefinition;
@@ -474,6 +488,7 @@ export class FilterDefinition extends CamelElement {
export class FinallyDefinition extends CamelElement {
stepName?: string = 'doFinally';
id?: string = 'doFinally' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
steps?: CamelElement[] = [];
@@ -486,6 +501,7 @@ export class FinallyDefinition extends CamelElement {
export class FromDefinition extends CamelElement {
stepName?: string = 'from';
id?: string = 'from' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
uri: string = '';
variableReceive?: string;
@@ -519,6 +535,7 @@ export class GlobalOptionsDefinition extends CamelElement {
export class IdempotentConsumerDefinition extends CamelElement {
stepName?: string = 'idempotentConsumer';
id?: string = 'idempotentConsumer' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
expression?: ExpressionDefinition;
@@ -537,6 +554,7 @@ export class IdempotentConsumerDefinition extends CamelElement {
export class InputTypeDefinition extends CamelElement {
stepName?: string = 'inputType';
id?: string = 'inputType' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
urn: string = '';
validate?: boolean;
@@ -549,6 +567,7 @@ export class InputTypeDefinition extends CamelElement {
export class InterceptDefinition extends CamelElement {
stepName?: string = 'intercept';
id?: string = 'intercept' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
onWhen?: OnWhenDefinition;
@@ -562,6 +581,7 @@ export class InterceptDefinition extends CamelElement {
export class InterceptFromDefinition extends CamelElement {
stepName?: string = 'interceptFrom';
id?: string = 'interceptFrom' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
uri?: string;
@@ -576,6 +596,7 @@ export class InterceptFromDefinition extends CamelElement {
export class InterceptSendToEndpointDefinition extends CamelElement {
stepName?: string = 'interceptSendToEndpoint';
id?: string = 'interceptSendToEndpoint' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
uri: string = '';
@@ -602,6 +623,7 @@ export class KameletDefinition extends CamelElement {
export class LoadBalanceDefinition extends CamelElement {
stepName?: string = 'loadBalance';
id?: string = 'loadBalance' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
customLoadBalancer?: CustomLoadBalancerDefinition | string;
@@ -621,6 +643,7 @@ export class LoadBalanceDefinition extends CamelElement {
export class LogDefinition extends CamelElement {
stepName?: string = 'log';
id?: string = 'log' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
message: string = '';
@@ -638,6 +661,7 @@ export class LogDefinition extends CamelElement {
export class LoopDefinition extends CamelElement {
stepName?: string = 'loop';
id?: string = 'loop' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
expression?: ExpressionDefinition;
@@ -655,6 +679,7 @@ export class LoopDefinition extends CamelElement {
export class MarshalDefinition extends CamelElement {
stepName?: string = 'marshal';
id?: string = 'marshal' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
variableSend?: string;
@@ -675,6 +700,7 @@ export class MarshalDefinition extends CamelElement {
flatpack?: FlatpackDataFormat;
fory?: ForyDataFormat;
grok?: GrokDataFormat;
+ groovyXml?: GroovyXmlDataFormat;
gzipDeflater?: GzipDeflaterDataFormat;
hl7?: HL7DataFormat;
ical?: IcalDataFormat;
@@ -685,8 +711,10 @@ export class MarshalDefinition extends CamelElement {
jsonApi?: JsonApiDataFormat;
lzf?: LZFDataFormat;
mimeMultipart?: MimeMultipartDataFormat;
+ ocsf?: OcsfDataFormat;
parquetAvro?: ParquetAvroDataFormat | string;
pgp?: PGPDataFormat;
+ pqc?: PQCDataFormat;
protobuf?: ProtobufDataFormat | string;
rss?: RssDataFormat;
smooks?: SmooksDataFormat;
@@ -696,7 +724,6 @@ export class MarshalDefinition extends CamelElement {
syslog?: SyslogDataFormat;
tarFile?: TarFileDataFormat;
thrift?: ThriftDataFormat | string;
- tidyMarkup?: TidyMarkupDataFormat;
univocityCsv?: UniVocityCsvDataFormat;
univocityFixed?: UniVocityFixedDataFormat;
univocityTsv?: UniVocityTsvDataFormat;
@@ -713,6 +740,7 @@ export class MarshalDefinition extends CamelElement {
export class MulticastDefinition extends CamelElement {
stepName?: string = 'multicast';
id?: string = 'multicast' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
aggregationStrategy?: string;
@@ -737,6 +765,7 @@ export class MulticastDefinition extends CamelElement {
export class OnCompletionDefinition extends CamelElement {
stepName?: string = 'onCompletion';
id?: string = 'onCompletion' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
mode?: string;
@@ -756,6 +785,7 @@ export class OnCompletionDefinition extends CamelElement {
export class OnExceptionDefinition extends CamelElement {
stepName?: string = 'onException';
id?: string = 'onException' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
exception?: string[] = [];
@@ -779,6 +809,7 @@ export class OnExceptionDefinition extends CamelElement {
export class OnFallbackDefinition extends CamelElement {
stepName?: string = 'onFallback';
id?: string = 'onFallback' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
fallbackViaNetwork?: boolean;
steps?: CamelElement[] = [];
@@ -791,6 +822,7 @@ export class OnFallbackDefinition extends CamelElement {
export class OnWhenDefinition extends CamelElement {
stepName?: string = 'onWhen';
id?: string = 'onWhen' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
expression?: ExpressionDefinition;
public constructor(init?: Partial<OnWhenDefinition>) {
@@ -815,6 +847,7 @@ export class OptimisticLockRetryPolicyDefinition extends CamelElement {
export class OtherwiseDefinition extends CamelElement {
stepName?: string = 'otherwise';
id?: string = 'otherwise' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
steps?: CamelElement[] = [];
@@ -829,6 +862,7 @@ export class OutputDefinition extends CamelElement {
description?: string;
disabled?: boolean;
id?: string = 'output' + uuidv4().substring(0,4);
+ note?: string;
steps?: CamelElement[] = [];
public constructor(init?: Partial<OutputDefinition>) {
super('OutputDefinition');
@@ -839,6 +873,7 @@ export class OutputDefinition extends CamelElement {
export class OutputTypeDefinition extends CamelElement {
stepName?: string = 'outputType';
id?: string = 'outputType' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
urn: string = '';
validate?: boolean;
@@ -862,6 +897,7 @@ export class PackageScanDefinition extends CamelElement {
export class PausableDefinition extends CamelElement {
stepName?: string = 'pausable';
id?: string = 'pausable' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
consumerListener: string = '';
@@ -875,6 +911,7 @@ export class PausableDefinition extends CamelElement {
export class PipelineDefinition extends CamelElement {
stepName?: string = 'pipeline';
id?: string = 'pipeline' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
steps?: CamelElement[] = [];
@@ -887,6 +924,7 @@ export class PipelineDefinition extends CamelElement {
export class PolicyDefinition extends CamelElement {
stepName?: string = 'policy';
id?: string = 'policy' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
ref: string = '';
@@ -900,6 +938,7 @@ export class PolicyDefinition extends CamelElement {
export class PollDefinition extends CamelElement {
stepName?: string = 'poll';
id?: string = 'poll' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
variableReceive?: string;
@@ -915,6 +954,7 @@ export class PollDefinition extends CamelElement {
export class PollEnrichDefinition extends CamelElement {
stepName?: string = 'pollEnrich';
id?: string = 'pollEnrich' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
expression?: ExpressionDefinition;
@@ -937,6 +977,7 @@ export class PollEnrichDefinition extends CamelElement {
export class ProcessDefinition extends CamelElement {
stepName?: string = 'process';
id?: string = 'process' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
ref: string = '';
@@ -969,6 +1010,7 @@ export class PropertyExpressionDefinition extends CamelElement {
export class RecipientListDefinition extends CamelElement {
stepName?: string = 'recipientList';
id?: string = 'recipientList' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
expression?: ExpressionDefinition;
@@ -1029,6 +1071,7 @@ export class RedeliveryPolicyDefinition extends CamelElement {
export class RemoveHeaderDefinition extends CamelElement {
stepName?: string = 'removeHeader';
id?: string = 'removeHeader' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
name: string = '';
@@ -1041,6 +1084,7 @@ export class RemoveHeaderDefinition extends CamelElement {
export class RemoveHeadersDefinition extends CamelElement {
stepName?: string = 'removeHeaders';
id?: string = 'removeHeaders' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
pattern: string = '';
@@ -1054,6 +1098,7 @@ export class RemoveHeadersDefinition extends CamelElement {
export class RemovePropertiesDefinition extends CamelElement {
stepName?: string = 'removeProperties';
id?: string = 'removeProperties' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
pattern: string = '';
@@ -1067,6 +1112,7 @@ export class RemovePropertiesDefinition extends CamelElement {
export class RemovePropertyDefinition extends CamelElement {
stepName?: string = 'removeProperty';
id?: string = 'removeProperty' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
name: string = '';
@@ -1079,6 +1125,7 @@ export class RemovePropertyDefinition extends CamelElement {
export class RemoveVariableDefinition extends CamelElement {
stepName?: string = 'removeVariable';
id?: string = 'removeVariable' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
name: string = '';
@@ -1091,6 +1138,7 @@ export class RemoveVariableDefinition extends CamelElement {
export class ResequenceDefinition extends CamelElement {
stepName?: string = 'resequence';
id?: string = 'resequence' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
expression?: ExpressionDefinition;
@@ -1126,6 +1174,7 @@ export class Resilience4jConfigurationDefinition extends CamelElement {
timeoutExecutorService?: string;
timeoutDuration?: number;
timeoutCancelRunningFuture?: boolean;
+ micrometerEnabled?: boolean;
recordException?: string[] = [];
ignoreException?: string[] = [];
public constructor(init?: Partial<Resilience4jConfigurationDefinition>) {
@@ -1146,6 +1195,7 @@ export class RestContextRefDefinition extends CamelElement {
export class ResumableDefinition extends CamelElement {
stepName?: string = 'resumable';
id?: string = 'resumable' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
resumeStrategy: string = '';
@@ -1160,6 +1210,7 @@ export class ResumableDefinition extends CamelElement {
export class RollbackDefinition extends CamelElement {
stepName?: string = 'rollback';
id?: string = 'rollback' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
message?: string;
@@ -1219,6 +1270,7 @@ export class RouteContextRefDefinition extends CamelElement {
export class RouteDefinition extends CamelElement {
stepName?: string = 'route';
id?: string = 'route' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
group?: string;
nodePrefixId?: string;
@@ -1246,6 +1298,7 @@ export class RouteDefinition extends CamelElement {
export class RouteTemplateDefinition extends CamelElement {
stepName?: string = 'routeTemplate';
id: string = 'routeTemplate' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
route?: RouteDefinition;
beans?: BeanFactoryDefinition[] = [];
@@ -1272,6 +1325,7 @@ export class RouteTemplateParameterDefinition extends CamelElement {
export class RoutingSlipDefinition extends CamelElement {
stepName?: string = 'routingSlip';
id?: string = 'routingSlip' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
expression?: ExpressionDefinition;
@@ -1289,6 +1343,7 @@ export class SagaActionUriDefinition extends CamelElement {
description?: string;
disabled?: boolean;
id?: string = 'sagaActionUri' + uuidv4().substring(0,4);
+ note?: string;
parameters?: any = {};
uri: string = '';
public constructor(init?: Partial<SagaActionUriDefinition>) {
@@ -1300,6 +1355,7 @@ export class SagaActionUriDefinition extends CamelElement {
export class SagaDefinition extends CamelElement {
stepName?: string = 'saga';
id?: string = 'saga' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
sagaService?: string;
@@ -1319,6 +1375,7 @@ export class SagaDefinition extends CamelElement {
export class SamplingDefinition extends CamelElement {
stepName?: string = 'sample';
id?: string = 'sample' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
samplePeriod?: string;
@@ -1332,6 +1389,7 @@ export class SamplingDefinition extends CamelElement {
export class ScriptDefinition extends CamelElement {
stepName?: string = 'script';
id?: string = 'script' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
expression?: ExpressionDefinition;
@@ -1344,6 +1402,7 @@ export class ScriptDefinition extends CamelElement {
export class SetBodyDefinition extends CamelElement {
stepName?: string = 'setBody';
id?: string = 'setBody' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
expression?: ExpressionDefinition;
@@ -1356,6 +1415,7 @@ export class SetBodyDefinition extends CamelElement {
export class SetExchangePatternDefinition extends CamelElement {
stepName?: string = 'setExchangePattern';
id?: string = 'setExchangePattern' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
pattern?: string;
@@ -1368,6 +1428,7 @@ export class SetExchangePatternDefinition extends CamelElement {
export class SetHeaderDefinition extends CamelElement {
stepName?: string = 'setHeader';
id?: string = 'setHeader' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
name: string = '';
@@ -1381,6 +1442,7 @@ export class SetHeaderDefinition extends CamelElement {
export class SetHeadersDefinition extends CamelElement {
stepName?: string = 'setHeaders';
id?: string = 'setHeaders' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
headers?: SetHeaderDefinition[] = [];
@@ -1393,6 +1455,7 @@ export class SetHeadersDefinition extends CamelElement {
export class SetPropertyDefinition extends CamelElement {
stepName?: string = 'setProperty';
id?: string = 'setProperty' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
name: string = '';
@@ -1406,6 +1469,7 @@ export class SetPropertyDefinition extends CamelElement {
export class SetVariableDefinition extends CamelElement {
stepName?: string = 'setVariable';
id?: string = 'setVariable' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
name: string = '';
@@ -1419,6 +1483,7 @@ export class SetVariableDefinition extends CamelElement {
export class SetVariablesDefinition extends CamelElement {
stepName?: string = 'setVariables';
id?: string = 'setVariables' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
variables?: SetVariableDefinition[] = [];
@@ -1431,6 +1496,7 @@ export class SetVariablesDefinition extends CamelElement {
export class SortDefinition extends CamelElement {
stepName?: string = 'sort';
id?: string = 'sort' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
expression?: ExpressionDefinition;
@@ -1444,6 +1510,7 @@ export class SortDefinition extends CamelElement {
export class SplitDefinition extends CamelElement {
stepName?: string = 'split';
id?: string = 'split' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
expression?: ExpressionDefinition;
@@ -1470,6 +1537,7 @@ export class SplitDefinition extends CamelElement {
export class StepDefinition extends CamelElement {
stepName?: string = 'step';
id?: string = 'step' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
steps?: CamelElement[] = [];
@@ -1482,6 +1550,7 @@ export class StepDefinition extends CamelElement {
export class StopDefinition extends CamelElement {
stepName?: string = 'stop';
id?: string = 'stop' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
public constructor(init?: Partial<StopDefinition>) {
@@ -1516,6 +1585,7 @@ export class TemplatedRouteParameterDefinition extends CamelElement {
export class ThreadPoolProfileDefinition extends CamelElement {
stepName?: string = 'threadPoolProfile';
id?: string = 'threadPoolProfile' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
defaultProfile?: boolean;
poolSize?: number;
@@ -1534,6 +1604,7 @@ export class ThreadPoolProfileDefinition extends CamelElement {
export class ThreadsDefinition extends CamelElement {
stepName?: string = 'threads';
id?: string = 'threads' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
executorService?: string;
@@ -1545,7 +1616,7 @@ export class ThreadsDefinition extends CamelElement {
allowCoreThreadTimeOut?: boolean;
threadName?: string;
rejectedPolicy?: string;
- callerRunsWhenRejected?: string;
+ callerRunsWhenRejected?: boolean;
public constructor(init?: Partial<ThreadsDefinition>) {
super('ThreadsDefinition');
Object.assign(this, init);
@@ -1555,6 +1626,7 @@ export class ThreadsDefinition extends CamelElement {
export class ThrottleDefinition extends CamelElement {
stepName?: string = 'throttle';
id?: string = 'throttle' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
expression?: ExpressionDefinition;
@@ -1574,6 +1646,7 @@ export class ThrottleDefinition extends CamelElement {
export class ThrowExceptionDefinition extends CamelElement {
stepName?: string = 'throwException';
id?: string = 'throwException' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
message?: string;
@@ -1588,6 +1661,7 @@ export class ThrowExceptionDefinition extends CamelElement {
export class ToDefinition extends CamelElement {
stepName?: string = 'to';
id?: string = 'to' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
variableSend?: string;
@@ -1604,6 +1678,7 @@ export class ToDefinition extends CamelElement {
export class ToDynamicDefinition extends CamelElement {
stepName?: string = 'toD';
id?: string = 'toD' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
uri: string = '';
@@ -1624,6 +1699,7 @@ export class ToDynamicDefinition extends CamelElement {
export class TokenizerDefinition extends CamelElement {
stepName?: string = 'tokenizer';
id?: string = 'tokenizer' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
langChain4jCharacterTokenizer?: LangChain4jCharacterTokenizerDefinition;
@@ -1649,6 +1725,7 @@ export class TokenizerImplementationDefinition extends CamelElement {
export class TransactedDefinition extends CamelElement {
stepName?: string = 'transacted';
id?: string = 'transacted' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
ref?: string;
@@ -1659,14 +1736,27 @@ export class TransactedDefinition extends CamelElement {
}
}
+export class TransformDataTypeDefinition extends CamelElement {
+ stepName?: string = 'transformDataType';
+ id?: string = 'transformDataType' + uuidv4().substring(0,4);
+ note?: string;
+ description?: string;
+ disabled?: boolean;
+ fromType?: string;
+ toType: string = '';
+ public constructor(init?: Partial<TransformDataTypeDefinition>) {
+ super('TransformDataTypeDefinition');
+ Object.assign(this, init);
+ }
+}
+
export class TransformDefinition extends CamelElement {
stepName?: string = 'transform';
id?: string = 'transform' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
expression?: ExpressionDefinition;
- fromType?: string;
- toType?: string;
public constructor(init?: Partial<TransformDefinition>) {
super('TransformDefinition');
Object.assign(this, init);
@@ -1676,6 +1766,7 @@ export class TransformDefinition extends CamelElement {
export class TryDefinition extends CamelElement {
stepName?: string = 'doTry';
id?: string = 'doTry' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
doCatch?: CatchDefinition[] = [];
@@ -1690,6 +1781,7 @@ export class TryDefinition extends CamelElement {
export class UnmarshalDefinition extends CamelElement {
stepName?: string = 'unmarshal';
id?: string = 'unmarshal' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
variableSend?: string;
@@ -1711,6 +1803,7 @@ export class UnmarshalDefinition extends CamelElement {
flatpack?: FlatpackDataFormat;
fory?: ForyDataFormat;
grok?: GrokDataFormat;
+ groovyXml?: GroovyXmlDataFormat;
gzipDeflater?: GzipDeflaterDataFormat;
hl7?: HL7DataFormat;
ical?: IcalDataFormat;
@@ -1721,8 +1814,10 @@ export class UnmarshalDefinition extends CamelElement {
jsonApi?: JsonApiDataFormat;
lzf?: LZFDataFormat;
mimeMultipart?: MimeMultipartDataFormat;
+ ocsf?: OcsfDataFormat;
parquetAvro?: ParquetAvroDataFormat | string;
pgp?: PGPDataFormat;
+ pqc?: PQCDataFormat;
protobuf?: ProtobufDataFormat | string;
rss?: RssDataFormat;
smooks?: SmooksDataFormat;
@@ -1732,7 +1827,6 @@ export class UnmarshalDefinition extends CamelElement {
syslog?: SyslogDataFormat;
tarFile?: TarFileDataFormat;
thrift?: ThriftDataFormat | string;
- tidyMarkup?: TidyMarkupDataFormat;
univocityCsv?: UniVocityCsvDataFormat;
univocityFixed?: UniVocityFixedDataFormat;
univocityTsv?: UniVocityTsvDataFormat;
@@ -1749,6 +1843,7 @@ export class UnmarshalDefinition extends CamelElement {
export class ValidateDefinition extends CamelElement {
stepName?: string = 'validate';
id?: string = 'validate' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
expression?: ExpressionDefinition;
@@ -1771,6 +1866,7 @@ export class ValueDefinition extends CamelElement {
export class WhenDefinition extends CamelElement {
stepName?: string = 'when';
id?: string = 'when' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
expression?: ExpressionDefinition;
@@ -1784,6 +1880,7 @@ export class WhenDefinition extends CamelElement {
export class WireTapDefinition extends CamelElement {
stepName?: string = 'wireTap';
id?: string = 'wireTap' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
copy?: boolean;
@@ -1965,6 +2062,7 @@ export class BindyDataFormat extends CamelElement {
id?: string = 'bindy' + uuidv4().substring(0,4);
type?: string;
classType?: string;
+ defaultValueStringAsNull?: boolean;
allowEmptyStream?: boolean;
unwrapSingleInstance?: boolean;
locale?: string;
@@ -1997,10 +2095,10 @@ export class CryptoDataFormat extends CamelElement {
dataFormatName?: string = 'crypto';
id?: string = 'crypto' + uuidv4().substring(0,4);
algorithm?: string;
- keyRef?: string;
+ key?: string;
cryptoProvider?: string;
- initVectorRef?: string;
- algorithmParameterRef?: string;
+ initVector?: string;
+ algorithmParameterSpec?: string;
bufferSize?: number;
macAlgorithm?: string;
shouldAppendHMAC?: boolean;
@@ -2014,15 +2112,14 @@ export class CryptoDataFormat extends CamelElement {
export class CsvDataFormat extends CamelElement {
dataFormatName?: string = 'csv';
id?: string = 'csv' + uuidv4().substring(0,4);
- formatRef?: string;
- formatName?: string;
+ format?: string;
commentMarkerDisabled?: boolean;
commentMarker?: string;
delimiter?: string;
escapeDisabled?: boolean;
escape?: string;
headerDisabled?: boolean;
- header?: string[] = [];
+ header?: string;
allowMissingColumnNames?: boolean;
ignoreEmptyLines?: boolean;
ignoreSurroundingSpaces?: boolean;
@@ -2077,6 +2174,7 @@ export class DataFormatsDefinition extends CamelElement {
flatpack?: FlatpackDataFormat;
fory?: ForyDataFormat;
grok?: GrokDataFormat;
+ groovyXml?: GroovyXmlDataFormat;
gzipDeflater?: GzipDeflaterDataFormat;
hl7?: HL7DataFormat;
ical?: IcalDataFormat;
@@ -2098,7 +2196,6 @@ export class DataFormatsDefinition extends CamelElement {
syslog?: SyslogDataFormat;
tarFile?: TarFileDataFormat;
thrift?: ThriftDataFormat | string;
- tidyMarkup?: TidyMarkupDataFormat;
univocityCsv?: UniVocityCsvDataFormat;
univocityFixed?: UniVocityFixedDataFormat;
univocityTsv?: UniVocityTsvDataFormat;
@@ -2188,7 +2285,7 @@ export class FlatpackDataFormat extends CamelElement {
allowShortLines?: boolean;
ignoreExtraColumns?: boolean;
textQualifier?: string;
- parserFactoryRef?: string;
+ parserFactory?: string;
public constructor(init?: Partial<FlatpackDataFormat>) {
super('FlatpackDataFormat');
Object.assign(this, init);
@@ -2221,6 +2318,16 @@ export class GrokDataFormat extends CamelElement {
}
}
+export class GroovyXmlDataFormat extends CamelElement {
+ dataFormatName?: string = 'groovyXml';
+ id?: string = 'groovyXml' + uuidv4().substring(0,4);
+ attributeMapping?: boolean;
+ public constructor(init?: Partial<GroovyXmlDataFormat>) {
+ super('GroovyXmlDataFormat');
+ Object.assign(this, init);
+ }
+}
+
export class GzipDeflaterDataFormat extends CamelElement {
dataFormatName?: string = 'gzipDeflater';
id?: string = 'gzipDeflater' + uuidv4().substring(0,4);
@@ -2233,6 +2340,7 @@ export class GzipDeflaterDataFormat extends CamelElement {
export class HL7DataFormat extends CamelElement {
dataFormatName?: string = 'hl7';
id?: string = 'hl7' + uuidv4().substring(0,4);
+ parser?: string;
validate?: boolean;
public constructor(init?: Partial<HL7DataFormat>) {
super('HL7DataFormat');
@@ -2304,7 +2412,7 @@ export class JaxbDataFormat extends CamelElement {
fragment?: boolean;
partClass?: string;
partNamespace?: string;
- namespacePrefixRef?: string;
+ namespacePrefix?: string;
xmlStreamWriterWrapper?: string;
schemaLocation?: string;
noNamespaceSchemaLocation?: string;
@@ -2385,6 +2493,22 @@ export class MimeMultipartDataFormat extends CamelElement {
}
}
+export class OcsfDataFormat extends CamelElement {
+ dataFormatName?: string = 'null';
+ allowUnmarshallType?: boolean;
+ collectionType?: string;
+ id?: string;
+ objectMapper?: string;
+ prettyPrint?: boolean;
+ unmarshalType?: string;
+ useDefaultObjectMapper?: boolean;
+ useList?: boolean;
+ public constructor(init?: Partial<OcsfDataFormat>) {
+ super('OcsfDataFormat');
+ Object.assign(this, init);
+ }
+}
+
export class PGPDataFormat extends CamelElement {
dataFormatName?: string = 'pgp';
id?: string = 'pgp' + uuidv4().substring(0,4);
@@ -2408,6 +2532,22 @@ export class PGPDataFormat extends CamelElement {
}
}
+export class PQCDataFormat extends CamelElement {
+ dataFormatName?: string = 'null';
+ bufferSize?: number;
+ id?: string;
+ keyEncapsulationAlgorithm?: string;
+ keyGenerator?: string;
+ keyPair?: string;
+ provider?: string;
+ symmetricKeyAlgorithm?: string;
+ symmetricKeyLength?: number;
+ public constructor(init?: Partial<PQCDataFormat>) {
+ super('PQCDataFormat');
+ Object.assign(this, init);
+ }
+}
+
export class ParquetAvroDataFormat extends CamelElement {
dataFormatName?: string = 'parquetAvro';
id?: string = 'parquetAvro' + uuidv4().substring(0,4);
@@ -2474,10 +2614,11 @@ export class SoapDataFormat extends CamelElement {
id?: string = 'soap' + uuidv4().substring(0,4);
contextPath: string = '';
encoding?: string;
- elementNameStrategyRef?: string;
+ elementNameStrategy?: string;
version?: string;
- namespacePrefixRef?: string;
+ namespacePrefix?: string;
schema?: string;
+ ignoreUnmarshalledHeaders?: boolean;
public constructor(init?: Partial<SoapDataFormat>) {
super('SoapDataFormat');
Object.assign(this, init);
@@ -2497,10 +2638,10 @@ export class SwiftMtDataFormat extends CamelElement {
export class SwiftMxDataFormat extends CamelElement {
dataFormatName?: string = 'swiftMx';
id?: string = 'swiftMx' + uuidv4().substring(0,4);
- writeConfigRef?: string;
writeInJson?: boolean;
readMessageId?: string;
- readConfigRef?: string;
+ readConfig?: string;
+ writeConfig?: string;
public constructor(init?: Partial<SwiftMxDataFormat>) {
super('SwiftMxDataFormat');
Object.assign(this, init);
@@ -2541,17 +2682,6 @@ export class ThriftDataFormat extends CamelElement {
}
}
-export class TidyMarkupDataFormat extends CamelElement {
- dataFormatName?: string = 'tidyMarkup';
- id?: string = 'tidyMarkup' + uuidv4().substring(0,4);
- dataObjectType?: string;
- omitXmlDeclaration?: boolean;
- public constructor(init?: Partial<TidyMarkupDataFormat>) {
- super('TidyMarkupDataFormat');
- Object.assign(this, init);
- }
-}
-
export class UniVocityCsvDataFormat extends CamelElement {
dataFormatName?: string = 'univocityCsv';
id?: string = 'univocityCsv' + uuidv4().substring(0,4);
@@ -2648,11 +2778,12 @@ export class XMLSecurityDataFormat extends CamelElement {
secureTagContents?: boolean;
keyCipherAlgorithm?: string;
recipientKeyAlias?: string;
- keyOrTrustStoreParametersRef?: string;
+ keyOrTrustStoreParameters?: string;
keyPassword?: string;
digestAlgorithm?: string;
mgfAlgorithm?: string;
addKeyValueForEncryptedKey?: boolean;
+ namespace?: string;
public constructor(init?: Partial<XMLSecurityDataFormat>) {
super('XMLSecurityDataFormat');
Object.assign(this, init);
@@ -2671,7 +2802,7 @@ export class YAMLDataFormat extends CamelElement {
useApplicationContextClassLoader?: boolean;
prettyFlow?: boolean;
allowAnyType?: boolean;
- typeFilter?: YAMLTypeFilterDefinition[] = [];
+ typeFilter?: string;
maxAliasesForCollections?: number;
allowRecursiveKeys?: boolean;
public constructor(init?: Partial<YAMLDataFormat>) {
@@ -2680,16 +2811,6 @@ export class YAMLDataFormat extends CamelElement {
}
}
-export class YAMLTypeFilterDefinition extends CamelElement {
- stepName?: string = 'yAMLTypeFilter';
- type?: string;
- value?: string;
- public constructor(init?: Partial<YAMLTypeFilterDefinition>) {
- super('YAMLTypeFilterDefinition');
- Object.assign(this, init);
- }
-}
-
export class ZipDeflaterDataFormat extends CamelElement {
dataFormatName?: string = 'zipDeflater';
id?: string = 'zipDeflater' + uuidv4().substring(0,4);
@@ -2826,6 +2947,8 @@ export class CSimpleExpression extends CamelElement {
expressionName?: string = 'csimple';
id?: string = 'csimple' + uuidv4().substring(0,4);
expression: string = '';
+ trimResult?: boolean;
+ pretty?: boolean;
resultType?: string;
trim?: boolean;
public constructor(init?: Partial<CSimpleExpression>) {
@@ -3066,6 +3189,9 @@ export class SimpleExpression extends CamelElement {
expressionName?: string = 'simple';
id?: string = 'simple' + uuidv4().substring(0,4);
expression: string = '';
+ trimResult?: boolean;
+ pretty?: boolean;
+ nested?: boolean;
resultType?: string;
trim?: boolean;
public constructor(init?: Partial<SimpleExpression>) {
@@ -3294,6 +3420,7 @@ export class BearerTokenDefinition extends CamelElement {
export class DeleteDefinition extends CamelElement {
stepName?: string = 'delete';
id?: string = 'delete' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
path?: string;
@@ -3324,6 +3451,7 @@ export class DeleteDefinition extends CamelElement {
export class GetDefinition extends CamelElement {
stepName?: string = 'get';
id?: string = 'get' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
path?: string;
@@ -3354,6 +3482,7 @@ export class GetDefinition extends CamelElement {
export class HeadDefinition extends CamelElement {
stepName?: string = 'head';
id?: string = 'head' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
path?: string;
@@ -3409,6 +3538,7 @@ export class OAuth2Definition extends CamelElement {
export class OpenApiDefinition extends CamelElement {
stepName?: string = 'openApi';
id?: string = 'openApi' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
specification: string = '';
@@ -3455,6 +3585,7 @@ export class ParamDefinition extends CamelElement {
export class PatchDefinition extends CamelElement {
stepName?: string = 'patch';
id?: string = 'patch' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
path?: string;
@@ -3485,6 +3616,7 @@ export class PatchDefinition extends CamelElement {
export class PostDefinition extends CamelElement {
stepName?: string = 'post';
id?: string = 'post' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
path?: string;
@@ -3515,6 +3647,7 @@ export class PostDefinition extends CamelElement {
export class PutDefinition extends CamelElement {
stepName?: string = 'put';
id?: string = 'put' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
path?: string;
@@ -3575,6 +3708,7 @@ export class ResponseMessageDefinition extends CamelElement {
export class RestBindingDefinition extends CamelElement {
stepName?: string = 'restBinding';
id?: string = 'restBinding' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
consumes?: string;
produces?: string;
@@ -3635,6 +3769,7 @@ export class RestConfigurationDefinition extends CamelElement {
export class RestDefinition extends CamelElement {
stepName?: string = 'rest';
id?: string = 'rest' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
disabled?: boolean;
path?: string;
@@ -3690,6 +3825,7 @@ export class RestSecuritiesDefinition extends CamelElement {
export class RestsDefinition extends CamelElement {
stepName?: string = 'rests';
id?: string = 'rests' + uuidv4().substring(0,4);
+ note?: string;
description?: string;
rest?: RestDefinition[] = [];
public constructor(init?: Partial<RestsDefinition>) {
@@ -3822,6 +3958,7 @@ export class DataFormatTransformerDefinition extends CamelElement {
flatpack?: FlatpackDataFormat;
fory?: ForyDataFormat;
grok?: GrokDataFormat;
+ groovyXml?: GroovyXmlDataFormat;
gzipDeflater?: GzipDeflaterDataFormat;
hl7?: HL7DataFormat;
ical?: IcalDataFormat;
@@ -3843,7 +3980,6 @@ export class DataFormatTransformerDefinition extends CamelElement {
syslog?: SyslogDataFormat;
tarFile?: TarFileDataFormat;
thrift?: ThriftDataFormat | string;
- tidyMarkup?: TidyMarkupDataFormat;
univocityCsv?: UniVocityCsvDataFormat;
univocityFixed?: UniVocityFixedDataFormat;
univocityTsv?: UniVocityTsvDataFormat;
diff --git a/karavan-vscode/webview/core/model/CamelMetadata.ts b/karavan-vscode/webview/core/model/CamelMetadata.ts
index d774d7fc..4da402ce 100644
--- a/karavan-vscode/webview/core/model/CamelMetadata.ts
+++ b/karavan-vscode/webview/core/model/CamelMetadata.ts
@@ -143,6 +143,7 @@ export const DataFormats: [string, string, string][] = [
['flatpack','Flatpack',"Marshal and unmarshal Java lists and maps to/from flat files (such as CSV, delimited, or fixed length formats) using Flatpack library."],
['fory','Fory',"Serialize and deserialize messages using Apache Fory"],
['grok','Grok',"Unmarshal unstructured data to objects using Logstash based Grok patterns."],
+ ['groovyXml','Groovy XML',"Transform between XML and Groovy Node (Map structure) objects."],
['gzipDeflater','GZip Deflater',"Compress and decompress messages using java.util.zip.GZIPStream."],
['hl7','HL7',"Marshal and unmarshal HL7 (Health Care) model objects using the HL7 MLLP codec."],
['ical','iCal',"Marshal and unmarshal iCal (.ics) documents to/from model objects."],
@@ -164,7 +165,6 @@ export const DataFormats: [string, string, string][] = [
['syslog','Syslog',"Marshall SyslogMessages to RFC3164 and RFC5424 messages and back."],
['tarFile','Tar File',"Archive files into tarballs or extract files from tarballs."],
['thrift','Thrift',"Serialize and deserialize messages using Apache Thrift binary data format."],
- ['tidyMarkup','TidyMarkup',"Parse (potentially invalid) HTML into valid HTML or DOM."],
['univocityCsv','uniVocity CSV',"Marshal and unmarshal Java objects from and to CSV (Comma Separated Values) using UniVocity Parsers."],
['univocityFixed','uniVocity Fixed Length',"Marshal and unmarshal Java objects from and to fixed length records using UniVocity Parsers."],
['univocityTsv','uniVocity TSV',"Marshal and unmarshal Java objects from and to TSV (Tab-Separated Values) records using UniVocity Parsers."],
@@ -207,10 +207,10 @@ export const CamelDataFormatMetadata: ElementMeta[] = [
]),
new ElementMeta('barcode', 'BarcodeDataFormat', 'Barcode', "Transform strings to various 1D/2D barcode bitmap formats and back.", 'dataformat,transformation', [
new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
- new PropertyMeta('barcodeFormat', 'Barcode Format', "Barcode format such as QR-Code", 'string', '', '', false, false, false, false, '', ''),
- new PropertyMeta('imageType', 'Image Type', "Image type of the barcode such as png", 'string', '', '', false, false, false, false, '', ''),
- new PropertyMeta('width', 'Width', "Width of the barcode", 'number', '', '', false, false, false, false, '', ''),
- new PropertyMeta('height', 'Height', "Height of the barcode", 'number', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('barcodeFormat', 'Barcode Format', "Barcode format such as QR-Code", 'string', 'AZTEC, CODABAR, CODE_39, CODE_93, CODE_128, DATA_MATRIX, EAN_8, EAN_13, ITF, MAXICODE, PDF_417, QR_CODE, RSS_14, RSS_EXPANDED, UPC_A, UPC_E, UPC_EAN_EXTENSION', 'QR_CODE', false, false, false, false, '', ''),
+ new PropertyMeta('imageType', 'Image Type', "Image type of the barcode such as png", 'string', 'JPG, GIF, PNG', 'PNG', false, false, false, false, '', ''),
+ new PropertyMeta('width', 'Width', "Width of the barcode", 'number', '', '100', false, false, false, false, '', ''),
+ new PropertyMeta('height', 'Height', "Height of the barcode", 'number', '', '100', false, false, false, false, '', ''),
], [
]),
new ElementMeta('base64', 'Base64DataFormat', 'Base64', "Encode and decode data using Base64.", 'dataformat,transformation', [
@@ -236,6 +236,7 @@ export const CamelDataFormatMetadata: ElementMeta[] = [
new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('type', 'Type', "Whether to use Csv, Fixed, or KeyValue.", 'string', 'Csv, Fixed, KeyValue', '', true, false, false, false, '', ''),
new PropertyMeta('classType', 'Class Type', "Name of model class to use.", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('defaultValueStringAsNull', 'Default Value String As Null', "To change the default value for string types to be null instead of an empty string.", 'boolean', '', 'false', false, false, false, false, '', ''),
new PropertyMeta('allowEmptyStream', 'Allow Empty Stream', "Whether to allow empty streams in the unmarshal process. If true, no exception will be thrown when a body without records is provided.", 'boolean', '', 'false', false, false, false, false, '', ''),
new PropertyMeta('unwrapSingleInstance', 'Unwrap Single Instance', "When unmarshalling should a single instance be unwrapped and returned instead of wrapped in a java.util.List.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
new PropertyMeta('locale', 'Locale', "To configure a default locale to use, such as us for united states. To use the JVM platform default locale then use the name default", 'string', '', '', false, false, false, false, 'advanced', ''),
@@ -258,10 +259,10 @@ export const CamelDataFormatMetadata: ElementMeta[] = [
new ElementMeta('crypto', 'CryptoDataFormat', 'Crypto (Java Cryptographic Extension)', "Encrypt and decrypt messages using Java Cryptography Extension (JCE).", 'dataformat,transformation,security', [
new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('algorithm', 'Algorithm', "The JCE algorithm name indicating the cryptographic algorithm that will be used.", 'string', '', '', false, false, false, false, '', ''),
- new PropertyMeta('keyRef', 'Key Ref', "Refers to the secret key to lookup from the register to use.", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('key', 'Key', "Refers to the secret key to lookup from the register to use.", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('cryptoProvider', 'Crypto Provider', "The name of the JCE Security Provider that should be used.", 'string', '', '', false, false, false, false, 'advanced', ''),
- new PropertyMeta('initVectorRef', 'Init Vector Ref', "Refers to a byte array containing the Initialization Vector that will be used to initialize the Cipher.", 'string', '', '', false, false, false, false, 'advanced', ''),
- new PropertyMeta('algorithmParameterRef', 'Algorithm Parameter Ref', "A JCE AlgorithmParameterSpec used to initialize the Cipher. Will lookup the type using the given name as a java.security.spec.AlgorithmParameterSpec type.", 'string', '', '', false, false, false, false, 'advanced', ''),
+ new PropertyMeta('initVector', 'Init Vector', "Refers to a byte array containing the Initialization Vector that will be used to initialize the Cipher.", 'string', '', '', false, false, false, false, 'advanced', ''),
+ new PropertyMeta('algorithmParameterSpec', 'Algorithm Parameter Spec', "A JCE AlgorithmParameterSpec used to initialize the Cipher. Will lookup the type using the given name as a java.security.spec.AlgorithmParameterSpec type.", 'string', '', '', false, false, false, false, 'advanced', ''),
new PropertyMeta('bufferSize', 'Buffer Size', "The size of the buffer used in the signature process.", 'number', '', '4096', false, false, false, false, '', ''),
new PropertyMeta('macAlgorithm', 'Mac Algorithm', "The JCE algorithm name indicating the Message Authentication algorithm.", 'string', '', 'HmacSHA1', false, false, false, false, '', ''),
new PropertyMeta('shouldAppendHMAC', 'Should Append HMAC', "Flag indicating that a Message Authentication Code should be calculated and appended to the encrypted data.", 'boolean', '', 'true', false, false, false, false, '', ''),
@@ -270,15 +271,14 @@ export const CamelDataFormatMetadata: ElementMeta[] = [
]),
new ElementMeta('csv', 'CsvDataFormat', 'CSV', "Handle CSV (Comma Separated Values) payloads.", 'dataformat,transformation,csv', [
new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
- new PropertyMeta('formatRef', 'Format Ref', "The reference format to use, it will be updated with the other format options, the default value is CSVFormat.DEFAULT", 'string', '', '', false, false, false, false, 'advanced', ''),
- new PropertyMeta('formatName', 'Format Name', "The name of the format to use, the default value is CSVFormat.DEFAULT", 'string', 'DEFAULT, EXCEL, INFORMIX_UNLOAD, INFORMIX_UNLOAD_CSV, MYSQL, RFC4180', 'DEFAULT', false, false, false, false, 'advanced', ''),
+ new PropertyMeta('format', 'Format', "The format to use.", 'string', 'DEFAULT, EXCEL, INFORMIX_UNLOAD, INFORMIX_UNLOAD_CSV, MONGODB_CSV, MONGODB_TSV, MYSQL, ORACLE, POSTGRESQL_CSV, POSTGRESQL_TEXT, RFC4180', 'DEFAULT', false, false, false, false, '', ''),
new PropertyMeta('commentMarkerDisabled', 'Comment Marker Disabled', "Disables the comment marker of the reference format.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('commentMarker', 'Comment Marker', "Sets the comment marker of the reference format.", 'string', '', '', false, false, false, false, 'advanced', ''),
new PropertyMeta('delimiter', 'Delimiter', "Sets the delimiter to use. The default value is , (comma)", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('escapeDisabled', 'Escape Disabled', "Use for disabling using escape character", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('escape', 'Escape', "Sets the escape character to use", 'string', '', '', false, false, false, false, 'advanced', ''),
new PropertyMeta('headerDisabled', 'Header Disabled', "Use for disabling headers", 'boolean', '', 'false', false, false, false, false, '', ''),
- new PropertyMeta('header', 'Header', "To configure the CSV headers", 'string', '', '', false, false, true, true, '', ''),
+ new PropertyMeta('header', 'Header', "To configure the CSV headers. Multiple headers can be separated by comma.", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('allowMissingColumnNames', 'Allow Missing Column Names', "Whether to allow missing column names.", 'boolean', '', 'false', false, false, false, false, '', ''),
new PropertyMeta('ignoreEmptyLines', 'Ignore Empty Lines', "Whether to ignore empty lines.", 'boolean', '', 'false', false, false, false, false, '', ''),
new PropertyMeta('ignoreSurroundingSpaces', 'Ignore Surrounding Spaces', "Whether to ignore surrounding spaces", 'boolean', '', 'false', false, false, false, false, '', ''),
@@ -323,6 +323,7 @@ export const CamelDataFormatMetadata: ElementMeta[] = [
new PropertyMeta('flatpack', 'flatpack', "flatpack", 'FlatpackDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('fory', 'fory', "fory", 'ForyDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('grok', 'grok', "grok", 'GrokDataFormat', '', '', false, false, false, true, '', ''),
+ new PropertyMeta('groovyXml', 'groovyXml', "groovyXml", 'GroovyXmlDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('gzipDeflater', 'gzipDeflater', "gzipDeflater", 'GzipDeflaterDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('hl7', 'hl7', "hl7", 'HL7DataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('ical', 'ical', "ical", 'IcalDataFormat', '', '', false, false, false, true, '', ''),
@@ -344,7 +345,6 @@ export const CamelDataFormatMetadata: ElementMeta[] = [
new PropertyMeta('syslog', 'syslog', "syslog", 'SyslogDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('tarFile', 'tarFile', "tarFile", 'TarFileDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('thrift', 'thrift', "thrift", 'ThriftDataFormat', '', '', false, false, false, true, '', ''),
- new PropertyMeta('tidyMarkup', 'tidyMarkup', "tidyMarkup", 'TidyMarkupDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('univocityCsv', 'univocityCsv', "univocityCsv", 'UniVocityCsvDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('univocityFixed', 'univocityFixed', "univocityFixed", 'UniVocityFixedDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('univocityTsv', 'univocityTsv', "univocityTsv", 'UniVocityTsvDataFormat', '', '', false, false, false, true, '', ''),
@@ -414,7 +414,7 @@ export const CamelDataFormatMetadata: ElementMeta[] = [
new PropertyMeta('allowShortLines', 'Allow Short Lines', "Allows for lines to be shorter than expected and ignores the extra characters", 'boolean', '', 'false', false, false, false, false, '', ''),
new PropertyMeta('ignoreExtraColumns', 'Ignore Extra Columns', "Allows for lines to be longer than expected and ignores the extra characters.", 'boolean', '', 'false', false, false, false, false, '', ''),
new PropertyMeta('textQualifier', 'Text Qualifier', "If the text is qualified with a character. Uses quote character by default.", 'string', '', '', false, false, false, false, 'advanced', ''),
- new PropertyMeta('parserFactoryRef', 'Parser Factory Ref', "References to a custom parser factory to lookup in the registry", 'string', '', '', false, false, false, false, 'advanced', ''),
+ new PropertyMeta('parserFactory', 'Parser Factory', "References to a custom parser factory to lookup in the registry", 'string', '', '', false, false, false, false, 'advanced', ''),
], [
]),
new ElementMeta('fory', 'ForyDataFormat', 'Fory', "Serialize and deserialize messages using Apache Fory", 'dataformat,transformation', [
@@ -433,12 +433,18 @@ export const CamelDataFormatMetadata: ElementMeta[] = [
new PropertyMeta('namedOnly', 'Named Only', "Whether to capture named expressions only or not (i.e. %{IP:ip} but not ${IP})", 'boolean', '', 'false', false, false, false, false, '', ''),
], [
]),
+ new ElementMeta('groovyXml', 'GroovyXmlDataFormat', 'Groovy XML', "Transform between XML and Groovy Node (Map structure) objects.", 'dataformat,transformation,xml', [
+ new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('attributeMapping', 'Attribute Mapping', "To turn on or off attribute mapping. When enabled then keys that start with _ or character will be mapped to an XML attribute, and vise versa. This rule is what Jackson and other XML or JSon libraries uses.", 'boolean', '', 'true', false, false, false, false, '', ''),
+ ], [
+ ]),
new ElementMeta('gzipDeflater', 'GzipDeflaterDataFormat', 'GZip Deflater', "Compress and decompress messages using java.util.zip.GZIPStream.", 'dataformat,transformation', [
new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
], [
]),
new ElementMeta('hl7', 'HL7DataFormat', 'HL7', "Marshal and unmarshal HL7 (Health Care) model objects using the HL7 MLLP codec.", 'dataformat,transformation,health', [
new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('parser', 'Parser', "To use a custom HL7 parser", 'string', '', '', false, false, false, false, 'advanced', ''),
new PropertyMeta('validate', 'Validate', "Whether to validate the HL7 message Is by default true.", 'boolean', '', 'true', false, false, false, false, '', ''),
], [
]),
@@ -490,13 +496,13 @@ export const CamelDataFormatMetadata: ElementMeta[] = [
new PropertyMeta('fragment', 'Fragment', "To turn on marshalling XML fragment trees. By default JAXB looks for XmlRootElement annotation on given class to operate on whole XML tree. This is useful but not always - sometimes generated code does not have XmlRootElement annotation, sometimes you need unmarshall only part of tree. In that case you can use partial unmarshalling. To enable this behaviours you need set property partClass. Camel will pass this class to JAXB's unmarshaler [...]
new PropertyMeta('partClass', 'Part Class', "Name of class used for fragment parsing. See more details at the fragment option.", 'string', '', '', false, false, false, false, 'advanced', ''),
new PropertyMeta('partNamespace', 'Part Namespace', "XML namespace to use for fragment parsing. See more details at the fragment option.", 'string', '', '', false, false, false, false, 'advanced', ''),
- new PropertyMeta('namespacePrefixRef', 'Namespace Prefix Ref', "When marshalling using JAXB or SOAP then the JAXB implementation will automatic assign namespace prefixes, such as ns2, ns3, ns4 etc. To control this mapping, Camel allows you to refer to a map which contains the desired mapping.", 'string', '', '', false, false, false, false, 'advanced', ''),
+ new PropertyMeta('namespacePrefix', 'Namespace Prefix', "When marshalling using JAXB or SOAP then the JAXB implementation will automatically assign namespace prefixes, such as ns2, ns3, ns4 etc. To control this mapping, Camel allows you to refer to a map which contains the desired mapping.", 'string', '', '', false, false, false, false, 'advanced', ''),
new PropertyMeta('xmlStreamWriterWrapper', 'Xml Stream Writer Wrapper', "To use a custom xml stream writer.", 'string', '', '', false, false, false, false, 'advanced', ''),
new PropertyMeta('schemaLocation', 'Schema Location', "To define the location of the schema", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('noNamespaceSchemaLocation', 'No Namespace Schema Location', "To define the location of the namespaceless schema", 'string', '', '', false, false, false, false, 'advanced', ''),
new PropertyMeta('jaxbProviderProperties', 'Jaxb Provider Properties', "Refers to a custom java.util.Map to lookup in the registry containing custom JAXB provider properties to be used with the JAXB marshaller.", 'string', '', '', false, false, false, false, 'advanced', ''),
new PropertyMeta('contentTypeHeader', 'Content Type Header', "Whether the data format should set the Content-Type header with the type from the data format. For example application/xml for data formats marshalling to XML, or application/json for data formats marshalling to JSON", 'boolean', '', 'true', false, false, false, false, '', ''),
- new PropertyMeta('accessExternalSchemaProtocols', 'Access External Schema Protocols', "Only in use if schema validation has been enabled. Restrict access to the protocols specified for external reference set by the schemaLocation attribute, Import and Include element. Examples of protocols are file, http, jar:file. false or none to deny all access to external references; a specific protocol, such as file, to give permission to only the protocol; the keyword all to grant permissio [...]
+ new PropertyMeta('accessExternalSchemaProtocols', 'Access External Schema Protocols', "Only in use if schema validation has been enabled. Restrict access to the protocols specified for external reference set by the schemaLocation attribute, Import and Include element. Examples of protocols are file, http, jar:file. empty, false or none to deny all access to external references; a specific protocol, such as file, to give permission to only the protocol; the keyword all to grant pe [...]
], [
]),
new ElementMeta('jsonApi', 'JsonApiDataFormat', 'JSonApi', "Marshal and unmarshal JSON:API resources using JSONAPI-Converter library.", 'dataformat,transformation', [
@@ -610,23 +616,24 @@ export const CamelDataFormatMetadata: ElementMeta[] = [
new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('contextPath', 'Context Path', "Package name where your JAXB classes are located.", 'string', '', '', true, false, false, false, '', ''),
new PropertyMeta('encoding', 'Encoding', "To overrule and use a specific encoding", 'string', '', '', false, false, false, false, '', ''),
- new PropertyMeta('elementNameStrategyRef', 'Element Name Strategy Ref', "Refers to an element strategy to lookup from the registry. An element name strategy is used for two purposes. The first is to find a xml element name for a given object and soap action when marshaling the object into a SOAP message. The second is to find an Exception class for a given soap fault name. The following three element strategy class name is provided out of the box. QNameStrategy - Uses a fixed qNa [...]
+ new PropertyMeta('elementNameStrategy', 'Element Name Strategy', "Refers to an element strategy to lookup from the registry. An element name strategy is used for two purposes. The first is to find a xml element name for a given object and soap action when marshaling the object into a SOAP message. The second is to find an Exception class for a given soap fault name. The following three element strategy class name is provided out of the box. QNameStrategy - Uses a fixed qName that [...]
new PropertyMeta('version', 'Version', "SOAP version should either be 1.1 or 1.2. Is by default 1.1", 'string', '1.1, 1.2', '1.1', false, false, false, false, '', ''),
- new PropertyMeta('namespacePrefixRef', 'Namespace Prefix Ref', "When marshalling using JAXB or SOAP then the JAXB implementation will automatic assign namespace prefixes, such as ns2, ns3, ns4 etc. To control this mapping, Camel allows you to refer to a map which contains the desired mapping.", 'string', '', '', false, false, false, false, 'advanced', ''),
+ new PropertyMeta('namespacePrefix', 'Namespace Prefix', "When marshalling using JAXB or SOAP then the JAXB implementation will automatic assign namespace prefixes, such as ns2, ns3, ns4 etc. To control this mapping, Camel allows you to refer to a map which contains the desired mapping.", 'string', '', '', false, false, false, false, 'advanced', ''),
new PropertyMeta('schema', 'Schema', "To validate against an existing schema. Your can use the prefix classpath:, file: or http: to specify how the resource should be resolved. You can separate multiple schema files by using the ',' character.", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('ignoreUnmarshalledHeaders', 'Ignore Unmarshalled Headers', "Whether to ignore headers that was not unmarshalled. By default, headers which could not be unmarshalled is recorded in the org.apache.camel.dataformat.soap.UNMARSHALLED_HEADER_LIST header which allows to inspect any problematic header.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
], [
]),
new ElementMeta('swiftMt', 'SwiftMtDataFormat', 'SWIFT MT', "Encode and decode SWIFT MT messages.", 'dataformat,transformation,finance', [
new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
- new PropertyMeta('writeInJson', 'Write In Json', "The flag indicating that messages must be marshalled in a JSON format.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+ new PropertyMeta('writeInJson', 'Write In Json', "The flag indicating that messages must be marshalled in a JSON format.", 'boolean', '', 'false', false, false, false, false, '', ''),
], [
]),
new ElementMeta('swiftMx', 'SwiftMxDataFormat', 'SWIFT MX', "Encode and decode SWIFT MX messages.", 'dataformat,transformation,finance', [
new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
- new PropertyMeta('writeConfigRef', 'Write Config Ref', "Refers to a specific configuration to use when marshalling a message to lookup from the registry.", 'string', '', '', false, false, false, false, 'advanced', ''),
- new PropertyMeta('writeInJson', 'Write In Json', "The flag indicating that messages must be marshalled in a JSON format.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+ new PropertyMeta('writeInJson', 'Write In Json', "The flag indicating that messages must be marshalled in a JSON format.", 'boolean', '', 'false', false, false, false, false, '', ''),
new PropertyMeta('readMessageId', 'Read Message Id', "The type of MX message to produce when unmarshalling an input stream. If not set, it will be automatically detected from the namespace used.", 'string', '', '', false, false, false, false, 'advanced', ''),
- new PropertyMeta('readConfigRef', 'Read Config Ref', "Refers to a specific configuration to use when unmarshalling an input stream to lookup from the registry.", 'string', '', '', false, false, false, false, 'advanced', ''),
+ new PropertyMeta('readConfig', 'Read Config', "Refers to a specific configuration to use when unmarshalling an input stream to lookup from the registry.", 'string', '', '', false, false, false, false, 'advanced', ''),
+ new PropertyMeta('writeConfig', 'Write Config', "Refers to a specific configuration to use when marshalling a message to lookup from the registry.", 'string', '', '', false, false, false, false, 'advanced', ''),
], [
]),
new ElementMeta('syslog', 'SyslogDataFormat', 'Syslog', "Marshall SyslogMessages to RFC3164 and RFC5424 messages and back.", 'dataformat,transformation,monitoring', [
@@ -648,12 +655,6 @@ export const CamelDataFormatMetadata: ElementMeta[] = [
new PropertyMeta('contentTypeHeader', 'Content Type Header', "Whether the data format should set the Content-Type header with the type from the data format. For example application/xml for data formats marshalling to XML, or application/json for data formats marshalling to JSON", 'boolean', '', 'true', false, false, false, false, '', ''),
], [
]),
- new ElementMeta('tidyMarkup', 'TidyMarkupDataFormat', 'TidyMarkup', "Parse (potentially invalid) HTML into valid HTML or DOM.", 'dataformat,transformation', [
- new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
- new PropertyMeta('dataObjectType', 'Data Object Type', "What data type to unmarshal as, can either be org.w3c.dom.Node or java.lang.String. Is by default org.w3c.dom.Node", 'string', 'org.w3c.dom.Node, java.lang.String', 'org.w3c.dom.Node', false, false, false, false, '', ''),
- new PropertyMeta('omitXmlDeclaration', 'Omit Xml Declaration', "When returning a String, do we omit the XML declaration in the top.", 'boolean', '', 'false', false, false, false, false, '', ''),
- ], [
- ]),
new ElementMeta('univocityCsv', 'UniVocityCsvDataFormat', 'uniVocity CSV', "Marshal and unmarshal Java objects from and to CSV (Comma Separated Values) using UniVocity Parsers.", 'dataformat,transformation,csv', [
new PropertyMeta('id', 'Id', "The id of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('delimiter', 'Delimiter', "The delimiter of values", 'string', '', ',', false, false, false, false, '', ''),
@@ -725,11 +726,12 @@ export const CamelDataFormatMetadata: ElementMeta[] = [
new PropertyMeta('secureTagContents', 'Secure Tag Contents', "A boolean value to specify whether the XML Element is to be encrypted or the contents of the XML Element. false = Element Level. true = Element Content Level.", 'boolean', '', 'false', false, false, false, false, '', ''),
new PropertyMeta('keyCipherAlgorithm', 'Key Cipher Algorithm', "The cipher algorithm to be used for encryption/decryption of the asymmetric key. The available choices are: XMLCipher.RSA_v1dot5 XMLCipher.RSA_OAEP XMLCipher.RSA_OAEP_11 The default value is XMLCipher.RSA_OAEP", 'string', 'RSA_v1dot5, RSA_OAEP, RSA_OAEP_11', 'RSA_OAEP', false, false, false, false, '', ''),
new PropertyMeta('recipientKeyAlias', 'Recipient Key Alias', "The key alias to be used when retrieving the recipient's public or private key from a KeyStore when performing asymmetric key encryption or decryption.", 'string', '', '', false, false, false, false, '', ''),
- new PropertyMeta('keyOrTrustStoreParametersRef', 'Key Or Trust Store Parameters Ref', "Refers to a KeyStore instance to lookup in the registry, which is used for configuration options for creating and loading a KeyStore instance that represents the sender's trustStore or recipient's keyStore.", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('keyOrTrustStoreParameters', 'Key Or Trust Store Parameters', "Refers to a KeyStore instance to lookup in the registry, which is used for configuration options for creating and loading a KeyStore instance that represents the sender's trustStore or recipient's keyStore.", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('keyPassword', 'Key Password', "The password to be used for retrieving the private key from the KeyStore. This key is used for asymmetric decryption.", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('digestAlgorithm', 'Digest Algorithm', "The digest algorithm to use with the RSA OAEP algorithm. The available choices are: XMLCipher.SHA1 XMLCipher.SHA256 XMLCipher.SHA512 The default value is XMLCipher.SHA1", 'string', 'SHA1, SHA256, SHA512', 'SHA1', false, false, false, false, '', ''),
new PropertyMeta('mgfAlgorithm', 'Mgf Algorithm', "The MGF Algorithm to use with the RSA OAEP algorithm. The available choices are: EncryptionConstants.MGF1_SHA1 EncryptionConstants.MGF1_SHA256 EncryptionConstants.MGF1_SHA512 The default value is EncryptionConstants.MGF1_SHA1", 'string', 'MGF1_SHA1, MGF1_SHA256, MGF1_SHA512', 'MGF1_SHA1', false, false, false, false, '', ''),
new PropertyMeta('addKeyValueForEncryptedKey', 'Add Key Value For Encrypted Key', "Whether to add the public key used to encrypt the session key as a KeyValue in the EncryptedKey structure or not.", 'boolean', '', 'true', false, false, false, false, '', ''),
+ new PropertyMeta('namespace', 'Namespace', "Refers to a Map XML Namespaces of prefix - uri mappings", 'string', '', '', false, false, false, false, '', ''),
], [
]),
new ElementMeta('yaml', 'YAMLDataFormat', 'YAML', "Marshal and unmarshal Java objects to and from YAML.", 'dataformat,transformation,yaml', [
@@ -743,7 +745,7 @@ export const CamelDataFormatMetadata: ElementMeta[] = [
new PropertyMeta('useApplicationContextClassLoader', 'Use Application Context Class Loader', "Use ApplicationContextClassLoader as custom ClassLoader", 'boolean', '', 'true', false, false, false, false, '', ''),
new PropertyMeta('prettyFlow', 'Pretty Flow', "Force the emitter to produce a pretty YAML document when using the flow style.", 'boolean', '', 'false', false, false, false, false, '', ''),
new PropertyMeta('allowAnyType', 'Allow Any Type', "Allow any class to be un-marshaled", 'boolean', '', 'false', false, false, false, false, '', ''),
- new PropertyMeta('typeFilter', 'Type Filter', "Set the types SnakeYAML is allowed to un-marshall", 'YAMLTypeFilterDefinition', '', '', false, false, true, true, '', ''),
+ new PropertyMeta('typeFilter', 'Type Filter', "Set the types SnakeYAML is allowed to un-marshall. Multiple types can be separated by comma.", 'string', '', '', false, false, false, false, 'advanced', ''),
new PropertyMeta('maxAliasesForCollections', 'Max Aliases For Collections', "Set the maximum amount of aliases allowed for collections.", 'number', '', '50', false, false, false, false, 'advanced', ''),
new PropertyMeta('allowRecursiveKeys', 'Allow Recursive Keys', "Set whether recursive keys are allowed.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
], [
@@ -795,15 +797,17 @@ export const CamelLanguageMetadata: ElementMeta[] = [
new ElementMeta('csimple', 'CSimpleExpression', 'CSimple', "Evaluate a compiled simple expression.", 'language,java', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', ''),
+ new PropertyMeta('trimResult', 'Trim Result', "Whether to trim the returned values when this language are in use. For example the output result may contain unwanted line breaks at the beginning and end such as when using Java DSL with multi-line blocks. Is default false to be backwards compatible with existing behavior.", 'boolean', '', 'false', false, false, false, false, '', ''),
+ new PropertyMeta('pretty', 'Pretty', "To pretty format the output (only JSon or XML supported)", 'boolean', '', 'false', false, false, false, false, '', ''),
new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', ''),
- new PropertyMeta('trim', 'Trim', "Whether to trim the value to remove leading and trailing whitespaces and line breaks", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+ new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks. For example when using DSLs where the source will span across multiple lines and there may be additional line breaks at both the beginning and end.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
], [
]),
new ElementMeta('constant', 'ConstantExpression', 'Constant', "A fixed value set only once during the route startup.", 'language,core', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', ''),
new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', ''),
- new PropertyMeta('trim', 'Trim', "Whether to trim the value to remove leading and trailing whitespaces and line breaks", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+ new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks. For example when using DSLs where the source will span across multiple lines and there may be additional line breaks at both the beginning and end.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
], [
]),
new ElementMeta('datasonnet', 'DatasonnetExpression', 'DataSonnet', "To use DataSonnet scripts for message transformations.", 'language,transformation', [
@@ -813,26 +817,26 @@ export const CamelLanguageMetadata: ElementMeta[] = [
new PropertyMeta('outputMediaType', 'Output Media Type', "The String representation of the MediaType to output", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('source', 'Source', "Source to use, instead of message body. You can prefix with variable:, header:, or property: to specify kind of source. Otherwise, the source is assumed to be a variable. Use empty or null to use default source, which is the message body.", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', ''),
- new PropertyMeta('trim', 'Trim', "Whether to trim the value to remove leading and trailing whitespaces and line breaks", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+ new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks. For example when using DSLs where the source will span across multiple lines and there may be additional line breaks at both the beginning and end.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
], [
]),
new ElementMeta('exchangeProperty', 'ExchangePropertyExpression', 'ExchangeProperty', "Gets a property from the Exchange.", 'language,core', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', ''),
- new PropertyMeta('trim', 'Trim', "Whether to trim the value to remove leading and trailing whitespaces and line breaks", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+ new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks. For example when using DSLs where the source will span across multiple lines and there may be additional line breaks at both the beginning and end.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
], [
]),
new ElementMeta('groovy', 'GroovyExpression', 'Groovy', "Evaluates a Groovy script.", 'language,script', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', ''),
new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', ''),
- new PropertyMeta('trim', 'Trim', "Whether to trim the value to remove leading and trailing whitespaces and line breaks", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+ new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks. For example when using DSLs where the source will span across multiple lines and there may be additional line breaks at both the beginning and end.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
], [
]),
new ElementMeta('header', 'HeaderExpression', 'Header', "Gets a header from the Exchange.", 'language,core', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', ''),
- new PropertyMeta('trim', 'Trim', "Whether to trim the value to remove leading and trailing whitespaces and line breaks", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+ new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks. For example when using DSLs where the source will span across multiple lines and there may be additional line breaks at both the beginning and end.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
], [
]),
new ElementMeta('hl7terser', 'Hl7TerserExpression', 'HL7 Terser', "Get the value of a HL7 message field specified by terse location specification syntax.", 'language,hl7', [
@@ -840,7 +844,7 @@ export const CamelLanguageMetadata: ElementMeta[] = [
new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', ''),
new PropertyMeta('source', 'Source', "Source to use, instead of message body. You can prefix with variable:, header:, or property: to specify kind of source. Otherwise, the source is assumed to be a variable. Use empty or null to use default source, which is the message body.", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', ''),
- new PropertyMeta('trim', 'Trim', "Whether to trim the value to remove leading and trailing whitespaces and line breaks", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+ new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks. For example when using DSLs where the source will span across multiple lines and there may be additional line breaks at both the beginning and end.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
], [
]),
new ElementMeta('java', 'JavaExpression', 'Java', "Evaluates a Java (Java compiled once at runtime) expression.", 'language', [
@@ -849,14 +853,14 @@ export const CamelLanguageMetadata: ElementMeta[] = [
new PropertyMeta('preCompile', 'Pre Compile', "Whether the expression should be pre compiled once during initialization phase. If this is turned off, then the expression is reloaded and compiled on each evaluation.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
new PropertyMeta('singleQuotes', 'Single Quotes', "Whether single quotes can be used as replacement for double quotes. This is convenient when you need to work with strings inside strings.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', ''),
- new PropertyMeta('trim', 'Trim', "Whether to trim the value to remove leading and trailing whitespaces and line breaks", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+ new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks. For example when using DSLs where the source will span across multiple lines and there may be additional line breaks at both the beginning and end.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
], [
]),
new ElementMeta('js', 'JavaScriptExpression', 'JavaScript', "Evaluates a JavaScript expression.", 'language,javascript', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', ''),
new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', ''),
- new PropertyMeta('trim', 'Trim', "Whether to trim the value to remove leading and trailing whitespaces and line breaks", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+ new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks. For example when using DSLs where the source will span across multiple lines and there may be additional line breaks at both the beginning and end.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
], [
]),
new ElementMeta('jq', 'JqExpression', 'JQ', "Evaluates a JQ expression against a JSON message body.", 'language,json', [
@@ -864,7 +868,7 @@ export const CamelLanguageMetadata: ElementMeta[] = [
new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', ''),
new PropertyMeta('source', 'Source', "Source to use, instead of message body. You can prefix with variable:, header:, or property: to specify kind of source. Otherwise, the source is assumed to be a variable. Use empty or null to use default source, which is the message body.", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', ''),
- new PropertyMeta('trim', 'Trim', "Whether to trim the value to remove leading and trailing whitespaces and line breaks", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+ new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks. For example when using DSLs where the source will span across multiple lines and there may be additional line breaks at both the beginning and end.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
], [
]),
new ElementMeta('jsonpath', 'JsonPathExpression', 'JSONPath', "Evaluates a JSONPath expression against a JSON message body.", 'language,json', [
@@ -878,14 +882,14 @@ export const CamelLanguageMetadata: ElementMeta[] = [
new PropertyMeta('option', 'Option', "To configure additional options on JSONPath. Multiple values can be separated by comma.", 'string', 'DEFAULT_PATH_LEAF_TO_NULL, ALWAYS_RETURN_LIST, AS_PATH_LIST, SUPPRESS_EXCEPTIONS, REQUIRE_PROPERTIES', '', false, false, false, false, 'advanced', ''),
new PropertyMeta('source', 'Source', "Source to use, instead of message body. You can prefix with variable:, header:, or property: to specify kind of source. Otherwise, the source is assumed to be a variable. Use empty or null to use default source, which is the message body.", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', ''),
- new PropertyMeta('trim', 'Trim', "Whether to trim the value to remove leading and trailing whitespaces and line breaks", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+ new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks. For example when using DSLs where the source will span across multiple lines and there may be additional line breaks at both the beginning and end.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
], [
]),
new ElementMeta('language', 'LanguageExpression', 'Language', "Evaluates a custom language.", 'language,core', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('language', 'Language', "The name of the language to use", 'string', '', '', true, false, false, false, '', ''),
new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', ''),
- new PropertyMeta('trim', 'Trim', "Whether to trim the value to remove leading and trailing whitespaces and line breaks", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+ new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks. For example when using DSLs where the source will span across multiple lines and there may be additional line breaks at both the beginning and end.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
], [
]),
new ElementMeta('method', 'MethodCallExpression', 'Bean Method', "Calls a Java bean method.", 'language,core,java', [
@@ -896,42 +900,45 @@ export const CamelLanguageMetadata: ElementMeta[] = [
new PropertyMeta('scope', 'Scope', "Scope of bean. When using singleton scope (default) the bean is created or looked up only once and reused for the lifetime of the endpoint. The bean should be thread-safe in case concurrent threads is calling the bean at the same time. When using request scope the bean is created or looked up once per request (exchange). This can be used if you want to store state on a bean while processing a request and you want to call the same bean instance [...]
new PropertyMeta('validate', 'Validate', "Whether to validate the bean has the configured method.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', ''),
- new PropertyMeta('trim', 'Trim', "Whether to trim the value to remove leading and trailing whitespaces and line breaks", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+ new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks. For example when using DSLs where the source will span across multiple lines and there may be additional line breaks at both the beginning and end.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
], [
]),
new ElementMeta('mvel', 'MvelExpression', 'MVEL', "Evaluates a MVEL template.", 'language,java', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', ''),
new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', ''),
- new PropertyMeta('trim', 'Trim', "Whether to trim the value to remove leading and trailing whitespaces and line breaks", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+ new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks. For example when using DSLs where the source will span across multiple lines and there may be additional line breaks at both the beginning and end.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
], [
]),
new ElementMeta('python', 'PythonExpression', 'Python', "Evaluates a Python expression.", 'language,python', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', ''),
new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', ''),
- new PropertyMeta('trim', 'Trim', "Whether to trim the value to remove leading and trailing whitespaces and line breaks", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+ new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks. For example when using DSLs where the source will span across multiple lines and there may be additional line breaks at both the beginning and end.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
], [
]),
new ElementMeta('ref', 'RefExpression', 'Ref', "Uses an existing expression from the registry.", 'language,core', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', ''),
new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', ''),
- new PropertyMeta('trim', 'Trim', "Whether to trim the value to remove leading and trailing whitespaces and line breaks", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+ new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks. For example when using DSLs where the source will span across multiple lines and there may be additional line breaks at both the beginning and end.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
], [
]),
new ElementMeta('simple', 'SimpleExpression', 'Simple', "Evaluates a Camel simple expression.", 'language,core,java', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', ''),
+ new PropertyMeta('trimResult', 'Trim Result', "Whether to trim the returned values when this language are in use. For example the output result may contain unwanted line breaks at the beginning and end such as when using Java DSL with multi-line blocks. Is default false to be backwards compatible with existing behavior.", 'boolean', '', 'false', false, false, false, false, '', ''),
+ new PropertyMeta('pretty', 'Pretty', "To pretty format the output (only JSon or XML supported)", 'boolean', '', 'false', false, false, false, false, '', ''),
+ new PropertyMeta('nested', 'Nested', "If the result is a nested simple expression should this expression be evaluated as well", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', ''),
- new PropertyMeta('trim', 'Trim', "Whether to trim the value to remove leading and trailing whitespaces and line breaks", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+ new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks. For example when using DSLs where the source will span across multiple lines and there may be additional line breaks at both the beginning and end.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
], [
]),
new ElementMeta('spel', 'SpELExpression', 'SpEL', "Evaluates a Spring expression (SpEL).", 'language,spring', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', ''),
new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', ''),
- new PropertyMeta('trim', 'Trim', "Whether to trim the value to remove leading and trailing whitespaces and line breaks", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+ new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks. For example when using DSLs where the source will span across multiple lines and there may be additional line breaks at both the beginning and end.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
], [
]),
new ElementMeta('tokenize', 'TokenizerExpression', 'Tokenize', "Tokenize text payloads using delimiter patterns.", 'language,core', [
@@ -947,13 +954,13 @@ export const CamelLanguageMetadata: ElementMeta[] = [
new PropertyMeta('skipFirst', 'Skip First', "To skip the very first element", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('source', 'Source', "Source to use, instead of message body. You can prefix with variable:, header:, or property: to specify kind of source. Otherwise, the source is assumed to be a variable. Use empty or null to use default source, which is the message body.", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', ''),
- new PropertyMeta('trim', 'Trim', "Whether to trim the value to remove leading and trailing whitespaces and line breaks", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+ new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks. For example when using DSLs where the source will span across multiple lines and there may be additional line breaks at both the beginning and end.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
], [
]),
new ElementMeta('variable', 'VariableExpression', 'Variable', "Gets a variable", 'language,core', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', ''),
- new PropertyMeta('trim', 'Trim', "Whether to trim the value to remove leading and trailing whitespaces and line breaks", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+ new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks. For example when using DSLs where the source will span across multiple lines and there may be additional line breaks at both the beginning and end.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
], [
]),
new ElementMeta('wasm', 'WasmExpression', 'Wasm', "Call a wasm (web assembly) function.", 'language', [
@@ -961,7 +968,7 @@ export const CamelLanguageMetadata: ElementMeta[] = [
new PropertyMeta('expression', 'Expression', "The expression value in your chosen language syntax", 'string', '', '', true, false, false, false, '', ''),
new PropertyMeta('module', 'Module', "Set the module (the distributable, loadable, and executable unit of code in WebAssembly) resource that provides the expression function.", 'string', '', '', true, false, false, false, '', ''),
new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', ''),
- new PropertyMeta('trim', 'Trim', "Whether to trim the value to remove leading and trailing whitespaces and line breaks", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+ new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks. For example when using DSLs where the source will span across multiple lines and there may be additional line breaks at both the beginning and end.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
], [
]),
new ElementMeta('xtokenize', 'XMLTokenizerExpression', 'XML Tokenize', "Tokenize XML payloads.", 'language,core,xml', [
@@ -972,7 +979,7 @@ export const CamelLanguageMetadata: ElementMeta[] = [
new PropertyMeta('namespace', 'Namespace', "Injects the XML Namespaces of prefix - uri mappings", 'PropertyDefinition', '', '', false, false, true, true, 'common', ''),
new PropertyMeta('source', 'Source', "Source to use, instead of message body. You can prefix with variable:, header:, or property: to specify kind of source. Otherwise, the source is assumed to be a variable. Use empty or null to use default source, which is the message body.", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', ''),
- new PropertyMeta('trim', 'Trim', "Whether to trim the value to remove leading and trailing whitespaces and line breaks", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+ new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks. For example when using DSLs where the source will span across multiple lines and there may be additional line breaks at both the beginning and end.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
], [
]),
new ElementMeta('xpath', 'XPathExpression', 'XPath', "Evaluates an XPath expression against an XML payload.", 'language,core,xml', [
@@ -989,7 +996,7 @@ export const CamelLanguageMetadata: ElementMeta[] = [
new PropertyMeta('namespace', 'Namespace', "Injects the XML Namespaces of prefix - uri mappings", 'PropertyDefinition', '', '', false, false, true, true, 'common', ''),
new PropertyMeta('source', 'Source', "Source to use, instead of message body. You can prefix with variable:, header:, or property: to specify kind of source. Otherwise, the source is assumed to be a variable. Use empty or null to use default source, which is the message body.", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', ''),
- new PropertyMeta('trim', 'Trim', "Whether to trim the value to remove leading and trailing whitespaces and line breaks", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+ new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks. For example when using DSLs where the source will span across multiple lines and there may be additional line breaks at both the beginning and end.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
], [
]),
new ElementMeta('xquery', 'XQueryExpression', 'XQuery', "Evaluates an XQuery expressions against an XML payload.", 'language,xml', [
@@ -999,7 +1006,7 @@ export const CamelLanguageMetadata: ElementMeta[] = [
new PropertyMeta('namespace', 'Namespace', "Injects the XML Namespaces of prefix - uri mappings", 'PropertyDefinition', '', '', false, false, true, true, 'common', ''),
new PropertyMeta('source', 'Source', "Source to use, instead of message body. You can prefix with variable:, header:, or property: to specify kind of source. Otherwise, the source is assumed to be a variable. Use empty or null to use default source, which is the message body.", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('resultType', 'Result Type', "Sets the class of the result type (type from output)", 'string', '', '', false, false, false, false, '', ''),
- new PropertyMeta('trim', 'Trim', "Whether to trim the value to remove leading and trailing whitespaces and line breaks", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+ new PropertyMeta('trim', 'Trim', "Whether to trim the source code to remove leading and trailing whitespaces and line breaks. For example when using DSLs where the source will span across multiple lines and there may be additional line breaks at both the beginning and end.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
], [
]),
]
@@ -1007,6 +1014,7 @@ export const CamelLanguageMetadata: ElementMeta[] = [
export const CamelModelMetadata: ElementMeta[] = [
new ElementMeta('aggregate', 'AggregateDefinition', 'Aggregate', "Aggregates many messages into a single message", 'eip,routing', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('correlationExpression', 'Correlation Expression', "The expression used to calculate the correlation key to use for aggregation. The Exchange which has the same correlation key is aggregated together. If the correlation key could not be evaluated an Exception is thrown. You can disable this by using the ignoreBadCorrelationKeys option.", 'ExpressionSubElementDefinition', '', '', true, false, false, true, '', ''),
@@ -1027,7 +1035,7 @@ export const CamelModelMetadata: ElementMeta[] = [
new PropertyMeta('completionInterval', 'Completion Interval', "A repeating period in millis by which the aggregator will complete all current aggregated exchanges. Camel has a background task which is triggered every period. You cannot use this option together with completionTimeout, only one of them can be used.", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('completionTimeout', 'Completion Timeout', "Time in millis that an aggregated exchange should be inactive before its complete (timeout). This option can be set as either a fixed value or using an Expression which allows you to evaluate a timeout dynamically - will use Long as result. If both are set Camel will fallback to use the fixed value if the Expression result was null or 0. You cannot use this option together with completionInterval, only one of the two ca [...]
new PropertyMeta('completionTimeoutCheckerInterval', 'Completion Timeout Checker Interval', "Interval in millis that is used by the background task that checks for timeouts ( org.apache.camel.TimeoutMap ). By default the timeout checker runs every second. The timeout is an approximation and there is no guarantee that the a timeout is triggered exactly after the timeout value. It is not recommended to use very low timeout values or checker intervals.", 'string', '', '1000', false, [...]
- new PropertyMeta('completionFromBatchConsumer', 'Completion From Batch Consumer', "Enables the batch completion mode where we aggregate from a org.apache.camel.BatchConsumer and aggregate the total number of exchanges the org.apache.camel.BatchConsumer has reported as total by checking the exchange property org.apache.camel.Exchange#BATCH_COMPLETE when its complete. This option cannot be used together with discardOnAggregationFailure.", 'boolean', '', 'false', false, false, false [...]
+ new PropertyMeta('completionFromBatchConsumer', 'Completion From Batch Consumer', "Enables the batch completion mode where we aggregate from a org.apache.camel.BatchConsumer and aggregate the total number of exchanges the org.apache.camel.BatchConsumer has reported as total by checking the exchange property org.apache.camel.Exchange#BATCH_COMPLETE when its complete. This option cannot be used together with discardOnAggregationFailure. Important: When using this option, you should [...]
new PropertyMeta('completionOnNewCorrelationGroup', 'Completion On New Correlation Group', "Enables completion on all previous groups when a new incoming correlation group. This can for example be used to complete groups with same correlation keys when they are in consecutive order. Notice when this is enabled then only 1 correlation group can be in progress as when a new correlation group starts, then the previous groups is forced completed.", 'boolean', '', 'false', false, fals [...]
new PropertyMeta('eagerCheckCompletion', 'Eager Check Completion', "Use eager completion checking which means that the completionPredicate will use the incoming Exchange. As opposed to without eager completion checking the completionPredicate will use the aggregated Exchange.", 'boolean', '', 'false', false, false, false, false, '', ''),
new PropertyMeta('ignoreInvalidCorrelationKeys', 'Ignore Invalid Correlation Keys', "If a correlation key cannot be successfully evaluated it will be ignored by logging a DEBUG and then just ignore the incoming Exchange.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
@@ -1048,6 +1056,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('bean', 'BeanDefinition', 'Bean', "Calls a Java bean", 'eip,endpoint', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('ref', 'Ref', "Sets a reference to an existing bean to use, which is looked up from the registry", 'string', '', '', false, false, false, false, '', ''),
@@ -1058,6 +1067,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('doCatch', 'CatchDefinition', 'Do Catch', "Catches exceptions as part of a try, catch, finally block", 'error', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('exception', 'Exception', "The exception(s) to catch.", 'string', '', '', false, false, true, true, '', ''),
@@ -1070,6 +1080,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('choice', 'ChoiceDefinition', 'Choice', "Route messages based on a series of predicates", 'eip,routing', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('when', 'When', "Sets the when nodes", 'WhenDefinition', '', '', false, false, true, true, '', ''),
@@ -1079,6 +1090,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('circuitBreaker', 'CircuitBreakerDefinition', 'Circuit Breaker', "Route messages in a fault tolerance way using Circuit Breaker", 'eip,routing,error', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('configuration', 'Configuration', "Refers to a circuit breaker configuration (such as resillience4j, or microprofile-fault-tolerance) to use for configuring the circuit breaker EIP.", 'string', '', '', false, false, false, false, '', ''),
@@ -1097,6 +1109,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('claimCheck', 'ClaimCheckDefinition', 'Claim Check', "The Claim Check EIP allows you to replace message content with a claim check (a unique key), which can be used to retrieve the message content at a later time.", 'eip,routing', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('operation', 'Operation', "The claim check operation to use. The following operations are supported: Get - Gets (does not remove) the claim check by the given key. GetAndRemove - Gets and removes the claim check by the given key. Set - Sets a new (will override if key already exists) claim check with the given key. Push - Sets a new claim check on the stack (does not use key). Pop - Gets the latest claim check from the stack (does not use key).", 'string', 'Get, [...]
@@ -1108,6 +1121,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('convertBodyTo', 'ConvertBodyDefinition', 'Convert Body To', "Converts the message body to another type", 'eip,transformation', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('type', 'Type', "The java type to convert to", 'string', '', '', true, false, false, false, '', ''),
@@ -1117,6 +1131,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('convertHeaderTo', 'ConvertHeaderDefinition', 'Convert Header To', "Converts the message header to another type", 'eip,transformation', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('name', 'Name', "Name of message header to convert its value The simple language can be used to define a dynamic evaluated header name to be used. Otherwise a constant name will be used.", 'string', '', '', true, false, false, false, '', ''),
@@ -1128,6 +1143,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('convertVariableTo', 'ConvertVariableDefinition', 'Convert Variable To', "Converts the variable to another type", 'eip,transformation', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('name', 'Name', "Name of variable to convert its value The simple language can be used to define a dynamic evaluated header name to be used. Otherwise a constant name will be used.", 'string', '', '', true, false, false, false, '', ''),
@@ -1139,6 +1155,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('delay', 'DelayDefinition', 'Delay', "Delays processing for a specified length of time", 'eip,routing', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('expression', 'Expression', "Expression to define how long time to wait (in millis)", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
@@ -1149,6 +1166,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('dynamicRouter', 'DynamicRouterDefinition', 'Dynamic Router', "Route messages based on dynamic rules", 'eip,routing', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('expression', 'Expression', "Expression to call that returns the endpoint(s) to route to in the dynamic routing. Important: The expression will be called in a while loop fashion, until the expression returns null which means the dynamic router is finished.", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
@@ -1159,6 +1177,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('enrich', 'EnrichDefinition', 'Enrich', "Enriches a message with data from a secondary resource", 'eip,transformation', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('expression', 'Expression', "Expression that computes the endpoint uri to use as the resource endpoint to enrich from", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
@@ -1178,6 +1197,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('filter', 'FilterDefinition', 'Filter', "Filter out messages based using a predicate", 'eip,routing', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('expression', 'Expression', "Expression to determine if the message should be filtered or not. If the expression returns an empty value or false then the message is filtered (dropped), otherwise the message is continued being routed.", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
@@ -1187,6 +1207,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('doFinally', 'FinallyDefinition', 'Do Finally', "Path traversed when a try, catch, finally block exits", 'error', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
@@ -1197,6 +1218,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('idempotentConsumer', 'IdempotentConsumerDefinition', 'Idempotent Consumer', "Filters out duplicate messages", 'eip,routing', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('expression', 'Expression', "Expression used to calculate the correlation key to use for duplicate check. The Exchange which has the same correlation key is regarded as a duplicate and will be rejected.", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
@@ -1217,6 +1239,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('loadBalance', 'LoadBalanceDefinition', 'Load Balance', "Balances message processing among a number of nodes", 'eip,routing', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('customLoadBalancer', 'customLoadBalancer', "customLoadBalancer", 'CustomLoadBalancerDefinition', '', '', false, false, false, true, '', ''),
@@ -1231,6 +1254,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('log', 'LogDefinition', 'Logger', "Used for printing custom messages to the logger.", 'eip,routing', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('message', 'Message', "Sets the log message (uses simple language)", 'string', '', '', true, false, false, false, '', ''),
@@ -1243,6 +1267,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('loop', 'LoopDefinition', 'Loop', "Processes a message multiple times", 'eip,routing', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('expression', 'Expression', "Expression to define how many times we should loop. Notice the expression is only evaluated once, and should return a number as how many times to loop. A value of zero or negative means no looping. The loop is like a for-loop fashion, if you want a while loop, then the dynamic router may be a better choice.", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
@@ -1257,6 +1282,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('marshal', 'MarshalDefinition', 'Marshal', "Marshals data into a specified format for transmission over a transport or component", 'eip,dataformat,transformation', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('variableSend', 'Variable Send', "To use a variable as the source for the message body to send. This makes it handy to use variables for user data and to easily control what data to use for sending and receiving. Important: When using send variable then the message body is taken from this variable instead of the current message, however the headers from the message will still be used as well. In other words, the variable is used instead of the message body, but e [...]
@@ -1277,6 +1303,7 @@ export const CamelModelMetadata: ElementMeta[] = [
new PropertyMeta('flatpack', 'flatpack', "flatpack", 'FlatpackDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('fory', 'fory', "fory", 'ForyDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('grok', 'grok', "grok", 'GrokDataFormat', '', '', false, false, false, true, '', ''),
+ new PropertyMeta('groovyXml', 'groovyXml', "groovyXml", 'GroovyXmlDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('gzipDeflater', 'gzipDeflater', "gzipDeflater", 'GzipDeflaterDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('hl7', 'hl7', "hl7", 'HL7DataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('ical', 'ical', "ical", 'IcalDataFormat', '', '', false, false, false, true, '', ''),
@@ -1287,8 +1314,10 @@ export const CamelModelMetadata: ElementMeta[] = [
new PropertyMeta('jsonApi', 'jsonApi', "jsonApi", 'JsonApiDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('lzf', 'lzf', "lzf", 'LZFDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('mimeMultipart', 'mimeMultipart', "mimeMultipart", 'MimeMultipartDataFormat', '', '', false, false, false, true, '', ''),
+ new PropertyMeta('ocsf', 'ocsf', "ocsf", 'OcsfDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('parquetAvro', 'parquetAvro', "parquetAvro", 'ParquetAvroDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('pgp', 'pgp', "pgp", 'PGPDataFormat', '', '', false, false, false, true, '', ''),
+ new PropertyMeta('pqc', 'pqc', "pqc", 'PQCDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('protobuf', 'protobuf', "protobuf", 'ProtobufDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('rss', 'rss', "rss", 'RssDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('smooks', 'smooks', "smooks", 'SmooksDataFormat', '', '', false, false, false, true, '', ''),
@@ -1298,7 +1327,6 @@ export const CamelModelMetadata: ElementMeta[] = [
new PropertyMeta('syslog', 'syslog', "syslog", 'SyslogDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('tarFile', 'tarFile', "tarFile", 'TarFileDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('thrift', 'thrift', "thrift", 'ThriftDataFormat', '', '', false, false, false, true, '', ''),
- new PropertyMeta('tidyMarkup', 'tidyMarkup', "tidyMarkup", 'TidyMarkupDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('univocityCsv', 'univocityCsv', "univocityCsv", 'UniVocityCsvDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('univocityFixed', 'univocityFixed', "univocityFixed", 'UniVocityFixedDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('univocityTsv', 'univocityTsv', "univocityTsv", 'UniVocityTsvDataFormat', '', '', false, false, false, true, '', ''),
@@ -1310,6 +1338,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('multicast', 'MulticastDefinition', 'Multicast', "Routes the same message to multiple paths either sequentially or in parallel.", 'eip,routing', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('aggregationStrategy', 'Aggregation Strategy', "Refers to an AggregationStrategy to be used to assemble the replies from the multicasts, into a single outgoing message from the Multicast. By default Camel will use the last reply as the outgoing message. You can also use a POJO as the AggregationStrategy", 'string', '', '', false, false, false, false, '', 'org.apache.camel.AggregationStrategy'),
@@ -1320,7 +1349,7 @@ export const CamelModelMetadata: ElementMeta[] = [
new PropertyMeta('synchronous', 'Synchronous', "Sets whether synchronous processing should be strictly used. When enabled then the same thread is used to continue routing after the multicast is complete, even if parallel processing is enabled.", 'boolean', '', 'false', false, false, false, false, '', ''),
new PropertyMeta('streaming', 'Streaming', "If enabled then Camel will process replies out-of-order, eg in the order they come back. If disabled, Camel will process replies in the same order as defined by the multicast.", 'boolean', '', 'false', false, false, false, false, '', ''),
new PropertyMeta('stopOnException', 'Stop On Exception', "Will now stop further processing if an exception or failure occurred during processing of an org.apache.camel.Exchange and the caused exception will be thrown. Will also stop if processing the exchange failed (has a fault message) or an exception was thrown and handled by the error handler (such as using onException). In all situations the multicast will stop further processing. This is the same behavior as in pipeline, wh [...]
- new PropertyMeta('timeout', 'Timeout', "Sets a total timeout specified in millis, when using parallel processing. If the Multicast hasn't been able to send and process all replies within the given timeframe, then the timeout triggers and the Multicast breaks out and continues. Notice if you provide a TimeoutAwareAggregationStrategy then the timeout method is invoked before breaking out. If the timeout is reached with running tasks still remaining, certain tasks for which it is di [...]
+ new PropertyMeta('timeout', 'Timeout', "Sets a total timeout specified in millis, when using parallel processing. If the Multicast hasn't been able to send and process all replies within the given timeframe, then the timeout triggers and the Multicast breaks out and continues. The timeout method is invoked before breaking out. If the timeout is reached with running tasks still remaining, certain tasks for which it is difficult for Camel to shut down in a graceful manner may conti [...]
new PropertyMeta('executorService', 'Executor Service', "Refers to a custom Thread Pool to be used for parallel processing. Notice if you set this option, then parallel processing is automatic implied, and you do not have to enable that option as well.", 'string', '', '', false, false, false, false, 'advanced', ''),
new PropertyMeta('onPrepare', 'On Prepare', "Uses the Processor when preparing the org.apache.camel.Exchange to be send. This can be used to deep-clone messages that should be send, or any custom logic needed before the exchange is send.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
new PropertyMeta('shareUnitOfWork', 'Share Unit Of Work', "Shares the org.apache.camel.spi.UnitOfWork with the parent and each of the sub messages. Multicast will by default not share unit of work between the parent exchange and each multicasted exchange. This means each sub exchange has its own individual unit of work.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
@@ -1332,6 +1361,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('pausable', 'PausableDefinition', 'Pausable', "Pausable EIP to support resuming processing from last known offset.", 'eip,routing', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('consumerListener', 'Consumer Listener', "Sets the consumer listener to use", 'string', '', '', true, false, false, false, '', ''),
@@ -1340,6 +1370,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('pipeline', 'PipelineDefinition', 'Pipeline', "Routes the message to a sequence of processors.", 'eip,routing', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
@@ -1347,6 +1378,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('policy', 'PolicyDefinition', 'Policy', "Defines a policy the route will use", 'configuration', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('ref', 'Ref', "Sets a reference to use for lookup the policy in the registry.", 'string', '', '', true, false, false, false, '', ''),
@@ -1355,6 +1387,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('poll', 'PollDefinition', 'Poll', "Polls a message from a static endpoint", 'eip,routing', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('variableReceive', 'Variable Receive', "To use a variable to store the received message body (only body, not headers). This makes it handy to use variables for user data and to easily control what data to use for sending and receiving. Important: When using receive variable then the received body is stored only in this variable and not on the current message.", 'string', '', '', false, false, false, false, '', ''),
@@ -1365,6 +1398,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('pollEnrich', 'PollEnrichDefinition', 'Poll Enrich', "Enriches messages with data polled from a secondary resource", 'eip,transformation', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('expression', 'Expression', "Expression that computes the endpoint uri to use as the resource endpoint to enrich from", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
@@ -1383,6 +1417,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('process', 'ProcessDefinition', 'Process', "Calls a Camel processor", 'eip,endpoint', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('ref', 'Ref', "Reference to the Processor to lookup in the registry to use. A Processor is a class of type org.apache.camel.Processor, which can are to be called by this EIP. In this processor you have custom Java code, that can work with the message, such as to do custom business logic, special message manipulations and so on. By default, the ref, will lookup the bean in the Camel registry. The ref can use prefix that controls how the processor is obtained. You [...]
@@ -1390,6 +1425,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('recipientList', 'RecipientListDefinition', 'Recipient List', "Route messages to a number of dynamically specified recipients", 'eip,routing', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('expression', 'Expression', "Expression that returns which endpoints (url) to send the message to (the recipients). If the expression return an empty value then the message is not sent to any recipients.", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
@@ -1400,7 +1436,7 @@ export const CamelModelMetadata: ElementMeta[] = [
new PropertyMeta('parallelAggregate', 'Parallel Aggregate', "If enabled then the aggregate method on AggregationStrategy can be called concurrently. Notice that this would require the implementation of AggregationStrategy to be implemented as thread-safe. By default this is false meaning that Camel synchronizes the call to the aggregate method. Though in some use-cases this can be used to archive higher performance when the AggregationStrategy is implemented as thread-safe.", 'bo [...]
new PropertyMeta('parallelProcessing', 'Parallel Processing', "If enabled then sending messages to the recipients occurs concurrently. Note the caller thread will still wait until all messages has been fully processed, before it continues. Its only the sending and processing the replies from the recipients which happens concurrently. When parallel processing is enabled, then the Camel routing engin will continue processing using last used thread from the parallel thread pool. How [...]
new PropertyMeta('synchronous', 'Synchronous', "Sets whether synchronous processing should be strictly used. When enabled then the same thread is used to continue routing after the recipient list is complete, even if parallel processing is enabled.", 'boolean', '', 'false', false, false, false, false, '', ''),
- new PropertyMeta('timeout', 'Timeout', "Sets a total timeout specified in millis, when using parallel processing. If the Recipient List hasn't been able to send and process all replies within the given timeframe, then the timeout triggers and the Recipient List breaks out and continues. Notice if you provide a TimeoutAwareAggregationStrategy then the timeout method is invoked before breaking out. If the timeout is reached with running tasks still remaining, certain tasks for whic [...]
+ new PropertyMeta('timeout', 'Timeout', "Sets a total timeout specified in millis, when using parallel processing. If the Recipient List hasn't been able to send and process all replies within the given timeframe, then the timeout triggers and the Recipient List breaks out and continues. The timeout method is invoked before breaking out. If the timeout is reached with running tasks still remaining, certain tasks for which it is difficult for Camel to shut down in a graceful manner [...]
new PropertyMeta('executorService', 'Executor Service', "To use a custom Thread Pool to be used for parallel processing. Notice if you set this option, then parallel processing is automatic implied, and you do not have to enable that option as well.", 'string', '', '', false, false, false, false, 'advanced', ''),
new PropertyMeta('stopOnException', 'Stop On Exception', "Will now stop further processing if an exception or failure occurred during processing of an org.apache.camel.Exchange and the caused exception will be thrown. Will also stop if processing the exchange failed (has a fault message) or an exception was thrown and handled by the error handler (such as using onException). In all situations the recipient list will stop further processing. This is the same behavior as in pipelin [...]
new PropertyMeta('ignoreInvalidEndpoints', 'Ignore Invalid Endpoints', "Ignore the invalidate endpoint exception when try to create a producer with that endpoint", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
@@ -1414,6 +1450,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('removeHeader', 'RemoveHeaderDefinition', 'Remove Header', "Removes a named header from the message", 'eip,transformation', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('name', 'Name', "Name of header to remove", 'string', '', '', true, false, false, false, '', ''),
@@ -1421,6 +1458,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('removeHeaders', 'RemoveHeadersDefinition', 'Remove Headers', "Removes message headers whose name matches a specified pattern", 'eip,transformation', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('pattern', 'Pattern', "Name or pattern of headers to remove. The pattern is matched in the following order: 1 = exact match 2 = wildcard (pattern ends with a and the name starts with the pattern) 3 = regular expression (all of above is case in-sensitive).", 'string', '', '', true, false, false, false, '', ''),
@@ -1429,6 +1467,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('removeProperties', 'RemovePropertiesDefinition', 'Remove Properties', "Removes message exchange properties whose name matches a specified pattern", 'eip,transformation', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('pattern', 'Pattern', "Name or pattern of properties to remove. The pattern is matched in the following order: 1 = exact match 2 = wildcard (pattern ends with a and the name starts with the pattern) 3 = regular expression (all of above is case in-sensitive).", 'string', '', '', true, false, false, false, '', ''),
@@ -1437,6 +1476,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('removeProperty', 'RemovePropertyDefinition', 'Remove Property', "Removes a named property from the message exchange", 'eip,transformation', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('name', 'Name', "Name of property to remove.", 'string', '', '', true, false, false, false, '', ''),
@@ -1444,6 +1484,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('removeVariable', 'RemoveVariableDefinition', 'Remove Variable', "Removes a named variable", 'eip,transformation', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('name', 'Name', "Name of variable to remove.", 'string', '', '', true, false, false, false, '', ''),
@@ -1451,6 +1492,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('resequence', 'ResequenceDefinition', 'Resequence', "Resequences (re-order) messages based on an expression", 'eip,routing', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('expression', 'Expression', "Expression to use for re-ordering the messages, such as a header with a sequence number", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
@@ -1461,6 +1503,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('resumable', 'ResumableDefinition', 'Resumable', "Resume EIP to support resuming processing from last known offset.", 'eip,routing', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('resumeStrategy', 'Resume Strategy', "Sets the resume strategy to use", 'string', '', '', true, false, false, false, '', ''),
@@ -1470,6 +1513,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('rollback', 'RollbackDefinition', 'Rollback', "Forces a rollback by stopping routing the message", 'eip,routing', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('message', 'Message', "Message to use in rollback exception", 'string', '', '', false, false, false, false, '', ''),
@@ -1479,6 +1523,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('routingSlip', 'RoutingSlipDefinition', 'Routing Slip', "Routes a message through a series of steps that are pre-determined (the slip)", 'eip,routing', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('expression', 'Expression', "Expression to define the routing slip, which defines which endpoints to route the message in a pipeline style. Notice the expression is evaluated once, if you want a more dynamic style, then the dynamic router eip is a better choice.", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
@@ -1491,6 +1536,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('saga', 'SagaDefinition', 'Saga', "Enables Sagas on the route", 'eip,routing', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('sagaService', 'Saga Service', "Refers to the id to lookup in the registry for the specific CamelSagaService to use.", 'string', '', '', false, false, false, false, 'advanced', ''),
@@ -1505,6 +1551,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('sample', 'SamplingDefinition', 'Sample', "Extract a sample of the messages passing through a route", 'eip,routing', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('samplePeriod', 'Sample Period', "Sets the sample period during which only a single Exchange will pass through.", 'string', '', '1000', false, false, false, false, '', ''),
@@ -1513,6 +1560,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('script', 'ScriptDefinition', 'Script', "Executes a script from a language which does not change the message body.", 'eip,transformation', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('expression', 'Expression', "Script to be executed.", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
@@ -1520,6 +1568,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('setBody', 'SetBodyDefinition', 'Set Body', "Sets the contents of the message body", 'eip,transformation', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('expression', 'Expression', "Expression that returns the new body to use", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
@@ -1527,6 +1576,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('setExchangePattern', 'SetExchangePatternDefinition', 'Set Exchange Pattern', "Sets the exchange pattern on the message exchange", 'configuration', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('pattern', 'Pattern', "Sets the new exchange pattern of the Exchange to be used from this point forward", 'string', 'InOnly, InOut', '', true, false, false, false, '', ''),
@@ -1534,6 +1584,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('setHeader', 'SetHeaderDefinition', 'Set Header', "Sets the value of a message header", 'eip,transformation', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('name', 'Name', "Name of message header to set a new value The simple language can be used to define a dynamic evaluated header name to be used. Otherwise a constant name will be used.", 'string', '', '', true, false, false, false, '', ''),
@@ -1542,6 +1593,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('setHeaders', 'SetHeadersDefinition', 'Set Headers', "Allows setting multiple headers on the message at the same time.", 'eip,transformation', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('headers', 'Headers', "Contains the headers to be set", 'SetHeaderDefinition', '', '', true, false, true, true, '', ''),
@@ -1549,6 +1601,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('setProperty', 'SetPropertyDefinition', 'Set Property', "Sets a named property on the message exchange", 'eip,transformation', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('name', 'Name', "Name of exchange property to set a new value. The simple language can be used to define a dynamic evaluated exchange property name to be used. Otherwise a constant name will be used.", 'string', '', '', true, false, false, false, '', ''),
@@ -1557,6 +1610,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('setVariable', 'SetVariableDefinition', 'Set Variable', "Sets the value of a variable", 'eip,transformation', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('name', 'Name', "Name of variable to set a new value The simple language can be used to define a dynamic evaluated variable name to be used. Otherwise a constant name will be used.", 'string', '', '', true, false, false, false, '', ''),
@@ -1565,6 +1619,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('setVariables', 'SetVariablesDefinition', 'Set Variables', "Allows setting multiple variables at the same time.", 'eip,transformation', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('variables', 'Variables', "Contains the variables to be set", 'SetVariableDefinition', '', '', true, false, true, true, '', ''),
@@ -1572,6 +1627,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('sort', 'SortDefinition', 'Sort', "Sorts the contents of the message", 'eip,transformation', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('expression', 'Expression', "Optional expression to sort by something else than the message body", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
@@ -1580,6 +1636,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('split', 'SplitDefinition', 'Split', "Splits a single message into many sub-messages.", 'eip,routing', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('expression', 'Expression', "Expression of how to split the message body, such as as-is, using a tokenizer, or using a xpath.", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
@@ -1592,7 +1649,7 @@ export const CamelModelMetadata: ElementMeta[] = [
new PropertyMeta('synchronous', 'Synchronous', "Sets whether synchronous processing should be strictly used. When enabled then the same thread is used to continue routing after the split is complete, even if parallel processing is enabled.", 'boolean', '', 'false', false, false, false, false, '', ''),
new PropertyMeta('streaming', 'Streaming', "When in streaming mode, then the splitter splits the original message on-demand, and each split message is processed one by one. This reduces memory usage as the splitter do not split all the messages first, but then we do not know the total size, and therefore the org.apache.camel.Exchange#SPLIT_SIZE is empty. In non-streaming mode (default) the splitter will split each message first, to know the total size, and then process each messa [...]
new PropertyMeta('stopOnException', 'Stop On Exception', "Will now stop further processing if an exception or failure occurred during processing of an org.apache.camel.Exchange and the caused exception will be thrown. Will also stop if processing the exchange failed (has a fault message) or an exception was thrown and handled by the error handler (such as using onException). In all situations the splitter will stop further processing. This is the same behavior as in pipeline, whi [...]
- new PropertyMeta('timeout', 'Timeout', "Sets a total timeout specified in millis, when using parallel processing. If the Splitter hasn't been able to split and process all the sub messages within the given timeframe, then the timeout triggers and the Splitter breaks out and continues. Notice if you provide a TimeoutAwareAggregationStrategy then the timeout method is invoked before breaking out. If the timeout is reached with running tasks still remaining, certain tasks for which [...]
+ new PropertyMeta('timeout', 'Timeout', "Sets a total timeout specified in millis, when using parallel processing. If the Splitter hasn't been able to send and process all replies within the given timeframe, then the timeout triggers and the Splitter breaks out and continues. The timeout method is invoked before breaking out. If the timeout is reached with running tasks still remaining, certain tasks for which it is difficult for Camel to shut down in a graceful manner may continu [...]
new PropertyMeta('executorService', 'Executor Service', "To use a custom Thread Pool to be used for parallel processing. Notice if you set this option, then parallel processing is automatically implied, and you do not have to enable that option as well.", 'string', '', '', false, false, false, false, 'advanced', ''),
new PropertyMeta('onPrepare', 'On Prepare', "Uses the Processor when preparing the org.apache.camel.Exchange to be sent. This can be used to deep-clone messages that should be sent, or any custom logic needed before the exchange is sent.", 'string', '', '', false, false, false, false, 'advanced', 'org.apache.camel.Processor'),
new PropertyMeta('shareUnitOfWork', 'Share Unit Of Work', "Shares the org.apache.camel.spi.UnitOfWork with the parent and each of the sub messages. Splitter will by default not share unit of work between the parent exchange and each split exchange. This means each split exchange has its own individual unit of work.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
@@ -1604,6 +1661,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('step', 'StepDefinition', 'Step', "Routes the message to a sequence of processors which is grouped together as one logical name", 'eip,routing', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
@@ -1612,12 +1670,14 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('stop', 'StopDefinition', 'Stop', "Stops the processing of the current message", 'eip,routing', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
], [
]),
new ElementMeta('threads', 'ThreadsDefinition', 'Threads', "Specifies that all steps after this node are processed asynchronously", 'eip,routing', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('executorService', 'Executor Service', "To use a custom thread pool", 'string', '', '', false, false, false, false, 'advanced', ''),
@@ -1629,11 +1689,12 @@ export const CamelModelMetadata: ElementMeta[] = [
new PropertyMeta('allowCoreThreadTimeOut', 'Allow Core Thread Time Out', "Whether idle core threads are allowed to timeout and therefore can shrink the pool size below the core pool size Is by default false", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('threadName', 'Thread Name', "Sets the thread name to use.", 'string', '', 'Threads', false, false, false, false, '', ''),
new PropertyMeta('rejectedPolicy', 'Rejected Policy', "Sets the handler for tasks which cannot be executed by the thread pool.", 'string', 'Abort, CallerRuns', '', false, false, false, false, 'advanced', ''),
- new PropertyMeta('callerRunsWhenRejected', 'Caller Runs When Rejected', "Whether or not to use as caller runs as fallback when a task is rejected being added to the thread pool (when its full). This is only used as fallback if no rejectedPolicy has been configured, or the thread pool has no configured rejection handler. Is by default true", 'string', '', 'true', false, false, false, false, 'advanced', ''),
+ new PropertyMeta('callerRunsWhenRejected', 'Caller Runs When Rejected', "Whether or not to use as caller runs as fallback when a task is rejected being added to the thread pool (when its full). This is only used as fallback if no rejectedPolicy has been configured, or the thread pool has no configured rejection handler. Is by default true", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
], [
]),
new ElementMeta('throttle', 'ThrottleDefinition', 'Throttle', "Controls the rate at which messages are passed to the next node in the route", 'eip,routing', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('expression', 'Expression', "Expression to configure the maximum number of messages to throttle per request", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
@@ -1648,6 +1709,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('throwException', 'ThrowExceptionDefinition', 'Throw Exception', "Throws an exception", 'error', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('message', 'Message', "To create a new exception instance and use the given message as caused message (supports simple language)", 'string', '', '', false, false, false, false, '', ''),
@@ -1657,6 +1719,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('to', 'ToDefinition', 'To', "Sends the message to a static endpoint", 'eip,routing', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('variableSend', 'Variable Send', "To use a variable as the source for the message body to send. This makes it handy to use variables for user data and to easily control what data to use for sending and receiving. Important: When using send variable then the message body is taken from this variable instead of the current message, however the headers from the message will still be used as well. In other words, the variable is used instead of the message body, but e [...]
@@ -1669,6 +1732,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('toD', 'ToDynamicDefinition', 'To D', "Sends the message to a dynamic endpoint", 'eip,routing', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('uri', 'Uri', "The uri of the endpoint to send to. The uri can be dynamic computed using the org.apache.camel.language.simple.SimpleLanguage expression.", 'string', '', '', true, false, false, false, '', ''),
@@ -1685,6 +1749,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('tokenizer', 'TokenizerDefinition', 'Specialized tokenizer for AI applications', "Represents a Camel tokenizer for AI.", 'eip,transformation,ai', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('langChain4jCharacterTokenizer', 'langChain4jCharacterTokenizer', "langChain4jCharacterTokenizer", 'LangChain4jCharacterTokenizerDefinition', '', '', false, false, false, true, '', ''),
@@ -1696,23 +1761,33 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('transacted', 'TransactedDefinition', 'Transacted', "Enables transaction on the route", 'configuration', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('ref', 'Ref', "Sets a reference to use for lookup the policy in the registry.", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
], [
]),
+ new ElementMeta('transformDataType', 'TransformDataTypeDefinition', 'Transform Data Type', "Transforms the message body based on known data type transformers.", 'eip,transformation', [
+ new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
+ new PropertyMeta('fromType', 'From Type', "From type used in data type transformation.", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('toType', 'To Type', "To type used as a target data type in the transformation.", 'string', '', '', true, false, false, false, '', ''),
+ ], [
+ ]),
new ElementMeta('transform', 'TransformDefinition', 'Transform', "Transforms the message body based on an expression", 'eip,transformation', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('expression', 'Expression', "Expression to return the transformed message body (the new message body to use)", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
- new PropertyMeta('fromType', 'From Type', "From type used in data type transformation.", 'string', '', '', false, false, false, false, '', ''),
- new PropertyMeta('toType', 'To Type', "To type used as a target data type in the transformation.", 'string', '', '', false, false, false, false, '', ''),
], [
]),
new ElementMeta('doTry', 'TryDefinition', 'Do Try', "Marks the beginning of a try, catch, finally block", 'eip,routing,error', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('doCatch', 'Do Catch', "Catches exceptions as part of a try, catch, finally block", 'CatchDefinition', '', '', false, false, true, true, '', ''),
@@ -1722,6 +1797,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('unmarshal', 'UnmarshalDefinition', 'Unmarshal', "Converts the message data received from the wire into a format that Apache Camel processors can consume", 'eip,dataformat,transformation', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('variableSend', 'Variable Send', "To use a variable as the source for the message body to send. This makes it handy to use variables for user data and to easily control what data to use for sending and receiving. Important: When using send variable then the message body is taken from this variable instead of the current message, however the headers from the message will still be used as well. In other words, the variable is used instead of the message body, but e [...]
@@ -1743,6 +1819,7 @@ export const CamelModelMetadata: ElementMeta[] = [
new PropertyMeta('flatpack', 'flatpack', "flatpack", 'FlatpackDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('fory', 'fory', "fory", 'ForyDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('grok', 'grok', "grok", 'GrokDataFormat', '', '', false, false, false, true, '', ''),
+ new PropertyMeta('groovyXml', 'groovyXml', "groovyXml", 'GroovyXmlDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('gzipDeflater', 'gzipDeflater', "gzipDeflater", 'GzipDeflaterDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('hl7', 'hl7', "hl7", 'HL7DataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('ical', 'ical', "ical", 'IcalDataFormat', '', '', false, false, false, true, '', ''),
@@ -1753,8 +1830,10 @@ export const CamelModelMetadata: ElementMeta[] = [
new PropertyMeta('jsonApi', 'jsonApi', "jsonApi", 'JsonApiDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('lzf', 'lzf', "lzf", 'LZFDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('mimeMultipart', 'mimeMultipart', "mimeMultipart", 'MimeMultipartDataFormat', '', '', false, false, false, true, '', ''),
+ new PropertyMeta('ocsf', 'ocsf', "ocsf", 'OcsfDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('parquetAvro', 'parquetAvro', "parquetAvro", 'ParquetAvroDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('pgp', 'pgp', "pgp", 'PGPDataFormat', '', '', false, false, false, true, '', ''),
+ new PropertyMeta('pqc', 'pqc', "pqc", 'PQCDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('protobuf', 'protobuf', "protobuf", 'ProtobufDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('rss', 'rss', "rss", 'RssDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('smooks', 'smooks', "smooks", 'SmooksDataFormat', '', '', false, false, false, true, '', ''),
@@ -1764,7 +1843,6 @@ export const CamelModelMetadata: ElementMeta[] = [
new PropertyMeta('syslog', 'syslog', "syslog", 'SyslogDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('tarFile', 'tarFile', "tarFile", 'TarFileDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('thrift', 'thrift', "thrift", 'ThriftDataFormat', '', '', false, false, false, true, '', ''),
- new PropertyMeta('tidyMarkup', 'tidyMarkup', "tidyMarkup", 'TidyMarkupDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('univocityCsv', 'univocityCsv', "univocityCsv", 'UniVocityCsvDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('univocityFixed', 'univocityFixed', "univocityFixed", 'UniVocityFixedDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('univocityTsv', 'univocityTsv', "univocityTsv", 'UniVocityTsvDataFormat', '', '', false, false, false, true, '', ''),
@@ -1776,6 +1854,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('validate', 'ValidateDefinition', 'Validate', "Validates a message based on an expression", 'eip,transformation', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('expression', 'Expression', "Expression to use for validation as a predicate. The expression should return either true or false. If returning false the message is invalid and an exception is thrown.", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
@@ -1784,6 +1863,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('wireTap', 'WireTapDefinition', 'Wire Tap', "Routes a copy of a message (or creates a new message) to a secondary destination while continue routing the original message.", 'eip,routing', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('copy', 'Copy', "Uses a copy of the original exchange", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
@@ -1804,6 +1884,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('intercept', 'InterceptDefinition', 'Intercept', "Intercepts a message at each step in the route", 'configuration', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('onWhen', 'On When', "To use an expression to only trigger intercepting in specific situations", 'OnWhenDefinition', '', '', false, false, false, true, '', ''),
@@ -1815,6 +1896,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('interceptFrom', 'InterceptFromDefinition', 'Intercept From', "Intercepts incoming messages", 'configuration', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('uri', 'Uri', "Intercept incoming messages from the uri or uri pattern. If this option is not configured, then all incoming messages is intercepted.", 'string', '', '', false, false, false, false, '', ''),
@@ -1828,6 +1910,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('interceptSendToEndpoint', 'InterceptSendToEndpointDefinition', 'Intercept Send To Endpoint', "Intercepts messages being sent to an endpoint", 'configuration', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('uri', 'Uri', "Intercept sending to the uri or uri pattern.", 'string', '', '', true, false, false, false, '', ''),
@@ -1843,6 +1926,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('onCompletion', 'OnCompletionDefinition', 'On Completion', "Route to be executed when normal route processing completes", 'configuration', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('mode', 'Mode', "Sets the on completion mode. The default value is AfterConsumer", 'string', 'AfterConsumer, BeforeConsumer', 'AfterConsumer', false, false, false, false, 'advanced', ''),
@@ -1858,6 +1942,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('onException', 'OnExceptionDefinition', 'On Exception', "Route to be executed when an exception is thrown", 'error', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('exception', 'Exception', "A set of exceptions to react upon.", 'string', '', '', true, false, true, true, '', ''),
@@ -1891,13 +1976,14 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('route', 'RouteDefinition', 'Route', "A Camel route", 'configuration', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('group', 'Group', "The group name for this route. Multiple routes can belong to the same group.", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('nodePrefixId', 'Node Prefix Id', "Sets a prefix to use for all node ids (not route id).", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('routeConfigurationId', 'Route Configuration Id', "The route configuration id or pattern this route should use for configuration. Multiple id/pattern can be separated by comma.", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('autoStartup', 'Auto Startup', "Whether to auto start this route", 'boolean', '', 'true', false, false, false, false, '', ''),
new PropertyMeta('startupOrder', 'Startup Order', "To configure the ordering of the routes being started", 'number', '', '', false, false, false, false, 'advanced', ''),
- new PropertyMeta('streamCache', 'Stream Cache', "Whether stream caching is enabled on this route.", 'boolean', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('streamCache', 'Stream Cache', "Whether stream caching is enabled on this route.", 'boolean', '', 'false', false, false, false, false, '', ''),
new PropertyMeta('trace', 'Trace', "Whether tracing is enabled on this route.", 'boolean', '', 'false', false, false, false, false, '', ''),
new PropertyMeta('messageHistory', 'Message History', "Whether message history is enabled on this route.", 'boolean', '', 'false', false, false, false, false, '', ''),
new PropertyMeta('logMask', 'Log Mask', "Whether security mask for Logging is enabled on this route.", 'boolean', '', 'false', false, false, false, false, '', ''),
@@ -1914,6 +2000,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('routeTemplate', 'RouteTemplateDefinition', 'Route Template', "Defines a route template (parameterized routes)", 'configuration', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('route', 'Route', "To define the route in the template", 'RouteDefinition', '', '', true, false, false, true, '', ''),
new PropertyMeta('beans', 'beans', "beans", 'BeanFactoryDefinition', '', '', false, false, true, true, '', ''),
@@ -1952,8 +2039,8 @@ export const CamelModelMetadata: ElementMeta[] = [
new PropertyMeta('enableCORS', 'Enable CORS', "Whether to enable CORS headers in the HTTP response. The default value is false.", 'boolean', '', 'false', false, false, false, false, 'consumer,advanced', ''),
new PropertyMeta('enableNoContentResponse', 'Enable No Content Response', "Whether to return HTTP 204 with an empty body when a response contains an empty JSON object or XML root object. The default value is false.", 'boolean', '', 'false', false, false, false, false, 'consumer,advanced', ''),
new PropertyMeta('inlineRoutes', 'Inline Routes', "Inline routes in rest-dsl which are linked using direct endpoints. Each service in Rest DSL is an individual route, meaning that you would have at least two routes per service (rest-dsl, and the route linked from rest-dsl). By inlining (default) allows Camel to optimize and inline this as a single route, however this requires to use direct endpoints, which must be unique per service. If a route is not using direct endpoint then t [...]
- new PropertyMeta('jsonDataFormat', 'Json Data Format', "Name of specific json data format to use. By default jackson will be used. Important: This option is only for setting a custom name of the data format, not to refer to an existing data format instance.", 'string', '', '', false, false, false, false, 'advanced', ''),
- new PropertyMeta('xmlDataFormat', 'Xml Data Format', "Name of specific XML data format to use. By default jaxb will be used. Important: This option is only for setting a custom name of the data format, not to refer to an existing data format instance.", 'string', '', '', false, false, false, false, 'advanced', ''),
+ new PropertyMeta('jsonDataFormat', 'Json Data Format', "Name of specific json data format to use. By default, jackson will be used. Important: This option is only for setting a custom name of the data format, not to refer to an existing data format instance.", 'string', 'jackson, jsonb, fastjson, gson', 'jackson', false, false, false, false, 'advanced', ''),
+ new PropertyMeta('xmlDataFormat', 'Xml Data Format', "Name of specific XML data format to use. By default jaxb will be used, but jacksonXml is also supported. Important: This option is only for setting a custom name of the data format, not to refer to an existing data format instance.", 'string', 'jaxb, jacksonXml', 'jaxb', false, false, false, false, 'advanced', ''),
new PropertyMeta('componentProperty', 'Component Property', "Allows to configure as many additional properties for the rest component in use.", 'RestPropertyDefinition', '', '', false, false, true, true, 'advanced', ''),
new PropertyMeta('endpointProperty', 'Endpoint Property', "Allows to configure as many additional properties for the rest endpoint in use.", 'RestPropertyDefinition', '', '', false, false, true, true, 'advanced', ''),
new PropertyMeta('consumerProperty', 'Consumer Property', "Allows to configure as many additional properties for the rest consumer in use.", 'RestPropertyDefinition', '', '', false, false, true, true, 'consumer,advanced', ''),
@@ -1965,6 +2052,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('rest', 'RestDefinition', 'Rest', "Defines a rest service using the rest-dsl", 'rest', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Whether to disable this REST service from the route during build time. Once an REST service has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('path', 'Path', "Path of the rest service, such as /foo", 'string', '', '', false, false, false, false, '', ''),
@@ -1989,22 +2077,6 @@ export const CamelModelMetadata: ElementMeta[] = [
new PropertyMeta('put', 'put', "put", 'PutDefinition', '', '', false, false, true, true, '', ''),
], [
]),
- new ElementMeta('beanFactory', 'BeanFactoryDefinition', 'Bean', "Define custom beans that can be used in your Camel routes and in general.", 'configuration', [
- new PropertyMeta('name', 'Name', "The name of the bean (bean id)", 'string', '', '', true, false, false, false, '', ''),
- new PropertyMeta('type', 'Type', "The class name (fully qualified) of the bean", 'string', '', '', true, false, false, false, '', ''),
- new PropertyMeta('initMethod', 'Init Method', "The name of the custom initialization method to invoke after setting bean properties. The method must have no arguments, but may throw any exception.", 'string', '', '', false, false, false, false, '', ''),
- new PropertyMeta('destroyMethod', 'Destroy Method', "The name of the custom destroy method to invoke on bean shutdown, such as when Camel is shutting down. The method must have no arguments, but may throw any exception.", 'string', '', '', false, false, false, false, '', ''),
- new PropertyMeta('factoryMethod', 'Factory Method', "Name of method to invoke when creating the bean via a factory bean.", 'string', '', '', false, false, false, false, '', ''),
- new PropertyMeta('factoryBean', 'Factory Bean', "Name of factory bean (bean id) to use for creating the bean.", 'string', '', '', false, false, false, false, '', ''),
- new PropertyMeta('builderClass', 'Builder Class', "Fully qualified class name of builder class to use for creating and configuring the bean. The builder will use the properties values to configure the bean.", 'string', '', '', false, false, false, false, '', ''),
- new PropertyMeta('builderMethod', 'Builder Method', "Name of method when using builder class. This method is invoked after configuring to create the actual bean. This method is often named build (used by default).", 'string', '', 'build', false, false, false, false, '', ''),
- new PropertyMeta('scriptLanguage', 'Script Language', "The script language to use when using inlined script for creating the bean, such as groovy, java, javascript etc.", 'string', '', '', false, false, false, false, 'advanced', ''),
- new PropertyMeta('constructors', 'Constructors', "Optional constructor arguments for creating the bean. Arguments correspond to specific index of the constructor argument list, starting from zero.", 'object', '', '', false, false, false, false, '', ''),
- new PropertyMeta('properties', 'Properties', "Optional properties to set on the created bean.", 'object', '', '', false, false, false, false, '', ''),
- new PropertyMeta('script', 'Script', "The script to execute that creates the bean when using scripting languages. If the script use the prefix resource: such as resource:classpath:com/foo/myscript.groovy, resource:file:/var/myscript.groovy, then its loaded from the external resource.", 'string', '', '', false, false, false, false, 'advanced', ''),
- new PropertyMeta('scriptPropertyPlaceholders', 'scriptPropertyPlaceholders', "scriptPropertyPlaceholders", 'boolean', '', '', false, false, false, false, '', ''),
- ], [
- ]),
new ElementMeta('contextScan', 'ContextScanDefinition', 'Context Scan', "Scans for Java org.apache.camel.builder.RouteBuilder instances in the context org.apache.camel.spi.Registry .", 'configuration', [
new PropertyMeta('includeNonSingletons', 'Include Non Singletons', "Whether to include non-singleton beans (prototypes) By default only singleton beans is included in the context scan", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('excludes', 'Excludes', "Exclude finding route builder from these java package names.", 'string', '', '', false, false, true, true, '', ''),
@@ -2042,6 +2114,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('from', 'FromDefinition', 'From', "Act as a message source as input to a route", 'eip,routing', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('uri', 'Uri', "Sets the URI of the endpoint to use", 'string', '', '', true, false, false, false, '', ''),
new PropertyMeta('variableReceive', 'Variable Receive', "To use a variable to store a copy of the received message body (only body, not headers). This is handy for easy access to the received message body via variables.", 'string', '', '', false, false, false, false, '', ''),
@@ -2060,6 +2133,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('inputType', 'InputTypeDefinition', 'Input Type', "Set the expected data type of the input message. If the actual message type is different at runtime, camel look for a required Transformer and apply if exists. If validate attribute is true then camel applies Validator as well. Type name consists of two parts, 'scheme' and 'name' connected with ':'. For Java type 'name' is a fully qualified class name. For example {code java:java.lang.String} , {code json:ABCOrder} . [...]
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('urn', 'Urn', "The input type URN.", 'string', '', '', true, false, false, false, '', ''),
new PropertyMeta('validate', 'Validate', "Whether if validation is required for this input type.", 'boolean', '', 'false', false, false, false, false, '', ''),
@@ -2067,6 +2141,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('onFallback', 'OnFallbackDefinition', 'On Fallback', "Route to be executed when Circuit Breaker EIP executes fallback", 'eip,routing,error', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('fallbackViaNetwork', 'Fallback Via Network', "Whether the fallback goes over the network. If the fallback will go over the network it is another possible point of failure. It is important to execute the fallback command on a separate thread-pool, otherwise if the main command were to become latent and fill the thread-pool this would prevent the fallback from running if the two commands share the same pool.", 'boolean', '', 'false', false, false, false, false, 'a [...]
new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
@@ -2074,8 +2149,9 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('onWhen', 'OnWhenDefinition', 'On When', "To use a predicate to determine when to trigger this.", 'configuration', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
- new PropertyMeta('expression', 'Expression', "expression", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
+ new PropertyMeta('expression', 'Expression', "The predicate to use", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
], [
]),
new ElementMeta('optimisticLockRetryPolicy', 'OptimisticLockRetryPolicyDefinition', 'Optimistic Lock Retry Policy', "To configure optimistic locking", 'configuration', [
@@ -2088,6 +2164,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('otherwise', 'OtherwiseDefinition', 'Otherwise', "Route to be executed when all other choices evaluate to false", 'eip,routing', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('steps', 'steps', "steps", 'CamelElement', '', '', false, false, true, true, '', ''),
@@ -2095,6 +2172,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('outputType', 'OutputTypeDefinition', 'Output Type', "Set the expected data type of the output message. If the actual message type is different at runtime, camel look for a required Transformer and apply if exists. If validate attribute is true then camel applies Validator as well. Type name consists of two parts, 'scheme' and 'name' connected with ':'. For Java type 'name' is a fully qualified class name. For example {code java:java.lang.String} , {code json:ABCOrder [...]
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('urn', 'Urn', "Set output type URN.", 'string', '', '', true, false, false, false, '', ''),
new PropertyMeta('validate', 'Validate', "Whether if validation is required for this output type.", 'boolean', '', 'false', false, false, false, false, '', ''),
@@ -2166,6 +2244,7 @@ export const CamelModelMetadata: ElementMeta[] = [
new PropertyMeta('timeoutExecutorService', 'Timeout Executor Service', "References to a custom thread pool to use when timeout is enabled (uses ForkJoinPool#commonPool() by default)", 'string', '', '', false, false, false, false, 'advanced', ''),
new PropertyMeta('timeoutDuration', 'Timeout Duration', "Configures the thread execution timeout. Default value is 1 second.", 'number', '', '1000', false, false, false, false, '', ''),
new PropertyMeta('timeoutCancelRunningFuture', 'Timeout Cancel Running Future', "Configures whether cancel is called on the running future. Defaults to true.", 'boolean', '', 'true', false, false, false, false, 'advanced', ''),
+ new PropertyMeta('micrometerEnabled', 'Micrometer Enabled', "Whether to enable collecting statistics using Micrometer. This requires adding camel-resilience4j-micrometer JAR to the classpath.", 'boolean', '', 'false', false, false, false, false, '', ''),
new PropertyMeta('recordException', 'Record Exception', "Configure a list of exceptions that are recorded as a failure and thus increase the failure rate. Any exception matching or inheriting from one of the list counts as a failure, unless explicitly ignored via ignoreExceptions.", 'string', '', '', false, false, true, true, 'advanced', ''),
new PropertyMeta('ignoreException', 'Ignore Exception', "Configure a list of exceptions that are ignored and neither count as a failure nor success. Any exception matching or inheriting from one of the list will not count as a failure nor success, even if the exceptions is part of recordExceptions.", 'string', '', '', false, false, true, true, 'advanced', ''),
], [
@@ -2201,6 +2280,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('threadPoolProfile', 'ThreadPoolProfileDefinition', 'Thread Pool Profile', "To configure thread pools", 'configuration', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('defaultProfile', 'Default Profile', "Whether this profile is the default thread pool profile", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('poolSize', 'Pool Size', "Sets the core pool size", 'number', '', '', false, false, false, false, '', ''),
@@ -2218,6 +2298,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('when', 'WhenDefinition', 'When', "Triggers a route when the expression evaluates to true", 'eip,routing', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Disables this EIP from the route.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('expression', 'Expression', "Expression used as the predicate to evaluate whether this when should trigger and route the message or not.", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
@@ -2258,6 +2339,7 @@ export const CamelModelMetadata: ElementMeta[] = [
new PropertyMeta('flatpack', 'flatpack', "flatpack", 'FlatpackDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('fory', 'fory', "fory", 'ForyDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('grok', 'grok', "grok", 'GrokDataFormat', '', '', false, false, false, true, '', ''),
+ new PropertyMeta('groovyXml', 'groovyXml', "groovyXml", 'GroovyXmlDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('gzipDeflater', 'gzipDeflater', "gzipDeflater", 'GzipDeflaterDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('hl7', 'hl7', "hl7", 'HL7DataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('ical', 'ical', "ical", 'IcalDataFormat', '', '', false, false, false, true, '', ''),
@@ -2279,7 +2361,6 @@ export const CamelModelMetadata: ElementMeta[] = [
new PropertyMeta('syslog', 'syslog', "syslog", 'SyslogDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('tarFile', 'tarFile', "tarFile", 'TarFileDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('thrift', 'thrift', "thrift", 'ThriftDataFormat', '', '', false, false, false, true, '', ''),
- new PropertyMeta('tidyMarkup', 'tidyMarkup', "tidyMarkup", 'TidyMarkupDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('univocityCsv', 'univocityCsv', "univocityCsv", 'UniVocityCsvDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('univocityFixed', 'univocityFixed', "univocityFixed", 'UniVocityFixedDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('univocityTsv', 'univocityTsv', "univocityTsv", 'UniVocityTsvDataFormat', '', '', false, false, false, true, '', ''),
@@ -2454,6 +2535,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('delete', 'DeleteDefinition', 'Delete', "Rest DELETE command", 'rest', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Whether to disable this REST service from the route during build time. Once an REST service has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('path', 'Path', "The path mapping URIs of this REST operation such as /{id}.", 'string', '', '', false, false, false, false, '', ''),
@@ -2479,6 +2561,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('get', 'GetDefinition', 'Get', "Rest GET command", 'rest', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Whether to disable this REST service from the route during build time. Once an REST service has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('path', 'Path', "The path mapping URIs of this REST operation such as /{id}.", 'string', '', '', false, false, false, false, '', ''),
@@ -2504,6 +2587,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('head', 'HeadDefinition', 'Head', "Rest HEAD command", 'rest', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Whether to disable this REST service from the route during build time. Once an REST service has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('path', 'Path', "The path mapping URIs of this REST operation such as /{id}.", 'string', '', '', false, false, false, false, '', ''),
@@ -2534,6 +2618,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('openApi', 'OpenApiDefinition', 'Open Api', "To use OpenApi as contract-first with Camel Rest DSL.", 'rest', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Whether to disable all the REST services from the OpenAPI contract from the route during build time. Once an REST service has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('specification', 'Specification', "Path to the OpenApi specification file.", 'string', '', '', true, false, false, false, '', ''),
@@ -2565,6 +2650,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('patch', 'PatchDefinition', 'Patch', "Rest PATCH command", 'rest', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Whether to disable this REST service from the route during build time. Once an REST service has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('path', 'Path', "The path mapping URIs of this REST operation such as /{id}.", 'string', '', '', false, false, false, false, '', ''),
@@ -2590,6 +2676,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('post', 'PostDefinition', 'Post', "Rest POST command", 'rest', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Whether to disable this REST service from the route during build time. Once an REST service has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('path', 'Path', "The path mapping URIs of this REST operation such as /{id}.", 'string', '', '', false, false, false, false, '', ''),
@@ -2615,6 +2702,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('put', 'PutDefinition', 'Put', "Rest PUT command", 'rest', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('disabled', 'Disabled', "Whether to disable this REST service from the route during build time. Once an REST service has been disabled then it cannot be enabled later at runtime.", 'boolean', '', 'false', false, false, false, false, 'advanced', ''),
new PropertyMeta('path', 'Path', "The path mapping URIs of this REST operation such as /{id}.", 'string', '', '', false, false, false, false, '', ''),
@@ -2660,6 +2748,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('restBinding', 'RestBindingDefinition', 'Rest Binding', "To configure rest binding", 'rest', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('consumes', 'Consumes', "To define the content type what the REST service consumes (accept as input), such as application/xml or application/json", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('produces', 'Produces', "To define the content type what the REST service produces (uses for output), such as application/xml or application/json", 'string', '', '', false, false, false, false, '', ''),
@@ -2690,6 +2779,7 @@ export const CamelModelMetadata: ElementMeta[] = [
]),
new ElementMeta('rests', 'RestsDefinition', 'Rests', "A series of rest services defined using the rest-dsl", 'rest', [
new PropertyMeta('id', 'Id', "Sets the id of this node", 'string', '', '', false, false, false, false, '', ''),
+ new PropertyMeta('note', 'Note', "Sets the note of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('description', 'Description', "Sets the description of this node", 'string', '', '', false, false, false, false, '', ''),
new PropertyMeta('rest', 'rest', "rest", 'RestDefinition', '', '', false, false, true, true, '', ''),
], [
@@ -2769,6 +2859,7 @@ export const CamelModelMetadata: ElementMeta[] = [
new PropertyMeta('flatpack', 'flatpack', "flatpack", 'FlatpackDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('fory', 'fory', "fory", 'ForyDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('grok', 'grok', "grok", 'GrokDataFormat', '', '', false, false, false, true, '', ''),
+ new PropertyMeta('groovyXml', 'groovyXml', "groovyXml", 'GroovyXmlDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('gzipDeflater', 'gzipDeflater', "gzipDeflater", 'GzipDeflaterDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('hl7', 'hl7', "hl7", 'HL7DataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('ical', 'ical', "ical", 'IcalDataFormat', '', '', false, false, false, true, '', ''),
@@ -2790,7 +2881,6 @@ export const CamelModelMetadata: ElementMeta[] = [
new PropertyMeta('syslog', 'syslog', "syslog", 'SyslogDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('tarFile', 'tarFile', "tarFile", 'TarFileDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('thrift', 'thrift', "thrift", 'ThriftDataFormat', '', '', false, false, false, true, '', ''),
- new PropertyMeta('tidyMarkup', 'tidyMarkup', "tidyMarkup", 'TidyMarkupDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('univocityCsv', 'univocityCsv', "univocityCsv", 'UniVocityCsvDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('univocityFixed', 'univocityFixed', "univocityFixed", 'UniVocityFixedDataFormat', '', '', false, false, false, true, '', ''),
new PropertyMeta('univocityTsv', 'univocityTsv', "univocityTsv", 'UniVocityTsvDataFormat', '', '', false, false, false, true, '', ''),
@@ -2838,7 +2928,7 @@ export const CamelModelMetadata: ElementMeta[] = [
], [
]),
new ElementMeta('predicateValidator', 'PredicateValidatorDefinition', 'Predicate Validator', "To use a predicate to perform validation on the route level.", 'validation', [
- new PropertyMeta('expression', 'Expression', "expression", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
+ new PropertyMeta('expression', 'Expression', "The predicate to use for validation.", 'ExpressionDefinition', '', '', true, false, false, true, '', ''),
new PropertyMeta('type', 'Type', "Set the data type name. If you specify 'xml:XYZ', the validator will be picked up if message type is 'xml:XYZ'. If you specify just 'xml', the validator matches with all of 'xml' message type like 'xml:ABC' or 'xml:DEF'.", 'string', '', '', false, false, false, false, '', ''),
], [
]),
@@ -2851,79 +2941,88 @@ export const CamelModelMetadata: ElementMeta[] = [
]
export const SensitiveKeys: string[] = [
- "oauthtokenurl",
- "clientid",
- "sassignature",
- "connectionstring",
- "sslpassword",
+ "accesskey",
"accesstoken",
+ "accesstokensecret",
"accountkey",
- "proxyauthusername",
- "sslkeypassword",
- "userpassword",
+ "accountsid",
"acltoken",
- "password",
- "accesskey",
+ "api_key",
+ "api_secret",
+ "apikey",
+ "apipassword",
+ "apiuser",
+ "apiusername",
+ "authenticationtoken",
+ "authkey",
+ "authorizationtoken",
+ "authtoken",
+ "azureclientid",
+ "azureclientsecret",
+ "blobaccesskey",
+ "blobstoragesharedkeycredential",
+ "certresourcepassword",
+ "clientid",
+ "clientsecret",
+ "clientsecretcredential",
+ "connectionstring",
+ "consumerkey",
"consumersecret",
- "proxyuser",
- "oauthclientsecret",
- "truststorepassword",
- "accesstokensecret",
- "securerandom",
- "refreshtoken",
- "sessiontoken",
- "publishkey",
- "accountsid",
"emailaddress",
- "blobaccesskey",
- "publickeyid",
+ "httpproxypassword",
+ "kerberosauthticket",
+ "keypassword",
+ "keystorePassword",
+ "keystorepassword",
+ "login",
+ "oauthclientid",
+ "oauthclientsecret",
+ "oauthtoken",
+ "oauthtokenurl",
"p12filename",
- "ssltruststorepassword",
+ "passcode",
"passphrase",
- "privatekeyfile",
- "zookeeperpassword",
- "apiuser",
+ "password",
"personalaccesstoken",
- "authkey",
+ "privatekey",
+ "privatekeyfile",
"privatekeyname",
- "systemid",
- "secretkey",
- "webhookverifytoken",
"privatekeypassword",
+ "proxyauthpassword",
+ "proxyauthusername",
+ "proxypassword",
+ "proxyuser",
+ "proxyusername",
+ "publickeyid",
+ "publishkey",
+ "queueownerawsaccountid",
+ "realm",
+ "refreshtoken",
+ "sascredential",
+ "sasljaasconfig",
+ "saslpassword",
+ "sassignature",
"secret",
- "login",
+ "secretkey",
+ "securerandom",
+ "serviceinstanceid",
+ "sessiontoken",
+ "sharedaccesskey",
"sourceblobaccesskey",
- "apipassword",
- "privatekey",
+ "sslkeypassword",
"sslkeystorepassword",
- "oauthtoken",
- "sascredential",
- "verificationcode",
+ "sslpassword",
+ "ssltruststorepassword",
"subscribekey",
- "certresourcepassword",
- "clientsecretcredential",
- "keystorepassword",
- "oauthclientid",
- "apikey",
- "keystorePassword",
- "clientsecret",
- "tokencredential",
- "blobstoragesharedkeycredential",
- "kerberosauthticket",
- "proxypassword",
- "queueownerawsaccountid",
+ "systemid",
"token",
- "proxyauthpassword",
- "authorizationtoken",
- "sharedaccesskey",
- "apiusername",
- "api_key",
- "sasljaasconfig",
- "httpproxypassword",
- "realm",
+ "tokencredential",
+ "truststorepassword",
"user",
- "api_secret",
- "passcode",
- "consumerkey",
- "username"
+ "userauthenticationcredentials",
+ "username",
+ "userpassword",
+ "verificationcode",
+ "webhookverifytoken",
+ "zookeeperpassword"
]
\ No newline at end of file
diff --git a/karavan-vscode/webview/core/model/TopologyDefinition.ts b/karavan-vscode/webview/core/model/TopologyDefinition.ts
index 3b5b07f7..03f4fbe1 100644
--- a/karavan-vscode/webview/core/model/TopologyDefinition.ts
+++ b/karavan-vscode/webview/core/model/TopologyDefinition.ts
@@ -15,8 +15,8 @@
* limitations under the License.
*/
-import { CamelElement } from './IntegrationDefinition';
-import { FromDefinition, RestDefinition, RouteConfigurationDefinition, RouteDefinition } from './CamelDefinition';
+import {CamelElement} from './IntegrationDefinition';
+import {FromDefinition, RestDefinition, RouteConfigurationDefinition, RouteDefinition} from './CamelDefinition';
export class TopologyRestNode {
path: string;