windmill-components 1.434.1 → 1.444.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 (285) hide show
  1. package/package/components/ArgInput.svelte +12 -16
  2. package/package/components/ArgInput.svelte.d.ts +1 -0
  3. package/package/components/AssignableTags.svelte +3 -1
  4. package/package/components/AssignableTags.svelte.d.ts +1 -0
  5. package/package/components/AuthSettings.svelte +248 -0
  6. package/package/components/AuthSettings.svelte.d.ts +19 -0
  7. package/package/components/AutoscalingConfigEditor.svelte +2 -2
  8. package/package/components/CronInput.svelte +2 -2
  9. package/package/components/DeployWorkspace.svelte +1 -1
  10. package/package/components/Description.svelte +9 -0
  11. package/package/components/Description.svelte.d.ts +18 -0
  12. package/package/components/Dev.svelte +18 -3
  13. package/package/components/DisplayResult.svelte +7 -4
  14. package/package/components/DisplayResult.svelte.d.ts +1 -0
  15. package/package/components/DropdownV2.svelte +2 -1
  16. package/package/components/DropdownV2.svelte.d.ts +1 -0
  17. package/package/components/EditableSchemaForm.svelte +2 -2
  18. package/package/components/Editor.svelte +9 -6
  19. package/package/components/Editor.svelte.d.ts +4 -2
  20. package/package/components/EditorBar.svelte +51 -6
  21. package/package/components/ErrorOrRecoveryHandler.svelte +4 -3
  22. package/package/components/ExecutionDuration.svelte +2 -1
  23. package/package/components/FieldHeader.svelte +9 -1
  24. package/package/components/FieldHeader.svelte.d.ts +1 -0
  25. package/package/components/FlowBuilder.svelte +16 -3
  26. package/package/components/FlowGraphViewer.svelte +2 -0
  27. package/package/components/FlowPreviewContent.svelte +6 -15
  28. package/package/components/FlowStatusViewerInner.svelte +14 -10
  29. package/package/components/FlowStatusViewerInner.svelte.d.ts +1 -0
  30. package/package/components/HighlightCode.svelte +3 -0
  31. package/package/components/InputTransformSchemaForm.svelte +1 -1
  32. package/package/components/InstanceSetting.svelte +774 -0
  33. package/package/components/InstanceSetting.svelte.d.ts +27 -0
  34. package/package/components/InstanceSettings.svelte +68 -1005
  35. package/package/components/InstanceSettings.svelte.d.ts +0 -4
  36. package/package/components/Label.svelte +16 -6
  37. package/package/components/Label.svelte.d.ts +3 -0
  38. package/package/components/Login.svelte +17 -9
  39. package/package/components/OAuthSetting.svelte +4 -3
  40. package/package/components/OauthExtraParams.svelte +1 -1
  41. package/package/components/OauthScopes.svelte +2 -2
  42. package/package/components/ObjectStoreConfigSettings.svelte +141 -128
  43. package/package/components/QueueMetricsDrawer.svelte +5 -5
  44. package/package/components/ResourceEditor.svelte +4 -0
  45. package/package/components/ResourceEditor.svelte.d.ts +1 -0
  46. package/package/components/ResourceEditorDrawer.svelte +15 -3
  47. package/package/components/ResourceEditorDrawer.svelte.d.ts +2 -2
  48. package/package/components/ResourcePicker.svelte +16 -5
  49. package/package/components/ResourcePicker.svelte.d.ts +1 -0
  50. package/package/components/ResultJobLoader.svelte.d.ts +1 -1
  51. package/package/components/RunPageSchedules.svelte +15 -10
  52. package/package/components/SavedInputs.svelte +1 -1
  53. package/package/components/ScheduleEditorInner.svelte +58 -27
  54. package/package/components/SchemaForm.svelte +7 -5
  55. package/package/components/SchemaForm.svelte.d.ts +1 -0
  56. package/package/components/ScriptBuilder.svelte +58 -5
  57. package/package/components/ScriptEditor.svelte +78 -40
  58. package/package/components/ScriptEditor.svelte.d.ts +17 -2
  59. package/package/components/ScriptPicker.svelte +41 -34
  60. package/package/components/ScriptPicker.svelte.d.ts +1 -0
  61. package/package/components/ScriptVersionHistory.svelte +1 -1
  62. package/package/components/Section.svelte +38 -35
  63. package/package/components/Section.svelte.d.ts +2 -0
  64. package/package/components/ServiceLogsInner.svelte +1 -1
  65. package/package/components/SimpleEditor.svelte +2 -0
  66. package/package/components/Subsection.svelte +52 -0
  67. package/package/components/Subsection.svelte.d.ts +27 -0
  68. package/package/components/SuperadminSettings.svelte +23 -13
  69. package/package/components/TemplateEditor.svelte +4 -3
  70. package/package/components/TestConnection.svelte +5 -0
  71. package/package/components/TestJobLoader.svelte +2 -1
  72. package/package/components/TestJobLoader.svelte.d.ts +1 -1
  73. package/package/components/Toggle.svelte +2 -4
  74. package/package/components/UserSettings.svelte +1 -1
  75. package/package/components/WorkerGroup.svelte +4 -4
  76. package/package/components/WorkerTagPicker.svelte +4 -2
  77. package/package/components/WorkerTagPicker.svelte.d.ts +1 -0
  78. package/package/components/WorkerTagSelect.svelte +2 -0
  79. package/package/components/WorkerTagSelect.svelte.d.ts +1 -0
  80. package/package/components/apps/components/display/AppDisplayComponent.svelte +2 -1
  81. package/package/components/apps/components/display/dbtable/utils.js +26 -1
  82. package/package/components/apps/components/helpers/RunnableComponent.svelte +8 -2
  83. package/package/components/apps/components/inputs/AppDateInput.svelte +7 -1
  84. package/package/components/apps/components/inputs/AppS3FileInput.svelte +1 -1
  85. package/package/components/apps/editor/AppEditor.svelte +5 -34
  86. package/package/components/apps/editor/AppEditor.svelte.d.ts +1 -0
  87. package/package/components/apps/editor/AppEditorBottomPanel.svelte +4 -7
  88. package/package/components/apps/editor/AppEditorBottomPanel.svelte.d.ts +1 -3
  89. package/package/components/apps/editor/AppEditorHeader.svelte +148 -58
  90. package/package/components/apps/editor/AppEditorHeader.svelte.d.ts +1 -0
  91. package/package/components/apps/editor/DeploymentHistory.svelte +1 -1
  92. package/package/components/apps/editor/RunnableJobPanel.svelte +6 -2
  93. package/package/components/apps/editor/RunnableJobPanel.svelte.d.ts +1 -0
  94. package/package/components/apps/editor/appUtils.d.ts +1 -0
  95. package/package/components/apps/editor/appUtils.js +17 -0
  96. package/package/components/apps/editor/component/components.d.ts +82 -81
  97. package/package/components/apps/editor/component/components.js +4 -3
  98. package/package/components/apps/editor/componentsPanel/ComponentList.svelte +1 -1
  99. package/package/components/apps/editor/componentsPanel/GroupList.svelte +12 -2
  100. package/package/components/apps/editor/contextPanel/ContextPanel.svelte +1 -1
  101. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte +1 -1
  102. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte +53 -56
  103. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +1 -1
  104. package/package/components/apps/editor/settingsPanel/inputEditor/EvalV2InputEditor.svelte +3 -2
  105. package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +1 -1
  106. package/package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +16 -9
  107. package/package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte.d.ts +1 -0
  108. package/package/components/apps/inputType.d.ts +2 -2
  109. package/package/components/apps/types.d.ts +2 -0
  110. package/package/components/common/alert/ConnectionIndicator.svelte +30 -0
  111. package/package/components/common/alert/ConnectionIndicator.svelte.d.ts +20 -0
  112. package/package/components/common/alert/Notification.svelte +15 -0
  113. package/package/components/common/alert/Notification.svelte.d.ts +17 -0
  114. package/package/components/common/button/AnimatedButton.svelte +1 -1
  115. package/package/components/common/button/RefreshButton.svelte +30 -0
  116. package/package/components/common/button/RefreshButton.svelte.d.ts +18 -0
  117. package/package/components/common/fileDownload/FileDownload.svelte +4 -3
  118. package/package/components/common/fileDownload/FileDownload.svelte.d.ts +1 -0
  119. package/package/components/common/fileUpload/FileUpload.svelte +3 -3
  120. package/package/components/common/languageIcons/LanguageIcon.svelte +5 -2
  121. package/package/components/common/layout/List.svelte +35 -0
  122. package/package/components/common/layout/List.svelte.d.ts +21 -0
  123. package/package/components/common/layout/ListElement.svelte +3 -0
  124. package/package/components/common/layout/ListElement.svelte.d.ts +27 -0
  125. package/package/components/common/menu/MenuV2.svelte +3 -2
  126. package/package/components/common/menu/MenuV2.svelte.d.ts +1 -0
  127. package/package/components/common/modal/Modal.svelte +6 -4
  128. package/package/components/common/modal/Modal.svelte.d.ts +1 -0
  129. package/package/components/common/modal/Modal2.svelte +101 -0
  130. package/package/components/common/modal/Modal2.svelte.d.ts +28 -0
  131. package/package/components/common/popup/Popup.svelte +5 -1
  132. package/package/components/common/popup/Popup.svelte.d.ts +2 -0
  133. package/package/components/common/toggleButton-v2/ToggleButton.svelte +1 -1
  134. package/package/components/copilot/FlowCopilotStatus.svelte +1 -1
  135. package/package/components/details/ClipboardPanel.svelte +12 -2
  136. package/package/components/details/ClipboardPanel.svelte.d.ts +2 -0
  137. package/package/components/details/CopyableCodeBlock.svelte +24 -0
  138. package/package/components/details/CopyableCodeBlock.svelte.d.ts +19 -0
  139. package/package/components/details/DetailPageLayout.svelte +3 -1
  140. package/package/components/details/EmailTriggerConfigSection.svelte +119 -0
  141. package/package/components/details/EmailTriggerConfigSection.svelte.d.ts +38 -0
  142. package/package/components/details/EmailTriggerPanel.svelte +27 -74
  143. package/package/components/details/EmailTriggerPanel.svelte.d.ts +7 -1
  144. package/package/components/flows/FlowEditor.svelte +1 -1
  145. package/package/components/flows/FlowEditor.svelte.d.ts +1 -0
  146. package/package/components/flows/FlowHistoryInner.svelte +1 -1
  147. package/package/components/flows/content/BranchPredicateEditor.svelte +1 -1
  148. package/package/components/flows/content/FlowEditorPanel.svelte +30 -1
  149. package/package/components/flows/content/FlowEditorPanel.svelte.d.ts +2 -0
  150. package/package/components/flows/content/FlowInput.svelte +2 -15
  151. package/package/components/flows/content/FlowInputs.svelte +1 -1
  152. package/package/components/flows/content/FlowInputsQuick.svelte +2 -2
  153. package/package/components/flows/content/FlowModuleComponent.svelte +9 -5
  154. package/package/components/flows/content/FlowModuleEarlyStop.svelte +2 -2
  155. package/package/components/flows/content/FlowModuleHeader.svelte +4 -1
  156. package/package/components/flows/content/FlowModuleSuspend.svelte +1 -1
  157. package/package/components/flows/content/FlowPathViewer.svelte +3 -1
  158. package/package/components/flows/content/FlowRetries.svelte +32 -5
  159. package/package/components/flows/content/FlowSettings.svelte +56 -48
  160. package/package/components/flows/flowStateUtils.d.ts +10 -1
  161. package/package/components/flows/flowStateUtils.js +23 -0
  162. package/package/components/flows/map/FlowModuleSchemaMap.svelte +9 -19
  163. package/package/components/flows/map/InsertModuleButton.svelte +3 -3
  164. package/package/components/flows/map/VirtualItem.svelte +29 -1
  165. package/package/components/flows/map/VirtualItem.svelte.d.ts +2 -0
  166. package/package/components/flows/pickers/TopLevelNode.svelte +2 -2
  167. package/package/components/flows/previousResults.js +8 -2
  168. package/package/components/flows/types.d.ts +1 -0
  169. package/package/components/graph/FlowGraphV2.svelte +5 -1
  170. package/package/components/graph/FlowGraphV2.svelte.d.ts +2 -0
  171. package/package/components/graph/renderers/nodes/InputNode.svelte +2 -0
  172. package/package/components/graph/renderers/nodes/InputNode.svelte.d.ts +2 -0
  173. package/package/components/graph/renderers/triggers/TriggersWrapper.svelte +1 -1
  174. package/package/components/icons/CSharpIcon.svelte +14 -0
  175. package/package/components/icons/CSharpIcon.svelte.d.ts +25 -0
  176. package/package/components/icons/GitIcon.svelte +5 -2
  177. package/package/components/icons/XeroIcon.svelte +24 -0
  178. package/package/components/icons/XeroIcon.svelte.d.ts +17 -0
  179. package/package/components/icons/index.d.ts +3 -1
  180. package/package/components/icons/index.js +4 -2
  181. package/package/components/instanceSettings.d.ts +3 -1
  182. package/package/components/instanceSettings.js +77 -69
  183. package/package/components/meltComponents/Popover.svelte +82 -0
  184. package/package/components/meltComponents/Popover.svelte.d.ts +21 -0
  185. package/package/components/propertyPicker/PropPicker.svelte +5 -3
  186. package/package/components/runs/JobLoader.svelte +5 -2
  187. package/package/components/runs/JobPreview.svelte +5 -5
  188. package/package/components/runs/RunRow.svelte +3 -4
  189. package/package/components/runs/RunsFilter.svelte +4 -4
  190. package/package/components/schema/EditableSchemaDrawer.svelte +4 -4
  191. package/package/components/schema/PropertyEditor.svelte +1 -1
  192. package/package/components/schema/SchemaFormDND.svelte +2 -0
  193. package/package/components/schema/SchemaFormDND.svelte.d.ts +1 -0
  194. package/package/components/scriptEditor/LogPanel.svelte +176 -164
  195. package/package/components/scriptEditor/LogPanel.svelte.d.ts +2 -0
  196. package/package/components/search/GlobalSearchModal.svelte +3 -3
  197. package/package/components/sidebar/CriticalAlertModal.svelte +155 -9
  198. package/package/components/sidebar/CriticalAlertModalInner.svelte +65 -212
  199. package/package/components/sidebar/CriticalAlertModalInner.svelte.d.ts +2 -4
  200. package/package/components/sidebar/CriticalAlertTable.svelte +142 -0
  201. package/package/components/sidebar/CriticalAlertTable.svelte.d.ts +25 -0
  202. package/package/components/sidebar/OperatorMenu.svelte +30 -8
  203. package/package/components/sidebar/SideBarNotification.svelte +3 -6
  204. package/package/components/sidebar/SidebarContent.svelte +5 -5
  205. package/package/components/sidebar/WorkspaceMenu.svelte +9 -5
  206. package/package/components/sidebar/WorkspaceMenu.svelte.d.ts +1 -0
  207. package/package/components/sidebar/changelogs.js +82 -17
  208. package/package/components/splitPanes/SplitPanesOrColumnOnMobile.svelte +21 -21
  209. package/package/components/table/AutoDataTable.svelte +1 -1
  210. package/package/components/table/Cell.svelte +5 -3
  211. package/package/components/table/Cell.svelte.d.ts +1 -0
  212. package/package/components/table/DataTable.svelte +65 -58
  213. package/package/components/table/DataTable.svelte.d.ts +2 -0
  214. package/package/components/table/Head.svelte +1 -1
  215. package/package/components/table/Row.svelte +3 -1
  216. package/package/components/table/Row.svelte.d.ts +1 -0
  217. package/package/components/toast.js +3 -1
  218. package/package/components/triggers/CaptureButton.svelte +77 -0
  219. package/package/components/triggers/CaptureButton.svelte.d.ts +16 -0
  220. package/package/components/triggers/CaptureIcon.svelte +17 -0
  221. package/package/components/triggers/CaptureIcon.svelte.d.ts +23 -0
  222. package/package/components/triggers/CaptureSection.svelte +76 -0
  223. package/package/components/triggers/CaptureSection.svelte.d.ts +42 -0
  224. package/package/components/triggers/CaptureTable.svelte +224 -0
  225. package/package/components/triggers/CaptureTable.svelte.d.ts +43 -0
  226. package/package/components/triggers/CaptureWrapper.svelte +237 -0
  227. package/package/components/triggers/CaptureWrapper.svelte.d.ts +35 -0
  228. package/package/components/triggers/KafkaTriggerEditor.svelte +2 -2
  229. package/package/components/triggers/KafkaTriggerEditor.svelte.d.ts +2 -2
  230. package/package/components/triggers/KafkaTriggerEditorInner.svelte +47 -119
  231. package/package/components/triggers/KafkaTriggerEditorInner.svelte.d.ts +2 -2
  232. package/package/components/triggers/KafkaTriggersConfigSection.svelte +215 -0
  233. package/package/components/triggers/KafkaTriggersConfigSection.svelte.d.ts +36 -0
  234. package/package/components/triggers/KafkaTriggersPanel.svelte +73 -45
  235. package/package/components/triggers/KafkaTriggersPanel.svelte.d.ts +6 -0
  236. package/package/components/triggers/RouteEditor.svelte +2 -2
  237. package/package/components/triggers/RouteEditor.svelte.d.ts +2 -2
  238. package/package/components/triggers/RouteEditorConfigSection.svelte +162 -0
  239. package/package/components/triggers/RouteEditorConfigSection.svelte.d.ts +43 -0
  240. package/package/components/triggers/RouteEditorInner.svelte +98 -163
  241. package/package/components/triggers/RouteEditorInner.svelte.d.ts +2 -2
  242. package/package/components/triggers/RoutesPanel.svelte +69 -54
  243. package/package/components/triggers/RoutesPanel.svelte.d.ts +5 -0
  244. package/package/components/triggers/ScheduledPollPanel.svelte +5 -9
  245. package/package/components/triggers/TriggersEditor.svelte +119 -89
  246. package/package/components/triggers/TriggersEditor.svelte.d.ts +7 -0
  247. package/package/components/triggers/TriggersEditorSection.svelte +109 -0
  248. package/package/components/triggers/TriggersEditorSection.svelte.d.ts +29 -0
  249. package/package/components/triggers/TriggersWrapper.svelte +60 -0
  250. package/package/components/triggers/TriggersWrapper.svelte.d.ts +21 -0
  251. package/package/components/triggers/WebhooksConfigSection.svelte +382 -0
  252. package/package/components/triggers/WebhooksConfigSection.svelte.d.ts +39 -0
  253. package/package/components/triggers/WebhooksPanel.svelte +32 -331
  254. package/package/components/triggers/WebhooksPanel.svelte.d.ts +7 -1
  255. package/package/components/triggers/WebsocketEditorConfigSection.svelte +176 -0
  256. package/package/components/triggers/WebsocketEditorConfigSection.svelte.d.ts +37 -0
  257. package/package/components/triggers/WebsocketTriggerEditor.svelte +2 -2
  258. package/package/components/triggers/WebsocketTriggerEditor.svelte.d.ts +2 -2
  259. package/package/components/triggers/WebsocketTriggerEditorInner.svelte +29 -150
  260. package/package/components/triggers/WebsocketTriggerEditorInner.svelte.d.ts +2 -2
  261. package/package/components/triggers/WebsocketTriggersPanel.svelte +70 -45
  262. package/package/components/triggers/WebsocketTriggersPanel.svelte.d.ts +6 -0
  263. package/package/components/triggers.d.ts +6 -2
  264. package/package/components/triggers.js +16 -0
  265. package/package/components/wizards/AgGridWizard.svelte +4 -4
  266. package/package/editorUtils.d.ts +2 -0
  267. package/package/editorUtils.js +6 -3
  268. package/package/gen/core/OpenAPI.js +1 -1
  269. package/package/gen/schemas.gen.d.ts +17 -8
  270. package/package/gen/schemas.gen.js +17 -8
  271. package/package/gen/services.gen.d.ts +55 -5
  272. package/package/gen/services.gen.js +108 -5
  273. package/package/gen/types.gen.d.ts +180 -13
  274. package/package/hubPaths.json +6 -3
  275. package/package/infer.js +9 -0
  276. package/package/script_helpers.d.ts +5 -0
  277. package/package/script_helpers.js +68 -8
  278. package/package/scripts.d.ts +1 -1
  279. package/package/scripts.js +5 -1
  280. package/package/stores.d.ts +1 -0
  281. package/package/utils.d.ts +3 -1
  282. package/package/utils.js +20 -4
  283. package/package.json +11 -8
  284. package/package/components/flows/content/CapturePayload.svelte +0 -114
  285. package/package/components/flows/content/CapturePayload.svelte.d.ts +0 -17
