windmill-components 1.434.1 → 1.444.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.
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
@@ -1,4 +1,4 @@
1
- <script>import { Alert, Badge, Button } from '../common';
1
+ <script>import { Button } from '../common';
2
2
  import Drawer from '../common/drawer/Drawer.svelte';
3
3
  import DrawerContent from '../common/drawer/DrawerContent.svelte';
4
4
  import Path from '../Path.svelte';
@@ -13,13 +13,14 @@ import { Loader2, Save, Pipette } from 'lucide-svelte';
13
13
  import Label from '../Label.svelte';
14
14
  import ToggleButton from '../common/toggleButton-v2/ToggleButton.svelte';
15
15
  import ToggleButtonGroup from '../common/toggleButton-v2/ToggleButtonGroup.svelte';
16
- import { isCloudHosted } from '../../cloud';
17
- import { base } from '../../base';
18
16
  import S3FilePicker from '../S3FilePicker.svelte';
19
17
  import Toggle from '../Toggle.svelte';
20
18
  import JsonEditor from '../apps/editor/settingsPanel/inputEditor/JsonEditor.svelte';
21
19
  import FileUpload from '../common/fileUpload/FileUpload.svelte';
22
20
  import SimpleEditor from '../SimpleEditor.svelte';
21
+ import { json } from 'svelte-highlight/languages';
22
+ import { Highlight } from 'svelte-highlight';
23
+ import RouteEditorConfigSection from './RouteEditorConfigSection.svelte';
23
24
  let is_flow = false;
24
25
  let initialPath = '';
25
26
  let edit = true;
@@ -47,7 +48,7 @@ export async function openEdit(ePath, isFlow) {
47
48
  drawerLoading = false;
48
49
  }
49
50
  }
