windmill-components 1.504.6 → 1.511.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.
Files changed (233) hide show
  1. package/package/ata/index.js +1 -1
  2. package/package/components/AppConnectInner.svelte +184 -29
  3. package/package/components/ArgInput.svelte +33 -103
  4. package/package/components/AuthSettings.svelte +45 -1
  5. package/package/components/Dev.svelte +31 -24
  6. package/package/components/DisplayResult.svelte +53 -26
  7. package/package/components/DisplayResult.svelte.d.ts +1 -1
  8. package/package/components/DynSelect.svelte +3 -3
  9. package/package/components/Editor.svelte +115 -88
  10. package/package/components/Editor.svelte.d.ts +30 -55
  11. package/package/components/EditorBar.svelte +2 -2
  12. package/package/components/ErrorOrRecoveryHandler.svelte +73 -67
  13. package/package/components/ErrorOrRecoveryHandler.svelte.d.ts +8 -24
  14. package/package/components/FlowBuilder.svelte +11 -2
  15. package/package/components/FlowJobResult.svelte +12 -17
  16. package/package/components/FlowJobResult.svelte.d.ts +5 -18
  17. package/package/components/FlowPreviewContent.svelte +13 -10
  18. package/package/components/FlowPreviewContent.svelte.d.ts +1 -1
  19. package/package/components/FlowPreviewResult.svelte +14 -6
  20. package/package/components/FlowStatusViewer.svelte +11 -24
  21. package/package/components/FlowStatusViewer.svelte.d.ts +19 -18
  22. package/package/components/FlowStatusViewerInner.svelte +110 -131
  23. package/package/components/FlowStatusViewerInner.svelte.d.ts +20 -18
  24. package/package/components/GitDiffPreview.svelte +55 -0
  25. package/package/components/GitDiffPreview.svelte.d.ts +13 -0
  26. package/package/components/HistoricInputs.svelte +2 -2
  27. package/package/components/HttpAgentWorkerDrawer.svelte +1 -1
  28. package/package/components/InitGitRepoPopover.svelte +410 -0
  29. package/package/components/InitGitRepoPopover.svelte.d.ts +13 -0
  30. package/package/components/InstanceSetting.svelte +21 -9
  31. package/package/components/InstanceSettings.svelte +16 -3
  32. package/package/components/JobLoader.svelte +567 -0
  33. package/package/components/JobLoader.svelte.d.ts +53 -0
  34. package/package/components/JobLogs.svelte +6 -4
  35. package/package/components/JobLogs.svelte.d.ts +5 -18
  36. package/package/components/JsonEditor.svelte +11 -11
  37. package/package/components/JsonEditor.svelte.d.ts +14 -56
  38. package/package/components/Label.svelte +6 -11
  39. package/package/components/Label.svelte.d.ts +14 -39
  40. package/package/components/LightweightResourcePicker.svelte +18 -39
  41. package/package/components/LightweightResourcePicker.svelte.d.ts +6 -22
  42. package/package/components/LogViewer.svelte +35 -41
  43. package/package/components/LogViewer.svelte.d.ts +6 -20
  44. package/package/components/ModulePreviewResultViewer.svelte +3 -1
  45. package/package/components/ModulePreviewResultViewer.svelte.d.ts +1 -0
  46. package/package/components/ModuleTest.svelte +16 -11
  47. package/package/components/NumberTypeNarrowing.svelte +13 -16
  48. package/package/components/NumberTypeNarrowing.svelte.d.ts +4 -18
  49. package/package/components/PullGitRepoPopover.svelte +355 -0
  50. package/package/components/PullGitRepoPopover.svelte.d.ts +18 -0
  51. package/package/components/ResourceTypePicker.svelte +20 -17
  52. package/package/components/ResourceTypePicker.svelte.d.ts +7 -6
  53. package/package/components/S3FilePicker.svelte +5 -3
  54. package/package/components/SavedInputs.svelte +2 -2
  55. package/package/components/ScriptBuilder.svelte +4 -3
  56. package/package/components/ScriptEditor.svelte +34 -31
  57. package/package/components/ScriptEditor.svelte.d.ts +3 -3
  58. package/package/components/Section.svelte +7 -20
  59. package/package/components/Section.svelte.d.ts +20 -47
  60. package/package/components/ServiceLogsInner.svelte +2 -1
  61. package/package/components/ServiceLogsInner.svelte.d.ts +1 -0
  62. package/package/components/SimpleEditor.svelte +4 -4
  63. package/package/components/SimpleEditor.svelte.d.ts +1 -0
  64. package/package/components/SqlRepl.svelte +0 -1
  65. package/package/components/Subsection.svelte +10 -12
  66. package/package/components/Subsection.svelte.d.ts +15 -39
  67. package/package/components/UserSettings.svelte +1 -1
  68. package/package/components/WorkerGroup.svelte +260 -165
  69. package/package/components/WorkerGroup.svelte.d.ts +2 -0
  70. package/package/components/WorkerTagPicker.svelte +3 -3
  71. package/package/components/WorkerTagSelect.svelte +33 -4
  72. package/package/components/apps/components/buttons/AppButton.svelte +7 -1
  73. package/package/components/apps/components/buttons/AppButton.svelte.d.ts +1 -0
  74. package/package/components/apps/components/display/AppCustomComponent.svelte +1 -1
  75. package/package/components/apps/components/display/AppDisplayComponentByJobId.svelte +16 -11
  76. package/package/components/apps/components/display/AppJobIdLogComponent.svelte +13 -10
  77. package/package/components/apps/components/display/AppMenu.svelte +5 -0
  78. package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +3 -3
  79. package/package/components/apps/components/display/dbtable/DeleteRow.svelte +3 -3
  80. package/package/components/apps/components/display/dbtable/InsertRowRunnable.svelte +3 -3
  81. package/package/components/apps/components/display/dbtable/UpdateCell.svelte +3 -3
  82. package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte +3 -3
  83. package/package/components/apps/components/helpers/RunnableComponent.svelte +65 -54
  84. package/package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +5 -5
  85. package/package/components/apps/components/inputs/AppUserResource.svelte +26 -8
  86. package/package/components/apps/editor/AppEditorHeader.svelte +11 -5
  87. package/package/components/apps/editor/AppJobsDrawer.svelte +5 -5
  88. package/package/components/apps/editor/RunnableJobPanel.svelte +4 -4
  89. package/package/components/apps/editor/component/components.d.ts +12 -0
  90. package/package/components/apps/editor/component/components.js +19 -7
  91. package/package/components/assets/AssetButtons.svelte +38 -0
  92. package/package/components/assets/AssetButtons.svelte.d.ts +15 -0
  93. package/package/components/assets/AssetsDropdownButton.svelte +60 -72
  94. package/package/components/assets/AssetsDropdownButton.svelte.d.ts +3 -4
  95. package/package/components/assets/AssetsUsageDrawer.svelte +10 -10
  96. package/package/components/assets/JobAssetsViewer.svelte +79 -0
  97. package/package/components/assets/JobAssetsViewer.svelte.d.ts +7 -0
  98. package/package/components/assets/README_DEV.md +0 -0
  99. package/package/components/assets/lib.d.ts +9 -1
  100. package/package/components/assets/lib.js +48 -7
  101. package/package/components/common/fileUpload/FileUpload.svelte +126 -84
  102. package/package/components/common/fileUpload/FileUpload.svelte.d.ts +13 -3
  103. package/package/components/common/fileUpload/S3ArgInput.svelte +111 -0
  104. package/package/components/common/fileUpload/S3ArgInput.svelte.d.ts +21 -0
  105. package/package/components/common/table/ScriptRow.svelte +3 -1
  106. package/package/components/copilot/AIFormSettings.svelte +3 -4
  107. package/package/components/copilot/AIFormSettings.svelte.d.ts +5 -19
  108. package/package/components/copilot/autocomplete/Autocompletor.d.ts +3 -1
  109. package/package/components/copilot/autocomplete/Autocompletor.js +269 -35
  110. package/package/components/copilot/autocomplete/request.d.ts +3 -0
  111. package/package/components/copilot/autocomplete/request.js +15 -7
  112. package/package/components/copilot/chat/AIChatDisplay.svelte +8 -0
  113. package/package/components/copilot/chat/AIChatManager.svelte.js +13 -8
  114. package/package/components/copilot/chat/flow/ModuleAcceptReject.svelte +5 -5
  115. package/package/components/copilot/chat/flow/core.d.ts +1 -1
  116. package/package/components/copilot/chat/flow/core.js +2 -38
  117. package/package/components/copilot/chat/navigator/apiTools.d.ts +8 -0
  118. package/package/components/copilot/chat/navigator/apiTools.js +95 -15
  119. package/package/components/copilot/chat/navigator/core.d.ts +1 -1
  120. package/package/components/copilot/chat/navigator/core.js +2 -1
  121. package/package/components/copilot/chat/script/core.d.ts +11 -2
  122. package/package/components/copilot/chat/script/core.js +165 -23
  123. package/package/components/copilot/chat/shared.d.ts +10 -0
  124. package/package/components/copilot/chat/shared.js +56 -0
  125. package/package/components/copilot/lib.d.ts +1 -0
  126. package/package/components/copilot/lib.js +30 -9
  127. package/package/components/custom_ui.d.ts +1 -0
  128. package/package/components/flows/FlowAssetsHandler.svelte +133 -0
  129. package/package/components/flows/FlowAssetsHandler.svelte.d.ts +14 -0
  130. package/package/components/flows/content/FlowModuleCache.svelte +4 -4
  131. package/package/components/flows/content/FlowModuleCache.svelte.d.ts +4 -18
  132. package/package/components/flows/content/FlowModuleComponent.svelte +16 -19
  133. package/package/components/flows/content/FlowModuleDeleteAfterUse.svelte +3 -4
  134. package/package/components/flows/content/FlowModuleDeleteAfterUse.svelte.d.ts +4 -18
  135. package/package/components/flows/content/FlowModuleSleep.svelte +6 -7
  136. package/package/components/flows/content/FlowModuleSleep.svelte.d.ts +4 -18
  137. package/package/components/flows/content/FlowModuleSuspend.svelte +19 -17
  138. package/package/components/flows/content/FlowModuleSuspend.svelte.d.ts +4 -18
  139. package/package/components/flows/content/FlowModuleTimeout.svelte +4 -4
  140. package/package/components/flows/content/FlowModuleTimeout.svelte.d.ts +4 -18
  141. package/package/components/flows/flowStore.d.ts +1 -1
  142. package/package/components/flows/map/FlowModuleSchemaItem.svelte +1 -0
  143. package/package/components/flows/propPicker/OutputPicker.svelte +9 -4
  144. package/package/components/flows/scheduleUtils.js +1 -1
  145. package/package/components/flows/types.d.ts +2 -1
  146. package/package/components/graph/FlowGraphV2.svelte +8 -104
  147. package/package/components/graph/FlowGraphV2.svelte.d.ts +0 -2
  148. package/package/components/graph/graphBuilder.svelte.d.ts +6 -3
  149. package/package/components/graph/graphBuilder.svelte.js +35 -9
  150. package/package/components/graph/renderers/edges/BaseEdge.svelte +2 -5
  151. package/package/components/graph/renderers/edges/BaseEdge.svelte.d.ts +1 -0
  152. package/package/components/graph/renderers/nodes/AssetNode.svelte +23 -20
  153. package/package/components/graph/renderers/nodes/AssetNode.svelte.d.ts +5 -10
  154. package/package/components/graph/renderers/nodes/AssetsOverflowedNode.svelte +1 -1
  155. package/package/components/graph/util.js +1 -1
  156. package/package/components/home/ItemsList.svelte +2 -0
  157. package/package/components/icons/AssetGenericIcon.svelte +0 -3
  158. package/package/components/jobs/JobPreview.svelte +10 -6
  159. package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte +13 -12
  160. package/package/components/runs/BatchReRunOptionsPane.svelte +5 -1
  161. package/package/components/runs/JobPreview.svelte +26 -16
  162. package/package/components/runs/{JobLoader.svelte.d.ts → JobsLoader.svelte.d.ts} +3 -3
  163. package/package/components/runs/NoWorkerWithTagWarning.svelte +2 -2
  164. package/package/components/runs/NoWorkerWithTagWarning.svelte.d.ts +1 -0
  165. package/package/components/runs/RunsFilter.svelte.d.ts +1 -1
  166. package/package/components/scriptEditor/LogPanel.svelte +3 -2
  167. package/package/components/script_builder.d.ts +2 -2
  168. package/package/components/settings/CreateToken.svelte +76 -41
  169. package/package/components/settings/CreateToken.svelte.d.ts +1 -1
  170. package/package/components/settings/ScopeSelector.svelte +613 -0
  171. package/package/components/settings/ScopeSelector.svelte.d.ts +8 -0
  172. package/package/components/settings/TokenDisplay.svelte +103 -0
  173. package/package/components/settings/TokenDisplay.svelte.d.ts +10 -0
  174. package/package/components/settings/TokensTable.svelte +70 -349
  175. package/package/components/sidebar/CriticalAlertModal.svelte +3 -0
  176. package/package/components/triggers/DeleteTriggerButton.svelte +1 -1
  177. package/package/components/triggers/TriggerEditorToolbar.svelte +3 -3
  178. package/package/components/triggers/TriggerRetriesAndErrorHandler.svelte +55 -0
  179. package/package/components/triggers/TriggerRetriesAndErrorHandler.svelte.d.ts +13 -0
  180. package/package/components/triggers/TriggersEditor.svelte +45 -3
  181. package/package/components/triggers/TriggersWrapper.svelte +2 -2
  182. package/package/components/triggers/gcp/GcpTriggerEditorInner.svelte +47 -6
  183. package/package/components/triggers/gcp/utils.js +9 -1
  184. package/package/components/triggers/http/OpenAPISpecGenerator.svelte +3 -2
  185. package/package/components/triggers/http/RouteEditorConfigSection.svelte +26 -23
  186. package/package/components/triggers/http/RouteEditorConfigSection.svelte.d.ts +5 -19
  187. package/package/components/triggers/http/RouteEditorInner.svelte +219 -175
  188. package/package/components/triggers/http/RouteEditorInner.svelte.d.ts +6 -2
  189. package/package/components/triggers/http/utils.js +9 -3
  190. package/package/components/triggers/kafka/KafkaTriggerEditorInner.svelte +47 -6
  191. package/package/components/triggers/kafka/utils.js +9 -1
  192. package/package/components/triggers/mqtt/MqttEditorConfigSection.svelte +4 -132
  193. package/package/components/triggers/mqtt/MqttEditorConfigSection.svelte.d.ts +2 -5
  194. package/package/components/triggers/mqtt/MqttTriggerEditorInner.svelte +182 -13
  195. package/package/components/triggers/mqtt/utils.js +9 -1
  196. package/package/components/triggers/nats/NatsTriggerEditorInner.svelte +47 -6
  197. package/package/components/triggers/nats/utils.js +9 -1
  198. package/package/components/triggers/postgres/PostgresTriggerEditorInner.svelte +41 -2
  199. package/package/components/triggers/postgres/utils.js +9 -1
  200. package/package/components/triggers/schedules/ScheduleEditorInner.svelte +38 -92
  201. package/package/components/triggers/sqs/SqsTriggerEditorInner.svelte +47 -6
  202. package/package/components/triggers/sqs/utils.js +9 -1
  203. package/package/components/triggers/utils.js +12 -0
  204. package/package/components/triggers/websocket/WebsocketTriggerEditorInner.svelte +47 -6
  205. package/package/components/triggers/websocket/utils.js +11 -1
  206. package/package/components/workspaceSettings/AISettings.svelte +0 -2
  207. package/package/components/workspaceSettings/FilterList.svelte +56 -0
  208. package/package/components/workspaceSettings/FilterList.svelte.d.ts +8 -0
  209. package/package/components/workspaceSettings/GitSyncFilterSettings.svelte +785 -0
  210. package/package/components/workspaceSettings/GitSyncFilterSettings.svelte.d.ts +18 -0
  211. package/package/gen/core/OpenAPI.js +1 -1
  212. package/package/gen/schemas.gen.d.ts +305 -23
  213. package/package/gen/schemas.gen.js +305 -23
  214. package/package/gen/services.gen.d.ts +33 -1
  215. package/package/gen/services.gen.js +66 -2
  216. package/package/gen/types.gen.d.ts +216 -11
  217. package/package/history.svelte.js +0 -2
  218. package/package/hub.d.ts +1 -0
  219. package/package/hubPaths.json +5 -2
  220. package/package/infer.js +16 -10
  221. package/package/svelte5Utils.svelte.d.ts +1 -0
  222. package/package/svelte5Utils.svelte.js +25 -18
  223. package/package/toast.js +10 -0
  224. package/package/utils.d.ts +3 -2
  225. package/package/utils.js +20 -5
  226. package/package.json +11 -11
  227. package/package/components/ResultJobLoader.svelte +0 -219
  228. package/package/components/ResultJobLoader.svelte.d.ts +0 -52
  229. package/package/components/TestJobLoader.svelte +0 -274
  230. package/package/components/TestJobLoader.svelte.d.ts +0 -43
  231. package/package/components/icons/AssetVarIcon.svelte +0 -31
  232. package/package/components/icons/AssetVarIcon.svelte.d.ts +0 -9
  233. /package/package/components/runs/{JobLoader.svelte → JobsLoader.svelte} +0 -0
