windmill-components 1.394.8 → 1.405.5

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 (305) hide show
  1. package/package/assets/app.css +20 -0
  2. package/package/ata/edgeCases.d.ts +0 -1
  3. package/package/ata/edgeCases.js +2 -8
  4. package/package/ata/index.js +4 -3
  5. package/package/common.d.ts +1 -1
  6. package/package/common.js +2 -2
  7. package/package/components/ApiConnectForm.svelte +33 -7
  8. package/package/components/AppConnectLightweightResourcePicker.svelte +66 -0
  9. package/package/components/AppConnectLightweightResourcePicker.svelte.d.ts +21 -0
  10. package/package/components/ArgInput.svelte +10 -4
  11. package/package/components/ArgInput.svelte.d.ts +1 -0
  12. package/package/components/CenteredModal.svelte +4 -1
  13. package/package/components/CenteredModal.svelte.d.ts +1 -0
  14. package/package/components/CustomPopover.svelte +1 -1
  15. package/package/components/DateInput.svelte +2 -0
  16. package/package/components/DateInput.svelte.d.ts +1 -0
  17. package/package/components/DefaultScripts.svelte +8 -3
  18. package/package/components/DefaultScripts.svelte.d.ts +5 -1
  19. package/package/components/DefaultScriptsInner.svelte +16 -7
  20. package/package/components/DefaultScriptsInner.svelte.d.ts +3 -1
  21. package/package/components/Dev.svelte +68 -11
  22. package/package/components/DisplayResult.svelte +1 -1
  23. package/package/components/DropdownV2.svelte.d.ts +3 -3
  24. package/package/components/DropdownV2Inner.svelte.d.ts +3 -3
  25. package/package/components/EditableSchemaForm.svelte +1 -0
  26. package/package/components/Editor.svelte +3 -2
  27. package/package/components/Editor.svelte.d.ts +1 -1
  28. package/package/components/ExecutionDuration.svelte +44 -0
  29. package/package/components/ExecutionDuration.svelte.d.ts +24 -0
  30. package/package/components/FlowBuilder.svelte +22 -12
  31. package/package/components/FlowBuilder.svelte.d.ts +1 -0
  32. package/package/components/FlowGraphViewer.svelte +9 -2
  33. package/package/components/FlowGraphViewerStep.svelte +23 -10
  34. package/package/components/FlowInputViewer.svelte +25 -0
  35. package/package/components/FlowInputViewer.svelte.d.ts +19 -0
  36. package/package/components/FlowJobResult.svelte +8 -2
  37. package/package/components/FlowJobResult.svelte.d.ts +1 -0
  38. package/package/components/FlowMetadata.svelte +2 -2
  39. package/package/components/FlowStatusViewer.svelte +3 -1
  40. package/package/components/FlowStatusViewer.svelte.d.ts +1 -0
  41. package/package/components/FlowStatusViewerInner.svelte +21 -5
  42. package/package/components/FlowTimeline.svelte +3 -3
  43. package/package/components/FlowViewer.svelte +2 -21
  44. package/package/components/HighlightCode.svelte +3 -0
  45. package/package/components/IconedResourceType.svelte +17 -10
  46. package/package/components/IconedResourceType.svelte.d.ts +2 -0
  47. package/package/components/IdEditorInput.svelte +0 -1
  48. package/package/components/InstanceSettings.svelte +247 -129
  49. package/package/components/InstanceSettings.svelte.d.ts +2 -0
  50. package/package/components/JobArgs.svelte +3 -1
  51. package/package/components/LightweightArgInput.svelte +35 -10
  52. package/package/components/LightweightArgInput.svelte.d.ts +1 -0
  53. package/package/components/LightweightObjectResourceInput.svelte +2 -0
  54. package/package/components/LightweightObjectResourceInput.svelte.d.ts +1 -0
  55. package/package/components/LightweightResourcePicker.svelte +34 -30
  56. package/package/components/LightweightSchemaForm.svelte +2 -0
  57. package/package/components/LightweightSchemaForm.svelte.d.ts +1 -0
  58. package/package/components/LogViewer.svelte +4 -3
  59. package/package/components/LogViewer.svelte.d.ts +1 -0
  60. package/package/components/Login.svelte +10 -5
  61. package/package/components/Login.svelte.d.ts +1 -0
  62. package/package/components/ManualPopover.svelte +1 -1
  63. package/package/components/ModulePreview.svelte +21 -2
  64. package/package/components/ModuleStatus.svelte +3 -0
  65. package/package/components/ModuleStatus.svelte.d.ts +1 -0
  66. package/package/components/OAuthSetting.svelte +40 -15
  67. package/package/components/ObjectResourceInput.svelte +5 -2
  68. package/package/components/ObjectResourceInput.svelte.d.ts +2 -0
  69. package/package/components/ObjectStoreConfigSettings.svelte +78 -76
  70. package/package/components/ParqetCsvTableRenderer.svelte +25 -3
  71. package/package/components/Password.svelte.d.ts +1 -1
  72. package/package/components/Path.svelte +74 -54
  73. package/package/components/Path.svelte.d.ts +2 -1
  74. package/package/components/Popover.svelte +1 -1
  75. package/package/components/Portal.svelte +7 -8
  76. package/package/components/Portal.svelte.d.ts +3 -7
  77. package/package/components/QueueMetricsDrawer.svelte +368 -3
  78. package/package/components/QueueMetricsDrawer.svelte.d.ts +2 -0
  79. package/package/components/ResourceEditor.svelte +38 -10
  80. package/package/components/ResourcePicker.svelte +14 -9
  81. package/package/components/ResourcePicker.svelte.d.ts +1 -0
  82. package/package/components/ResultJobLoader.svelte +6 -3
  83. package/package/components/ResultJobLoader.svelte.d.ts +1 -1
  84. package/package/components/RunForm.svelte +1 -1
  85. package/package/components/SavedInputs.svelte +2 -2
  86. package/package/components/ScheduleEditorInner.svelte +2 -2
  87. package/package/components/SchemaForm.svelte +6 -1
  88. package/package/components/ScriptBuilder.svelte +12 -5
  89. package/package/components/ScriptEditor.svelte +33 -3
  90. package/package/components/ScriptEditor.svelte.d.ts +1 -1
  91. package/package/components/ScriptVersionHistory.svelte +54 -59
  92. package/package/components/Scrollable.svelte +47 -0
  93. package/package/components/Scrollable.svelte.d.ts +21 -0
  94. package/package/components/ShareModal.svelte.d.ts +2 -2
  95. package/package/components/SuperadminSettings.svelte +5 -7
  96. package/package/components/TestConnection.svelte +1 -0
  97. package/package/components/TestJobLoader.svelte +46 -5
  98. package/package/components/TestJobLoader.svelte.d.ts +2 -1
  99. package/package/components/TimeAgo.svelte +5 -6
  100. package/package/components/TimeAgo.svelte.d.ts +1 -1
  101. package/package/components/ToggleHubWorkspaceQuick.svelte +14 -0
  102. package/package/components/ToggleHubWorkspaceQuick.svelte.d.ts +16 -0
  103. package/package/components/WorkspaceGroup.svelte +3 -2
  104. package/package/components/apps/components/buttons/AppButton.svelte +1 -1
  105. package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +1 -1
  106. package/package/components/apps/components/helpers/DebouncedInput.svelte +9 -1
  107. package/package/components/apps/components/inputs/AppMultiSelect.svelte +1 -1
  108. package/package/components/apps/components/inputs/AppMultiSelectV2.svelte +1 -1
  109. package/package/components/apps/components/inputs/AppSelect.svelte +1 -1
  110. package/package/components/apps/components/layout/AppDrawer.svelte +1 -1
  111. package/package/components/apps/components/layout/AppModal.svelte +1 -1
  112. package/package/components/apps/editor/AppEditor.svelte +11 -3
  113. package/package/components/apps/editor/GridEditor.svelte +57 -4
  114. package/package/components/apps/editor/GridEditor.svelte.d.ts +8 -0
  115. package/package/components/apps/editor/GridEditorMenu.svelte +1 -1
  116. package/package/components/apps/editor/SubGridEditor.svelte +82 -3
  117. package/package/components/apps/editor/SubGridEditor.svelte.d.ts +16 -0
  118. package/package/components/apps/editor/appUtils.d.ts +19 -2
  119. package/package/components/apps/editor/appUtils.js +103 -7
  120. package/package/components/apps/editor/component/Component.svelte +36 -8
  121. package/package/components/apps/editor/component/Component.svelte.d.ts +3 -1
  122. package/package/components/apps/editor/component/components.d.ts +79 -79
  123. package/package/components/apps/editor/contextPanel/components/OutputHeader.svelte +1 -1
  124. package/package/components/apps/svelte-grid/Grid.svelte +235 -12
  125. package/package/components/apps/svelte-grid/Grid.svelte.d.ts +7 -7
  126. package/package/components/apps/svelte-grid/MoveResize.svelte +104 -11
  127. package/package/components/apps/svelte-grid/MoveResize.svelte.d.ts +7 -0
  128. package/package/components/apps/svelte-grid/utils/item.d.ts +4 -1
  129. package/package/components/apps/svelte-grid/utils/item.js +2 -3
  130. package/package/components/apps/svelte-select/lib/ConditionalPortal.svelte +1 -1
  131. package/package/components/apps/svelte-select/lib/ConditionalPortalGlobal.svelte +1 -1
  132. package/package/components/apps/svelte-select/lib/Select.svelte +1 -1
  133. package/package/components/common/button/ButtonDropdown.svelte +1 -1
  134. package/package/components/common/drawer/ConditionalPortal.svelte +1 -1
  135. package/package/components/common/fileUpload/FileUpload.svelte +1 -1
  136. package/package/components/common/languageIcons/LanguageIcon.svelte +5 -2
  137. package/package/components/common/menu/Menu.svelte +2 -1
  138. package/package/components/common/menu/MenuV2.svelte +4 -2
  139. package/package/components/common/menu/MenuV2.svelte.d.ts +1 -0
  140. package/package/components/common/modal/AlwaysMountedModal.svelte +1 -1
  141. package/package/components/common/popup/Popup.svelte +22 -12
  142. package/package/components/common/popup/Popup.svelte.d.ts +2 -0
  143. package/package/components/common/popup/PopupV2.svelte +58 -0
  144. package/package/components/common/popup/PopupV2.svelte.d.ts +27 -0
  145. package/package/components/copilot/CronGen.svelte +1 -1
  146. package/package/components/copilot/RegexGen.svelte +4 -4
  147. package/package/components/copilot/StepGen.svelte +6 -6
  148. package/package/components/copilot/StepGenQuick.svelte +58 -0
  149. package/package/components/copilot/StepGenQuick.svelte.d.ts +24 -0
  150. package/package/components/copilot/flow.d.ts +2 -0
  151. package/package/components/copilot/flow.js +55 -0
  152. package/package/components/details/DetailPageDetailPanel.svelte +9 -1
  153. package/package/components/details/DetailPageDetailPanel.svelte.d.ts +2 -1
  154. package/package/components/details/DetailPageLayout.svelte +2 -0
  155. package/package/components/details/DetailPageLayout.svelte.d.ts +3 -0
  156. package/package/components/details/Menu.svelte +1 -1
  157. package/package/components/details/utils.d.ts +0 -1
  158. package/package/components/details/utils.js +1 -12
  159. package/package/components/flows/CreateActionsApp.svelte +1 -1
  160. package/package/components/flows/FlowEditor.svelte +4 -2
  161. package/package/components/flows/FlowEditor.svelte.d.ts +1 -0
  162. package/package/components/flows/FlowHistory.svelte +10 -195
  163. package/package/components/flows/FlowHistory.svelte.d.ts +0 -1
  164. package/package/components/flows/FlowHistoryInner.svelte +200 -0
  165. package/package/components/flows/FlowHistoryInner.svelte.d.ts +19 -0
  166. package/package/components/flows/FlowProgressBar.svelte +16 -1
  167. package/package/components/flows/FlowProgressBar.svelte.d.ts +1 -0
  168. package/package/components/flows/content/FlowBranchesAllWrapper.svelte +8 -0
  169. package/package/components/flows/content/FlowBranchesAllWrapper.svelte.d.ts +1 -0
  170. package/package/components/flows/content/FlowBranchesOneWrapper.svelte +8 -0
  171. package/package/components/flows/content/FlowBranchesOneWrapper.svelte.d.ts +1 -0
  172. package/package/components/flows/content/FlowConstants.svelte +1 -1
  173. package/package/components/flows/content/FlowEditorPanel.svelte +5 -1
  174. package/package/components/flows/content/FlowEditorPanel.svelte.d.ts +1 -0
  175. package/package/components/flows/content/FlowInput.svelte +66 -58
  176. package/package/components/flows/content/FlowInput.svelte.d.ts +1 -0
  177. package/package/components/flows/content/FlowInputs.svelte +7 -6
  178. package/package/components/flows/content/FlowInputs.svelte.d.ts +1 -0
  179. package/package/components/flows/content/FlowInputsFlowQuick.svelte +65 -0
  180. package/package/components/flows/content/FlowInputsFlowQuick.svelte.d.ts +19 -0
  181. package/package/components/flows/content/FlowInputsQuick.svelte +419 -0
  182. package/package/components/flows/content/FlowInputsQuick.svelte.d.ts +33 -0
  183. package/package/components/flows/content/FlowLoop.svelte +7 -1
  184. package/package/components/flows/content/FlowModuleComponent.svelte +12 -3
  185. package/package/components/flows/content/FlowModuleComponent.svelte.d.ts +1 -0
  186. package/package/components/flows/content/FlowModuleScript.svelte +1 -1
  187. package/package/components/flows/content/FlowModuleSkip.svelte +69 -0
  188. package/package/components/flows/content/FlowModuleSkip.svelte.d.ts +20 -0
  189. package/package/components/flows/content/FlowModuleWrapper.svelte +17 -4
  190. package/package/components/flows/content/FlowPreprocessorModule.svelte +16 -0
  191. package/package/components/flows/content/FlowPreprocessorModule.svelte.d.ts +16 -0
  192. package/package/components/flows/content/FlowWhileLoop.svelte +9 -0
  193. package/package/components/flows/content/FlowWhileLoop.svelte.d.ts +1 -0
  194. package/package/components/flows/content/GenAiQuick.svelte +30 -0
  195. package/package/components/flows/content/GenAiQuick.svelte.d.ts +20 -0
  196. package/package/components/flows/content/ScriptEditorDrawer.svelte +3 -2
  197. package/package/components/flows/flowInfers.js +1 -1
  198. package/package/components/flows/header/FlowPreviewButtons.svelte +1 -0
  199. package/package/components/flows/idUtils.js +3 -1
  200. package/package/components/flows/map/FlowCopilotButton.svelte +55 -0
  201. package/package/components/flows/map/FlowCopilotButton.svelte.d.ts +16 -0
  202. package/package/components/flows/map/FlowErrorHandlerItem.svelte +77 -47
  203. package/package/components/flows/map/FlowJobsMenu.svelte +1 -1
  204. package/package/components/flows/map/FlowModuleSchemaItem.svelte +25 -12
  205. package/package/components/flows/map/FlowModuleSchemaItem.svelte.d.ts +1 -0
  206. package/package/components/flows/map/FlowModuleSchemaMap.svelte +64 -20
  207. package/package/components/flows/map/InsertModuleButton.svelte +161 -138
  208. package/package/components/flows/map/InsertModuleButton.svelte.d.ts +7 -4
  209. package/package/components/flows/map/MapItem.svelte +11 -0
  210. package/package/components/flows/map/MapItem.svelte.d.ts +1 -0
  211. package/package/components/flows/pickers/FlowScriptPickerQuick.svelte +48 -0
  212. package/package/components/flows/pickers/FlowScriptPickerQuick.svelte.d.ts +23 -0
  213. package/package/components/flows/pickers/FlowToplevelNode.svelte +19 -0
  214. package/package/components/flows/pickers/FlowToplevelNode.svelte.d.ts +19 -0
  215. package/package/components/flows/pickers/PickHubScriptQuick.svelte +138 -0
  216. package/package/components/flows/pickers/PickHubScriptQuick.svelte.d.ts +33 -0
  217. package/package/components/flows/pickers/TopLevelNode.svelte +58 -0
  218. package/package/components/flows/pickers/TopLevelNode.svelte.d.ts +21 -0
  219. package/package/components/flows/pickers/WorkspaceScriptPickerQuick.svelte +120 -0
  220. package/package/components/flows/pickers/WorkspaceScriptPickerQuick.svelte.d.ts +35 -0
  221. package/package/components/flows/types.d.ts +1 -0
  222. package/package/components/graph/FlowGraphV2.svelte +93 -58
  223. package/package/components/graph/FlowGraphV2.svelte.d.ts +2 -1
  224. package/package/components/graph/graphBuilder.d.ts +2 -1
  225. package/package/components/graph/graphBuilder.js +345 -280
  226. package/package/components/graph/model.d.ts +2 -0
  227. package/package/components/graph/renderers/edges/BaseEdge.svelte +36 -14
  228. package/package/components/graph/renderers/nodes/BranchOneStart.svelte +1 -1
  229. package/package/components/graph/renderers/nodes/InputNode.svelte +31 -51
  230. package/package/components/graph/renderers/nodes/InputNode.svelte.d.ts +6 -1
  231. package/package/components/graph/renderers/nodes/ModuleNode.svelte +2 -1
  232. package/package/components/graph/util.d.ts +1 -1
  233. package/package/components/graph/util.js +7 -2
  234. package/package/components/home/ListFiltersQuick.svelte +51 -0
  235. package/package/components/home/ListFiltersQuick.svelte.d.ts +23 -0
  236. package/package/components/icons/AnsibleIcon.svelte +42 -0
  237. package/package/components/icons/AnsibleIcon.svelte.d.ts +25 -0
  238. package/package/components/icons/WindmillIcon.svelte +119 -105
  239. package/package/components/icons/WindmillIcon2.svelte +141 -0
  240. package/package/components/icons/WindmillIcon2.svelte.d.ts +20 -0
  241. package/package/components/icons/index.d.ts +2 -1
  242. package/package/components/icons/index.js +2 -1
  243. package/package/components/icons/store.d.ts +4 -0
  244. package/package/components/icons/store.js +1 -0
  245. package/package/components/instanceSettings.d.ts +2 -2
  246. package/package/components/instanceSettings.js +25 -58
  247. package/package/components/jobs/JobProgressBar.svelte +52 -0
  248. package/package/components/jobs/JobProgressBar.svelte.d.ts +23 -0
  249. package/package/components/multiselect/MultiSelectWrapper.svelte +1 -1
  250. package/package/components/progressBar/ProgressBar.svelte +18 -1
  251. package/package/components/progressBar/ProgressBar.svelte.d.ts +3 -0
  252. package/package/components/propertyPicker/ObjectViewer.svelte +1 -1
  253. package/package/components/runs/JobPreview.svelte +1 -0
  254. package/package/components/runs/PreprocessedArgsDisplay.svelte +71 -0
  255. package/package/components/runs/PreprocessedArgsDisplay.svelte.d.ts +16 -0
  256. package/package/components/runs/RunRow.svelte +3 -7
  257. package/package/components/schema/AddProperty.svelte +1 -0
  258. package/package/components/schema/EditableSchemaWrapper.svelte +142 -19
  259. package/package/components/schema/EditableSchemaWrapper.svelte.d.ts +1 -0
  260. package/package/components/schema/FlowPropertyEditor.svelte +13 -0
  261. package/package/components/schema/FlowPropertyEditor.svelte.d.ts +1 -0
  262. package/package/components/scriptEditor/LogPanel.svelte +1 -0
  263. package/package/components/scriptEditor/LogPanel.svelte.d.ts +3 -1
  264. package/package/components/search/GlobalSearchModal.svelte +3 -2
  265. package/package/components/sidebar/SidebarContent.svelte +69 -8
  266. package/package/components/sidebar/changelogs.js +10 -0
  267. package/package/components/triggers/RouteEditor.svelte +19 -0
  268. package/package/components/triggers/RouteEditor.svelte.d.ts +21 -0
  269. package/package/components/triggers/RouteEditorInner.svelte +327 -0
  270. package/package/components/triggers/RouteEditorInner.svelte.d.ts +21 -0
  271. package/package/components/triggers/RoutesPanel.svelte +74 -0
  272. package/package/components/triggers/RoutesPanel.svelte.d.ts +17 -0
  273. package/package/editorUtils.js +2 -0
  274. package/package/gen/core/OpenAPI.js +1 -1
  275. package/package/gen/schemas.gen.d.ts +159 -8
  276. package/package/gen/schemas.gen.js +161 -8
  277. package/package/gen/services.gen.d.ts +139 -1
  278. package/package/gen/services.gen.js +282 -1
  279. package/package/gen/types.gen.d.ts +455 -12
  280. package/package/hubPaths.json +6 -8
  281. package/package/infer.d.ts +4 -2
  282. package/package/infer.js +25 -23
  283. package/package/inferArgSig.js +8 -2
  284. package/package/monaco_workers/graphql.worker.bundle.js +45440 -174
  285. package/package/relative_imports.d.ts +3 -0
  286. package/package/relative_imports.js +25 -0
  287. package/package/script_helpers.d.ts +38 -34
  288. package/package/script_helpers.js +245 -35
  289. package/package/scripts.d.ts +1 -1
  290. package/package/scripts.js +5 -1
  291. package/package/stores.d.ts +1 -0
  292. package/package/stores.js +1 -0
  293. package/package/utils.d.ts +1 -0
  294. package/package/utils.js +4 -0
  295. package/package.json +38 -7
  296. package/package/components/flows/map/InsertTriggerButton.svelte +0 -48
  297. package/package/components/flows/map/InsertTriggerButton.svelte.d.ts +0 -24
  298. package/package/init_scripts/python_failure_module.d.ts +0 -2
  299. package/package/init_scripts/python_failure_module.js +0 -8
  300. package/package/init_scripts/python_init_code.d.ts +0 -2
  301. package/package/init_scripts/python_init_code.js +0 -40
  302. package/package/init_scripts/python_init_code_clear.d.ts +0 -2
  303. package/package/init_scripts/python_init_code_clear.js +0 -5
  304. package/package/init_scripts/python_init_code_trigger.d.ts +0 -2
  305. package/package/init_scripts/python_init_code_trigger.js +0 -14
