windmill-components 1.665.1 → 1.677.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/sharedUtils/assets/tokens/colorTokensConfig.d.ts +2 -0
- package/dist/sharedUtils/base.d.ts +1 -0
- package/dist/sharedUtils/cloud.d.ts +1 -0
- package/dist/sharedUtils/common.d.ts +111 -0
- package/dist/sharedUtils/components/apps/components/display/dbtable/queries/count.d.ts +5 -0
- package/dist/sharedUtils/components/apps/components/display/dbtable/queries/delete.d.ts +5 -0
- package/dist/sharedUtils/components/apps/components/display/dbtable/queries/insert.d.ts +5 -0
- package/dist/sharedUtils/components/apps/components/display/dbtable/queries/select.d.ts +13 -0
- package/dist/sharedUtils/components/apps/components/display/dbtable/queries/update.d.ts +11 -0
- package/dist/sharedUtils/components/apps/components/display/dbtable/utils.d.ts +95 -0
- package/dist/sharedUtils/components/apps/editor/appPolicy.d.ts +6 -0
- package/dist/sharedUtils/components/apps/editor/appUtilsCore.d.ts +7 -0
- package/dist/sharedUtils/components/apps/editor/appUtilsS3.d.ts +33 -0
- package/dist/sharedUtils/components/apps/editor/commonAppUtils.d.ts +10 -0
- package/dist/sharedUtils/components/apps/editor/component/components.d.ts +5371 -0
- package/dist/sharedUtils/components/apps/editor/component/default-codes.d.ts +3 -0
- package/dist/sharedUtils/components/apps/editor/component/index.d.ts +3 -0
- package/dist/sharedUtils/components/apps/editor/component/sets.d.ts +7 -0
- package/dist/sharedUtils/components/apps/editor/componentsPanel/componentDefaultProps.d.ts +3 -0
- package/dist/sharedUtils/components/apps/gridUtils.d.ts +14 -0
- package/dist/sharedUtils/components/apps/inputType.d.ts +178 -0
- package/dist/sharedUtils/components/apps/rx.d.ts +29 -0
- package/dist/sharedUtils/components/apps/sharedTypes.d.ts +21 -0
- package/dist/sharedUtils/components/apps/types.d.ts +274 -0
- package/dist/sharedUtils/components/assets/lib.d.ts +25 -0
- package/dist/sharedUtils/components/common/alert/model.d.ts +2 -0
- package/dist/sharedUtils/components/common/badge/model.d.ts +8 -0
- package/dist/sharedUtils/components/common/button/model.d.ts +45 -0
- package/dist/sharedUtils/components/common/fileInput/model.d.ts +1 -0
- package/dist/sharedUtils/components/common/index.d.ts +24 -0
- package/dist/sharedUtils/components/common/skeleton/model.d.ts +21 -0
- package/dist/sharedUtils/components/dbTypes.d.ts +14 -0
- package/dist/sharedUtils/components/diff_drawer.d.ts +26 -0
- package/dist/sharedUtils/components/ducklake.d.ts +1 -0
- package/dist/sharedUtils/components/flows/scheduleUtils.d.ts +7 -0
- package/dist/sharedUtils/components/icons/index.d.ts +101 -0
- package/dist/sharedUtils/components/random_positive_adjetive.d.ts +1 -0
- package/dist/sharedUtils/components/raw_apps/rawAppPolicy.d.ts +10 -0
- package/dist/sharedUtils/components/raw_apps/utils.d.ts +15 -0
- package/dist/sharedUtils/components/triggers/email/utils.d.ts +4 -0
- package/dist/sharedUtils/components/triggers/gcp/utils.d.ts +2 -0
- package/dist/sharedUtils/components/triggers/http/utils.d.ts +11 -0
- package/dist/sharedUtils/components/triggers/kafka/utils.d.ts +2 -0
- package/dist/sharedUtils/components/triggers/mqtt/utils.d.ts +2 -0
- package/dist/sharedUtils/components/triggers/nats/utils.d.ts +2 -0
- package/dist/sharedUtils/components/triggers/postgres/utils.d.ts +8 -0
- package/dist/sharedUtils/components/triggers/sqs/utils.d.ts +2 -0
- package/dist/sharedUtils/components/triggers/triggers.svelte.d.ts +32 -0
- package/dist/sharedUtils/components/triggers/utils.d.ts +80 -0
- package/dist/sharedUtils/components/triggers/websocket/utils.d.ts +2 -0
- package/dist/sharedUtils/components/triggers.d.ts +20 -0
- package/dist/sharedUtils/gen/core/ApiError.d.ts +10 -0
- package/dist/sharedUtils/gen/core/ApiRequestOptions.d.ts +13 -0
- package/dist/sharedUtils/gen/core/ApiResult.d.ts +7 -0
- package/dist/sharedUtils/gen/core/CancelablePromise.d.ts +26 -0
- package/dist/sharedUtils/gen/core/OpenAPI.d.ts +27 -0
- package/dist/sharedUtils/gen/core/request.d.ts +29 -0
- package/dist/sharedUtils/gen/index.d.ts +6 -0
- package/dist/sharedUtils/gen/schemas.gen.d.ts +7036 -0
- package/dist/sharedUtils/gen/services.gen.d.ts +6047 -0
- package/dist/sharedUtils/gen/types.gen.d.ts +21881 -0
- package/dist/sharedUtils/history.svelte.d.ts +9 -0
- package/dist/sharedUtils/hub.d.ts +49 -0
- package/dist/sharedUtils/jsr.json +6 -0
- package/dist/sharedUtils/lib.d.ts +5 -0
- package/dist/sharedUtils/lib.es.js +1588 -0
- package/dist/sharedUtils/package.json +12 -0
- package/dist/sharedUtils/schema.d.ts +3 -0
- package/dist/sharedUtils/stores.d.ts +97 -0
- package/dist/sharedUtils/svelte5Utils.svelte.d.ts +80 -0
- package/dist/sharedUtils/toast.d.ts +8 -0
- package/dist/sharedUtils/utils.d.ts +265 -0
- package/package/components/AddUser.svelte +67 -34
- package/package/components/AppConnectInner.svelte +9 -1
- package/package/components/ArgInfo.svelte +9 -1
- package/package/components/ArgInput.svelte +21 -1
- package/package/components/CompareWorkspaces.svelte +11 -2
- package/package/components/DedicatedWorkersSelector.svelte +262 -247
- package/package/components/DefaultTagsInner.svelte +40 -2
- package/package/components/DeployWorkspace.svelte +13 -0
- package/package/components/DiffEditor.svelte +44 -1
- package/package/components/EditableSchemaForm.svelte +5 -2
- package/package/components/EditableSchemaForm.svelte.d.ts +1 -0
- package/package/components/Editor.svelte +5 -1
- package/package/components/EditorBar.svelte +12 -3
- package/package/components/FilterSearchbar.svelte +26 -2
- package/package/components/FlowBuilder.svelte +6 -3
- package/package/components/FlowGraphDiffViewer.svelte +16 -17
- package/package/components/FlowGraphViewer.svelte +20 -6
- package/package/components/FlowGraphViewer.svelte.d.ts +2 -0
- package/package/components/FlowGraphViewerStep.svelte +14 -32
- package/package/components/FlowMetadata.svelte +4 -1
- package/package/components/FlowPreviewContent.svelte +2 -0
- package/package/components/FlowStatusWaitingForEvents.svelte +25 -4
- package/package/components/HighlightCode.svelte +3 -0
- package/package/components/InstanceSetting.svelte +9 -25
- package/package/components/InstanceSettings.svelte +16 -0
- package/package/components/LabelsInput.svelte +149 -0
- package/package/components/LabelsInput.svelte.d.ts +8 -0
- package/package/components/Login.svelte +6 -1
- package/package/components/ObjectStoreConfigSettings.svelte +273 -1
- package/package/components/OktaSetting.svelte +6 -5
- package/package/components/Password.svelte +74 -20
- package/package/components/Password.svelte.d.ts +1 -0
- package/package/components/PasswordArgInput.svelte +2 -2
- package/package/components/PasswordArgInput.svelte.d.ts +1 -0
- package/package/components/Path.svelte +8 -10
- package/package/components/PathNameAutocomplete.svelte +308 -0
- package/package/components/PathNameAutocomplete.svelte.d.ts +27 -0
- package/package/components/PowerShellCommonParams.svelte +84 -0
- package/package/components/PowerShellCommonParams.svelte.d.ts +6 -0
- package/package/components/Range.svelte +8 -3
- package/package/components/ResourceEditor.svelte +6 -2
- package/package/components/RunForm.svelte +71 -7
- package/package/components/RunForm.svelte.d.ts +2 -1
- package/package/components/ScriptBuilder.svelte +7 -3
- package/package/components/ScriptEditor.svelte +221 -187
- package/package/components/ScriptEditor.svelte.d.ts +1 -1
- package/package/components/ScriptSchema.svelte +1 -1
- package/package/components/StringTypeNarrowing.svelte +1 -1
- package/package/components/StringTypeNarrowing.svelte.d.ts +1 -1
- package/package/components/SummaryPathDisplay.svelte +32 -10
- package/package/components/SummaryPathDisplay.svelte.d.ts +2 -1
- package/package/components/VariableEditor.svelte +9 -2
- package/package/components/WorkerGroup.svelte +47 -2
- package/package/components/apps/editor/DeploymentHistory.svelte +112 -13
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte +135 -35
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte.d.ts +3 -1
- package/package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +11 -35
- package/package/components/apps/editor/settingsPanel/mainInput/runnableSelectorUtils.d.ts +10 -0
- package/package/components/apps/editor/settingsPanel/mainInput/runnableSelectorUtils.js +14 -0
- package/package/components/apps/editor/settingsPanel/mainInput/runnableSelectorUtils.test.d.ts +1 -0
- package/package/components/apps/editor/settingsPanel/mainInput/runnableSelectorUtils.test.js +34 -0
- package/package/components/assets/AssetButtons.svelte +21 -25
- package/package/components/assets/AssetsUsageDrawer.svelte +7 -9
- package/package/components/common/fileUpload/FileUpload.svelte +6 -2
- package/package/components/common/languageIcons/LanguageIcon.svelte +3 -0
- package/package/components/common/table/AppRow.svelte +18 -0
- package/package/components/common/table/FlowRow.svelte +18 -0
- package/package/components/common/table/ScriptRow.svelte +18 -0
- package/package/components/copilot/chat/AIChatManager.svelte.js +3 -3
- package/package/components/copilot/chat/flow/openFlow.json +1 -1
- package/package/components/copilot/chat/flow/openFlowZod.js +3 -3
- package/package/components/custom_ui.d.ts +2 -0
- package/package/components/details/DetailPageHeader.svelte +2 -2
- package/package/components/details/DetailPageHeader.svelte.d.ts +2 -1
- package/package/components/flows/agentToolUtils.d.ts +5 -0
- package/package/components/flows/agentToolUtils.js +49 -0
- package/package/components/flows/agentToolUtils.test.d.ts +1 -0
- package/package/components/flows/agentToolUtils.test.js +55 -0
- package/package/components/flows/content/FlowInput.svelte +2 -0
- package/package/components/flows/content/FlowInputsQuick.svelte +1 -1
- package/package/components/flows/content/FlowLoop.svelte +5 -12
- package/package/components/flows/content/FlowModuleScript.svelte +5 -3
- package/package/components/flows/content/FlowPathViewer.svelte +2 -2
- package/package/components/flows/content/FlowPathViewer.svelte.d.ts +1 -0
- package/package/components/flows/content/FlowSettings.svelte +2 -0
- package/package/components/flows/content/FlowWhileLoop.svelte +5 -12
- package/package/components/flows/flowInfers.js +8 -3
- package/package/components/flows/map/FlowModuleSchemaMap.svelte +49 -9
- package/package/components/flows/pickers/PickHubScriptQuick.svelte +5 -3
- package/package/components/flows/pickers/PickHubScriptQuick.svelte.d.ts +1 -1
- package/package/components/flows/scheduleUtils.js +2 -1
- package/package/components/graph/FlowGraphV2.svelte +13 -1
- package/package/components/graph/WacDiagram.svelte +96 -0
- package/package/components/graph/WacDiagram.svelte.d.ts +7 -0
- package/package/components/graph/noteEditor.svelte.d.ts +1 -1
- package/package/components/graph/noteEditor.svelte.js +12 -1
- package/package/components/graph/noteUtils.svelte.d.ts +1 -1
- package/package/components/graph/noteUtils.svelte.js +9 -2
- package/package/components/graph/renderers/edges/WacEdge.svelte +41 -0
- package/package/components/graph/renderers/edges/WacEdge.svelte.d.ts +4 -0
- package/package/components/graph/renderers/nodes/WacControlNode.svelte +51 -0
- package/package/components/graph/renderers/nodes/WacControlNode.svelte.d.ts +9 -0
- package/package/components/graph/renderers/nodes/WacStepNode.svelte +35 -0
- package/package/components/graph/renderers/nodes/WacStepNode.svelte.d.ts +9 -0
- package/package/components/graph/wacDagLayout.d.ts +10 -0
- package/package/components/graph/wacDagLayout.js +120 -0
- package/package/components/graph/wacToFlow.js +1 -1
- package/package/components/home/ItemsList.svelte +28 -4
- package/package/components/icons/RIcon.svelte +32 -0
- package/package/components/icons/RIcon.svelte.d.ts +7 -0
- package/package/components/instanceSettings/DbHealth.svelte +723 -0
- package/package/components/instanceSettings/DbHealth.svelte.d.ts +3 -0
- package/package/components/instanceSettings/SecretBackendConfig.svelte +343 -304
- package/package/components/instanceSettings/SmtpSettings.svelte +8 -0
- package/package/components/instanceSettings.js +14 -5
- package/package/components/mcp/McpScopeSelector.svelte +82 -16
- package/package/components/moveRenameManager.d.ts +1 -0
- package/package/components/moveRenameManager.js +7 -4
- package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte +14 -1
- package/package/components/raw_apps/rawAppPolicy.js +3 -2
- package/package/components/raw_apps/utils.test.d.ts +1 -0
- package/package/components/raw_apps/utils.test.js +38 -0
- package/package/components/resources/resourcesFilter.d.ts +15 -2
- package/package/components/resources/resourcesFilter.js +11 -2
- package/package/components/runs/JobDetailFieldConfig.js +5 -3
- package/package/components/runs/JobDetailHeader.svelte +5 -2
- package/package/components/runs/JobRunsPreview.svelte +1 -0
- package/package/components/runs/RunBadges.svelte +7 -4
- package/package/components/runs/RunRow.svelte +7 -7
- package/package/components/schedules/schedulesFilter.d.ts +15 -2
- package/package/components/schedules/schedulesFilter.js +11 -2
- package/package/components/schema/EditableSchemaWrapper.svelte +6 -8
- package/package/components/schema/PropertyEditor.svelte +22 -1
- package/package/components/schema/PropertyEditor.svelte.d.ts +1 -0
- package/package/components/schema/editable_schema_wrapper.d.ts +1 -0
- package/package/components/secretArgUtils.d.ts +7 -0
- package/package/components/secretArgUtils.js +45 -0
- package/package/components/settings/WorkspaceUserSettings.svelte +359 -286
- package/package/components/sidebar/OperatorMenu.svelte +215 -197
- package/package/components/triggers/CaptureWrapper.svelte +1 -1
- package/package/components/triggers/TriggerFilters.svelte +17 -5
- package/package/components/triggers/TriggerFilters.svelte.d.ts +2 -1
- package/package/components/triggers/kafka/KafkaCapture.svelte +6 -2
- package/package/components/triggers/kafka/KafkaCapture.svelte.d.ts +1 -1
- package/package/components/triggers/kafka/KafkaTriggerEditorInner.svelte +5 -1
- package/package/components/triggers/kafka/utils.js +1 -0
- package/package/components/triggers/schedules/ScheduleEditorInner.svelte +6 -0
- package/package/components/triggers/websocket/WebsocketTriggerEditorInner.svelte +87 -1
- package/package/components/triggers/websocket/utils.js +2 -0
- package/package/components/variables/variablesFilter.d.ts +15 -2
- package/package/components/variables/variablesFilter.js +11 -2
- package/package/components/worker_group.js +1 -0
- package/package/components/workspaceSettings/DucklakeSettings.svelte +33 -41
- package/package/consts.d.ts +1 -0
- package/package/consts.js +1 -0
- package/package/editorLangUtils.d.ts +1 -1
- package/package/editorLangUtils.js +2 -0
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +94 -294
- package/package/gen/schemas.gen.js +94 -294
- package/package/gen/services.gen.d.ts +5 -121
- package/package/gen/services.gen.js +5 -237
- package/package/gen/types.gen.d.ts +91 -715
- package/package/hubPaths.json +6 -3
- package/package/infer.d.ts +55 -0
- package/package/infer.js +131 -0
- package/package/infer.svelte.js +2 -0
- package/package/mcpEndpointTools.js +213 -22
- package/package/script_helpers.d.ts +3 -0
- package/package/script_helpers.js +26 -0
- package/package/scripts.d.ts +2 -1
- package/package/scripts.js +15 -3
- package/package/stores.d.ts +2 -0
- package/package/system_prompts/prompts.d.ts +6 -5
- package/package/system_prompts/prompts.js +188 -29
- package/package/user.js +5 -1
- package/package/utils.js +21 -0
- package/package/utils_deployable.d.ts +7 -0
- package/package/utils_workspace_deploy.js +36 -8
- package/package.json +6 -5
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
<script lang="ts">import { Home, Menu as MenuIcon, Play, Settings, LogOut, Moon, Sun, Code2, LayoutDashboard, Building, Calendar, ServerCog, GraduationCap, Table2 } from 'lucide-svelte';
|
|
2
2
|
import { base } from '../../base';
|
|
3
3
|
import MultiplayerMenu from './MultiplayerMenu.svelte';
|
|
4
|
-
import {
|
|
4
|
+
import { Plus } from 'lucide-svelte';
|
|
5
|
+
import { clearWorkspaceFromStorage, enterpriseLicense, superadmin, usedTriggerKinds, userWorkspaces, workspaceStore, tutorialsToDo, skippedAll } from '../../stores';
|
|
5
6
|
import { twMerge } from 'tailwind-merge';
|
|
6
7
|
import { USER_SETTINGS_HASH } from './settings';
|
|
7
8
|
import { logout } from '../../logoutKit';
|
|
@@ -10,8 +11,9 @@ import BarsStaggered from '../icons/BarsStaggered.svelte';
|
|
|
10
11
|
import { Menu, Menubar, MenuItem } from '../meltComponents';
|
|
11
12
|
import MenuButton, { sidebarClasses } from './MenuButton.svelte';
|
|
12
13
|
import MenuLink from './MenuLink.svelte';
|
|
13
|
-
import ResizeTransitionWrapper from '../common/ResizeTransitionWrapper.svelte';
|
|
14
14
|
let darkMode = $state(false);
|
|
15
|
+
let showExtraTriggers = $state(false);
|
|
16
|
+
let menubarEl = $state();
|
|
15
17
|
let { isCollapsed = false, favoriteLinks = [] } = $props();
|
|
16
18
|
let mainMenuLinks = $derived([
|
|
17
19
|
{ label: 'Home', id: 'home', href: `${base}/`, icon: Home },
|
|
@@ -70,232 +72,248 @@ let secondMenuLinks = $derived([
|
|
|
70
72
|
label: 'Workers',
|
|
71
73
|
id: 'workers',
|
|
72
74
|
href: `${base}/workers`
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
label: 'Audit logs',
|
|
78
|
+
id: 'audit_logs',
|
|
79
|
+
href: `${base}/audit_logs`
|
|
73
80
|
}
|
|
74
81
|
].filter(filterLink));
|
|
75
|
-
let
|
|
76
|
-
{
|
|
77
|
-
label: 'Custom HTTP routes',
|
|
78
|
-
id: 'triggers',
|
|
79
|
-
href: `${base}/routes`
|
|
80
|
-
},
|
|
82
|
+
let allTriggerLinks = $derived([
|
|
83
|
+
{ label: 'Custom HTTP routes', id: 'triggers', href: `${base}/routes`, kind: 'http' },
|
|
81
84
|
{
|
|
82
85
|
label: 'Websocket triggers',
|
|
83
86
|
id: 'triggers',
|
|
84
|
-
href: `${base}/websocket_triggers
|
|
87
|
+
href: `${base}/websocket_triggers`,
|
|
88
|
+
kind: 'ws'
|
|
85
89
|
},
|
|
86
90
|
{
|
|
87
91
|
label: 'Postgres triggers',
|
|
88
92
|
id: 'triggers',
|
|
89
|
-
href: `${base}/postgres_triggers
|
|
90
|
-
|
|
91
|
-
{
|
|
92
|
-
label: 'Kafka triggers',
|
|
93
|
-
id: 'triggers',
|
|
94
|
-
href: `${base}/kafka_triggers`
|
|
95
|
-
},
|
|
96
|
-
{
|
|
97
|
-
label: 'NATS triggers',
|
|
98
|
-
id: 'triggers',
|
|
99
|
-
href: `${base}/nats_triggers`
|
|
100
|
-
},
|
|
101
|
-
{
|
|
102
|
-
label: 'SQS triggers',
|
|
103
|
-
id: 'triggers',
|
|
104
|
-
href: `${base}/sqs_triggers`
|
|
93
|
+
href: `${base}/postgres_triggers`,
|
|
94
|
+
kind: 'postgres'
|
|
105
95
|
},
|
|
96
|
+
{ label: 'Kafka triggers', id: 'triggers', href: `${base}/kafka_triggers`, kind: 'kafka' },
|
|
97
|
+
{ label: 'NATS triggers', id: 'triggers', href: `${base}/nats_triggers`, kind: 'nats' },
|
|
98
|
+
{ label: 'SQS triggers', id: 'triggers', href: `${base}/sqs_triggers`, kind: 'sqs' },
|
|
106
99
|
{
|
|
107
100
|
label: 'GCP Pub/Sub triggers',
|
|
108
101
|
id: 'triggers',
|
|
109
|
-
href: `${base}/gcp_triggers
|
|
110
|
-
|
|
111
|
-
{
|
|
112
|
-
label: 'MQTT triggers',
|
|
113
|
-
id: 'triggers',
|
|
114
|
-
href: `${base}/mqtt_triggers`
|
|
102
|
+
href: `${base}/gcp_triggers`,
|
|
103
|
+
kind: 'gcp'
|
|
115
104
|
},
|
|
116
|
-
{
|
|
117
|
-
|
|
118
|
-
id: 'triggers',
|
|
119
|
-
href: `${base}/email_triggers`
|
|
120
|
-
},
|
|
121
|
-
{
|
|
122
|
-
label: 'Audit logs',
|
|
123
|
-
id: 'audit_logs',
|
|
124
|
-
href: `${base}/audit_logs`
|
|
125
|
-
}
|
|
105
|
+
{ label: 'MQTT triggers', id: 'triggers', href: `${base}/mqtt_triggers`, kind: 'mqtt' },
|
|
106
|
+
{ label: 'Email triggers', id: 'triggers', href: `${base}/email_triggers`, kind: 'email' }
|
|
126
107
|
].filter(filterLink));
|
|
127
|
-
let
|
|
108
|
+
let secondMenuTriggerLinks = $derived(allTriggerLinks.filter((link) => $usedTriggerKinds.includes(link.kind)));
|
|
109
|
+
let extraTriggerLinks = $derived(allTriggerLinks.filter((link) => !$usedTriggerKinds.includes(link.kind)));
|
|
128
110
|
</script>
|
|
129
111
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
<
|
|
155
|
-
{
|
|
156
|
-
|
|
157
|
-
{
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
112
|
+
<!-- svelte-ignore a11y_no_static_element_interactions -->
|
|
113
|
+
<div
|
|
114
|
+
bind:this={menubarEl}
|
|
115
|
+
onmouseenter={() => {
|
|
116
|
+
const btn = menubarEl?.querySelector('[data-melt-menubar-trigger]')
|
|
117
|
+
if (btn instanceof HTMLElement) btn.click()
|
|
118
|
+
}}
|
|
119
|
+
>
|
|
120
|
+
<Menubar>
|
|
121
|
+
{#snippet children({ createMenu })}
|
|
122
|
+
<Menu {createMenu} usePointerDownOutside on:close={() => (showExtraTriggers = false)}>
|
|
123
|
+
{#snippet triggr({ trigger })}
|
|
124
|
+
<MenuButton
|
|
125
|
+
class="!text-xs bg-surface !pl-3.5 !pr-2 !w-auto"
|
|
126
|
+
icon={MenuIcon}
|
|
127
|
+
isCollapsed={false}
|
|
128
|
+
lightMode
|
|
129
|
+
label={undefined}
|
|
130
|
+
{trigger}
|
|
131
|
+
/>
|
|
132
|
+
{/snippet}
|
|
133
|
+
{#snippet children({ item })}
|
|
134
|
+
<div class="w-full max-w-full">
|
|
135
|
+
{#each favoriteLinks ?? [] as favorite (favorite.href)}
|
|
136
|
+
<MenuItem
|
|
137
|
+
href={favorite.href}
|
|
138
|
+
{item}
|
|
139
|
+
class={twMerge(
|
|
140
|
+
'w-full inline-flex flex-row px-2 py-2 hover:bg-surface-hover',
|
|
141
|
+
'data-[highlighted]:bg-surface-hover'
|
|
142
|
+
)}
|
|
143
|
+
>
|
|
144
|
+
<span class="center-center">
|
|
145
|
+
{#if favorite.kind == 'script'}
|
|
146
|
+
<Code2 size={16} />
|
|
147
|
+
{:else if favorite.kind == 'flow'}
|
|
148
|
+
<BarsStaggered size={16} />
|
|
149
|
+
{:else if favorite.kind == 'app' || favorite.kind == 'raw_app'}
|
|
150
|
+
<LayoutDashboard size={16} />
|
|
151
|
+
{:else if favorite.kind == 'asset'}
|
|
152
|
+
<Table2 size={16} />
|
|
153
|
+
{/if}
|
|
154
|
+
</span>
|
|
155
|
+
<span class="text-primary ml-2 grow min-w-0 text-xs truncate">
|
|
156
|
+
{favorite.label}
|
|
157
|
+
</span>
|
|
158
|
+
</MenuItem>
|
|
159
|
+
{/each}
|
|
160
|
+
</div>
|
|
161
|
+
|
|
162
|
+
{#each mainMenuLinks as menuLink (menuLink.href ?? menuLink.label)}
|
|
163
|
+
<MenuLink class="!text-xs" {...menuLink} {isCollapsed} {item} lightMode />
|
|
169
164
|
{/each}
|
|
170
|
-
</div>
|
|
171
165
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
166
|
+
<div class="divide-y" role="none">
|
|
167
|
+
<div role="none">
|
|
168
|
+
<MenuItem
|
|
169
|
+
href={USER_SETTINGS_HASH}
|
|
170
|
+
class={twMerge(
|
|
171
|
+
'flex flex-row gap-3.5 items-center px-2 py-2',
|
|
172
|
+
sidebarClasses.text,
|
|
173
|
+
sidebarClasses.hoverBg
|
|
174
|
+
)}
|
|
175
|
+
lightMode
|
|
176
|
+
{item}
|
|
177
|
+
>
|
|
178
|
+
<Settings size={14} />
|
|
179
|
+
Account settings
|
|
180
|
+
</MenuItem>
|
|
181
|
+
</div>
|
|
175
182
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
183
|
+
<div role="none">
|
|
184
|
+
<MenuItem
|
|
185
|
+
onClick={() => {
|
|
186
|
+
if (!document.documentElement.classList.contains('dark')) {
|
|
187
|
+
document.documentElement.classList.add('dark')
|
|
188
|
+
window.localStorage.setItem('dark-mode', 'dark')
|
|
189
|
+
} else {
|
|
190
|
+
document.documentElement.classList.remove('dark')
|
|
191
|
+
window.localStorage.setItem('dark-mode', 'light')
|
|
192
|
+
}
|
|
193
|
+
}}
|
|
194
|
+
lightMode
|
|
195
|
+
class={twMerge(
|
|
196
|
+
'w-full flex gap-3.5 px-2 py-2',
|
|
197
|
+
sidebarClasses.hoverBg,
|
|
198
|
+
sidebarClasses.text
|
|
199
|
+
)}
|
|
200
|
+
{item}
|
|
201
|
+
>
|
|
202
|
+
{#if darkMode}
|
|
203
|
+
<Sun size={14} />
|
|
204
|
+
{:else}
|
|
205
|
+
<Moon size={14} />
|
|
206
|
+
{/if}
|
|
207
|
+
Switch theme
|
|
208
|
+
</MenuItem>
|
|
209
|
+
<MenuItem
|
|
210
|
+
href="{base}/user/workspaces"
|
|
211
|
+
onClick={() => clearWorkspaceFromStorage()}
|
|
212
|
+
lightMode
|
|
213
|
+
class={twMerge(
|
|
214
|
+
'flex gap-3.5 px-2 py-2',
|
|
215
|
+
sidebarClasses.hoverBg,
|
|
216
|
+
sidebarClasses.text
|
|
217
|
+
)}
|
|
218
|
+
{item}
|
|
219
|
+
>
|
|
220
|
+
<Building size={14} />
|
|
221
|
+
All workspaces
|
|
222
|
+
</MenuItem>
|
|
192
223
|
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
sidebarClasses.hoverBg,
|
|
208
|
-
sidebarClasses.text
|
|
209
|
-
)}
|
|
210
|
-
{item}
|
|
211
|
-
>
|
|
212
|
-
{#if darkMode}
|
|
213
|
-
<Sun size={14} />
|
|
214
|
-
{:else}
|
|
215
|
-
<Moon size={14} />
|
|
224
|
+
{#if $superadmin}
|
|
225
|
+
<MenuItem
|
|
226
|
+
href="#superadmin-settings"
|
|
227
|
+
class={twMerge(
|
|
228
|
+
'flex flex-row gap-3.5 items-center px-2 py-2 ',
|
|
229
|
+
'text-secondary text-xs',
|
|
230
|
+
'hover:bg-surface-hover hover:text-primary cursor-pointer',
|
|
231
|
+
'data-[highlighted]:bg-surface-hover data-[highlighted]:text-primary'
|
|
232
|
+
)}
|
|
233
|
+
{item}
|
|
234
|
+
>
|
|
235
|
+
<ServerCog size={14} />
|
|
236
|
+
Instance settings
|
|
237
|
+
</MenuItem>
|
|
216
238
|
{/if}
|
|
217
|
-
Switch theme
|
|
218
|
-
</MenuItem>
|
|
219
|
-
<MenuItem
|
|
220
|
-
href="{base}/user/workspaces"
|
|
221
|
-
onClick={() => clearWorkspaceFromStorage()}
|
|
222
|
-
lightMode
|
|
223
|
-
class={twMerge('flex gap-3.5 px-2 py-2', sidebarClasses.hoverBg, sidebarClasses.text)}
|
|
224
|
-
{item}
|
|
225
|
-
>
|
|
226
|
-
<Building size={14} />
|
|
227
|
-
All workspaces
|
|
228
|
-
</MenuItem>
|
|
229
239
|
|
|
230
|
-
{#if $superadmin}
|
|
231
240
|
<MenuItem
|
|
232
|
-
|
|
241
|
+
onClick={() => logout()}
|
|
233
242
|
class={twMerge(
|
|
234
|
-
'flex flex-row gap-3.5
|
|
235
|
-
'text-
|
|
236
|
-
'hover:bg-surface-hover
|
|
243
|
+
'flex flex-row gap-3.5 items-center px-2 py-2 w-full',
|
|
244
|
+
'text-primary text-xs',
|
|
245
|
+
'hover:bg-surface-hover cursor-pointer',
|
|
237
246
|
'data-[highlighted]:bg-surface-hover data-[highlighted]:text-primary'
|
|
238
247
|
)}
|
|
239
248
|
{item}
|
|
240
249
|
>
|
|
241
|
-
<
|
|
242
|
-
|
|
250
|
+
<LogOut size={14} />
|
|
251
|
+
Sign out
|
|
243
252
|
</MenuItem>
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
{item}
|
|
253
|
+
</div>
|
|
254
|
+
<div role="none">
|
|
255
|
+
{#snippet renderSecondMenuLinks(menuLinks: SecondMenuLink[])}
|
|
256
|
+
{#each menuLinks as menuLink (menuLink.href ?? menuLink.label)}
|
|
257
|
+
<MenuItem
|
|
258
|
+
href={menuLink.href}
|
|
259
|
+
class={twMerge(
|
|
260
|
+
'flex flex-row gap-3.5 items-center px-2 py-2 text-secondary text-2xs hover:bg-surface-hover hover:text-primary cursor-pointer',
|
|
261
|
+
'data-[highlighted]:bg-surface-hover data-[highlighted]:text-primary'
|
|
262
|
+
)}
|
|
263
|
+
{item}
|
|
264
|
+
>
|
|
265
|
+
{menuLink.label}
|
|
266
|
+
</MenuItem>
|
|
267
|
+
{/each}
|
|
268
|
+
{/snippet}
|
|
269
|
+
{#if secondMenuLinks.length || secondMenuTriggerLinks.length || extraTriggerLinks.length}
|
|
270
|
+
<div class="divide-y">
|
|
271
|
+
{#if secondMenuLinks.length}<div
|
|
272
|
+
>{@render renderSecondMenuLinks(secondMenuLinks)}</div
|
|
273
|
+
>{/if}
|
|
274
|
+
{#if secondMenuTriggerLinks.length}<div
|
|
275
|
+
>{@render renderSecondMenuLinks(secondMenuTriggerLinks)}</div
|
|
276
|
+
>{/if}
|
|
277
|
+
{#if extraTriggerLinks.length}<div>
|
|
278
|
+
<!-- svelte-ignore a11y_no_static_element_interactions -->
|
|
279
|
+
<div
|
|
280
|
+
class="flex flex-row gap-3.5 items-center px-2 py-2 w-full text-secondary text-2xs hover:bg-surface-hover hover:text-primary cursor-pointer"
|
|
281
|
+
role="button"
|
|
282
|
+
tabindex="0"
|
|
283
|
+
onclick={(e) => {
|
|
284
|
+
e.stopPropagation()
|
|
285
|
+
showExtraTriggers = !showExtraTriggers
|
|
286
|
+
}}
|
|
279
287
|
>
|
|
280
|
-
{
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
288
|
+
<Plus size={12} />
|
|
289
|
+
<span class="text-2xs">More triggers</span>
|
|
290
|
+
</div>
|
|
291
|
+
{#if showExtraTriggers}
|
|
292
|
+
{#each extraTriggerLinks as menuLink (menuLink.href)}
|
|
293
|
+
<MenuItem
|
|
294
|
+
href={menuLink.href}
|
|
295
|
+
class={twMerge(
|
|
296
|
+
'flex flex-row gap-3.5 items-center px-2 py-2 pl-6 text-tertiary text-2xs hover:bg-surface-hover hover:text-primary cursor-pointer',
|
|
297
|
+
'data-[highlighted]:bg-surface-hover data-[highlighted]:text-primary'
|
|
298
|
+
)}
|
|
299
|
+
{item}
|
|
300
|
+
>
|
|
301
|
+
{menuLink.label}
|
|
302
|
+
</MenuItem>
|
|
303
|
+
{/each}
|
|
304
|
+
{/if}
|
|
305
|
+
</div>{/if}
|
|
306
|
+
</div>
|
|
307
|
+
{/if}
|
|
308
|
+
{#if $enterpriseLicense}
|
|
309
|
+
<MultiplayerMenu />
|
|
310
|
+
{/if}
|
|
311
|
+
</div>
|
|
294
312
|
</div>
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
</
|
|
313
|
+
{/snippet}
|
|
314
|
+
</Menu>
|
|
315
|
+
{/snippet}
|
|
316
|
+
</Menubar>
|
|
317
|
+
</div>
|
|
300
318
|
|
|
301
319
|
<DarkModeObserver bind:darkMode />
|
|
@@ -1,16 +1,29 @@
|
|
|
1
1
|
<script lang="ts">import { Button } from '../common';
|
|
2
2
|
import Section from '../Section.svelte';
|
|
3
|
+
import Select from '../select/Select.svelte';
|
|
3
4
|
import { Plus, X } from 'lucide-svelte';
|
|
4
5
|
import { fade } from 'svelte/transition';
|
|
5
6
|
import JsonEditor from '../JsonEditor.svelte';
|
|
6
|
-
let { filters = $bindable([]), disabled = false } = $props();
|
|
7
|
+
let { filters = $bindable([]), filterLogic = $bindable(), disabled = false } = $props();
|
|
8
|
+
const filterLogicItems = [
|
|
9
|
+
{ label: 'all criteria (AND)', value: 'and' },
|
|
10
|
+
{ label: 'any criterion (OR)', value: 'or' }
|
|
11
|
+
];
|
|
12
|
+
let description = $derived(filterLogic === 'or'
|
|
13
|
+
? 'Filters will limit the execution of the trigger to only messages that match any criterion.'
|
|
14
|
+
: 'Filters will limit the execution of the trigger to only messages that match all criteria.');
|
|
7
15
|
</script>
|
|
8
16
|
|
|
9
17
|
<Section label="Filters">
|
|
10
18
|
<p class="text-xs mb-1 text-primary">
|
|
11
|
-
|
|
19
|
+
{description}<br />
|
|
12
20
|
The JSON filter checks if the value at the key is equal or a superset of the filter value.
|
|
13
21
|
</p>
|
|
22
|
+
{#if filters.length > 0}
|
|
23
|
+
<div class="mt-2 mb-1 max-w-xs">
|
|
24
|
+
<Select items={filterLogicItems} bind:value={filterLogic} {disabled} size="sm" />
|
|
25
|
+
</div>
|
|
26
|
+
{/if}
|
|
14
27
|
<div class="flex flex-col gap-4 mt-1">
|
|
15
28
|
{#each filters as v, i (i)}
|
|
16
29
|
<div class="flex w-full gap-2 items-center">
|
|
@@ -19,11 +32,10 @@ let { filters = $bindable([]), disabled = false } = $props();
|
|
|
19
32
|
<div class="text-secondary text-sm mb-2">Key</div>
|
|
20
33
|
<input type="text" bind:value={v.key} {disabled} />
|
|
21
34
|
</label>
|
|
22
|
-
|
|
23
|
-
<label class="flex flex-col w-full">
|
|
35
|
+
<div class="flex flex-col w-full">
|
|
24
36
|
<div class="text-secondary text-sm mb-2">Value</div>
|
|
25
37
|
<JsonEditor bind:value={v.value} code={JSON.stringify(v.value)} {disabled} />
|
|
26
|
-
</
|
|
38
|
+
</div>
|
|
27
39
|
{#if v.key}
|
|
28
40
|
{@const isObject = v.value !== null && typeof v.value === 'object'}
|
|
29
41
|
<div class="text-xs text-tertiary font-mono mt-2 p-2 bg-surface-secondary rounded">
|
|
@@ -3,8 +3,9 @@ interface Props {
|
|
|
3
3
|
key: string;
|
|
4
4
|
value: any;
|
|
5
5
|
}[];
|
|
6
|
+
filterLogic: 'and' | 'or';
|
|
6
7
|
disabled?: boolean;
|
|
7
8
|
}
|
|
8
|
-
declare const TriggerFilters: import("svelte").Component<Props, {}, "filters">;
|
|
9
|
+
declare const TriggerFilters: import("svelte").Component<Props, {}, "filters" | "filterLogic">;
|
|
9
10
|
type TriggerFilters = ReturnType<typeof TriggerFilters>;
|
|
10
11
|
export default TriggerFilters;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
<script lang="ts">import { fade } from 'svelte/transition';
|
|
2
|
+
import { Url } from '../../common';
|
|
2
3
|
import CaptureSection from '../CaptureSection.svelte';
|
|
3
|
-
let { captureInfo = undefined, isValid = undefined, hasPreprocessor = false, isFlow = false, captureLoading = false,
|
|
4
|
+
let { captureInfo = undefined, isValid = undefined, hasPreprocessor = false, isFlow = false, captureLoading = false, groupId = undefined } = $props();
|
|
5
|
+
let captureGroupId = $derived(groupId ? `${groupId}_wm_capture` : undefined);
|
|
4
6
|
</script>
|
|
5
7
|
|
|
6
8
|
{#if captureInfo}
|
|
@@ -16,7 +18,6 @@ let { captureInfo = undefined, isValid = undefined, hasPreprocessor = false, isF
|
|
|
16
18
|
on:testWithArgs
|
|
17
19
|
{hasPreprocessor}
|
|
18
20
|
{isFlow}
|
|
19
|
-
displayAlert={triggerDeployed}
|
|
20
21
|
>
|
|
21
22
|
{#snippet description()}
|
|
22
23
|
{#if captureInfo.active}
|
|
@@ -35,5 +36,8 @@ let { captureInfo = undefined, isValid = undefined, hasPreprocessor = false, isF
|
|
|
35
36
|
</p>
|
|
36
37
|
{/if}
|
|
37
38
|
{/snippet}
|
|
39
|
+
{#if captureGroupId}
|
|
40
|
+
<Url label="Test group ID" url={captureGroupId} />
|
|
41
|
+
{/if}
|
|
38
42
|
</CaptureSection>
|
|
39
43
|
{/if}
|
|
@@ -5,7 +5,7 @@ interface Props {
|
|
|
5
5
|
hasPreprocessor?: boolean;
|
|
6
6
|
isFlow?: boolean;
|
|
7
7
|
captureLoading?: boolean;
|
|
8
|
-
|
|
8
|
+
groupId?: string;
|
|
9
9
|
}
|
|
10
10
|
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
11
11
|
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
@@ -61,6 +61,7 @@ let error_handler_path = $state();
|
|
|
61
61
|
let error_handler_args = $state({});
|
|
62
62
|
let retry = $state();
|
|
63
63
|
let filters = $state([]);
|
|
64
|
+
let filterLogic = $state('and');
|
|
64
65
|
let suspendedJobsModal = $state(null);
|
|
65
66
|
let originalConfig = $state(undefined);
|
|
66
67
|
let resetConfirmOpen = $state(false);
|
|
@@ -137,6 +138,7 @@ export async function openNew(nis_flow, fixedScriptPath_, nDefaultValues) {
|
|
|
137
138
|
error_handler_args = nDefaultValues?.error_handler_args ?? {};
|
|
138
139
|
retry = nDefaultValues?.retry ?? undefined;
|
|
139
140
|
filters = nDefaultValues?.filters ?? [];
|
|
141
|
+
filterLogic = 'and';
|
|
140
142
|
errorHandlerSelected = getHandlerType(error_handler_path ?? '');
|
|
141
143
|
mode = nDefaultValues?.mode ?? 'enabled';
|
|
142
144
|
originalConfig = undefined;
|
|
@@ -166,6 +168,7 @@ function loadTriggerConfig(cfg) {
|
|
|
166
168
|
error_handler_args = cfg?.error_handler_args ?? {};
|
|
167
169
|
retry = cfg?.retry;
|
|
168
170
|
filters = cfg?.filters ?? [];
|
|
171
|
+
filterLogic = cfg?.filter_logic ?? 'and';
|
|
169
172
|
errorHandlerSelected = getHandlerType(error_handler_path ?? '');
|
|
170
173
|
permissionedAs = cfg?.permissioned_as;
|
|
171
174
|
selectedPermissionedAs = undefined;
|
|
@@ -193,6 +196,7 @@ function getSaveCfg() {
|
|
|
193
196
|
group_id: kafkaCfg.group_id,
|
|
194
197
|
topics: kafkaCfg.topics,
|
|
195
198
|
filters,
|
|
199
|
+
filter_logic: filterLogic,
|
|
196
200
|
auto_offset_reset: autoOffsetReset,
|
|
197
201
|
auto_commit: autoCommit,
|
|
198
202
|
mode,
|
|
@@ -510,7 +514,7 @@ $effect(() => {
|
|
|
510
514
|
</Label>
|
|
511
515
|
{/if}
|
|
512
516
|
|
|
513
|
-
<TriggerFilters bind:filters disabled={!can_write} />
|
|
517
|
+
<TriggerFilters bind:filters bind:filterLogic disabled={!can_write} />
|
|
514
518
|
|
|
515
519
|
<div class="min-h-96">
|
|
516
520
|
<Tabs bind:selected={optionTabSelected}>
|
|
@@ -17,6 +17,7 @@ export async function saveKafkaTriggerFromCfg(initialPath, cfg, edit, workspace,
|
|
|
17
17
|
group_id: cfg.group_id,
|
|
18
18
|
topics: cfg.topics,
|
|
19
19
|
filters: cfg.filters ?? [],
|
|
20
|
+
filter_logic: cfg.filter_logic ?? 'and',
|
|
20
21
|
auto_offset_reset: cfg.auto_offset_reset ?? 'latest',
|
|
21
22
|
auto_commit: cfg.auto_commit ?? true,
|
|
22
23
|
...errorHandlerAndRetries,
|