@@ -13,6 +13,8 @@ import Button from '../common/button/Button.svelte';
13
13
  import TriggersWrapperV2 from './TriggersWrapper.svelte';
14
14
  import { triggerTypeToCaptureKind, CLOUD_DISABLED_TRIGGER_TYPES } from './utils';
15
15
  import { isCloudHosted } from '../../cloud';
16
+ import { ScheduleService, WebsocketTriggerService, PostgresTriggerService, KafkaTriggerService, NatsTriggerService, MqttTriggerService, HttpTriggerService, GcpTriggerService, SqsTriggerService } from '../../gen';
17
+ import { sendUserToast } from '../../toast';
16
18
  let { noEditor, newItem = false, currentPath, fakeInitialPath = '', hash = undefined, args = {}, initialPath, isFlow, canHavePreprocessor = false, hasPreprocessor = false, isDeployed = false, schema = undefined, noCapture = false, isEditor = true, onDeployTrigger } = $props();
17
19
  let config = $state({});
18
20
  let width = $state(0);
@@ -30,10 +32,50 @@ onDestroy(() => {
30
32
  function onSelect(triggerIndex) {
31
33
  triggersState.selectedTriggerIndex = triggerIndex;
32
34
  }
33
- function deleteDraftTrigger(triggerIndex) {
35
+ let deletingTrigger = $state(undefined);
36
+ async function deleteDeployedTrigger(triggerIndex) {
37
+ const { type: triggerType, path: triggerPath } = triggersState.triggers[triggerIndex];
38
+ if (!triggerPath) {
39
+ return;
40
+ }
41
+ const deleteHandlers = {
42
+ schedule: () => ScheduleService.deleteSchedule,
43
+ websocket: () => WebsocketTriggerService.deleteWebsocketTrigger,
44
+ postgres: () => PostgresTriggerService.deletePostgresTrigger,
45
+ kafka: () => KafkaTriggerService.deleteKafkaTrigger,
46
+ nats: () => NatsTriggerService.deleteNatsTrigger,
47
+ gcp: () => GcpTriggerService.deleteGcpTrigger,
48
+ sqs: () => SqsTriggerService.deleteSqsTrigger,
49
+ mqtt: () => MqttTriggerService.deleteMqttTrigger,
50
+ http: () => HttpTriggerService.deleteHttpTrigger
51
+ };
52
+ const deleteHandler = deleteHandlers[triggerType];
53
+ if (deleteHandler && deletingTrigger !== triggerIndex) {
54
+ deletingTrigger = triggerIndex;
55
+ try {
56
+ await deleteHandler()({
57
+ workspace: $workspaceStore ?? '',
58
+ path: triggerPath ?? ''
59
+ });
60
+ sendUserToast(`Successfully deleted ${triggerType} trigger: ${triggerPath}`);
61
+ }
62
+ catch (error) {
63
+ sendUserToast(error.body || error.message, true);
64
+ }
65
+ finally {
66
+ deletingTrigger = undefined;
67
+ }
68
+ }
69
+ }
70
+ async function deleteTrigger(triggerIndex) {
34
71
  if (triggerIndex === undefined) {
35
72
  return;
36
73
  }
74
+ // If the trigger is deployed, delete the trigger from the db
75
+ if (!triggersState.triggers[triggerIndex].isDraft &&
76
+ triggersState.triggers[triggerIndex].path) {
77
+ await deleteDeployedTrigger(triggerIndex);
78
+ }
37
79
  triggersState.deleteTrigger(triggersCount, triggerIndex);
38
80
  triggersState.selectedTriggerIndex = triggersState.triggers.length - 1;
39
81
  }
@@ -110,7 +152,7 @@ const cloudDisabled = $derived(CLOUD_DISABLED_TRIGGER_TYPES.includes(triggersSta
110
152
  triggers={triggersState.triggers}
111
153
  {isEditor}
112
154
  onAddDraftTrigger={handleAddTrigger}
113
- onDeleteDraft={deleteDraftTrigger}
155
+ onDeleteDraft={deleteTrigger}
114
156
  onReset={handleResetDraft}
115
157
  webhookToken={$triggersCount?.webhook_count}
116
158
  emailToken={$triggersCount?.email_count}
@@ -170,7 +212,7 @@ const cloudDisabled = $derived(CLOUD_DISABLED_TRIGGER_TYPES.includes(triggersSta
170
212
  {schema}
171
213
  {isEditor}
172
214
  onDelete={() => {
173
- deleteDraftTrigger(triggersState.selectedTriggerIndex)
215
+ deleteTrigger(triggersState.selectedTriggerIndex)
174
216
  }}
175
217
  onUpdate={(path) => {
176
218
  handleUpdate(triggersState.selectedTriggerIndex, path)
@@ -34,13 +34,13 @@ let { selectedTrigger, isFlow = false, initialPath, fakeInitialPath, currentPath
34
34
  {hash}
35
35
  token=""
36
36
  {args}
37
- scopes={isFlow ? [`run:flow/${currentPath}`] : [`run:script/${currentPath}`]}
37
+ scopes={isFlow ? [`jobs:run:flows:${currentPath}`] : [`jobs:run:scripts:${currentPath}`]}
38
38
  {newItem}
39
39
  />
40
40
  {:else if selectedTrigger.type === 'email'}
41
41
  <EmailTriggerPanel
42
42
  token=""
43
- scopes={isFlow ? [`run:flow/${currentPath}`] : [`run:script/${currentPath}`]}
43
+ scopes={isFlow ? [`jobs:run:flows:${currentPath}`] : [`jobs:run:scripts:${currentPath}`]}
44
44
  path={initialPath || fakeInitialPath}
45
45
  {isFlow}
46
46
  on:email-domain
@@ -14,8 +14,11 @@ import GcpTriggerEditorConfigSection from './GcpTriggerEditorConfigSection.svelt
14
14
  import { untrack } from 'svelte';
15
15
  import TriggerEditorToolbar from '../TriggerEditorToolbar.svelte';
16
16
  import { saveGcpTriggerFromCfg } from './utils';
17
- import { handleConfigChange } from '../utils';
17
+ import { getHandlerType, handleConfigChange } from '../utils';
18
18
  import { base } from '../../../base';
19
+ import Tabs from '../../common/tabs/Tabs.svelte';
20
+ import Tab from '../../common/tabs/Tab.svelte';
21
+ import TriggerRetriesAndErrorHandler from '../TriggerRetriesAndErrorHandler.svelte';
19
22
  let drawer = $state(undefined);
20
23
  let is_flow = $state(false);
21
24
  let initialPath = $state('');
@@ -40,6 +43,11 @@ let subscription_mode = $state('create_update');
40
43
  let initialConfig = undefined;
41
44
  let deploymentLoading = $state(false);
42
45
  let base_endpoint = $derived(`${window.location.origin}${base}`);
46
+ let optionTabSelected = $state('error_handler');
47
+ let errorHandlerSelected = $state('slack');
48
+ let error_handler_path = $state();
49
+ let error_handler_args = $state({});
50
+ let retry = $state();
43
51
  let { useDrawer = true, description = undefined, hideTarget = false, hideTooltips = false, isEditor = false, allowDraft = false, trigger = undefined, isDeployed = false, customLabel = undefined, onConfigChange = undefined, onCaptureConfigChange = undefined, onUpdate = undefined, onDelete = undefined, onReset = undefined, cloudDisabled = false } = $props();
44
52
  const gcpConfig = $derived.by(getGcpConfig);
45
53
  const saveDisabled = $derived(pathError != '' || emptyString(script_path) || !isValid || !can_write);
@@ -84,6 +92,10 @@ export async function openNew(nis_flow, fixedScriptPath_, defaultValues) {
84
92
  edit = false;
85
93
  dirtyPath = false;
86
94
  enabled = defaultValues?.enabled ?? false;
95
+ error_handler_path = defaultValues?.error_handler_path ?? undefined;
96
+ error_handler_args = defaultValues?.error_handler_args ?? {};
97
+ retry = defaultValues?.retry ?? undefined;
98
+ errorHandlerSelected = getHandlerType(error_handler_path ?? '');
87
99
  }
88
100
  finally {
89
101
  drawerLoading = false;
@@ -120,6 +132,10 @@ async function loadTriggerConfig(cfg) {
120
132
  enabled = cfg?.enabled;
121
133
  topic_id = cfg?.topic_id ?? '';
122
134
  can_write = canWrite(cfg?.path, cfg?.extra_perms, $userStore);
135
+ error_handler_path = cfg?.error_handler_path;
136
+ error_handler_args = cfg?.error_handler_args ?? {};
137
+ retry = cfg?.retry;
138
+ errorHandlerSelected = getHandlerType(error_handler_path ?? '');
123
139
  }
124
140
  async function updateTrigger() {
125
141
  deploymentLoading = true;
@@ -146,7 +162,10 @@ function getGcpConfig() {
146
162
  path,
147
163
  script_path,
148
164
  enabled,
149
- is_flow
165
+ is_flow,
166
+ error_handler_path,
167
+ error_handler_args,
168
+ retry
150
169
  };
151
170
  }
152
171
  function getGcpCaptureConfig() {
@@ -201,14 +220,14 @@ $effect(() => {
201
220
  </Drawer>
202
221
  {:else}
203
222
  <Section label={!customLabel ? 'GCP Pub/Sub trigger' : ''} headerClass="grow min-w-0 h-[30px]">
204
- <svelte:fragment slot="header">
223
+ {#snippet header()}
205
224
  {#if customLabel}
206
225
  {@render customLabel()}
207
226
  {/if}
208
- </svelte:fragment>
209
- <svelte:fragment slot="action">
227
+ {/snippet}
228
+ {#snippet action()}
210
229
  {@render actionsButtons()}
211
- </svelte:fragment>
230
+ {/snippet}
212
231
  {@render config()}
213
232
  </Section>
214
233
  {/if}
@@ -317,6 +336,28 @@ $effect(() => {
317
336
  headless={true}
318
337
  showTestingBadge={isEditor}
319
338
  />
339
+
340
+ <Section label="Advanced" collapsable>
341
+ <div class="flex flex-col gap-4">
342
+ <div class="min-h-96">
343
+ <Tabs bind:selected={optionTabSelected}>
344
+ <Tab value="error_handler">Error Handler</Tab>
345
+ <Tab value="retries">Retries</Tab>
346
+ </Tabs>
347
+ <div class="mt-4">
348
+ <TriggerRetriesAndErrorHandler
349
+ {optionTabSelected}
350
+ {itemKind}
351
+ {can_write}
352
+ bind:errorHandlerSelected
353
+ bind:error_handler_path
354
+ bind:error_handler_args
355
+ bind:retry
356
+ />
357
+ </div>
358
+ </div>
359
+ </div>
360
+ </Section>
320
361
  </div>
321
362
  {/if}
322
363
  {/snippet}
@@ -3,6 +3,13 @@ import { sendUserToast } from '../../../toast';
3
3
  import { get } from 'svelte/store';
4
4
  export async function saveGcpTriggerFromCfg(initialPath, cfg, edit, workspace, usedTriggerKinds) {
5
5
  try {
6
+ const errorHandlerAndRetries = !cfg.is_flow
7
+ ? {
8
+ error_handler_path: cfg.error_handler_path,
9
+ error_handler_args: cfg.error_handler_path ? cfg.error_handler_args : undefined,
10
+ retry: cfg.retry
11
+ }
12
+ : {};
6
13
  const requestBody = {
7
14
  gcp_resource_path: cfg.gcp_resource_path,
8
15
  subscription_mode: cfg.subscription_mode,
@@ -14,7 +21,8 @@ export async function saveGcpTriggerFromCfg(initialPath, cfg, edit, workspace, u
14
21
  path: cfg.path,
15
22
  script_path: cfg.script_path,
16
23
  enabled: cfg.enabled,
17
- is_flow: cfg.is_flow
24
+ is_flow: cfg.is_flow,
25
+ ...errorHandlerAndRetries
18
26
  };
19
27
  if (edit) {
20
28
  await GcpTriggerService.updateGcpTrigger({
@@ -168,6 +168,7 @@ export function openDrawer() {
168
168
  token = e.detail
169
169
  }}
170
170
  newTokenLabel={`openapi-${$userStore?.username ?? 'superadmin'}-${generateRandomString(4)}`}
171
+ scopes={['openapi:write']}
171
172
  />
172
173
  </div>
173
174
 
@@ -180,7 +181,7 @@ export function openDrawer() {
180
181
  </Label>
181
182
 
182
183
  <Label label="Example cURL">
183
- <svelte:fragment slot="header">
184
+ {#snippet header()}
184
185
  <Tooltip>
185
186
  Use this cURL command to call the OpenAPI generation endpoint.
186
187
 
@@ -196,7 +197,7 @@ export function openDrawer() {
196
197
 
197
198
  <br />
198
199
  </Tooltip>
199
- </svelte:fragment>
200
+ {/snippet}
200
201
  <CopyableCodeBlock
201
202
  code={`token=${emptyString(token) ? '' : token}; \\
202
203
  curl -X POST "${window.location.origin}${base}/api/w/${$workspaceStore!}/openapi/generate" \\
@@ -10,19 +10,10 @@ import { getHttpRoute } from './utils';
10
10
  import { isCloudHosted } from '../../../cloud';
11
11
  import Toggle from '../../Toggle.svelte';
12
12
  import TestingBadge from '../testingBadge.svelte';
13
- export let initialTriggerPath = undefined;
14
- export let dirtyRoutePath = false;
15
- export let route_path;
16
- export let http_method;
17
- export let can_write = false;
18
- export let static_asset_config = undefined;
19
- export let headless = false;
20
- export let workspaced_route = false;
21
- export let isValid = false;
22
- export let isDraftOnly = true;
23
- export let showTestingBadge = false;
13
+ import { untrack } from 'svelte';
14
+ let { initialTriggerPath = undefined, dirtyRoutePath = $bindable(false), route_path = $bindable(), http_method = $bindable(), can_write = false, static_asset_config = $bindable(undefined), headless = false, workspaced_route = $bindable(false), isValid = $bindable(false), isDraftOnly = true, showTestingBadge = false } = $props();
24
15
  let validateTimeout = undefined;
25
- let routeError = '';
16
+ let routeError = $state('');
26
17
  async function validateRoute(routePath, method, workspaced_route) {
27
18
  if (validateTimeout) {
28
19
  clearTimeout(validateTimeout);
@@ -51,22 +42,34 @@ async function routeExists(route_path, method, workspaced_route) {
51
42
  }
52
43
  });
53
44
  }
54
- $: validateRoute(route_path, http_method, workspaced_route);
55
- $: isValid = routeError === '';
56
- $: fullRoute = getHttpRoute('r', route_path, workspaced_route, $workspaceStore ?? '');
57
- $: !http_method && (http_method = 'post');
58
- $: route_path === undefined && (route_path = '');
59
- $: userIsAdmin = $userStore?.is_admin || $userStore?.is_super_admin;
60
- $: userCanEditConfig = userIsAdmin || isDraftOnly; // User can edit config if they are admin or if the trigger is a draft which will not be saved
45
+ $effect.pre(() => {
46
+ ;
47
+ [route_path, http_method, workspaced_route];
48
+ untrack(() => {
49
+ validateRoute(route_path, http_method, workspaced_route);
50
+ });
51
+ });
52
+ $effect.pre(() => {
53
+ isValid = routeError === '';
54
+ });
55
+ let fullRoute = $derived(getHttpRoute('r', route_path, workspaced_route, $workspaceStore ?? ''));
56
+ $effect.pre(() => {
57
+ !http_method && (http_method = 'post');
58
+ });
59
+ $effect.pre(() => {
60
+ route_path === undefined && (route_path = '');
61
+ });
62
+ let userIsAdmin = $derived($userStore?.is_admin || $userStore?.is_super_admin);
63
+ let userCanEditConfig = $derived(userIsAdmin || isDraftOnly); // User can edit config if they are admin or if the trigger is a draft which will not be saved
61
64
  </script>
62
65
 
63
66
  <div>
64
67
  <Section label="HTTP" {headless}>
65
- <svelte:fragment slot="header">
68
+ {#snippet header()}
66
69
  {#if showTestingBadge}
67
70
  <TestingBadge />
68
71
  {/if}
69
- </svelte:fragment>
72
+ {/snippet}
70
73
  {#if !userCanEditConfig && isDraftOnly}
71
74
  <Alert type="info" title="Admin only" collapsible size="xs">
72
75
  Route endpoints can only be edited by workspace admins
@@ -83,7 +86,7 @@ $: userCanEditConfig = userIsAdmin || isDraftOnly; // User can edit config if th
83
86
  </div>
84
87
  <div class="text-2xs text-tertiary"> ':myparam' for path params </div>
85
88
  </div>
86
- <!-- svelte-ignore a11y-autofocus -->
89
+ <!-- svelte-ignore a11y_autofocus -->
87
90
  <input
88
91
  type="text"
89
92
  autocomplete="off"
@@ -92,7 +95,7 @@ $: userCanEditConfig = userIsAdmin || isDraftOnly; // User can edit config if th
92
95
  class={routeError === ''
93
96
  ? ''
94
97
  : 'border border-red-700 bg-red-100 border-opacity-30 focus:border-red-700 focus:border-opacity-30 focus-visible:ring-red-700 focus-visible:ring-opacity-25 focus-visible:border-red-700'}
95
- on:input={() => {
98
+ oninput={() => {
96
99
  dirtyRoutePath = true
97
100
  }}
98
101
  />
@@ -1,21 +1,8 @@
1
- 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> {
2
- new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
3
- $$bindings?: Bindings;
4
- } & Exports;
5
- (internal: unknown, props: Props & {
6
- $$events?: Events;
7
- $$slots?: Slots;
8
- }): Exports & {
9
- $set?: any;
10
- $on?: any;
11
- };
12
- z_$$bindings?: Bindings;
13
- }
14
- declare const RouteEditorConfigSection: $$__sveltets_2_IsomorphicComponent<{
1
+ interface Props {
15
2
  initialTriggerPath?: string | undefined;
16
3
  dirtyRoutePath?: boolean;
17
4
  route_path: string | undefined;
18
- http_method: "get" | "post" | "put" | "patch" | "delete" | undefined;
5
+ http_method: 'get' | 'post' | 'put' | 'patch' | 'delete' | undefined;
19
6
  can_write?: boolean;
20
7
  static_asset_config?: {
21
8
  s3: string;
@@ -27,8 +14,7 @@ declare const RouteEditorConfigSection: $$__sveltets_2_IsomorphicComponent<{
27
14
  isValid?: boolean;
28
15
  isDraftOnly?: boolean;
29
16
  showTestingBadge?: boolean;
30
- }, {
31
- [evt: string]: CustomEvent<any>;
32
- }, {}, {}, string>;
33
- type RouteEditorConfigSection = InstanceType<typeof RouteEditorConfigSection>;
17
+ }
18
+ declare const RouteEditorConfigSection: import("svelte").Component<Props, {}, "route_path" | "http_method" | "workspaced_route" | "static_asset_config" | "isValid" | "dirtyRoutePath">;
19
+ type RouteEditorConfigSection = ReturnType<typeof RouteEditorConfigSection>;
34
20
  export default RouteEditorConfigSection;