@@ -0,0 +1,71 @@
1
+ <script>import Badge from '../common/badge/Badge.svelte';
2
+ // import { ClipboardCopy, Download } from 'lucide-svelte'
3
+ // import Drawer from '../common/drawer/Drawer.svelte'
4
+ // import DrawerContent from '../common/drawer/DrawerContent.svelte'
5
+ // import { Highlight } from 'svelte-highlight'
6
+ // import Button from '../common/button/Button.svelte'
7
+ // import { json } from 'svelte-highlight/languages'
8
+ // import { copyToClipboard } from '../../utils'
9
+ // import { deepEqual } from 'fast-equals'
10
+ export let flowStatus;
11
+ // $: args =
12
+ // '_metadata' in flowStatus && 'original_args' in flowStatus['_metadata']
13
+ // ? flowStatus['_metadata']['original_args']
14
+ // : undefined
15
+ $: hasPreprocessedArgs =
16
+ '_metadata' in flowStatus && !!flowStatus['_metadata']['preprocessed_args'];
17
+ // $: argsStr = args !== undefined ? JSON.stringify(args, null, 4) : undefined
18
+ // let jsonViewer: Drawer | undefined = undefined
19
+ </script>
20
+
21
+ {#if hasPreprocessedArgs}
22
+ <div>
23
+ <Badge color="yellow">preprocessed args</Badge>
24
+ </div>
25
+ {/if}
26
+
27
+ <!--
28
+ {#if args !== undefined && argsStr !== undefined}
29
+ <Drawer bind:this={jsonViewer} size="900px">
30
+ <DrawerContent title="Original args" on:close={jsonViewer.closeDrawer}>
31
+ <svelte:fragment slot="actions">
32
+ <Button
33
+ download="windmill-args.json"
34
+ href={`data:text/json;charset=utf-8,${encodeURIComponent(argsStr)}`}
35
+ startIcon={{ icon: Download }}
36
+ size="xs"
37
+ color="light"
38
+ >
39
+ Download
40
+ </Button>
41
+ <Button
42
+ on:click={() => copyToClipboard(argsStr)}
43
+ color="light"
44
+ size="xs"
45
+ startIcon={{ icon: ClipboardCopy }}
46
+ >
47
+ Copy to clipboard
48
+ </Button>
49
+ </svelte:fragment>
50
+ {#if args.length > 100000 || (args && typeof args === 'object' && deepEqual( Object.keys(args), ['reason'] ) && args['reason'] == 'WINDMILL_TOO_BIG')}
51
+ <div class="text-sm mb-2 text-tertiary">
52
+ <a
53
+ download="windmill-args.json"
54
+ href={`data:text/json;charset=utf-8,${encodeURIComponent(args)}`}
55
+ >
56
+ JSON is too large to be displayed in full.
57
+ </a></div
58
+ >
59
+ {:else}
60
+ <Highlight language={json} code={argsStr.replace(/\\n/g, '\n')} />
61
+ {/if}
62
+ </DrawerContent>
63
+ </Drawer>
64
+ <button
65
+ on:click={() => {
66
+ jsonViewer?.openDrawer()
67
+ }}
68
+ >
69
+ <Badge color="yellow">preprocessed args</Badge>
70
+ </button>
71
+ {/if} -->
@@ -0,0 +1,16 @@
1
+ import { SvelteComponent } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ flowStatus: any;
5
+ };
6
+ events: {
7
+ [evt: string]: CustomEvent<any>;
8
+ };
9
+ slots: {};
10
+ };
11
+ export type PreprocessedArgsDisplayProps = typeof __propDef.props;
12
+ export type PreprocessedArgsDisplayEvents = typeof __propDef.events;
13
+ export type PreprocessedArgsDisplaySlots = typeof __propDef.slots;
14
+ export default class PreprocessedArgsDisplay extends SvelteComponent<PreprocessedArgsDisplayProps, PreprocessedArgsDisplayEvents, PreprocessedArgsDisplaySlots> {
15
+ }
16
+ export {};
@@ -25,7 +25,7 @@ function isJobCancelable(j) {
25
25
  }
26
26
  </script>
27
27
 
28
- <Portal>
28
+ <Portal name="run-row">
29
29
  <ScheduleEditor on:update={() => goto('/schedules')} bind:this={scheduleEditor} />
30
30
  </Portal>
31
31
  <!-- svelte-ignore a11y-click-events-have-key-events -->
@@ -86,7 +86,7 @@ function isJobCancelable(j) {
86
86
  <div class="flex flex-row items-center gap-1 text-gray-500 dark:text-gray-300 text-2xs">
87
87
  {#if job}
88
88
  {#if 'started_at' in job && job.started_at}
89
- Started <TimeAgo withDate agoOnlyIfRecent date={job.started_at ?? ''} />
89
+ Started <TimeAgo agoOnlyIfRecent date={job.started_at ?? ''} />
90
90
  {#if job && 'duration_ms' in job && job.duration_ms != undefined}
91
91
  (Ran in {msToReadableTime(
92
92
  job.duration_ms
@@ -102,11 +102,7 @@ function isJobCancelable(j) {
102
102
  {:else if `scheduled_for` in job && job.scheduled_for && forLater(job.scheduled_for)}
103
103
  Scheduled for {displayDate(job.scheduled_for)}
104
104
  {:else}
105
- Waiting for executor (created <TimeAgo
106
- withDate
107
- agoOnlyIfRecent
108
- date={job.created_at || ''}
109
- />)
105
+ Waiting for executor (created <TimeAgo agoOnlyIfRecent date={job.created_at || ''} />)
110
106
  {/if}
111
107
  {/if}
112
108
  </div>
@@ -94,6 +94,7 @@ function handleAddOrEditArgument(modalProperty) {
94
94
  if (argError !== '') {
95
95
  sendUserToast(argError, true);
96
96
  }
97
+ console.log(schema);
97
98
  dispatch('change', schema);
98
99
  }
99
100
  export function handleDeleteArgument(argPath) {
@@ -2,33 +2,156 @@
2
2
  import EditableSchemaForm from '../EditableSchemaForm.svelte';
3
3
  import AddProperty from './AddProperty.svelte';
4
4
  import { createEventDispatcher } from 'svelte';
5
+ import Toggle from '../Toggle.svelte';
6
+ import { emptySchema, validateFileExtension } from '../../utils';
7
+ import AutoComplete from 'simple-svelte-autocomplete';
8
+ import { Alert } from '../common';
5
9
  export let schema;
6
10
  export let offset = 0;
7
11
  export let uiOnly = false;
8
12
  export let noPreview = false;
9
13
  export let fullHeight = true;
10
14
  export let lightweightMode = false;
15
+ export let formatExtension = undefined;
16
+ let resourceIsTextFile = false;
11
17
  let addProperty = undefined;
12
18
  const dispatch = createEventDispatcher();
19
+ $: !resourceIsTextFile && (formatExtension = undefined);
20
+ $: invalidExtension =
21
+ formatExtension && formatExtension != ''
22
+ ? !validateFileExtension(formatExtension ?? 'txt')
23
+ : false;
24
+ function switchResourceIsFile() {
25
+ if (!resourceIsTextFile) {
26
+ schema = emptySchema();
27
+ formatExtension = undefined;
28
+ }
29
+ else {
30
+ formatExtension = "";
31
+ schema = emptySchema();
32
+ schema.order = ['content'];
33
+ schema.properties = {
34
+ content: {
35
+ type: 'string',
36
+ description: 'Text contents of the file'
37
+ }
38
+ };
39
+ }
40
+ dispatch('change', schema);
41
+ }
42
+ function numberOfMatches(listItem, searchWords) {
43
+ if (!listItem) {
44
+ return 0;
45
+ }
46
+ let matches = 0;
47
+ searchWords.forEach((searchWord) => {
48
+ const searchLetters = searchWord.split('');
49
+ if (searchLetters.every((l) => listItem.includes(l))) {
50
+ matches++;
51
+ }
52
+ });
53
+ return matches;
54
+ }
55
+ let suggestedFileExtensions = ['json', 'yaml', 'jinja', 'j2', 'ini', 'cfg', 'toml', 'html', 'xml', 'yml'];
56
+ let autocompleteExtension = true;
13
57
  </script>
14
58
 
15
- <div class={twMerge(fullHeight ? 'h-full' : 'h-80', 'border overflow-y-auto rounded-md')}>
16
- <div class="p-4 border-b">
17
- <AddProperty on:change={() => dispatch('change', schema)} bind:schema bind:this={addProperty} />
59
+ {#if !resourceIsTextFile}
60
+ <div class={twMerge(fullHeight ? 'h-full' : 'h-80', 'border overflow-y-auto rounded-md')}>
61
+ <div class="p-4 border-b">
62
+ <AddProperty
63
+ on:change={() => dispatch('change', schema)}
64
+ bind:schema
65
+ bind:this={addProperty}
66
+ />
67
+ </div>
68
+ <EditableSchemaForm
69
+ bind:schema
70
+ on:change={() => dispatch('change', schema)}
71
+ isFlowInput
72
+ on:edit={(e) => {
73
+ addProperty?.openDrawer(e.detail)
74
+ }}
75
+ on:delete={(e) => {
76
+ addProperty?.handleDeleteArgument([e.detail])
77
+ }}
78
+ {offset}
79
+ {uiOnly}
80
+ {noPreview}
81
+ {lightweightMode}
82
+ />
18
83
  </div>
19
- <EditableSchemaForm
20
- bind:schema
21
- on:change={() => dispatch('change', schema)}
22
- isFlowInput
23
- on:edit={(e) => {
24
- addProperty?.openDrawer(e.detail)
25
- }}
26
- on:delete={(e) => {
27
- addProperty?.handleDeleteArgument([e.detail])
28
- }}
29
- {offset}
30
- {uiOnly}
31
- {noPreview}
32
- {lightweightMode}
33
- />
34
- </div>
84
+ {/if}
85
+ {#if resourceIsTextFile}
86
+ <div class="flex items-center space-x-2 w-5/12">
87
+ <label for="format-extension" class="text-base font-medium whitespace-nowrap">
88
+ File extension{autocompleteExtension ? "" : " (free text)"}:
89
+ </label>
90
+ {#if autocompleteExtension}
91
+ <AutoComplete
92
+ inputId="format-extension"
93
+ autofocus={true}
94
+ items={[...suggestedFileExtensions, 'Choose another extension']}
95
+ onChange={(a) => {
96
+ if (a == 'Choose another extension') {
97
+ formatExtension = ''
98
+ autocompleteExtension = false
99
+ }
100
+ }}
101
+ itemFilterFunction={(listItem, searchWords) => {
102
+ if (searchWords.length == 0 || listItem === 'Choose another extension') {
103
+ return true
104
+ }
105
+ return numberOfMatches(listItem, searchWords) > 0
106
+ }}
107
+ noResultsText="No matches, try the 'Choose another extension' option"
108
+ bind:selectedItem={formatExtension}
109
+ inputClassName="!h-[32px] py-1 !text-xs !w-64"
110
+ hideArrow
111
+ className={'!font-bold'}
112
+ dropdownClassName="!font-normal !w-64 !max-w-64"
113
+ maxItemsToShowInList={8}
114
+ moreItemsText={null}
115
+ lock={true}
116
+ />
117
+ {:else}
118
+ <input
119
+ autofocus={true}
120
+ bind:value={formatExtension}
121
+ class="!h-[32px] py-1 !text-xs !w-64"
122
+ placeholder="Enter your extension"
123
+ on:keydown={(event) => {
124
+ if (event.key === 'Enter') {
125
+ if (formatExtension && !suggestedFileExtensions.includes(formatExtension))
126
+ suggestedFileExtensions.push(formatExtension)
127
+
128
+ autocompleteExtension = true
129
+ }
130
+ }}
131
+ />
132
+ {/if}
133
+ </div>
134
+
135
+ {#if invalidExtension}
136
+ <Alert title="Invalid file extension" type="error">
137
+ The provided extension (<span class="font-bold font-mono">.{formatExtension}</span>) contains
138
+ invalid characters. Note that you shouldn't add the leading dot, (i.e. enter `json` instead of `.json`)
139
+ </Alert>
140
+ {:else if formatExtension && formatExtension !== ''}
141
+ <Alert title={`Example: my_file.${formatExtension}`} type="info">
142
+ The <span class="font-bold font-mono"> .{formatExtension} </span> extension will be used to infer
143
+ the format when displaying the content and this is also how the resource will appear when pulling
144
+ via the CLI.
145
+ </Alert>
146
+ <div />
147
+ {/if}
148
+ {/if}
149
+ <Toggle
150
+ bind:checked={resourceIsTextFile}
151
+ options={{
152
+ right: 'This resource type represents a plain text file (clears current schema)',
153
+ rightTooltip:
154
+ 'A text file such as a config file, template, or any other file format that contains plain text'
155
+ }}
156
+ on:change={() => switchResourceIsFile()}
157
+ />
@@ -8,6 +8,7 @@ declare const __propDef: {
8
8
  noPreview?: boolean | undefined;
9
9
  fullHeight?: boolean | undefined;
10
10
  lightweightMode?: boolean | undefined;
11
+ formatExtension?: string | undefined;
11
12
  };
12
13
  events: {
13
14
  change: CustomEvent<any>;
@@ -25,6 +25,7 @@ export let password = false;
25
25
  export let variableEditor = undefined;
26
26
  export let itemPicker = undefined;
27
27
  export let nullable = false;
28
+ export let disabled = false;
28
29
  export let defaultValue = undefined;
29
30
  export let propsNames = [];
30
31
  export let showExpr = undefined;
@@ -302,9 +303,11 @@ let initialObjectSelected = Object.keys(schema?.properties ?? {}).length == 0 ?
302
303
  {contentEncoding}
303
304
  {format}
304
305
  {extra}
306
+ {disabled}
305
307
  />
306
308
  {:else}
307
309
  <ArgInput
310
+ noDefaultOnSelectFirst
308
311
  {itemPicker}
309
312
  resourceTypes={getResourceTypesFromFormat(format)}
310
313
  bind:value={defaultValue}
@@ -316,6 +319,7 @@ let initialObjectSelected = Object.keys(schema?.properties ?? {}).length == 0 ?
316
319
  {contentEncoding}
317
320
  {format}
318
321
  {extra}
322
+ {disabled}
319
323
  {nullable}
320
324
  {variableEditor}
321
325
  compact
@@ -352,6 +356,15 @@ let initialObjectSelected = Object.keys(schema?.properties ?? {}).length == 0 ?
352
356
  disabled={required}
353
357
  />
354
358
  {/if}
359
+ <Toggle
360
+ options={{
361
+ right: 'Disabled',
362
+ rightTooltip: 'Do not let user modify this field'
363
+ }}
364
+ lightMode
365
+ size="xs"
366
+ bind:checked={disabled}
367
+ />
355
368
  </div>
356
369
 
357
370
  {#if displayWebhookWarning && !(type === 'object' && oneOf && oneOf.length >= 2)}
@@ -14,6 +14,7 @@ declare const __propDef: {
14
14
  variableEditor?: VariableEditor | undefined;
15
15
  itemPicker?: ItemPicker | undefined;
16
16
  nullable?: boolean | undefined;
17
+ disabled?: boolean | undefined;
17
18
  defaultValue?: any;
18
19
  propsNames?: any;
19
20
  showExpr?: string | undefined;
@@ -95,6 +95,7 @@ let forceJson = false;
95
95
  />
96
96
  </Pane>
97
97
  <Pane>
98
+ <slot></slot>
98
99
  {#if previewJob != undefined && 'result' in previewJob}
99
100
  <div class="relative w-full h-full p-2">
100
101
  <div class="relative">
@@ -17,7 +17,9 @@ declare const __propDef: {
17
17
  events: {
18
18
  [evt: string]: CustomEvent<any>;
19
19
  };
20
- slots: {};
20
+ slots: {
21
+ default: {};
22
+ };
21
23
  };
22
24
  export type LogPanelProps = typeof __propDef.props;
23
25
  export type LogPanelEvents = typeof __propDef.events;
@@ -399,7 +399,7 @@ function maxModalHeight(tab) {
399
399
  </script>
400
400
 
401
401
  {#if open}
402
- <Portal>
402
+ <Portal name="global-search">
403
403
  <div
404
404
  class={twMerge(
405
405
  `fixed top-0 bottom-0 left-0 right-0 transition-all duration-50 flex items-start justify-center`,
@@ -421,8 +421,9 @@ function maxModalHeight(tab) {
421
421
  id="quickSearchInput"
422
422
  bind:this={textInput}
423
423
  type="text"
424
- class="quick-search-input"
424
+ class="quick-search-input !bg-surface"
425
425
  bind:value={searchTerm}
426
+ autocomplete="off"
426
427
  />
427
428
  <label
428
429
  for="quickSearchInput"
@@ -1,7 +1,7 @@
1
1
  <script>import MenuLink from './MenuLink.svelte';
2
- import { superadmin, userStore, workspaceStore } from '../../stores';
2
+ import { superadmin, usedTriggerKinds, userStore, workspaceStore } from '../../stores';
3
3
  import { SIDEBAR_SHOW_SCHEDULES } from '../../consts';
4
- import { BookOpen, Bot, Boxes, Calendar, DollarSign, Eye, FolderCog, FolderOpen, Github, HelpCircle, Home, LogOut, Newspaper, Play, ServerCog, Settings, UserCog } from 'lucide-svelte';
4
+ import { BookOpen, Bot, Boxes, Calendar, DollarSign, Eye, FolderCog, FolderOpen, Github, HelpCircle, Home, LogOut, Newspaper, Play, Route, ServerCog, Settings, UserCog, Plus } from 'lucide-svelte';
5
5
  import Menu from '../common/menu/MenuV2.svelte';
6
6
  import MenuButton from './MenuButton.svelte';
7
7
  import { MenuItem } from '@rgossiaux/svelte-headlessui';
@@ -16,6 +16,7 @@ import { twMerge } from 'tailwind-merge';
16
16
  import { onMount } from 'svelte';
17
17
  import { base } from '../../base';
18
18
  import { changelogs } from './changelogs';
19
+ import { page } from '$app/stores';
19
20
  $: mainMenuLinks = [
20
21
  { label: 'Home', href: `${base}/`, icon: Home },
21
22
  { label: 'Runs', href: `${base}/runs`, icon: Play },
@@ -25,13 +26,16 @@ $: mainMenuLinks = [
25
26
  icon: DollarSign,
26
27
  disabled: $userStore?.operator
27
28
  },
28
- { label: 'Resources', href: `${base}/resources`, icon: Boxes, disabled: $userStore?.operator },
29
+ { label: 'Resources', href: `${base}/resources`, icon: Boxes, disabled: $userStore?.operator }
30
+ ];
31
+ $: triggerMenuLinks = [
29
32
  {
30
33
  label: 'Schedules',
31
34
  href: `${base}/schedules`,
32
35
  icon: Calendar,
33
36
  disabled: !SIDEBAR_SHOW_SCHEDULES || $userStore?.operator
34
- }
37
+ },
38
+ ...defaultExtraTriggerLinks.filter((link) => $usedTriggerKinds.includes(link.kind) || $page.url.pathname.includes(link.href))
35
39
  ];
36
40
  async function leaveWorkspace() {
37
41
  await WorkspaceService.leaveWorkspace({ workspace: $workspaceStore ?? '' });
@@ -39,6 +43,18 @@ async function leaveWorkspace() {
39
43
  clearStores();
40
44
  goto('/user/workspaces');
41
45
  }
46
+ const defaultExtraTriggerLinks = [
47
+ {
48
+ label: 'HTTP',
49
+ href: '/routes',
50
+ icon: Route,
51
+ disabled: $userStore?.operator,
52
+ kind: 'http'
53
+ }
54
+ ];
55
+ $: extraTriggerLinks = defaultExtraTriggerLinks.filter((link) => {
56
+ return !$page.url.pathname.includes(link.href) && !$usedTriggerKinds.includes(link.kind);
57
+ });
42
58
  $: secondaryMenuLinks = [
43
59
  // {
44
60
  // label: 'Workspace',
@@ -170,10 +186,55 @@ let leaveWorkspaceModal = false;
170
186
  noGap ? 'gap-0' : 'gap-16'
171
187
  )}
172
188
  >
173
- <div class={twMerge('space-y-1 pt-4 ', noGap ? 'md:mb-0 mb-0' : 'mb-6 md:mb-10')}>
174
- {#each mainMenuLinks as menuLink (menuLink.href ?? menuLink.label)}
175
- <MenuLink class="!text-xs" {...menuLink} {isCollapsed} />
176
- {/each}
189
+ <div class={twMerge('pt-4 ', noGap ? 'md:mb-0 mb-0' : 'mb-6 md:mb-10')}>
190
+ <div class="space-y-1">
191
+ {#each mainMenuLinks as menuLink (menuLink.href ?? menuLink.label)}
192
+ <MenuLink class="!text-xs" {...menuLink} {isCollapsed} />
193
+ {/each}
194
+ </div>
195
+ <div class="pt-4">
196
+ <div
197
+ class="text-gray-400 text-[0.5rem] uppercase transition-opacity"
198
+ class:opacity-0={isCollapsed}>Triggers</div
199
+ >
200
+ <div class="space-y-1">
201
+ {#each triggerMenuLinks as menuLink (menuLink.href ?? menuLink.label)}
202
+ <MenuLink class="!text-xs" {...menuLink} {isCollapsed} />
203
+ {/each}
204
+ {#if extraTriggerLinks.length > 0 && !$userStore?.operator}
205
+ <Menu>
206
+ <div
207
+ slot="trigger"
208
+ class="w-full text-gray-400 text-2xs flex flex-row gap-1 py-1 items-center px-2 hover:bg-[#2A3648] dark:hover:bg-[#30404e] rounded"
209
+ >
210
+ <Plus size={14} />
211
+ </div>
212
+ {#each extraTriggerLinks as subItem (subItem.href ?? subItem.label)}
213
+ <MenuItem>
214
+ <div class="py-1" role="none">
215
+ <a
216
+ href={subItem.href}
217
+ class={twMerge(
218
+ 'text-secondary block px-4 py-2 text-2xs hover:bg-surface-hover hover:text-primary'
219
+ )}
220
+ role="menuitem"
221
+ tabindex="-1"
222
+ >
223
+ <div class="flex flex-row items-center gap-2">
224
+ {#if subItem.icon}
225
+ <svelte:component this={subItem.icon} size={16} />
226
+ {/if}
227
+
228
+ {subItem.label}
229
+ </div>
230
+ </a>
231
+ </div>
232
+ </MenuItem>
233
+ {/each}
234
+ </Menu>
235
+ {/if}
236
+ </div>
237
+ </div>
177
238
  </div>
178
239
  <div class="flex flex-col h-full justify-end">
179
240
  <div class={twMerge('space-y-0.5 mb-6 md:mb-10', noGap ? 'md:mb-0 mb-0' : 'mb-6 md:mb-10')}>
@@ -1,4 +1,14 @@
1
1
  const changelogs = [
2
+ {
3
+ label: 'Custom HTTP routes',
4
+ href: 'https://www.windmill.dev/changelog/http-routing',
5
+ date: '2024-09-23'
6
+ },
7
+ {
8
+ label: 'Set/Get progress from code',
9
+ href: 'https://www.windmill.dev/changelog/explicit-progress',
10
+ date: '2024-09-18'
11
+ },
2
12
  {
3
13
  label: 'Directly edit flow YAML',
4
14
  href: 'https://www.windmill.dev/changelog/flow-yaml-editor',
@@ -0,0 +1,19 @@
1
+ <script>import { tick } from 'svelte';
2
+ import RouteEditorInner from './RouteEditorInner.svelte';
3
+ let open = false;
4
+ export async function openEdit(ePath, isFlow) {
5
+ open = true;
6
+ await tick();
7
+ drawer?.openEdit(ePath, isFlow);
8
+ }
9
+ export async function openNew(is_flow, initial_script_path) {
10
+ open = true;
11
+ await tick();
12
+ drawer?.openNew(is_flow, initial_script_path);
13
+ }
14
+ let drawer;
15
+ </script>
16
+
17
+ {#if open}
18
+ <RouteEditorInner on:update bind:this={drawer} />
19
+ {/if}
@@ -0,0 +1,21 @@
1
+ import { SvelteComponent } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ openEdit?: ((ePath: string, isFlow: boolean) => Promise<void>) | undefined;
5
+ openNew?: ((is_flow: boolean, initial_script_path?: string) => Promise<void>) | undefined;
6
+ };
7
+ events: {
8
+ update: CustomEvent<any>;
9
+ } & {
10
+ [evt: string]: CustomEvent<any>;
11
+ };
12
+ slots: {};
13
+ };
14
+ export type RouteEditorProps = typeof __propDef.props;
15
+ export type RouteEditorEvents = typeof __propDef.events;
16
+ export type RouteEditorSlots = typeof __propDef.slots;
17
+ export default class RouteEditor extends SvelteComponent<RouteEditorProps, RouteEditorEvents, RouteEditorSlots> {
18
+ get openEdit(): (ePath: string, isFlow: boolean) => Promise<void>;
19
+ get openNew(): (is_flow: boolean, initial_script_path?: string | undefined) => Promise<void>;
20
+ }
21
+ export {};