50
- export async function openNew(nis_flow, fixedScriptPath_) {
51
+ export async function openNew(nis_flow, fixedScriptPath_, defaultValues) {
51
52
  drawerLoading = true;
52
53
  try {
53
54
  drawer?.openDrawer();
@@ -57,9 +58,9 @@ export async function openNew(nis_flow, fixedScriptPath_) {
57
58
  is_async = false;
58
59
  requires_auth = false;
59
60
  initialRoutePath = '';
60
- route_path = '';
61
+ route_path = defaultValues?.route_path ?? '';
61
62
  dirtyRoutePath = false;
62
- http_method = 'post';
63
+ http_method = defaultValues?.http_method ?? 'post';
63
64
  initialScriptPath = '';
64
65
  fixedScriptPath = fixedScriptPath_ ?? '';
65
66
  script_path = fixedScriptPath;
@@ -75,7 +76,7 @@ export async function openNew(nis_flow, fixedScriptPath_) {
75
76
  }
76
77
  let path = '';
77
78
  let pathError = '';
78
- let routeError = '';
79
+ let isValid = false;
79
80
  let dirtyRoutePath = false;
80
81
  let is_async = false;
81
82
  let requires_auth = false;
@@ -148,36 +149,6 @@ async function triggerScript() {
148
149
  }
149
150
  let drawer;
150
151
  let dirtyPath = false;
151
- $: fullRoute = `${window.location.origin}${base}/api/r/${isCloudHosted() ? $workspaceStore + '/' : ''}${route_path}`;
152
- async function routeExists(route_path, method) {
153
- return await HttpTriggerService.existsRoute({
154
- workspace: $workspaceStore,
155
- requestBody: {
156
- route_path,
157
- http_method
158
- }
159
- });
160
- }
161
- let validateTimeout = undefined;
162
- async function validateRoute(path, method) {
163
- routeError = '';
164
- if (validateTimeout) {
165
- clearTimeout(validateTimeout);
166
- }
167
- validateTimeout = setTimeout(async () => {
168
- if (!/^[\w-:]+(\/[\w-:]+)*$/.test(path)) {
169
- routeError = 'Endpoint not valid';
170
- }
171
- else if (initialRoutePath !== path && (await routeExists(path, method))) {
172
- routeError = 'Endpoint already taken';
173
- }
174
- else {
175
- routeError = '';
176
- }
177
- validateTimeout = undefined;
178
- }, 500);
179
- }
180
- $: validateRoute(route_path, http_method);
181
152
  </script>
182
153
 
183
154
  {#if static_asset_config}
@@ -201,7 +172,7 @@ $: validateRoute(route_path, http_method);
201
172
  <Button
202
173
  startIcon={{ icon: Save }}
203
174
  disabled={pathError != '' ||
204
- routeError != '' ||
175
+ !isValid ||
205
176
  (!static_asset_config && emptyString(script_path)) ||
206
177
  (static_asset_config && emptyString(static_asset_config.s3)) ||
207
178
  !can_write}
@@ -231,76 +202,15 @@ $: validateRoute(route_path, http_method);
231
202
  </Label>
232
203
  </div>
233
204
 
234
- <Section label="HTTP">
235
- {#if !($userStore?.is_admin || $userStore?.is_super_admin)}
236
- <Alert type="info" title="Admin only" collapsible>
237
- Route endpoints can only be edited by workspace admins
238
- </Alert>
239
- <div class="my-2" />
240
- {/if}
241
- <div class="flex flex-col w-full gap-4">
242
- <label class="block grow w-full">
243
- <div class="text-secondary text-sm flex items-center gap-1 w-full justify-between">
244
- <div>
245
- Path
246
- <Required required={true} />
247
- </div>
248
- <div class="text-2xs text-tertiary"> ':myparam' for path params </div>
249
- </div>
250
- <!-- svelte-ignore a11y-autofocus -->
251
- <input
252
- type="text"
253
- autocomplete="off"
254
- bind:value={route_path}
255
- disabled={!($userStore?.is_admin || $userStore?.is_super_admin) || !can_write}
256
- class={routeError === ''
257
- ? ''
258
- : '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'}
259
- on:input={() => {
260
- dirtyRoutePath = true
261
- }}
262
- />
263
- </label>
264
-
265
- <ToggleButtonGroup
266
- class="w-auto"
267
- bind:selected={http_method}
268
- disabled={!($userStore?.is_admin || $userStore?.is_super_admin) ||
269
- !can_write ||
270
- !!static_asset_config}
271
- >
272
- <ToggleButton label="GET" value="get" />
273
- <ToggleButton label="POST" value="post" />
274
- <ToggleButton label="PUT" value="put" />
275
- <ToggleButton label="PATCH" value="patch" />
276
- <ToggleButton label="DELETE" value="delete" />
277
- </ToggleButtonGroup>
278
- <div class="flex flex-col w-full mt-2">
279
- <div class="flex justify-start w-full">
280
- <Badge
281
- color="gray"
282
- class="center-center !bg-surface-secondary !text-tertiary !w-[90px] !h-[24px] rounded-r-none border"
283
- >
284
- Full endpoint
285
- </Badge>
286
- <input
287
- type="text"
288
- readonly
289
- value={fullRoute}
290
- size={fullRoute.length || 50}
291
- class="font-mono !text-xs max-w-[calc(100%-70px)] !w-auto !h-[24px] !py-0 !border-l-0 !rounded-l-none"
292
- on:focus={({ currentTarget }) => {
293
- currentTarget.select()
294
- }}
295
- />
296
- </div>
297
-
298
- <div class="text-red-600 dark:text-red-400 text-2xs mt-1.5"
299
- >{dirtyRoutePath ? routeError : ''}</div
300
- >
301
- </div>
302
- </div>
303
- </Section>
205
+ <RouteEditorConfigSection
206
+ bind:route_path
207
+ bind:isValid
208
+ bind:dirtyRoutePath
209
+ bind:http_method
210
+ {can_write}
211
+ bind:static_asset_config
212
+ {initialRoutePath}
213
+ />
304
214
 
305
215
  <Section label="Target">
306
216
  <ToggleButtonGroup
@@ -324,36 +234,48 @@ $: validateRoute(route_path, http_method);
324
234
 
325
235
  {#if static_asset_config}
326
236
  <div class="flex flex-col w-full gap-1">
327
- <Toggle
328
- class="flex justify-end"
329
- bind:checked={s3FileUploadRawMode}
330
- size="xs"
331
- options={{ left: 'Existing file' }}
332
- />
333
- {#if s3FileUploadRawMode}
334
- <JsonEditor
335
- bind:editor={s3Editor}
336
- on:focus={(e) => {
337
- dispatch('focus')
338
- }}
339
- on:blur={(e) => {
340
- dispatch('blur')
341
- }}
342
- code={JSON.stringify(static_asset_config ?? { s3: '' }, null, 2)}
343
- bind:value={static_asset_config}
344
- />
345
- <Button
346
- variant="border"
347
- color="light"
237
+ {#if can_write}
238
+ <Toggle
239
+ class="flex justify-end"
240
+ bind:checked={s3FileUploadRawMode}
348
241
  size="xs"
349
- btnClasses="mt-1"
350
- on:click={() => {
351
- s3FilePicker?.open?.(static_asset_config)
352
- }}
353
- startIcon={{ icon: Pipette }}
354
- >
355
- Choose an object from the catalog
356
- </Button>
242
+ options={{ left: 'Existing file' }}
243
+ disabled={!can_write}
244
+ />
245
+ {/if}
246
+ {#if s3FileUploadRawMode}
247
+ {#if can_write}
248
+ <JsonEditor
249
+ bind:editor={s3Editor}
250
+ on:focus={(e) => {
251
+ dispatch('focus')
252
+ }}
253
+ on:blur={(e) => {
254
+ dispatch('blur')
255
+ }}
256
+ code={JSON.stringify(static_asset_config ?? { s3: '' }, null, 2)}
257
+ bind:value={static_asset_config}
258
+ />
259
+ {:else}
260
+ <Highlight
261
+ language={json}
262
+ code={JSON.stringify(static_asset_config ?? { s3: '' }, null, 2)}
263
+ />
264
+ {/if}
265
+ {#if can_write}
266
+ <Button
267
+ variant="border"
268
+ color="light"
269
+ size="xs"
270
+ btnClasses="mt-1"
271
+ on:click={() => {
272
+ s3FilePicker?.open?.(static_asset_config)
273
+ }}
274
+ startIcon={{ icon: Pipette }}
275
+ >
276
+ Choose an object from the catalog
277
+ </Button>
278
+ {/if}
357
279
  {:else}
358
280
  <FileUpload
359
281
  allowMultiple={false}
@@ -386,7 +308,8 @@ $: validateRoute(route_path, http_method);
386
308
  allowFlow={true}
387
309
  bind:itemKind
388
310
  bind:scriptPath={script_path}
389
- allowRefresh
311
+ allowRefresh={can_write}
312
+ allowEdit={!$userStore?.operator}
390
313
  />
391
314
 
392
315
  {#if script_path === undefined}
@@ -404,34 +327,46 @@ $: validateRoute(route_path, http_method);
404
327
  {/if}
405
328
  </Section>
406
329
 
407
- <Section label="Settings">
330
+ <Section label="Advanced">
408
331
  <div class="flex flex-col gap-4">
409
332
  <div class="flex flex-row justify-between">
410
- <div class="text-sm font-semibold flex flex-row items-center">Request type</div>
411
- <ToggleButtonGroup class="w-auto" bind:selected={is_async} disabled={!can_write}>
412
- <ToggleButton
413
- label="Async"
414
- value={true}
415
- tooltip="The returning value is the uuid of the job assigned to execute the job."
416
- />
417
- <ToggleButton
418
- label="Sync"
419
- value={false}
420
- tooltip="Triggers the execution, wait for the job to complete and return it as a response."
421
- />
422
- </ToggleButtonGroup>
423
- </div>
424
- <div class="flex flex-row justify-between">
425
- <div class="text-sm font-semibold flex flex-row items-center">Authentication</div>
426
- <ToggleButtonGroup class="w-auto" bind:selected={requires_auth} disabled={!can_write}>
427
- <ToggleButton label="None" value={false} />
428
- <ToggleButton
429
- label="Required"
430
- value={true}
431
- tooltip="Requires authentication with read access on the route"
432
- />
433
- </ToggleButtonGroup>
333
+ <Label label="Request type" class="w-full">
334
+ <svelte:fragment slot="action">
335
+ <ToggleButtonGroup
336
+ class="w-auto h-full"
337
+ bind:selected={is_async}
338
+ disabled={!can_write}
339
+ >
340
+ <ToggleButton
341
+ label="Async"
342
+ value={true}
343
+ tooltip="The returning value is the uuid of the job assigned to execute the job."
344
+ />
345
+ <ToggleButton
346
+ label="Sync"
347
+ value={false}
348
+ tooltip="Triggers the execution, wait for the job to complete and return it as a response."
349
+ />
350
+ </ToggleButtonGroup>
351
+ </svelte:fragment>
352
+ </Label>
434
353
  </div>
354
+ <Label label="Authentication" class="w-full">
355
+ <svelte:fragment slot="action">
356
+ <ToggleButtonGroup
357
+ class="w-auto h-full"
358
+ bind:selected={requires_auth}
359
+ disabled={!can_write}
360
+ >
361
+ <ToggleButton label="None" value={false} />
362
+ <ToggleButton
363
+ label="Required"
364
+ value={true}
365
+ tooltip="Requires authentication with read access on the route"
366
+ />
367
+ </ToggleButtonGroup>
368
+ </svelte:fragment>
369
+ </Label>
435
370
  </div>
436
371
  </Section>
437
372
  </div>
@@ -2,7 +2,7 @@ import { SvelteComponent } from "svelte";
2
2
  declare const __propDef: {
3
3
  props: {
4
4
  openEdit?: ((ePath: string, isFlow: boolean) => Promise<void>) | undefined;
5
- openNew?: ((nis_flow: boolean, fixedScriptPath_?: string) => Promise<void>) | undefined;
5
+ openNew?: ((nis_flow: boolean, fixedScriptPath_?: string, defaultValues?: Record<string, any>) => Promise<void>) | undefined;
6
6
  };
7
7
  events: {
8
8
  focus: CustomEvent<any>;
@@ -18,6 +18,6 @@ export type RouteEditorInnerEvents = typeof __propDef.events;
18
18
  export type RouteEditorInnerSlots = typeof __propDef.slots;
19
19
  export default class RouteEditorInner extends SvelteComponent<RouteEditorInnerProps, RouteEditorInnerEvents, RouteEditorInnerSlots> {
20
20
  get openEdit(): (ePath: string, isFlow: boolean) => Promise<void>;
21
- get openNew(): (nis_flow: boolean, fixedScriptPath_?: string | undefined) => Promise<void>;
21
+ get openNew(): (nis_flow: boolean, fixedScriptPath_?: string | undefined, defaultValues?: Record<string, any> | undefined) => Promise<void>;
22
22
  }
23
23
  export {};
@@ -1,18 +1,29 @@
1
- <script>import { Button } from '../common';
2
- import { userStore, workspaceStore } from '../../stores';
1
+ <script>import { userStore, workspaceStore } from '../../stores';
3
2
  import { HttpTriggerService } from '../../gen';
4
- import { RouteIcon } from 'lucide-svelte';
5
3
  import Skeleton from '../common/skeleton/Skeleton.svelte';
6
4
  import RouteEditor from './RouteEditor.svelte';
7
5
  import { canWrite } from '../../utils';
8
6
  import Alert from '../common/alert/Alert.svelte';
9
- import { getContext } from 'svelte';
7
+ import { getContext, onMount } from 'svelte';
8
+ import Section from '../Section.svelte';
9
+ import TriggersEditorSection from './TriggersEditorSection.svelte';
10
+ import Description from '../Description.svelte';
10
11
  export let isFlow;
11
12
  export let path;
12
13
  export let newItem = false;
14
+ export let isEditor = false;
15
+ export let canHavePreprocessor = false;
13
16
  let routeEditor;
14
17
  $: path && loadTriggers();
15
- const { triggersCount } = getContext('TriggerContext');
18
+ const { triggersCount, selectedTrigger, defaultValues } = getContext('TriggerContext');
19
+ onMount(() => {
20
+ if (defaultValues &&
21
+ $selectedTrigger === 'routes' &&
22
+ Object.keys($defaultValues ?? {}).length > 0) {
23
+ routeEditor.openNew(isFlow, path, $defaultValues);
24
+ defaultValues.set(undefined);
25
+ }
26
+ });
16
27
  let httpTriggers = undefined;
17
28
  export async function loadTriggers() {
18
29
  try {
@@ -38,57 +49,61 @@ export async function loadTriggers() {
38
49
  bind:this={routeEditor}
39
50
  />
40
51
 
41
- <div class="flex flex-col gap-4">
52
+ <div class="flex flex-col gap-8">
53
+ <Description link="https://www.windmill.dev/docs/core_concepts/http_routing">
54
+ Routes expose your scripts and flows as HTTP endpoints. Each route can be configured with a
55
+ specific HTTP method and path.
56
+ </Description>
57
+ <TriggersEditorSection
58
+ on:saveTrigger={(e) => {
59
+ routeEditor?.openNew(isFlow, path, e.detail.config)
60
+ }}
61
+ on:applyArgs
62
+ on:addPreprocessor
63
+ cloudDisabled={false}
64
+ triggerType="http"
65
+ {isFlow}
66
+ {path}
67
+ {isEditor}
68
+ {canHavePreprocessor}
69
+ {newItem}
70
+ />
42
71
  {#if !newItem}
43
- {#if $userStore?.is_admin || $userStore?.is_super_admin}
44
- <Button
45
- on:click={() => routeEditor?.openNew(isFlow, path)}
46
- variant="border"
47
- color="light"
48
- size="xs"
49
- startIcon={{ icon: RouteIcon }}
50
- >
51
- New Route
52
- </Button>
53
- {:else}
54
- <Alert title="Only workspace admins can create routes" type="warning" size="xs" />
55
- {/if}
56
- {/if}
72
+ <Section label="Routes">
73
+ {#if !$userStore?.is_admin && !$userStore?.is_super_admin}
74
+ <Alert title="Only workspace admins can create routes" type="warning" size="xs" />
75
+ {/if}
57
76
 
58
- {#if httpTriggers}
59
- {#if httpTriggers.length == 0}
60
- <div class="text-xs text-secondary"> No http routes </div>
61
- {:else}
62
- <div class="flex flex-col divide-y pt-2">
63
- {#each httpTriggers as httpTriggers (httpTriggers.path)}
64
- <div class="grid grid-cols-5 text-2xs items-center py-2">
65
- <div class="col-span-2 truncate">{httpTriggers.path}</div>
66
- <div class="col-span-2 truncate">
67
- {httpTriggers.http_method.toUpperCase()} /{httpTriggers.route_path}
68
- </div>
69
- <div class="flex justify-end">
70
- <button
71
- on:click={() => routeEditor?.openEdit(httpTriggers.path, isFlow)}
72
- class="px-2"
73
- >
74
- {#if httpTriggers.canWrite}
75
- Edit
76
- {:else}
77
- View
78
- {/if}
79
- </button>
80
- </div>
77
+ {#if httpTriggers}
78
+ {#if httpTriggers.length == 0}
79
+ <div class="text-xs text-secondary text-center"> No http routes </div>
80
+ {:else}
81
+ <div class="flex flex-col divide-y pt-2">
82
+ {#each httpTriggers as httpTriggers (httpTriggers.path)}
83
+ <div class="grid grid-cols-5 text-2xs items-center py-2">
84
+ <div class="col-span-2 truncate">{httpTriggers.path}</div>
85
+ <div class="col-span-2 truncate">
86
+ {httpTriggers.http_method.toUpperCase()} /{httpTriggers.route_path}
87
+ </div>
88
+ <div class="flex justify-end">
89
+ <button
90
+ on:click={() => routeEditor?.openEdit(httpTriggers.path, isFlow)}
91
+ class="px-2"
92
+ >
93
+ {#if httpTriggers.canWrite}
94
+ Edit
95
+ {:else}
96
+ View
97
+ {/if}
98
+ </button>
99
+ </div>
100
+ </div>
101
+ {/each}
81
102
  </div>
82
- {/each}
83
- </div>
84
- {/if}
85
- {:else}
86
- <Skeleton layout={[[8]]} />
87
- {/if}
88
-
89
- {#if newItem}
90
- <Alert title="Triggers disabled" type="warning" size="xs">
91
- Deploy the {isFlow ? 'flow' : 'script'} to add http routes.
92
- </Alert>
103
+ {/if}
104
+ {:else}
105
+ <Skeleton layout={[[8]]} />
106
+ {/if}
107
+ </Section>
93
108
  {/if}
94
109
  </div>
@@ -4,9 +4,14 @@ declare const __propDef: {
4
4
  isFlow: boolean;
5
5
  path: string;
6
6
  newItem?: boolean | undefined;
7
+ isEditor?: boolean | undefined;
8
+ canHavePreprocessor?: boolean | undefined;
7
9
  loadTriggers?: (() => Promise<void>) | undefined;
8
10
  };
9
11
  events: {
12
+ applyArgs: any;
13
+ addPreprocessor: any;
14
+ } & {
10
15
  [evt: string]: CustomEvent<any>;
11
16
  };
12
17
  slots: {};
@@ -1,18 +1,14 @@
1
- <script>import Alert from '../common/alert/Alert.svelte';
2
- import Label from '../Label.svelte';
1
+ <script>import Label from '../Label.svelte';
3
2
  import { base } from '../../base';
3
+ import Description from '../Description.svelte';
4
4
  </script>
5
5
 
6
6
  <div class="flex flex-col w-full gap-4 text-sm">
7
- <Alert
8
- title="Scheduled Poll"
9
- size="xs"
10
- documentationLink="https://www.windmill.dev/docs/flows/flow_trigger"
11
- >
12
- Sheduled Poll is a trigger that polls an external API at a given interval. It is useful for
7
+ <Description link="https://www.windmill.dev/docs/flows/flow_trigger">
8
+ Scheduled Poll is a trigger that polls an external API at a given interval. It is useful for
13
9
  triggering jobs based on the change of external states. Under the hood, it is a script triggered
14
10
  by a schedule, and returning a list of the changed states so we can iterate over them.
15
- </Alert>
11
+ </Description>
16
12
 
17
13
  <Label label="Setting a scheduled poll" primary>
18
14
  <ul class="pt-4 space-y-2 text-sm">