windmill-components 1.504.6 → 1.510.1
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/package/ata/index.js +1 -1
- package/package/components/AppConnectInner.svelte +161 -29
- package/package/components/ArgInput.svelte +33 -103
- package/package/components/AuthSettings.svelte +45 -1
- package/package/components/Dev.svelte +31 -24
- package/package/components/DisplayResult.svelte +53 -26
- package/package/components/DisplayResult.svelte.d.ts +1 -1
- package/package/components/DynSelect.svelte +3 -3
- package/package/components/Editor.svelte +7 -4
- package/package/components/EditorBar.svelte +2 -2
- package/package/components/ErrorOrRecoveryHandler.svelte +73 -67
- package/package/components/ErrorOrRecoveryHandler.svelte.d.ts +8 -24
- package/package/components/FlowBuilder.svelte +11 -2
- package/package/components/FlowJobResult.svelte +12 -17
- package/package/components/FlowJobResult.svelte.d.ts +5 -18
- package/package/components/FlowPreviewContent.svelte +13 -10
- package/package/components/FlowPreviewContent.svelte.d.ts +1 -1
- package/package/components/FlowPreviewResult.svelte +14 -6
- package/package/components/FlowStatusViewer.svelte +11 -24
- package/package/components/FlowStatusViewer.svelte.d.ts +19 -18
- package/package/components/FlowStatusViewerInner.svelte +110 -131
- package/package/components/FlowStatusViewerInner.svelte.d.ts +20 -18
- package/package/components/GitDiffPreview.svelte +55 -0
- package/package/components/GitDiffPreview.svelte.d.ts +13 -0
- package/package/components/HistoricInputs.svelte +2 -2
- package/package/components/InitGitRepoPopover.svelte +410 -0
- package/package/components/InitGitRepoPopover.svelte.d.ts +13 -0
- package/package/components/InstanceSetting.svelte +21 -9
- package/package/components/InstanceSettings.svelte +16 -3
- package/package/components/JobLoader.svelte +567 -0
- package/package/components/JobLoader.svelte.d.ts +53 -0
- package/package/components/JobLogs.svelte +6 -4
- package/package/components/JobLogs.svelte.d.ts +5 -18
- package/package/components/LightweightResourcePicker.svelte +18 -39
- package/package/components/LightweightResourcePicker.svelte.d.ts +6 -22
- package/package/components/LogViewer.svelte +35 -41
- package/package/components/LogViewer.svelte.d.ts +6 -20
- package/package/components/ModulePreviewResultViewer.svelte +3 -1
- package/package/components/ModulePreviewResultViewer.svelte.d.ts +1 -0
- package/package/components/ModuleTest.svelte +16 -11
- package/package/components/PullGitRepoPopover.svelte +355 -0
- package/package/components/PullGitRepoPopover.svelte.d.ts +18 -0
- package/package/components/S3FilePicker.svelte +5 -3
- package/package/components/SavedInputs.svelte +2 -2
- package/package/components/ScriptBuilder.svelte +4 -3
- package/package/components/ScriptEditor.svelte +34 -31
- package/package/components/ScriptEditor.svelte.d.ts +3 -3
- package/package/components/ServiceLogsInner.svelte +2 -1
- package/package/components/ServiceLogsInner.svelte.d.ts +1 -0
- package/package/components/UserSettings.svelte +1 -1
- package/package/components/WorkerTagSelect.svelte +32 -3
- package/package/components/apps/components/buttons/AppButton.svelte +7 -1
- package/package/components/apps/components/buttons/AppButton.svelte.d.ts +1 -0
- package/package/components/apps/components/display/AppCustomComponent.svelte +1 -1
- package/package/components/apps/components/display/AppDisplayComponentByJobId.svelte +16 -11
- package/package/components/apps/components/display/AppJobIdLogComponent.svelte +13 -10
- package/package/components/apps/components/display/AppMenu.svelte +5 -0
- package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +3 -3
- package/package/components/apps/components/display/dbtable/DeleteRow.svelte +3 -3
- package/package/components/apps/components/display/dbtable/InsertRowRunnable.svelte +3 -3
- package/package/components/apps/components/display/dbtable/UpdateCell.svelte +3 -3
- package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte +3 -3
- package/package/components/apps/components/helpers/RunnableComponent.svelte +65 -54
- package/package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +5 -5
- package/package/components/apps/components/inputs/AppUserResource.svelte +26 -8
- package/package/components/apps/editor/AppEditorHeader.svelte +11 -5
- package/package/components/apps/editor/AppJobsDrawer.svelte +5 -5
- package/package/components/apps/editor/RunnableJobPanel.svelte +4 -4
- package/package/components/apps/editor/component/components.d.ts +12 -0
- package/package/components/apps/editor/component/components.js +19 -7
- package/package/components/assets/AssetButtons.svelte +38 -0
- package/package/components/assets/AssetButtons.svelte.d.ts +15 -0
- package/package/components/assets/AssetsDropdownButton.svelte +60 -72
- package/package/components/assets/AssetsDropdownButton.svelte.d.ts +3 -4
- package/package/components/assets/AssetsUsageDrawer.svelte +10 -10
- package/package/components/assets/JobAssetsViewer.svelte +79 -0
- package/package/components/assets/JobAssetsViewer.svelte.d.ts +7 -0
- package/package/components/assets/README_DEV.md +0 -0
- package/package/components/assets/lib.d.ts +9 -1
- package/package/components/assets/lib.js +48 -7
- package/package/components/common/fileUpload/FileUpload.svelte +126 -84
- package/package/components/common/fileUpload/FileUpload.svelte.d.ts +13 -3
- package/package/components/common/fileUpload/S3ArgInput.svelte +111 -0
- package/package/components/common/fileUpload/S3ArgInput.svelte.d.ts +21 -0
- package/package/components/common/table/ScriptRow.svelte +3 -1
- package/package/components/copilot/autocomplete/Autocompletor.js +23 -5
- package/package/components/copilot/chat/AIChatDisplay.svelte +8 -0
- package/package/components/copilot/chat/AIChatManager.svelte.js +13 -8
- package/package/components/copilot/chat/flow/ModuleAcceptReject.svelte +5 -5
- package/package/components/copilot/chat/flow/core.d.ts +1 -1
- package/package/components/copilot/chat/flow/core.js +2 -38
- package/package/components/copilot/chat/navigator/apiTools.d.ts +8 -0
- package/package/components/copilot/chat/navigator/apiTools.js +95 -15
- package/package/components/copilot/chat/navigator/core.d.ts +1 -1
- package/package/components/copilot/chat/navigator/core.js +2 -1
- package/package/components/copilot/chat/script/core.d.ts +11 -2
- package/package/components/copilot/chat/script/core.js +135 -1
- package/package/components/copilot/chat/shared.d.ts +10 -0
- package/package/components/copilot/chat/shared.js +56 -0
- package/package/components/copilot/lib.d.ts +1 -0
- package/package/components/copilot/lib.js +27 -9
- package/package/components/custom_ui.d.ts +1 -0
- package/package/components/flows/FlowAssetsHandler.svelte +133 -0
- package/package/components/flows/FlowAssetsHandler.svelte.d.ts +14 -0
- package/package/components/flows/content/FlowModuleComponent.svelte +16 -18
- package/package/components/flows/flowStore.d.ts +1 -1
- package/package/components/flows/map/FlowModuleSchemaItem.svelte +1 -0
- package/package/components/flows/propPicker/OutputPicker.svelte +9 -4
- package/package/components/flows/scheduleUtils.js +1 -1
- package/package/components/flows/types.d.ts +2 -1
- package/package/components/graph/FlowGraphV2.svelte +8 -104
- package/package/components/graph/FlowGraphV2.svelte.d.ts +0 -2
- package/package/components/graph/graphBuilder.svelte.d.ts +6 -3
- package/package/components/graph/graphBuilder.svelte.js +35 -9
- package/package/components/graph/renderers/edges/BaseEdge.svelte +2 -5
- package/package/components/graph/renderers/edges/BaseEdge.svelte.d.ts +1 -0
- package/package/components/graph/renderers/nodes/AssetNode.svelte +23 -20
- package/package/components/graph/renderers/nodes/AssetNode.svelte.d.ts +5 -10
- package/package/components/graph/renderers/nodes/AssetsOverflowedNode.svelte +1 -1
- package/package/components/graph/util.js +1 -1
- package/package/components/home/ItemsList.svelte +2 -0
- package/package/components/icons/AssetGenericIcon.svelte +0 -3
- package/package/components/jobs/JobPreview.svelte +10 -6
- package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte +13 -12
- package/package/components/runs/BatchReRunOptionsPane.svelte +5 -1
- package/package/components/runs/JobPreview.svelte +26 -16
- package/package/components/runs/{JobLoader.svelte.d.ts → JobsLoader.svelte.d.ts} +3 -3
- package/package/components/runs/NoWorkerWithTagWarning.svelte +2 -2
- package/package/components/runs/NoWorkerWithTagWarning.svelte.d.ts +1 -0
- package/package/components/runs/RunsFilter.svelte.d.ts +1 -1
- package/package/components/scriptEditor/LogPanel.svelte +3 -2
- package/package/components/script_builder.d.ts +2 -2
- package/package/components/settings/CreateToken.svelte +76 -41
- package/package/components/settings/CreateToken.svelte.d.ts +1 -1
- package/package/components/settings/ScopeSelector.svelte +613 -0
- package/package/components/settings/ScopeSelector.svelte.d.ts +8 -0
- package/package/components/settings/TokenDisplay.svelte +103 -0
- package/package/components/settings/TokenDisplay.svelte.d.ts +10 -0
- package/package/components/settings/TokensTable.svelte +70 -349
- package/package/components/sidebar/CriticalAlertModal.svelte +3 -0
- package/package/components/triggers/DeleteTriggerButton.svelte +1 -1
- package/package/components/triggers/TriggerEditorToolbar.svelte +3 -3
- package/package/components/triggers/TriggerRetriesAndErrorHandler.svelte +55 -0
- package/package/components/triggers/TriggerRetriesAndErrorHandler.svelte.d.ts +13 -0
- package/package/components/triggers/TriggersEditor.svelte +45 -3
- package/package/components/triggers/TriggersWrapper.svelte +2 -2
- package/package/components/triggers/gcp/GcpTriggerEditorInner.svelte +43 -2
- package/package/components/triggers/gcp/utils.js +9 -1
- package/package/components/triggers/http/OpenAPISpecGenerator.svelte +1 -0
- package/package/components/triggers/http/RouteEditorInner.svelte +208 -164
- package/package/components/triggers/http/RouteEditorInner.svelte.d.ts +6 -2
- package/package/components/triggers/http/utils.js +9 -3
- package/package/components/triggers/kafka/KafkaTriggerEditorInner.svelte +43 -2
- package/package/components/triggers/kafka/utils.js +9 -1
- package/package/components/triggers/mqtt/MqttEditorConfigSection.svelte +4 -132
- package/package/components/triggers/mqtt/MqttEditorConfigSection.svelte.d.ts +2 -5
- package/package/components/triggers/mqtt/MqttTriggerEditorInner.svelte +178 -9
- package/package/components/triggers/mqtt/utils.js +9 -1
- package/package/components/triggers/nats/NatsTriggerEditorInner.svelte +43 -2
- package/package/components/triggers/nats/utils.js +9 -1
- package/package/components/triggers/postgres/PostgresTriggerEditorInner.svelte +41 -2
- package/package/components/triggers/postgres/utils.js +9 -1
- package/package/components/triggers/schedules/ScheduleEditorInner.svelte +34 -88
- package/package/components/triggers/sqs/SqsTriggerEditorInner.svelte +43 -2
- package/package/components/triggers/sqs/utils.js +9 -1
- package/package/components/triggers/utils.js +12 -0
- package/package/components/triggers/websocket/WebsocketTriggerEditorInner.svelte +43 -2
- package/package/components/triggers/websocket/utils.js +11 -1
- package/package/components/workspaceSettings/AISettings.svelte +0 -2
- package/package/components/workspaceSettings/FilterList.svelte +56 -0
- package/package/components/workspaceSettings/FilterList.svelte.d.ts +8 -0
- package/package/components/workspaceSettings/GitSyncFilterSettings.svelte +785 -0
- package/package/components/workspaceSettings/GitSyncFilterSettings.svelte.d.ts +18 -0
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +305 -23
- package/package/gen/schemas.gen.js +305 -23
- package/package/gen/services.gen.d.ts +33 -1
- package/package/gen/services.gen.js +66 -2
- package/package/gen/types.gen.d.ts +216 -11
- package/package/history.svelte.js +0 -2
- package/package/hub.d.ts +1 -0
- package/package/hubPaths.json +5 -2
- package/package/infer.js +16 -10
- package/package/svelte5Utils.svelte.d.ts +1 -0
- package/package/svelte5Utils.svelte.js +25 -18
- package/package/toast.js +10 -0
- package/package/utils.d.ts +3 -2
- package/package/utils.js +20 -5
- package/package.json +11 -11
- package/package/components/ResultJobLoader.svelte +0 -219
- package/package/components/ResultJobLoader.svelte.d.ts +0 -52
- package/package/components/TestJobLoader.svelte +0 -274
- package/package/components/TestJobLoader.svelte.d.ts +0 -43
- package/package/components/icons/AssetVarIcon.svelte +0 -31
- package/package/components/icons/AssetVarIcon.svelte.d.ts +0 -9
- /package/package/components/runs/{JobLoader.svelte → JobsLoader.svelte} +0 -0
|
@@ -30,9 +30,12 @@ import { HubFlow } from '../../../hub';
|
|
|
30
30
|
import RouteBodyTransformerOption from './RouteBodyTransformerOption.svelte';
|
|
31
31
|
import TestingBadge from '../testingBadge.svelte';
|
|
32
32
|
import TriggerEditorToolbar from '../TriggerEditorToolbar.svelte';
|
|
33
|
-
import { handleConfigChange } from '../utils';
|
|
33
|
+
import { getHandlerType, handleConfigChange } from '../utils';
|
|
34
34
|
import autosize from '../../../autosize';
|
|
35
35
|
import { untrack } from 'svelte';
|
|
36
|
+
import Tabs from '../../common/tabs/Tabs.svelte';
|
|
37
|
+
import Tab from '../../common/tabs/Tab.svelte';
|
|
38
|
+
import TriggerRetriesAndErrorHandler from '../TriggerRetriesAndErrorHandler.svelte';
|
|
36
39
|
let { useDrawer = true, hideTarget = false, description = undefined, isEditor = false, customLabel = undefined, allowDraft = false, isDeployed = false, onConfigChange = undefined, onCaptureConfigChange = undefined, onUpdate = undefined, onDelete = undefined, onReset = undefined, trigger = undefined, customSaveBehavior = undefined } = $props();
|
|
37
40
|
// Form data state
|
|
38
41
|
let initialPath = $state('');
|
|
@@ -66,6 +69,9 @@ let can_write = $state(true);
|
|
|
66
69
|
let extraPerms = $state(undefined);
|
|
67
70
|
let summary = $state();
|
|
68
71
|
let routeDescription = $state();
|
|
72
|
+
let error_handler_path = $state();
|
|
73
|
+
let error_handler_args = $state({});
|
|
74
|
+
let retry = $state();
|
|
69
75
|
// Component references
|
|
70
76
|
let s3FilePicker = $state(null);
|
|
71
77
|
let s3Editor = $state(null);
|
|
@@ -74,6 +80,8 @@ let variableEditor = $state(null);
|
|
|
74
80
|
let drawer = $state(null);
|
|
75
81
|
let initialConfig = undefined;
|
|
76
82
|
let deploymentLoading = $state(false);
|
|
83
|
+
let optionTabSelected = $state('request_options');
|
|
84
|
+
let errorHandlerSelected = $state('slack');
|
|
77
85
|
const isAdmin = $derived($userStore?.is_admin || $userStore?.is_super_admin);
|
|
78
86
|
const routeConfig = $derived.by(getRouteConfig);
|
|
79
87
|
const captureConfig = $derived.by(isEditor ? getCaptureConfig : () => ({}));
|
|
@@ -182,6 +190,10 @@ export async function openNew(nis_flow, fixedScriptPath_, defaultValues) {
|
|
|
182
190
|
wrap_body = defaultValues?.wrap_body ?? false;
|
|
183
191
|
summary = defaultValues?.summary ?? '';
|
|
184
192
|
routeDescription = defaultValues?.description ?? '';
|
|
193
|
+
error_handler_path = defaultValues?.error_handler_path ?? undefined;
|
|
194
|
+
error_handler_args = defaultValues?.error_handler_args ?? {};
|
|
195
|
+
retry = defaultValues?.retry ?? undefined;
|
|
196
|
+
errorHandlerSelected = getHandlerType(error_handler_path ?? '');
|
|
185
197
|
}
|
|
186
198
|
finally {
|
|
187
199
|
clearTimeout(loader);
|
|
@@ -190,34 +202,38 @@ export async function openNew(nis_flow, fixedScriptPath_, defaultValues) {
|
|
|
190
202
|
}
|
|
191
203
|
}
|
|
192
204
|
function loadTriggerConfig(cfg) {
|
|
193
|
-
script_path = cfg?.script_path;
|
|
194
|
-
initialScriptPath = cfg?.script_path;
|
|
195
|
-
is_flow = cfg?.is_flow;
|
|
196
|
-
path = cfg?.path;
|
|
197
|
-
route_path = cfg?.route_path;
|
|
205
|
+
script_path = cfg?.script_path ?? '';
|
|
206
|
+
initialScriptPath = cfg?.script_path ?? '';
|
|
207
|
+
is_flow = cfg?.is_flow ?? false;
|
|
208
|
+
path = cfg?.path ?? '';
|
|
209
|
+
route_path = cfg?.route_path ?? '';
|
|
198
210
|
http_method = cfg?.http_method ?? 'post';
|
|
199
|
-
is_async = cfg?.is_async;
|
|
200
|
-
workspaced_route = cfg?.workspaced_route;
|
|
201
|
-
wrap_body = cfg?.wrap_body;
|
|
202
|
-
raw_string = cfg?.raw_string;
|
|
203
|
-
summary = cfg?.summary;
|
|
204
|
-
routeDescription = cfg?.description;
|
|
211
|
+
is_async = cfg?.is_async ?? false;
|
|
212
|
+
workspaced_route = cfg?.workspaced_route ?? false;
|
|
213
|
+
wrap_body = cfg?.wrap_body ?? false;
|
|
214
|
+
raw_string = cfg?.raw_string ?? false;
|
|
215
|
+
summary = cfg?.summary ?? '';
|
|
216
|
+
routeDescription = cfg?.description ?? '';
|
|
205
217
|
authentication_resource_path = cfg?.authentication_resource_path ?? '';
|
|
206
218
|
if (cfg?.authentication_method === 'custom_script') {
|
|
207
219
|
authentication_method = 'signature';
|
|
208
220
|
signature_options_type = 'custom_script';
|
|
209
221
|
}
|
|
210
222
|
else {
|
|
211
|
-
authentication_method = cfg?.authentication_method;
|
|
223
|
+
authentication_method = cfg?.authentication_method ?? 'none';
|
|
212
224
|
signature_options_type = 'custom_signature';
|
|
213
225
|
}
|
|
214
226
|
if (!isCloudHosted()) {
|
|
215
227
|
static_asset_config = cfg?.static_asset_config;
|
|
216
228
|
s3FileUploadRawMode = !!cfg?.static_asset_config;
|
|
217
|
-
is_static_website = cfg?.is_static_website;
|
|
229
|
+
is_static_website = cfg?.is_static_website ?? false;
|
|
218
230
|
}
|
|
219
|
-
extraPerms = cfg?.extra_perms;
|
|
220
|
-
can_write = canWrite(path, cfg?.extra_perms, $userStore);
|
|
231
|
+
extraPerms = cfg?.extra_perms ?? undefined;
|
|
232
|
+
can_write = canWrite(path, cfg?.extra_perms ?? {}, $userStore);
|
|
233
|
+
error_handler_path = cfg?.error_handler_path;
|
|
234
|
+
error_handler_args = cfg?.error_handler_args ?? {};
|
|
235
|
+
retry = cfg?.retry;
|
|
236
|
+
errorHandlerSelected = getHandlerType(error_handler_path ?? '');
|
|
221
237
|
}
|
|
222
238
|
async function loadTrigger(defaultConfig) {
|
|
223
239
|
if (defaultConfig) {
|
|
@@ -271,7 +287,10 @@ function getRouteConfig() {
|
|
|
271
287
|
is_static_website,
|
|
272
288
|
extra_perms: extraPerms,
|
|
273
289
|
summary,
|
|
274
|
-
description: routeDescription
|
|
290
|
+
description: routeDescription,
|
|
291
|
+
error_handler_path,
|
|
292
|
+
error_handler_args,
|
|
293
|
+
retry
|
|
275
294
|
};
|
|
276
295
|
return nCfg;
|
|
277
296
|
}
|
|
@@ -413,7 +432,6 @@ $effect(() => {
|
|
|
413
432
|
disabled={!can_write}
|
|
414
433
|
/>
|
|
415
434
|
{/if}
|
|
416
|
-
{s3FileUploadRawMode}
|
|
417
435
|
{#if s3FileUploadRawMode}
|
|
418
436
|
{#if can_write}
|
|
419
437
|
<JsonEditor
|
|
@@ -515,175 +533,201 @@ $effect(() => {
|
|
|
515
533
|
{#if !is_static_website}
|
|
516
534
|
<Section label="Advanced" collapsable>
|
|
517
535
|
<div class="flex flex-col gap-4">
|
|
518
|
-
|
|
519
|
-
<
|
|
520
|
-
<
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
<ToggleButton
|
|
532
|
-
label="Async"
|
|
533
|
-
value="async"
|
|
534
|
-
tooltip="The returning value is the uuid of the job assigned to execute the job."
|
|
535
|
-
{item}
|
|
536
|
-
{disabled}
|
|
537
|
-
/>
|
|
538
|
-
<ToggleButton
|
|
539
|
-
label="Sync"
|
|
540
|
-
value="sync"
|
|
541
|
-
tooltip="Triggers the execution, wait for the job to complete and return it as a response."
|
|
542
|
-
{item}
|
|
543
|
-
{disabled}
|
|
544
|
-
/>
|
|
545
|
-
{/snippet}
|
|
546
|
-
</ToggleButtonGroup>
|
|
547
|
-
</svelte:fragment>
|
|
548
|
-
</Label>
|
|
549
|
-
</div>
|
|
550
|
-
{/if}
|
|
551
|
-
<Label label="Authentication" class="w-full">
|
|
552
|
-
<svelte:fragment slot="action">
|
|
553
|
-
<ToggleButtonGroup
|
|
554
|
-
class="w-auto h-full"
|
|
555
|
-
bind:selected={authentication_method}
|
|
556
|
-
on:selected={(e) => {
|
|
557
|
-
if (e.detail === 'signature' && signature_options_type === 'custom_script') {
|
|
558
|
-
raw_string = true
|
|
559
|
-
}
|
|
560
|
-
}}
|
|
561
|
-
disabled={!can_write}
|
|
562
|
-
>
|
|
563
|
-
{#snippet children({ item, disabled })}
|
|
564
|
-
{#each authentication_options as option}
|
|
565
|
-
{#if option.value === 'signature'}
|
|
566
|
-
<Popover placement="top-end" usePointerDownOutside>
|
|
567
|
-
<svelte:fragment slot="trigger">
|
|
568
|
-
<ToggleButton
|
|
569
|
-
label={option.label}
|
|
570
|
-
value={option.value}
|
|
571
|
-
tooltip={option.tooltip}
|
|
572
|
-
{item}
|
|
573
|
-
{disabled}
|
|
574
|
-
/>
|
|
575
|
-
</svelte:fragment>
|
|
576
|
-
<svelte:fragment slot="content">
|
|
536
|
+
<div class="min-h-96">
|
|
537
|
+
<Tabs bind:selected={optionTabSelected}>
|
|
538
|
+
<Tab value="request_options">Request Options</Tab>
|
|
539
|
+
<Tab value="error_handler">Error Handler</Tab>
|
|
540
|
+
<Tab value="retries">Retries</Tab>
|
|
541
|
+
</Tabs>
|
|
542
|
+
<div class="mt-4">
|
|
543
|
+
{#if optionTabSelected === 'request_options'}
|
|
544
|
+
<div class="flex flex-col gap-4">
|
|
545
|
+
{#if !static_asset_config}
|
|
546
|
+
<div class="flex flex-row justify-between">
|
|
547
|
+
<Label label="Request type" class="w-full">
|
|
548
|
+
<svelte:fragment slot="action">
|
|
577
549
|
<ToggleButtonGroup
|
|
578
550
|
class="w-auto h-full"
|
|
579
|
-
|
|
580
|
-
on:selected={(
|
|
581
|
-
|
|
582
|
-
if (!raw_string) {
|
|
583
|
-
raw_string = true
|
|
584
|
-
}
|
|
585
|
-
}
|
|
551
|
+
selected={is_async ? 'async' : 'sync'}
|
|
552
|
+
on:selected={({ detail }) => {
|
|
553
|
+
is_async = detail === 'async'
|
|
586
554
|
}}
|
|
587
|
-
disabled={!can_write}
|
|
555
|
+
disabled={!can_write || !!static_asset_config}
|
|
588
556
|
>
|
|
589
557
|
{#snippet children({ item, disabled })}
|
|
590
558
|
<ToggleButton
|
|
591
|
-
label="
|
|
592
|
-
value="
|
|
593
|
-
tooltip="
|
|
559
|
+
label="Async"
|
|
560
|
+
value="async"
|
|
561
|
+
tooltip="The returning value is the uuid of the job assigned to execute the job."
|
|
594
562
|
{item}
|
|
595
563
|
{disabled}
|
|
596
564
|
/>
|
|
597
565
|
<ToggleButton
|
|
598
|
-
label="
|
|
599
|
-
value="
|
|
600
|
-
tooltip="
|
|
566
|
+
label="Sync"
|
|
567
|
+
value="sync"
|
|
568
|
+
tooltip="Triggers the execution, wait for the job to complete and return it as a response."
|
|
601
569
|
{item}
|
|
602
570
|
{disabled}
|
|
603
571
|
/>
|
|
604
572
|
{/snippet}
|
|
605
573
|
</ToggleButtonGroup>
|
|
606
574
|
</svelte:fragment>
|
|
607
|
-
</
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
{
|
|
575
|
+
</Label>
|
|
576
|
+
</div>
|
|
577
|
+
{/if}
|
|
578
|
+
<Label label="Authentication" class="w-full">
|
|
579
|
+
<svelte:fragment slot="action">
|
|
580
|
+
<ToggleButtonGroup
|
|
581
|
+
class="w-auto h-full"
|
|
582
|
+
bind:selected={authentication_method}
|
|
583
|
+
on:selected={(e) => {
|
|
584
|
+
if (
|
|
585
|
+
e.detail === 'signature' &&
|
|
586
|
+
signature_options_type === 'custom_script'
|
|
587
|
+
) {
|
|
588
|
+
raw_string = true
|
|
589
|
+
}
|
|
590
|
+
}}
|
|
591
|
+
disabled={!can_write}
|
|
592
|
+
>
|
|
593
|
+
{#snippet children({ item, disabled })}
|
|
594
|
+
{#each authentication_options as option}
|
|
595
|
+
{#if option.value === 'signature'}
|
|
596
|
+
<Popover placement="top-end" usePointerDownOutside>
|
|
597
|
+
<svelte:fragment slot="trigger">
|
|
598
|
+
<ToggleButton
|
|
599
|
+
label={option.label}
|
|
600
|
+
value={option.value}
|
|
601
|
+
tooltip={option.tooltip}
|
|
602
|
+
{item}
|
|
603
|
+
{disabled}
|
|
604
|
+
/>
|
|
605
|
+
</svelte:fragment>
|
|
606
|
+
<svelte:fragment slot="content">
|
|
607
|
+
<ToggleButtonGroup
|
|
608
|
+
class="w-auto h-full"
|
|
609
|
+
bind:selected={signature_options_type}
|
|
610
|
+
on:selected={(e) => {
|
|
611
|
+
if (e.detail === 'custom_script') {
|
|
612
|
+
if (!raw_string) {
|
|
613
|
+
raw_string = true
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
}}
|
|
617
|
+
disabled={!can_write}
|
|
618
|
+
>
|
|
619
|
+
{#snippet children({ item, disabled })}
|
|
620
|
+
<ToggleButton
|
|
621
|
+
label="Signature validation"
|
|
622
|
+
value="custom_signature"
|
|
623
|
+
tooltip="Use a predefined or custom signature-based authentication scheme"
|
|
624
|
+
{item}
|
|
625
|
+
{disabled}
|
|
626
|
+
/>
|
|
627
|
+
<ToggleButton
|
|
628
|
+
label="Custom script"
|
|
629
|
+
value="custom_script"
|
|
630
|
+
tooltip="Use your own script logic"
|
|
631
|
+
{item}
|
|
632
|
+
{disabled}
|
|
633
|
+
/>
|
|
634
|
+
{/snippet}
|
|
635
|
+
</ToggleButtonGroup>
|
|
636
|
+
</svelte:fragment>
|
|
637
|
+
</Popover>
|
|
638
|
+
{:else}
|
|
639
|
+
<ToggleButton
|
|
640
|
+
label={option.label}
|
|
641
|
+
value={option.value}
|
|
642
|
+
tooltip={option.tooltip}
|
|
643
|
+
{item}
|
|
644
|
+
{disabled}
|
|
645
|
+
/>
|
|
646
|
+
{/if}
|
|
647
|
+
{/each}
|
|
648
|
+
{/snippet}
|
|
649
|
+
</ToggleButtonGroup>
|
|
650
|
+
</svelte:fragment>
|
|
651
|
+
</Label>
|
|
652
|
+
|
|
653
|
+
{#each authentication_options as option}
|
|
654
|
+
{#if option.resource_type && authentication_method === option.value}
|
|
655
|
+
<ResourcePicker
|
|
656
|
+
bind:value={authentication_resource_path}
|
|
657
|
+
resourceType={option.resource_type}
|
|
658
|
+
disabled={!can_write}
|
|
615
659
|
/>
|
|
616
660
|
{/if}
|
|
617
661
|
{/each}
|
|
618
|
-
{/snippet}
|
|
619
|
-
</ToggleButtonGroup>
|
|
620
|
-
</svelte:fragment>
|
|
621
|
-
</Label>
|
|
622
662
|
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
663
|
+
{#if authentication_method === 'signature'}
|
|
664
|
+
{#if signature_options_type === 'custom_signature'}
|
|
665
|
+
<ResourcePicker
|
|
666
|
+
bind:value={authentication_resource_path}
|
|
667
|
+
resourceType={'signature_auth'}
|
|
668
|
+
disabled={!can_write}
|
|
669
|
+
/>
|
|
670
|
+
{:else if signature_options_type === 'custom_script'}
|
|
671
|
+
<p class="text-xs mt-3 mb-1 text-tertiary">
|
|
672
|
+
Pick a secret variable or create one which will be used as a secret key
|
|
673
|
+
for your custom script/flow<Required required={true} /><br />
|
|
674
|
+
</p>
|
|
675
|
+
<div class="flex flex-row gap-2">
|
|
676
|
+
<div class="flex flex-row gap-2 w-full">
|
|
677
|
+
<input
|
|
678
|
+
type="text"
|
|
679
|
+
autocomplete="off"
|
|
680
|
+
bind:value={variable_path}
|
|
681
|
+
readonly
|
|
682
|
+
disabled={true}
|
|
683
|
+
/>
|
|
684
|
+
<Button
|
|
685
|
+
title="Add variable"
|
|
686
|
+
on:click={() => variablePicker?.openDrawer()}
|
|
687
|
+
size="xs"
|
|
688
|
+
color="dark"
|
|
689
|
+
disabled={!can_write}
|
|
690
|
+
>
|
|
691
|
+
Pick variable
|
|
692
|
+
</Button>
|
|
693
|
+
</div>
|
|
694
|
+
<Button
|
|
695
|
+
disabled={emptyString(variable_path) || !can_write}
|
|
696
|
+
color="dark"
|
|
697
|
+
size="xs"
|
|
698
|
+
href={itemKind === 'flow'
|
|
699
|
+
? `/flows/add?${SECRET_KEY_PATH}=${encodeURIComponent(variable_path)}&hub=${
|
|
700
|
+
HubFlow.SIGNATURE_TEMPLATE
|
|
701
|
+
}`
|
|
702
|
+
: `/scripts/add?${SECRET_KEY_PATH}=${encodeURIComponent(
|
|
703
|
+
variable_path
|
|
704
|
+
)}&hub=hub%2F${HUB_SCRIPT_ID}`}
|
|
705
|
+
target="_blank">Create from template</Button
|
|
706
|
+
>
|
|
707
|
+
</div>
|
|
708
|
+
{/if}
|
|
709
|
+
{/if}
|
|
632
710
|
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
bind:value={authentication_resource_path}
|
|
637
|
-
resourceType={'signature_auth'}
|
|
638
|
-
disabled={!can_write}
|
|
639
|
-
/>
|
|
640
|
-
{:else if signature_options_type === 'custom_script'}
|
|
641
|
-
<p class="text-xs mt-3 mb-1 text-tertiary">
|
|
642
|
-
Pick a secret variable or create one which will be used as a secret key for your
|
|
643
|
-
custom script/flow<Required required={true} /><br />
|
|
644
|
-
</p>
|
|
645
|
-
<div class="flex flex-row gap-2">
|
|
646
|
-
<div class="flex flex-row gap-2 w-full">
|
|
647
|
-
<input
|
|
648
|
-
type="text"
|
|
649
|
-
autocomplete="off"
|
|
650
|
-
bind:value={variable_path}
|
|
651
|
-
readonly
|
|
652
|
-
disabled={true}
|
|
653
|
-
/>
|
|
654
|
-
<Button
|
|
655
|
-
title="Add variable"
|
|
656
|
-
on:click={() => variablePicker?.openDrawer()}
|
|
657
|
-
size="xs"
|
|
658
|
-
color="dark"
|
|
711
|
+
<RouteBodyTransformerOption
|
|
712
|
+
bind:raw_string
|
|
713
|
+
bind:wrap_body
|
|
659
714
|
disabled={!can_write}
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
</Button>
|
|
715
|
+
{testingBadge}
|
|
716
|
+
/>
|
|
663
717
|
</div>
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
</div>
|
|
678
|
-
{/if}
|
|
679
|
-
{/if}
|
|
680
|
-
|
|
681
|
-
<RouteBodyTransformerOption
|
|
682
|
-
bind:raw_string
|
|
683
|
-
bind:wrap_body
|
|
684
|
-
disabled={!can_write}
|
|
685
|
-
{testingBadge}
|
|
686
|
-
/>
|
|
718
|
+
{:else}
|
|
719
|
+
<TriggerRetriesAndErrorHandler
|
|
720
|
+
{optionTabSelected}
|
|
721
|
+
{itemKind}
|
|
722
|
+
{can_write}
|
|
723
|
+
bind:errorHandlerSelected
|
|
724
|
+
bind:error_handler_path
|
|
725
|
+
bind:error_handler_args
|
|
726
|
+
bind:retry
|
|
727
|
+
/>
|
|
728
|
+
{/if}
|
|
729
|
+
</div>
|
|
730
|
+
</div>
|
|
687
731
|
</div>
|
|
688
732
|
</Section>
|
|
689
733
|
{/if}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type HttpTrigger, type NewHttpTrigger } from '../../../gen';
|
|
1
2
|
declare const RouteEditorInner: import("svelte").Component<{
|
|
2
3
|
useDrawer?: boolean;
|
|
3
4
|
hideTarget?: boolean;
|
|
@@ -14,8 +15,11 @@ declare const RouteEditorInner: import("svelte").Component<{
|
|
|
14
15
|
trigger?: any;
|
|
15
16
|
customSaveBehavior?: any;
|
|
16
17
|
}, {
|
|
17
|
-
openEdit: (ePath: string, isFlow: boolean, defaultConfig?:
|
|
18
|
-
openNew: (nis_flow: boolean, fixedScriptPath_?: string, defaultValues?:
|
|
18
|
+
openEdit: (ePath: string, isFlow: boolean, defaultConfig?: Partial<NewHttpTrigger>) => Promise<void>;
|
|
19
|
+
openNew: (nis_flow: boolean, fixedScriptPath_?: string, defaultValues?: Partial<HttpTrigger> & {
|
|
20
|
+
s3FileUploadRawMode?: boolean;
|
|
21
|
+
signature_options_type?: "custom_script" | "custom_signature";
|
|
22
|
+
}) => Promise<void>;
|
|
19
23
|
}, "">;
|
|
20
24
|
type RouteEditorInner = ReturnType<typeof RouteEditorInner>;
|
|
21
25
|
export default RouteEditorInner;
|
|
@@ -25,7 +25,7 @@ export async function saveHttpRouteFromCfg(initialPath, routeCfg, edit, workspac
|
|
|
25
25
|
is_flow: routeCfg.is_flow,
|
|
26
26
|
is_async: routeCfg.is_async,
|
|
27
27
|
authentication_method: routeCfg.authentication_method,
|
|
28
|
-
route_path:
|
|
28
|
+
route_path: routeCfg.route_path,
|
|
29
29
|
http_method: routeCfg.http_method,
|
|
30
30
|
is_static_website: routeCfg.is_static_website,
|
|
31
31
|
static_asset_config: routeCfg.static_asset_config,
|
|
@@ -34,14 +34,20 @@ export async function saveHttpRouteFromCfg(initialPath, routeCfg, edit, workspac
|
|
|
34
34
|
wrap_body: routeCfg.wrap_body,
|
|
35
35
|
raw_string: routeCfg.raw_string,
|
|
36
36
|
description: routeCfg.description,
|
|
37
|
-
summary: routeCfg.summary
|
|
37
|
+
summary: routeCfg.summary,
|
|
38
|
+
error_handler_path: routeCfg.error_handler_path,
|
|
39
|
+
error_handler_args: routeCfg.error_handler_path ? routeCfg.error_handler_args : undefined,
|
|
40
|
+
retry: routeCfg.retry
|
|
38
41
|
};
|
|
39
42
|
try {
|
|
40
43
|
if (edit) {
|
|
41
44
|
await HttpTriggerService.updateHttpTrigger({
|
|
42
45
|
workspace: workspace,
|
|
43
46
|
path: initialPath,
|
|
44
|
-
requestBody:
|
|
47
|
+
requestBody: {
|
|
48
|
+
...requestBody,
|
|
49
|
+
route_path: isAdmin || !edit ? routeCfg.route_path : undefined
|
|
50
|
+
}
|
|
45
51
|
});
|
|
46
52
|
sendUserToast(`Route ${routeCfg.path} updated`);
|
|
47
53
|
}
|
|
@@ -14,7 +14,10 @@ import KafkaTriggersConfigSection from './KafkaTriggersConfigSection.svelte';
|
|
|
14
14
|
import { untrack } from 'svelte';
|
|
15
15
|
import TriggerEditorToolbar from '../TriggerEditorToolbar.svelte';
|
|
16
16
|
import { saveKafkaTriggerFromCfg } from './utils';
|
|
17
|
-
import { handleConfigChange } from '../utils';
|
|
17
|
+
import { getHandlerType, handleConfigChange } from '../utils';
|
|
18
|
+
import Tabs from '../../common/tabs/Tabs.svelte';
|
|
19
|
+
import Tab from '../../common/tabs/Tab.svelte';
|
|
20
|
+
import TriggerRetriesAndErrorHandler from '../TriggerRetriesAndErrorHandler.svelte';
|
|
18
21
|
let { useDrawer = true, description = undefined, hideTarget = false, hideTooltips = false, isEditor = false, allowDraft = false, trigger = undefined, customLabel, isDeployed = false, cloudDisabled = false, onConfigChange = undefined, onCaptureConfigChange = undefined, onUpdate = undefined, onDelete = undefined, onReset = undefined } = $props();
|
|
19
22
|
let drawer = $state();
|
|
20
23
|
let is_flow = $state(false);
|
|
@@ -37,6 +40,11 @@ let kafkaCfgValid = $state(false);
|
|
|
37
40
|
let kafkaResourcePath = $state('');
|
|
38
41
|
let kafkaCfg = $state({});
|
|
39
42
|
let deploymentLoading = $state(false);
|
|
43
|
+
let optionTabSelected = $state('error_handler');
|
|
44
|
+
let errorHandlerSelected = $state('slack');
|
|
45
|
+
let error_handler_path = $state();
|
|
46
|
+
let error_handler_args = $state({});
|
|
47
|
+
let retry = $state();
|
|
40
48
|
const isValid = $derived(!!kafkaResourcePath &&
|
|
41
49
|
kafkaCfgValid &&
|
|
42
50
|
kafkaCfg.topics &&
|
|
@@ -101,6 +109,10 @@ export async function openNew(nis_flow, fixedScriptPath_, nDefaultValues) {
|
|
|
101
109
|
path = nDefaultValues?.path ?? '';
|
|
102
110
|
initialPath = '';
|
|
103
111
|
dirtyPath = false;
|
|
112
|
+
error_handler_path = nDefaultValues?.error_handler_path ?? undefined;
|
|
113
|
+
error_handler_args = nDefaultValues?.error_handler_args ?? {};
|
|
114
|
+
retry = nDefaultValues?.retry ?? undefined;
|
|
115
|
+
errorHandlerSelected = getHandlerType(error_handler_path ?? '');
|
|
104
116
|
}
|
|
105
117
|
finally {
|
|
106
118
|
clearTimeout(loadingTimeout);
|
|
@@ -121,6 +133,10 @@ function loadTriggerConfig(cfg) {
|
|
|
121
133
|
enabled = cfg?.enabled;
|
|
122
134
|
extra_perms = cfg?.extra_perms;
|
|
123
135
|
can_write = canWrite(path, cfg?.extra_perms, $userStore);
|
|
136
|
+
error_handler_path = cfg?.error_handler_path;
|
|
137
|
+
error_handler_args = cfg?.error_handler_args ?? {};
|
|
138
|
+
retry = cfg?.retry;
|
|
139
|
+
errorHandlerSelected = getHandlerType(error_handler_path ?? '');
|
|
124
140
|
}
|
|
125
141
|
async function loadTrigger(defaultConfig) {
|
|
126
142
|
if (defaultConfig) {
|
|
@@ -144,7 +160,10 @@ function getSaveCfg() {
|
|
|
144
160
|
group_id: kafkaCfg.group_id,
|
|
145
161
|
topics: kafkaCfg.topics,
|
|
146
162
|
enabled,
|
|
147
|
-
extra_perms: extra_perms
|
|
163
|
+
extra_perms: extra_perms,
|
|
164
|
+
error_handler_path,
|
|
165
|
+
error_handler_args,
|
|
166
|
+
retry
|
|
148
167
|
};
|
|
149
168
|
}
|
|
150
169
|
async function updateTrigger() {
|
|
@@ -310,6 +329,28 @@ $effect(() => {
|
|
|
310
329
|
{can_write}
|
|
311
330
|
showTestingBadge={isEditor}
|
|
312
331
|
/>
|
|
332
|
+
|
|
333
|
+
<Section label="Advanced" collapsable>
|
|
334
|
+
<div class="flex flex-col gap-4">
|
|
335
|
+
<div class="min-h-96">
|
|
336
|
+
<Tabs bind:selected={optionTabSelected}>
|
|
337
|
+
<Tab value="error_handler">Error Handler</Tab>
|
|
338
|
+
<Tab value="retries">Retries</Tab>
|
|
339
|
+
</Tabs>
|
|
340
|
+
<div class="mt-4">
|
|
341
|
+
<TriggerRetriesAndErrorHandler
|
|
342
|
+
{optionTabSelected}
|
|
343
|
+
{itemKind}
|
|
344
|
+
{can_write}
|
|
345
|
+
bind:errorHandlerSelected
|
|
346
|
+
bind:error_handler_path
|
|
347
|
+
bind:error_handler_args
|
|
348
|
+
bind:retry
|
|
349
|
+
/>
|
|
350
|
+
</div>
|
|
351
|
+
</div>
|
|
352
|
+
</div>
|
|
353
|
+
</Section>
|
|
313
354
|
</div>
|
|
314
355
|
{/if}
|
|
315
356
|
{/snippet}
|
|
@@ -2,13 +2,21 @@ import { KafkaTriggerService } from '../../../gen';
|
|
|
2
2
|
import { sendUserToast } from '../../../toast';
|
|
3
3
|
import { get } from 'svelte/store';
|
|
4
4
|
export async function saveKafkaTriggerFromCfg(initialPath, cfg, edit, workspace, usedTriggerKinds) {
|
|
5
|
+
const errorHandlerAndRetries = !cfg.is_flow
|
|
6
|
+
? {
|
|
7
|
+
error_handler_path: cfg.error_handler_path,
|
|
8
|
+
error_handler_args: cfg.error_handler_path ? cfg.error_handler_args : undefined,
|
|
9
|
+
retry: cfg.retry
|
|
10
|
+
}
|
|
11
|
+
: {};
|
|
5
12
|
const requestBody = {
|
|
6
13
|
path: cfg.path,
|
|
7
14
|
script_path: cfg.script_path,
|
|
8
15
|
is_flow: cfg.is_flow,
|
|
9
16
|
kafka_resource_path: cfg.kafka_resource_path,
|
|
10
17
|
group_id: cfg.group_id,
|
|
11
|
-
topics: cfg.topics
|
|
18
|
+
topics: cfg.topics,
|
|
19
|
+
...errorHandlerAndRetries
|
|
12
20
|
};
|
|
13
21
|
try {
|
|
14
22
|
if (edit) {
|