@@ -0,0 +1,16 @@
1
+ import { SvelteComponent } from "svelte";
2
+ declare const __propDef: {
3
+ props: Record<string, never>;
4
+ events: {
5
+ openTriggers: CustomEvent<any>;
6
+ } & {
7
+ [evt: string]: CustomEvent<any>;
8
+ };
9
+ slots: {};
10
+ };
11
+ export type CaptureButtonProps = typeof __propDef.props;
12
+ export type CaptureButtonEvents = typeof __propDef.events;
13
+ export type CaptureButtonSlots = typeof __propDef.slots;
14
+ export default class CaptureButton extends SvelteComponent<CaptureButtonProps, CaptureButtonEvents, CaptureButtonSlots> {
15
+ }
16
+ export {};
@@ -0,0 +1,17 @@
1
+ <script>
2
+ import { ScanIcon } from 'lucide-svelte'
3
+ </script>
4
+
5
+ <div class="relative">
6
+ <ScanIcon size="14" />
7
+ <div class="absolute inset-0 flex items-center justify-center">
8
+ <svg
9
+ class="text-red-500"
10
+ viewBox="0 0 24 24"
11
+ fill="currentColor"
12
+ xmlns="http://www.w3.org/2000/svg"
13
+ >
14
+ <circle cx="12" cy="12" r="3" />
15
+ </svg>
16
+ </div>
17
+ </div>
@@ -0,0 +1,23 @@
1
+ /** @typedef {typeof __propDef.props} CaptureIconProps */
2
+ /** @typedef {typeof __propDef.events} CaptureIconEvents */
3
+ /** @typedef {typeof __propDef.slots} CaptureIconSlots */
4
+ export default class CaptureIcon extends SvelteComponent<{
5
+ [x: string]: never;
6
+ }, {
7
+ [evt: string]: CustomEvent<any>;
8
+ }, {}> {
9
+ }
10
+ export type CaptureIconProps = typeof __propDef.props;
11
+ export type CaptureIconEvents = typeof __propDef.events;
12
+ export type CaptureIconSlots = typeof __propDef.slots;
13
+ import { SvelteComponent } from "svelte";
14
+ declare const __propDef: {
15
+ props: {
16
+ [x: string]: never;
17
+ };
18
+ events: {
19
+ [evt: string]: CustomEvent<any>;
20
+ };
21
+ slots: {};
22
+ };
23
+ export {};
@@ -0,0 +1,76 @@
1
+ <script context="module">export {};
2
+ </script>
3
+
4
+ <script>import { slide } from 'svelte/transition';
5
+ import AnimatedButton from '../common/button/AnimatedButton.svelte';
6
+ import Button from '../common/button/Button.svelte';
7
+ import { CircleStop } from 'lucide-svelte';
8
+ import ConnectionIndicator, {} from '../common/alert/ConnectionIndicator.svelte';
9
+ import CaptureTable from './CaptureTable.svelte';
10
+ import { createEventDispatcher } from 'svelte';
11
+ import CaptureIcon from './CaptureIcon.svelte';
12
+ import Tooltip from '../Tooltip.svelte';
13
+ export let disabled;
14
+ export let captureType;
15
+ export let captureInfo;
16
+ export let captureTable;
17
+ const dispatch = createEventDispatcher();
18
+ </script>
19
+
20
+ <div transition:slide class="pb-4">
21
+ <div class="border p-4 rounded-lg">
22
+ <div class="flex flex-col gap-1 mb-4">
23
+ <div class="flex flex-row items-center justify-start gap-1">
24
+ <AnimatedButton animate={captureInfo.active} baseRadius="6px" wrapperClasses="ml-[-2px]">
25
+ <Button
26
+ size="xs2"
27
+ on:click={() => dispatch('captureToggle')}
28
+ variant="border"
29
+ {disabled}
30
+ color="light"
31
+ startIcon={{ icon: captureInfo.active ? CircleStop : CaptureIcon }}
32
+ btnClasses={captureInfo.active ? 'text-blue-500 hover:text-blue-500' : ''}
33
+ >
34
+ {captureInfo.active ? 'Stop' : 'Start capturing'}
35
+ </Button>
36
+ </AnimatedButton>
37
+
38
+ {#if captureInfo.active}
39
+ <ConnectionIndicator connectionInfo={captureInfo.connectionInfo} />
40
+ {:else}
41
+ <Tooltip>
42
+ Start capturing to test your runnables with real data. Once active, all incoming
43
+ payloads will be captured and displayed below, allowing you to test your runnables
44
+ effectively.
45
+ </Tooltip>
46
+ {/if}
47
+ </div>
48
+
49
+ {#if disabled}
50
+ <div class="text-sm font-normal text-red-600 dark:text-red-400" transition:slide>
51
+ Enter a valid configuration to start capturing.
52
+ </div>
53
+ {/if}
54
+ </div>
55
+
56
+ {#if $$slots.default}
57
+ <div class:opacity-50={disabled || !captureInfo.active} class="flex flex-col gap-4 mb-4">
58
+ <slot />
59
+ </div>
60
+ {/if}
61
+
62
+ <CaptureTable
63
+ bind:this={captureTable}
64
+ {captureType}
65
+ hasPreprocessor={captureInfo.hasPreprocessor}
66
+ canHavePreprocessor={captureInfo.canHavePreprocessor}
67
+ isFlow={captureInfo.isFlow}
68
+ path={captureInfo.path}
69
+ canEdit={true}
70
+ on:applyArgs
71
+ on:updateSchema
72
+ on:addPreprocessor
73
+ maxHeight={300}
74
+ />
75
+ </div>
76
+ </div>
@@ -0,0 +1,42 @@
1
+ import { SvelteComponent } from "svelte";
2
+ export type CaptureInfo = {
3
+ active: boolean;
4
+ hasPreprocessor: boolean;
5
+ canHavePreprocessor: boolean;
6
+ isFlow: boolean;
7
+ path: string;
8
+ connectionInfo: ConnectionInfo | undefined;
9
+ };
10
+ import { type ConnectionInfo } from '../common/alert/ConnectionIndicator.svelte';
11
+ import CaptureTable from './CaptureTable.svelte';
12
+ declare const __propDef: {
13
+ props: {
14
+ disabled: boolean;
15
+ captureType: CaptureTriggerKind;
16
+ captureInfo: CaptureInfo;
17
+ captureTable: CaptureTable | undefined;
18
+ };
19
+ events: {
20
+ applyArgs: CustomEvent<{
21
+ kind: "main" | "preprocessor";
22
+ args: Record<string, any> | undefined;
23
+ }>;
24
+ updateSchema: CustomEvent<{
25
+ schema: any;
26
+ redirect: boolean;
27
+ }>;
28
+ addPreprocessor: CustomEvent<null>;
29
+ captureToggle: CustomEvent<undefined>;
30
+ } & {
31
+ [evt: string]: CustomEvent<any>;
32
+ };
33
+ slots: {
34
+ default: {};
35
+ };
36
+ };
37
+ export type CaptureSectionProps = typeof __propDef.props;
38
+ export type CaptureSectionEvents = typeof __propDef.events;
39
+ export type CaptureSectionSlots = typeof __propDef.slots;
40
+ export default class CaptureSection extends SvelteComponent<CaptureSectionProps, CaptureSectionEvents, CaptureSectionSlots> {
41
+ }
42
+ export {};
@@ -0,0 +1,224 @@
1
+ <script>import Label from '../Label.svelte';
2
+ import { Clipboard, Info, Trash2, Plus } from 'lucide-svelte';
3
+ import ToggleButton from '../common/toggleButton-v2/ToggleButton.svelte';
4
+ import ToggleButtonGroup from '../common/toggleButton-v2/ToggleButtonGroup.svelte';
5
+ import { copyToClipboard } from '../../utils';
6
+ import Button from '../common/button/Button.svelte';
7
+ import CustomPopover from '../CustomPopover.svelte';
8
+ import { convert } from '@redocly/json-to-json-schema';
9
+ import SchemaViewer from '../SchemaViewer.svelte';
10
+ import { isObject } from '../../utils';
11
+ import { createEventDispatcher } from 'svelte';
12
+ import {} from '../triggers';
13
+ import { CaptureService } from '../../gen';
14
+ import { workspaceStore } from '../../stores';
15
+ import {} from '../../gen';
16
+ import { captureTriggerKindToTriggerKind } from '../triggers';
17
+ import { twMerge } from 'tailwind-merge';
18
+ import { slide } from 'svelte/transition';
19
+ export let path;
20
+ export let hasPreprocessor = false;
21
+ export let canHavePreprocessor = false;
22
+ export let isFlow = false;
23
+ export let captureType = 'webhook';
24
+ export let headless = false;
25
+ export let addButton = false;
26
+ export let hideCapturesWhenEmpty = false;
27
+ export let canEdit = false;
28
+ export let maxHeight = undefined;
29
+ let captures = [];
30
+ let testKind = 'main';
31
+ $: hasPreprocessor && (testKind = 'preprocessor');
32
+ let deleteLoading = null;
33
+ async function deleteCapture(id) {
34
+ deleteLoading = id;
35
+ try {
36
+ await CaptureService.deleteCapture({
37
+ workspace: $workspaceStore,
38
+ id
39
+ });
40
+ refreshCaptures();
41
+ }
42
+ finally {
43
+ deleteLoading = null;
44
+ }
45
+ }
46
+ const dispatch = createEventDispatcher();
47
+ export async function refreshCaptures() {
48
+ captures = await CaptureService.listCaptures({
49
+ workspace: $workspaceStore,
50
+ runnableKind: isFlow ? 'flow' : 'script',
51
+ path,
52
+ triggerKind: captureType !== 'all' ? captureType : undefined
53
+ });
54
+ }
55
+ refreshCaptures();
56
+ </script>
57
+
58
+ {#if captures.length > 0 || !hideCapturesWhenEmpty}
59
+ <Label
60
+ label="Captures"
61
+ {headless}
62
+ class={twMerge(
63
+ 'flex flex-col h-full divide-y gap-1',
64
+ maxHeight ? `max-h-[${maxHeight}px]` : ''
65
+ )}
66
+ >
67
+ <svelte:fragment slot="header">
68
+ {#if addButton && captureType !== 'all'}
69
+ <Button
70
+ size="xs2"
71
+ color="light"
72
+ variant="contained"
73
+ iconOnly
74
+ startIcon={{ icon: Plus }}
75
+ on:click={() => {
76
+ if (captureType !== 'all') {
77
+ dispatch('openTriggers', {
78
+ kind: captureTriggerKindToTriggerKind(captureType),
79
+ config: {}
80
+ })
81
+ }
82
+ }}
83
+ />
84
+ {/if}
85
+ </svelte:fragment>
86
+ <svelte:fragment slot="action">
87
+ {#if canHavePreprocessor}
88
+ <div>
89
+ <ToggleButtonGroup bind:selected={testKind} class="h-full">
90
+ <ToggleButton value="main" label={isFlow ? 'Flow' : 'Main'} small />
91
+ <ToggleButton
92
+ value="preprocessor"
93
+ label="Preprocessor"
94
+ small
95
+ tooltip="When the runnable has a preprocessor, it receives additional information about the request"
96
+ />
97
+ </ToggleButtonGroup>
98
+ </div>
99
+ {/if}
100
+ </svelte:fragment>
101
+ <div class="flex flex-col gap-1 pt-2 grow overflow-y-auto">
102
+ {#if captures.length === 0}
103
+ <div class="text-xs text-secondary">
104
+ {captureType === 'all' ? 'No captures yet' : `No ${captureType} captures yet`}
105
+ </div>
106
+ {:else}
107
+ {#each captures as capture}
108
+ {@const payload = isObject(capture.payload) ? capture.payload : {}}
109
+ {@const triggerExtra = isObject(capture.trigger_extra) ? capture.trigger_extra : {}}
110
+ {@const payloadData =
111
+ testKind === 'preprocessor'
112
+ ? {
113
+ ...payload,
114
+ ...triggerExtra
115
+ }
116
+ : payload}
117
+ {@const schema =
118
+ isFlow && testKind === 'main'
119
+ ? { required: [], properties: {}, ...convert(payloadData) }
120
+ : {}}
121
+ <div class="flex flex-row gap-1" transition:slide>
122
+ <div class="text-xs border p-2 rounded-md overflow-auto grow whitespace-nowrap">
123
+ {JSON.stringify(payloadData)}
124
+ </div>
125
+ <Button
126
+ size="xs2"
127
+ color="light"
128
+ variant="border"
129
+ on:click={() => {
130
+ copyToClipboard(JSON.stringify(payloadData))
131
+ }}
132
+ iconOnly
133
+ startIcon={{ icon: Clipboard }}
134
+ />
135
+
136
+ {#if isFlow && testKind === 'main'}
137
+ <CustomPopover>
138
+ <Button
139
+ size="xs"
140
+ color="light"
141
+ variant="border"
142
+ on:click={() => {
143
+ dispatch('updateSchema', { schema, redirect: true })
144
+ }}
145
+ wrapperClasses="h-full"
146
+ >
147
+ Apply schema
148
+ </Button>
149
+
150
+ <svelte:fragment slot="overlay">
151
+ {#if schema}
152
+ <div class="min-w-[400px]">
153
+ <SchemaViewer {schema} />
154
+ </div>
155
+ {/if}
156
+ </svelte:fragment>
157
+ </CustomPopover>
158
+ {/if}
159
+
160
+ {#if testKind === 'preprocessor' && !hasPreprocessor}
161
+ <CustomPopover noPadding>
162
+ <Button
163
+ size="xs"
164
+ color="dark"
165
+ disabled
166
+ endIcon={{
167
+ icon: Info
168
+ }}
169
+ wrapperClasses="h-full"
170
+ >
171
+ Apply args
172
+ </Button>
173
+ <svelte:fragment slot="overlay">
174
+ <div class="text-sm p-2 flex flex-col gap-1 items-start">
175
+ <p>You need to add a preprocessor to use preprocessor captures as args</p>
176
+ <Button
177
+ size="xs"
178
+ color="dark"
179
+ on:click={() => {
180
+ dispatch('addPreprocessor')
181
+ }}
182
+ >
183
+ Add preprocessor
184
+ </Button>
185
+ </div>
186
+ </svelte:fragment>
187
+ </CustomPopover>
188
+ {:else}
189
+ <Button
190
+ size="xs"
191
+ color="dark"
192
+ on:click={() => {
193
+ if (isFlow && testKind === 'main') {
194
+ dispatch('updateSchema', { schema, redirect: false })
195
+ }
196
+ dispatch('applyArgs', {
197
+ kind: testKind,
198
+ args: payloadData
199
+ })
200
+ }}
201
+ disabled={testKind === 'preprocessor' && !hasPreprocessor}
202
+ >
203
+ {isFlow && testKind === 'main' ? 'Apply schema and args' : 'Apply args'}
204
+ </Button>
205
+ {/if}
206
+
207
+ {#if canEdit}
208
+ <Button
209
+ size="xs2"
210
+ color="red"
211
+ iconOnly
212
+ startIcon={{ icon: Trash2 }}
213
+ loading={deleteLoading === capture.id}
214
+ on:click={() => {
215
+ deleteCapture(capture.id)
216
+ }}
217
+ />
218
+ {/if}
219
+ </div>
220
+ {/each}
221
+ {/if}
222
+ </div>
223
+ </Label>
224
+ {/if}
@@ -0,0 +1,43 @@
1
+ import { SvelteComponent } from "svelte";
2
+ import { type TriggerKind } from '../triggers';
3
+ import { type CaptureTriggerKind } from '../../gen';
4
+ declare const __propDef: {
5
+ props: {
6
+ path: string;
7
+ hasPreprocessor?: boolean | undefined;
8
+ canHavePreprocessor?: boolean | undefined;
9
+ isFlow?: boolean | undefined;
10
+ captureType?: CaptureTriggerKind | 'all';
11
+ headless?: boolean | undefined;
12
+ addButton?: boolean | undefined;
13
+ hideCapturesWhenEmpty?: boolean | undefined;
14
+ canEdit?: boolean | undefined;
15
+ maxHeight?: number | undefined;
16
+ refreshCaptures?: (() => Promise<void>) | undefined;
17
+ };
18
+ events: {
19
+ openTriggers: CustomEvent<{
20
+ kind: TriggerKind;
21
+ config: Record<string, any>;
22
+ }>;
23
+ applyArgs: CustomEvent<{
24
+ kind: 'main' | 'preprocessor';
25
+ args: Record<string, any> | undefined;
26
+ }>;
27
+ addPreprocessor: CustomEvent<null>;
28
+ updateSchema: CustomEvent<{
29
+ schema: any;
30
+ redirect: boolean;
31
+ }>;
32
+ } & {
33
+ [evt: string]: CustomEvent<any>;
34
+ };
35
+ slots: {};
36
+ };
37
+ export type CaptureTableProps = typeof __propDef.props;
38
+ export type CaptureTableEvents = typeof __propDef.events;
39
+ export type CaptureTableSlots = typeof __propDef.slots;
40
+ export default class CaptureTable extends SvelteComponent<CaptureTableProps, CaptureTableEvents, CaptureTableSlots> {
41
+ get refreshCaptures(): () => Promise<void>;
42
+ }
43
+ export {};
@@ -0,0 +1,237 @@
1
+ <script>import { workspaceStore } from '../../stores';
2
+ import { CaptureService } from '../../gen';
3
+ import { onDestroy } from 'svelte';
4
+ import { capitalize, isObject, sendUserToast, sleep } from '../../utils';
5
+ import { isCloudHosted } from '../../cloud';
6
+ import Alert from '../common/alert/Alert.svelte';
7
+ import RouteEditorConfigSection from './RouteEditorConfigSection.svelte';
8
+ import WebsocketEditorConfigSection from './WebsocketEditorConfigSection.svelte';
9
+ import WebhooksConfigSection from './WebhooksConfigSection.svelte';
10
+ import EmailTriggerConfigSection from '../details/EmailTriggerConfigSection.svelte';
11
+ import KafkaTriggersConfigSection from './KafkaTriggersConfigSection.svelte';
12
+ import CaptureTable from './CaptureTable.svelte';
13
+ export let isFlow;
14
+ export let path;
15
+ export let hasPreprocessor;
16
+ export let canHavePreprocessor;
17
+ export let captureType = 'webhook';
18
+ export let showCapture = false;
19
+ export let data = {};
20
+ export let connectionInfo = undefined;
21
+ export let args = {};
22
+ export let captureTable = undefined;
23
+ export async function setConfig() {
24
+ await CaptureService.setCaptureConfig({
25
+ requestBody: {
26
+ trigger_kind: captureType,
27
+ path,
28
+ is_flow: isFlow,
29
+ trigger_config: args && Object.keys(args).length > 0 ? args : undefined
30
+ },
31
+ workspace: $workspaceStore
32
+ });
33
+ }
34
+ let captureActive = false;
35
+ let captureConfigs = {};
36
+ async function getCaptureConfigs() {
37
+ const captureConfigsList = await CaptureService.getCaptureConfigs({
38
+ workspace: $workspaceStore,
39
+ runnableKind: isFlow ? 'flow' : 'script',
40
+ path
41
+ });
42
+ captureConfigs = captureConfigsList.reduce((acc, c) => {
43
+ acc[c.trigger_kind] = c;
44
+ return acc;
45
+ }, {});
46
+ if ((captureType === 'websocket' || captureType === 'kafka') && captureActive) {
47
+ const config = captureConfigs[captureType];
48
+ if (config && config.error) {
49
+ const serverEnabled = getServerEnabled(config);
50
+ if (!serverEnabled) {
51
+ sendUserToast('Capture was stopped because of error: ' + config.error, true);
52
+ captureActive = false;
53
+ }
54
+ }
55
+ }
56
+ return captureConfigs;
57
+ }
58
+ getCaptureConfigs().then((captureConfigs) => setDefaultArgs(captureConfigs));
59
+ async function capture() {
60
+ let i = 0;
61
+ captureActive = true;
62
+ while (captureActive) {
63
+ if (i % 3 === 0) {
64
+ await CaptureService.pingCaptureConfig({
65
+ workspace: $workspaceStore,
66
+ triggerKind: captureType,
67
+ runnableKind: isFlow ? 'flow' : 'script',
68
+ path
69
+ });
70
+ await getCaptureConfigs();
71
+ }
72
+ captureTable?.refreshCaptures();
73
+ i++;
74
+ await sleep(1000);
75
+ }
76
+ }
77
+ function setDefaultArgs(captureConfigs) {
78
+ if (captureType in captureConfigs) {
79
+ const triggerConfig = captureConfigs[captureType].trigger_config;
80
+ args = isObject(triggerConfig) ? triggerConfig : {};
81
+ }
82
+ else if (captureType === 'kafka') {
83
+ args = {
84
+ ...args,
85
+ brokers: [''],
86
+ topics: [''],
87
+ group_id: `windmill_consumer-${$workspaceStore}-${path.replaceAll('/', '__')}`
88
+ };
89
+ }
90
+ else if (captureType === 'http') {
91
+ args = {
92
+ route_path: '',
93
+ http_method: 'post'
94
+ };
95
+ }
96
+ else {
97
+ args = {};
98
+ }
99
+ }
100
+ onDestroy(() => {
101
+ captureActive = false;
102
+ });
103
+ function getServerEnabled(config) {
104
+ return (!!config.last_server_ping &&
105
+ new Date(config.last_server_ping).getTime() > new Date().getTime() - 15 * 1000);
106
+ }
107
+ export async function handleCapture() {
108
+ if (!captureActive) {
109
+ await setConfig();
110
+ capture();
111
+ }
112
+ else {
113
+ captureActive = false;
114
+ }
115
+ }
116
+ let config;
117
+ $: config = captureConfigs[captureType];
118
+ let cloudDisabled = (captureType === 'websocket' || captureType === 'kafka') && isCloudHosted();
119
+ function updateConnectionInfo(config, captureActive) {
120
+ if ((captureType === 'websocket' || captureType === 'kafka') && config && captureActive) {
121
+ const serverEnabled = getServerEnabled(config);
122
+ const connected = serverEnabled && !config.error;
123
+ const message = connected
124
+ ? `${capitalize(captureType)} is connected`
125
+ : `${capitalize(captureType)} is not connected${config.error ? ': ' + config.error : ''}`;
126
+ connectionInfo = {
127
+ connected,
128
+ message
129
+ };
130
+ }
131
+ else {
132
+ connectionInfo = undefined;
133
+ }
134
+ }
135
+ $: updateConnectionInfo(config, captureActive);
136
+ let captureInfo;
137
+ $: captureInfo = {
138
+ active: captureActive,
139
+ hasPreprocessor,
140
+ canHavePreprocessor,
141
+ isFlow,
142
+ path,
143
+ connectionInfo
144
+ };
145
+ $: args && (captureActive = false);
146
+ </script>
147
+
148
+ <div class="flex flex-col gap-4 w-full">
149
+ {#if cloudDisabled}
150
+ <Alert title="Not compatible with multi-tenant cloud" type="warning" size="xs">
151
+ {capitalize(captureType)} triggers are disabled in the multi-tenant cloud.
152
+ </Alert>
153
+ {:else if captureType === 'websocket'}
154
+ <WebsocketEditorConfigSection
155
+ can_write={true}
156
+ headless={true}
157
+ bind:url={args.url}
158
+ bind:url_runnable_args={args.url_runnable_args}
159
+ {showCapture}
160
+ {captureInfo}
161
+ bind:captureTable
162
+ on:applyArgs
163
+ on:updateSchema
164
+ on:addPreprocessor
165
+ on:captureToggle={() => {
166
+ handleCapture()
167
+ }}
168
+ />
169
+ {:else if captureType === 'webhook'}
170
+ <WebhooksConfigSection
171
+ {isFlow}
172
+ {path}
173
+ hash={data?.hash}
174
+ token={data?.token}
175
+ {args}
176
+ scopes={data?.scopes}
177
+ {showCapture}
178
+ {captureInfo}
179
+ bind:captureTable
180
+ on:applyArgs
181
+ on:updateSchema
182
+ on:addPreprocessor
183
+ on:captureToggle={() => {
184
+ handleCapture()
185
+ }}
186
+ />
187
+ {:else if captureType === 'http'}
188
+ <RouteEditorConfigSection
189
+ {showCapture}
190
+ can_write={true}
191
+ bind:route_path={args.route_path}
192
+ bind:http_method={args.http_method}
193
+ headless
194
+ {captureInfo}
195
+ bind:captureTable
196
+ on:applyArgs
197
+ on:updateSchema
198
+ on:addPreprocessor
199
+ on:captureToggle={() => {
200
+ handleCapture()
201
+ }}
202
+ />
203
+ {:else if captureType === 'email'}
204
+ <EmailTriggerConfigSection
205
+ hash={data?.hash}
206
+ token={data?.token}
207
+ {path}
208
+ {isFlow}
209
+ userSettings={data?.userSettings}
210
+ emailDomain={data?.emailDomain}
211
+ {showCapture}
212
+ {captureInfo}
213
+ bind:captureTable
214
+ on:applyArgs
215
+ on:updateSchema
216
+ on:addPreprocessor
217
+ on:captureToggle={() => {
218
+ handleCapture()
219
+ }}
220
+ />
221
+ {:else if captureType === 'kafka'}
222
+ <KafkaTriggersConfigSection
223
+ headless={true}
224
+ bind:args
225
+ staticInputDisabled={false}
226
+ {showCapture}
227
+ {captureInfo}
228
+ bind:captureTable
229
+ on:applyArgs
230
+ on:updateSchema
231
+ on:addPreprocessor
232
+ on:captureToggle={() => {
233
+ handleCapture()
234
+ }}
235
+ />
236
+ {/if}
237
+ </div>