windmill-components 1.60.4 → 1.70.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 (331) hide show
  1. package/assets/app.css +3 -0
  2. package/common.d.ts +5 -1
  3. package/components/ApiConnectForm.svelte +66 -5
  4. package/components/AppConnect.svelte +24 -9
  5. package/components/ArgInput.svelte +1 -1
  6. package/components/CliHelpBox.svelte +49 -0
  7. package/components/CliHelpBox.svelte.d.ts +14 -0
  8. package/components/DisplayResult.svelte +51 -1
  9. package/components/DisplayResult.svelte.d.ts +1 -0
  10. package/components/Editor.svelte +17 -7
  11. package/components/EditorBar.svelte +129 -111
  12. package/components/FlowBuilder.svelte +2 -2
  13. package/components/FlowJobResult.svelte +10 -2
  14. package/components/FlowJobResult.svelte.d.ts +1 -0
  15. package/components/FlowMetadata.svelte +24 -8
  16. package/components/FlowPreviewContent.svelte +3 -4
  17. package/components/FlowStatusViewer.svelte +41 -9
  18. package/components/FolderEditor.svelte +3 -2
  19. package/components/HighlightCode.svelte +7 -1
  20. package/components/InlineCodeCopy.svelte +11 -0
  21. package/components/InlineCodeCopy.svelte.d.ts +16 -0
  22. package/components/InputTransformForm.svelte +9 -5
  23. package/components/LogViewer.svelte +6 -0
  24. package/components/LogViewer.svelte.d.ts +1 -0
  25. package/components/ModulePreview.svelte +11 -2
  26. package/components/MoveDrawer.svelte +1 -1
  27. package/components/Multiselect.svelte.d.ts +2 -2
  28. package/components/ObjectResourceInput.svelte +6 -1
  29. package/components/Path.svelte +14 -5
  30. package/components/Popover.svelte +8 -2
  31. package/components/Popover.svelte.d.ts +1 -0
  32. package/components/Range.svelte.d.ts +2 -2
  33. package/components/ResourceEditor.svelte +39 -16
  34. package/components/ResourcePicker.svelte +0 -1
  35. package/components/RunForm.svelte +26 -2
  36. package/components/RunForm.svelte.d.ts +1 -0
  37. package/components/ScheduleEditor.svelte +1 -1
  38. package/components/SchemaEditor.svelte +2 -2
  39. package/components/SchemaForm.svelte +14 -4
  40. package/components/SchemaForm.svelte.d.ts +1 -0
  41. package/components/ScriptBuilder.svelte +45 -22
  42. package/components/ScriptBuilder.svelte.d.ts +1 -0
  43. package/components/ScriptEditor.svelte +1 -0
  44. package/components/SharedBadge.svelte +5 -5
  45. package/components/Slider.svelte +14 -0
  46. package/components/Slider.svelte.d.ts +19 -0
  47. package/components/StringTypeNarrowing.svelte +0 -1
  48. package/components/SuperadminSettings.svelte +11 -3
  49. package/components/SuperadminSettings.svelte.d.ts +2 -0
  50. package/components/TemplateEditor.svelte.d.ts +204 -0
  51. package/components/TestJobLoader.svelte +3 -3
  52. package/components/Toggle.svelte +1 -2
  53. package/components/UserSettings.svelte +11 -3
  54. package/components/UserSettings.svelte.d.ts +2 -0
  55. package/components/VariableEditor.svelte +1 -1
  56. package/components/WhitelistIp.svelte +23 -0
  57. package/components/WhitelistIp.svelte.d.ts +14 -0
  58. package/components/apps/components/buttons/AppButton.svelte +52 -6
  59. package/components/apps/components/buttons/AppButton.svelte.d.ts +3 -0
  60. package/components/apps/components/{form → buttons}/AppForm.svelte +3 -1
  61. package/components/apps/components/buttons/AppFormButton.svelte +137 -0
  62. package/components/apps/components/buttons/AppFormButton.svelte.d.ts +25 -0
  63. package/components/apps/components/buttons/index.d.ts +3 -0
  64. package/components/apps/components/buttons/index.js +3 -0
  65. package/components/apps/components/{dataDisplay → display}/AppBarChart.svelte +15 -4
  66. package/components/apps/components/{dataDisplay → display}/AppBarChart.svelte.d.ts +1 -0
  67. package/components/apps/components/display/AppDisplayComponent.svelte +31 -0
  68. package/components/apps/components/display/AppDisplayComponent.svelte.d.ts +23 -0
  69. package/components/apps/components/{dataDisplay → display}/AppHtml.svelte +6 -5
  70. package/components/apps/components/{dataDisplay → display}/AppHtml.svelte.d.ts +1 -1
  71. package/components/apps/components/display/AppIcon.svelte +35 -0
  72. package/components/apps/components/display/AppIcon.svelte.d.ts +22 -0
  73. package/components/apps/components/display/AppImage.svelte +27 -0
  74. package/components/apps/components/display/AppImage.svelte.d.ts +22 -0
  75. package/components/apps/components/{dataDisplay → display}/AppPieChart.svelte +2 -1
  76. package/components/apps/components/{dataDisplay → display}/AppPieChart.svelte.d.ts +1 -0
  77. package/components/apps/components/{dataDisplay → display}/AppScatterChart.svelte +2 -1
  78. package/components/apps/components/{dataDisplay → display}/AppScatterChart.svelte.d.ts +1 -0
  79. package/components/apps/components/{dataDisplay → display}/AppText.svelte +16 -14
  80. package/components/apps/components/{dataDisplay → display}/AppText.svelte.d.ts +3 -0
  81. package/components/apps/components/{dataDisplay → display}/AppTimeseries.svelte +3 -2
  82. package/components/apps/components/{dataDisplay → display}/AppTimeseries.svelte.d.ts +1 -0
  83. package/components/apps/components/display/PlotlyHtml.svelte +38 -0
  84. package/components/apps/components/display/PlotlyHtml.svelte.d.ts +24 -0
  85. package/components/apps/components/{dataDisplay → display}/VegaLiteHtml.svelte +2 -3
  86. package/components/apps/components/{dataDisplay → display}/VegaLiteHtml.svelte.d.ts +1 -0
  87. package/components/apps/components/display/index.d.ts +12 -0
  88. package/components/apps/components/display/index.js +12 -0
  89. package/components/apps/components/display/table/AppAggridTable.svelte +83 -0
  90. package/components/apps/components/display/table/AppAggridTable.svelte.d.ts +24 -0
  91. package/components/apps/components/{table → display/table}/AppTable.svelte +32 -21
  92. package/components/apps/components/{table → display/table}/AppTable.svelte.d.ts +4 -2
  93. package/components/apps/components/{table → display/table}/AppTableFooter.svelte +1 -1
  94. package/components/apps/components/helpers/AlignWrapper.svelte +19 -19
  95. package/components/apps/components/helpers/AlignWrapper.svelte.d.ts +4 -2
  96. package/components/apps/components/helpers/HiddenComponent.svelte +22 -0
  97. package/components/apps/components/helpers/HiddenComponent.svelte.d.ts +25 -0
  98. package/components/apps/components/helpers/InputDefaultValue.svelte +17 -0
  99. package/components/apps/components/helpers/InputDefaultValue.svelte.d.ts +17 -0
  100. package/components/apps/components/helpers/InputValue.svelte +5 -7
  101. package/components/apps/components/helpers/InputValue.svelte.d.ts +0 -1
  102. package/components/apps/components/helpers/RunnableComponent.svelte +37 -48
  103. package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +2 -1
  104. package/components/apps/components/helpers/RunnableWrapper.svelte +7 -2
  105. package/components/apps/components/helpers/RunnableWrapper.svelte.d.ts +2 -1
  106. package/components/apps/components/helpers/index.d.ts +10 -0
  107. package/components/apps/components/helpers/index.js +10 -0
  108. package/components/apps/components/icon.d.ts +1 -0
  109. package/components/apps/components/icon.js +18 -0
  110. package/components/apps/components/index.d.ts +5 -0
  111. package/components/apps/components/index.js +5 -0
  112. package/components/apps/components/{selectInputs → inputs}/AppCheckbox.svelte +4 -2
  113. package/components/apps/components/{dateInputs → inputs}/AppDateInput.svelte +6 -0
  114. package/components/apps/components/inputs/AppFileInput.svelte +34 -0
  115. package/components/apps/components/inputs/AppFileInput.svelte.d.ts +20 -0
  116. package/components/apps/components/inputs/AppNumberInput.svelte +48 -0
  117. package/components/apps/components/inputs/AppRangeInput.svelte +44 -0
  118. package/components/apps/components/inputs/AppRangeInput.svelte.d.ts +23 -0
  119. package/components/apps/components/inputs/AppSelect.svelte +90 -0
  120. package/components/apps/components/{selectInputs → inputs}/AppSelect.svelte.d.ts +2 -0
  121. package/components/apps/components/{numberInputs → inputs}/AppSliderInputs.svelte +13 -9
  122. package/components/apps/components/{textInputs → inputs}/AppTextInput.svelte +6 -0
  123. package/components/apps/components/inputs/currency/AppCurrencyInput.svelte +49 -0
  124. package/components/apps/components/inputs/currency/AppCurrencyInput.svelte.d.ts +21 -0
  125. package/components/apps/components/inputs/currency/CurrencyInput.svelte +181 -0
  126. package/components/apps/components/inputs/currency/CurrencyInput.svelte.d.ts +32 -0
  127. package/components/apps/components/inputs/index.d.ts +9 -0
  128. package/components/apps/components/inputs/index.js +9 -0
  129. package/components/apps/components/layout/AppContainer.svelte +32 -0
  130. package/components/apps/components/layout/AppContainer.svelte.d.ts +21 -0
  131. package/components/apps/components/layout/AppDivider.svelte +20 -0
  132. package/components/apps/components/layout/AppDivider.svelte.d.ts +22 -0
  133. package/components/apps/components/layout/AppTabs.svelte +58 -0
  134. package/components/apps/components/layout/AppTabs.svelte.d.ts +24 -0
  135. package/components/apps/components/layout/index.d.ts +3 -0
  136. package/components/apps/components/layout/index.js +3 -0
  137. package/components/apps/editor/AppComponentInput.svelte +33 -0
  138. package/components/apps/editor/AppComponentInput.svelte.d.ts +18 -0
  139. package/components/apps/editor/AppComponentInputs.svelte +13 -0
  140. package/components/apps/editor/AppComponentInputs.svelte.d.ts +20 -0
  141. package/components/apps/editor/AppEditor.svelte +66 -31
  142. package/components/apps/editor/AppEditor.svelte.d.ts +1 -0
  143. package/components/apps/editor/AppEditorHeader.svelte +74 -18
  144. package/components/apps/editor/AppEditorHeader.svelte.d.ts +1 -0
  145. package/components/apps/editor/AppInputs.svelte +60 -0
  146. package/components/apps/editor/AppInputs.svelte.d.ts +14 -0
  147. package/components/apps/editor/AppPreview.svelte +11 -6
  148. package/components/apps/editor/ComponentHeader.svelte +40 -2
  149. package/components/apps/editor/ComponentHeader.svelte.d.ts +1 -1
  150. package/components/apps/editor/GridEditor.svelte +75 -32
  151. package/components/apps/editor/GridEditor.svelte.d.ts +2 -0
  152. package/components/apps/editor/SettingsPanel.svelte +31 -3
  153. package/components/apps/editor/SubGridEditor.svelte +111 -0
  154. package/components/apps/editor/SubGridEditor.svelte.d.ts +24 -0
  155. package/components/apps/editor/TablePanel.svelte +2 -0
  156. package/components/apps/editor/TablePanel.svelte.d.ts +1 -1
  157. package/components/apps/editor/appUtils.d.ts +9 -0
  158. package/components/apps/editor/appUtils.js +141 -0
  159. package/components/apps/editor/component/Component.svelte +209 -0
  160. package/components/apps/editor/component/Component.svelte.d.ts +23 -0
  161. package/components/apps/editor/component/README.md +15 -0
  162. package/components/apps/editor/component/components.d.ts +65 -0
  163. package/components/apps/editor/component/components.js +1102 -0
  164. package/components/apps/editor/component/default-codes.d.ts +3 -0
  165. package/components/apps/editor/component/default-codes.js +322 -0
  166. package/components/apps/editor/component/index.d.ts +4 -0
  167. package/components/apps/editor/component/index.js +4 -0
  168. package/components/apps/editor/component/sets.d.ts +2 -0
  169. package/components/apps/editor/component/sets.js +47 -0
  170. package/components/apps/editor/componentsPanel/ComponentList.svelte +30 -106
  171. package/components/apps/editor/componentsPanel/CssProperty.svelte +31 -0
  172. package/components/apps/editor/componentsPanel/CssProperty.svelte.d.ts +20 -0
  173. package/components/apps/editor/componentsPanel/CssSettings.svelte +141 -0
  174. package/components/apps/editor/componentsPanel/CssSettings.svelte.d.ts +14 -0
  175. package/components/apps/editor/componentsPanel/ListItem.svelte +28 -0
  176. package/components/apps/editor/componentsPanel/ListItem.svelte.d.ts +20 -0
  177. package/components/apps/editor/componentsPanel/componentStaticValues.d.ts +4 -1
  178. package/components/apps/editor/componentsPanel/componentStaticValues.js +4 -1
  179. package/components/apps/editor/contextPanel/ContextPanel.svelte +8 -6
  180. package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +98 -9
  181. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +38 -29
  182. package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte +21 -1
  183. package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte +66 -8
  184. package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +92 -46
  185. package/components/apps/editor/inlineScriptsPanel/utils.d.ts +5 -1
  186. package/components/apps/editor/inlineScriptsPanel/utils.js +30 -0
  187. package/components/apps/editor/settingsPanel/AlignmentEditor.svelte +1 -1
  188. package/components/apps/editor/settingsPanel/AlignmentEditor.svelte.d.ts +1 -1
  189. package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +4 -1
  190. package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte.d.ts +59 -1
  191. package/components/apps/editor/settingsPanel/ComponentPanel.svelte +64 -34
  192. package/components/apps/editor/settingsPanel/ComponentPanel.svelte.d.ts +5 -3
  193. package/components/apps/editor/settingsPanel/GridTab.svelte +73 -0
  194. package/components/apps/editor/settingsPanel/GridTab.svelte.d.ts +18 -0
  195. package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +3 -0
  196. package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte.d.ts +2 -2
  197. package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +92 -77
  198. package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte.d.ts +1 -0
  199. package/components/apps/editor/settingsPanel/MoveToOtherGrid.svelte +85 -0
  200. package/components/apps/editor/settingsPanel/MoveToOtherGrid.svelte.d.ts +18 -0
  201. package/components/apps/editor/settingsPanel/Recompute.svelte +4 -1
  202. package/components/apps/editor/settingsPanel/TableActions.svelte +17 -6
  203. package/components/apps/editor/settingsPanel/TableActions.svelte.d.ts +2 -1
  204. package/components/apps/editor/settingsPanel/common/PanelSection.svelte +5 -3
  205. package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte +83 -0
  206. package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte.d.ts +19 -0
  207. package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +6 -1
  208. package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte.d.ts +2 -0
  209. package/components/apps/editor/settingsPanel/inputEditor/UploadInputEditor.svelte +23 -0
  210. package/components/apps/editor/settingsPanel/inputEditor/UploadInputEditor.svelte.d.ts +17 -0
  211. package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +3 -20
  212. package/components/apps/gridUtils.d.ts +3 -1
  213. package/components/apps/gridUtils.js +5 -3
  214. package/components/apps/inputType.d.ts +33 -6
  215. package/components/apps/types.d.ts +35 -40
  216. package/components/apps/types.js +1 -1
  217. package/components/apps/utils.d.ts +6 -5
  218. package/components/apps/utils.js +90 -94
  219. package/components/common/button/Button.svelte +12 -5
  220. package/components/common/button/Button.svelte.d.ts +3 -1
  221. package/components/common/button/ButtonPopup.svelte.d.ts +1 -1
  222. package/components/common/button/model.d.ts +2 -2
  223. package/components/common/button/model.js +21 -6
  224. package/components/common/confirmationModal/ConfirmationModal.svelte +8 -1
  225. package/components/common/confirmationModal/UnsavedConfirmationModal.svelte +4 -4
  226. package/components/common/drawer/Drawer.svelte +3 -1
  227. package/components/common/fileInput/FileInput.svelte +112 -0
  228. package/components/common/fileInput/FileInput.svelte.d.ts +27 -0
  229. package/components/common/index.d.ts +1 -0
  230. package/components/common/index.js +1 -0
  231. package/components/common/kbd/Kbd.svelte.d.ts +2 -2
  232. package/components/common/modal/Modal.svelte +74 -0
  233. package/components/common/modal/Modal.svelte.d.ts +22 -0
  234. package/components/common/popup/Popup.svelte +34 -17
  235. package/components/common/popup/Popup.svelte.d.ts +11 -4
  236. package/components/common/table/FlowRow.svelte +22 -3
  237. package/components/common/table/LanguageBadge.svelte +10 -4
  238. package/components/common/table/Row.svelte +1 -1
  239. package/components/common/table/ScriptRow.svelte +2 -2
  240. package/components/common/tabs/Tabs.svelte +9 -7
  241. package/components/common/tabs/Tabs.svelte.d.ts +3 -1
  242. package/components/flows/CreateActionsFlow.svelte +2 -3
  243. package/components/flows/content/BranchPredicateEditor.svelte +10 -8
  244. package/components/flows/content/FlowInputs.svelte +109 -99
  245. package/components/flows/content/FlowLoop.svelte +1 -1
  246. package/components/flows/content/FlowModuleComponent.svelte +3 -2
  247. package/components/flows/content/FlowRetries.svelte +8 -6
  248. package/components/flows/content/FlowSettings.svelte +72 -26
  249. package/components/flows/flowState.d.ts +1 -0
  250. package/components/flows/flowState.js +1 -0
  251. package/components/flows/flowStateUtils.js +4 -2
  252. package/components/flows/flowStore.d.ts +1 -0
  253. package/components/flows/flowStore.js +1 -0
  254. package/components/flows/map/FlowBranchAllMap.svelte +1 -1
  255. package/components/flows/map/FlowBranchOneMap.svelte +2 -2
  256. package/components/flows/map/FlowModuleSchemaItem.svelte +5 -5
  257. package/components/flows/map/FlowModuleSchemaMap.svelte +15 -8
  258. package/components/flows/map/FlowModuleSchemaMap.svelte.d.ts +1 -0
  259. package/components/flows/map/InsertModuleButton.svelte +24 -10
  260. package/components/flows/map/InsertModuleButton.svelte.d.ts +1 -0
  261. package/components/flows/map/MapItem.svelte +3 -1
  262. package/components/flows/utils.js +16 -10
  263. package/components/graph/FlowGraph.svelte +38 -15
  264. package/components/graph/FlowGraph.svelte.d.ts +1 -0
  265. package/components/icons/SquareIcon.svelte +9 -0
  266. package/components/icons/SquareIcon.svelte.d.ts +17 -0
  267. package/components/icons/index.d.ts +2 -0
  268. package/components/icons/index.js +2 -0
  269. package/components/jobs/JobDetail.svelte +29 -5
  270. package/components/propertyPicker/ObjectViewer.svelte +8 -5
  271. package/components/propertyPicker/ObjectViewer.svelte.d.ts +1 -0
  272. package/components/propertyPicker/PropPicker.svelte +8 -1
  273. package/components/propertyPicker/PropPickerResult.svelte +1 -1
  274. package/components/random_positive_adjetive.d.ts +1 -0
  275. package/components/random_positive_adjetive.js +961 -0
  276. package/components/scriptEditor/LogPanel.svelte +2 -1
  277. package/components/sidebar/SidebarContent.svelte +1 -1
  278. package/components/sidebar/UserMenu.svelte +46 -16
  279. package/components/sidebar/UserMenu.svelte.d.ts +0 -3
  280. package/components/sidebar/WorkspaceMenu.svelte +3 -1
  281. package/components/sidebar/settings.d.ts +2 -0
  282. package/components/sidebar/settings.js +2 -0
  283. package/gen/core/OpenAPI.js +1 -1
  284. package/gen/models/CompletedJob.d.ts +1 -0
  285. package/gen/models/FlowModule.d.ts +0 -1
  286. package/gen/models/QueuedJob.d.ts +1 -0
  287. package/gen/models/WorkerPing.d.ts +1 -1
  288. package/gen/services/FlowService.d.ts +9 -0
  289. package/gen/services/FlowService.js +15 -0
  290. package/gen/services/JobService.d.ts +97 -15
  291. package/gen/services/JobService.js +74 -15
  292. package/gen/services/ScriptService.d.ts +10 -1
  293. package/gen/services/ScriptService.js +16 -1
  294. package/gen/services/VariableService.d.ts +4 -2
  295. package/gen/services/VariableService.js +8 -2
  296. package/gen/services/WorkspaceService.d.ts +17 -0
  297. package/gen/services/WorkspaceService.js +16 -0
  298. package/infer.js +3 -0
  299. package/init_scripts/python_failure_module.py +10 -0
  300. package/init_scripts/python_init_code.py +37 -0
  301. package/init_scripts/python_init_code_clear.py +5 -0
  302. package/init_scripts/python_init_code_trigger.py +14 -0
  303. package/logout.js +2 -1
  304. package/package.json +577 -522
  305. package/script_helpers.d.ts +6 -5
  306. package/script_helpers.js +7 -73
  307. package/stores.d.ts +5 -1
  308. package/stores.js +8 -1
  309. package/user.d.ts +1 -1
  310. package/user.js +14 -8
  311. package/utils.d.ts +1 -1
  312. package/utils.js +8 -7
  313. package/components/apps/components/DisplayComponent.svelte +0 -16
  314. package/components/apps/components/DisplayComponent.svelte.d.ts +0 -20
  315. package/components/apps/components/numberInputs/AppNumberInput.svelte +0 -33
  316. package/components/apps/components/selectInputs/AppSelect.svelte +0 -47
  317. package/components/apps/editor/ComponentEditor.svelte +0 -145
  318. package/components/apps/editor/ComponentEditor.svelte.d.ts +0 -23
  319. package/components/apps/editor/componentsPanel/data.d.ts +0 -3
  320. package/components/apps/editor/componentsPanel/data.js +0 -499
  321. package/components/apps/editorUtils.d.ts +0 -1
  322. package/components/apps/editorUtils.js +0 -292
  323. /package/components/apps/components/{form → buttons}/AppForm.svelte.d.ts +0 -0
  324. /package/components/apps/components/{table → display/table}/AppTableFooter.svelte.d.ts +0 -0
  325. /package/components/apps/components/{table → display/table}/tableOptions.d.ts +0 -0
  326. /package/components/apps/components/{table → display/table}/tableOptions.js +0 -0
  327. /package/components/apps/components/{selectInputs → inputs}/AppCheckbox.svelte.d.ts +0 -0
  328. /package/components/apps/components/{dateInputs → inputs}/AppDateInput.svelte.d.ts +0 -0
  329. /package/components/apps/components/{numberInputs → inputs}/AppNumberInput.svelte.d.ts +0 -0
  330. /package/components/apps/components/{numberInputs → inputs}/AppSliderInputs.svelte.d.ts +0 -0
  331. /package/components/apps/components/{textInputs → inputs}/AppTextInput.svelte.d.ts +0 -0
package/assets/app.css CHANGED
@@ -23,6 +23,9 @@
23
23
  display: none !important;
24
24
  }
25
25
 
26
+ .svelte-select-list {
27
+ z-index: 1000 !important;
28
+ }
26
29
  .nowrap pre code.hljs {
27
30
  whitespace: normal !important;
28
31
  }
package/common.d.ts CHANGED
@@ -19,7 +19,7 @@ export interface SchemaProperty {
19
19
  };
20
20
  }
21
21
  export type Schema = {
22
- $schema: string;
22
+ $schema: string | undefined;
23
23
  type: string;
24
24
  properties: {
25
25
  [name: string]: SchemaProperty;
@@ -31,4 +31,8 @@ export type Meta = {
31
31
  owner: string;
32
32
  name: string;
33
33
  };
34
+ type Enumerate<N extends number, Acc extends number[] = []> = Acc['length'] extends N ? Acc[number] : Enumerate<N, [...Acc, Acc['length']]>;
35
+ /** An inclusive range of integer numbers */
36
+ export type IntRange<F extends number, T extends number> = F | Exclude<Enumerate<T>, Enumerate<F>> | T;
34
37
  export declare function pathToMeta(path: string): Meta;
38
+ export {};
@@ -1,8 +1,11 @@
1
- <script>import { ResourceService } from '../gen';
1
+ <script>import { JobService, Preview, ResourceService } from '../gen';
2
2
  import { workspaceStore } from '../stores';
3
- import { emptySchema, emptyString } from '../utils';
3
+ import { emptySchema, emptyString, sendUserToast } from '../utils';
4
+ import { Loader2 } from 'lucide-svelte';
5
+ import Button from './common/button/Button.svelte';
4
6
  import SchemaForm from './SchemaForm.svelte';
5
7
  import SimpleEditor from './SimpleEditor.svelte';
8
+ import Toggle from './Toggle.svelte';
6
9
  export let resource_type;
7
10
  export let args = {};
8
11
  export let password;
@@ -10,6 +13,8 @@ export let isValid = true;
10
13
  let schema = emptySchema();
11
14
  let notFound = false;
12
15
  async function loadSchema() {
16
+ rawCode = '{}';
17
+ viewJsonSchema = false;
13
18
  try {
14
19
  const rt = await ResourceService.getResourceType({
15
20
  workspace: $workspaceStore,
@@ -19,7 +24,6 @@ async function loadSchema() {
19
24
  notFound = false;
20
25
  }
21
26
  catch (e) {
22
- rawCode = '{}';
23
27
  notFound = true;
24
28
  }
25
29
  }
@@ -40,17 +44,74 @@ function parseJson() {
40
44
  }
41
45
  let error = '';
42
46
  let rawCode = '';
47
+ let viewJsonSchema = false;
48
+ $: rawCode && parseJson();
49
+ function switchTab(asJson) {
50
+ viewJsonSchema = asJson;
51
+ if (asJson) {
52
+ rawCode = JSON.stringify(args, null, 2);
53
+ }
54
+ else {
55
+ parseJson();
56
+ }
57
+ }
58
+ let loading = false;
59
+ async function testConnection() {
60
+ loading = true;
61
+ const job = await JobService.runScriptPreview({
62
+ workspace: $workspaceStore,
63
+ requestBody: {
64
+ language: 'deno',
65
+ content: `
66
+ import { Client } from 'https://deno.land/x/postgres/mod.ts'
67
+ export async function main(args: any) {
68
+ const client = new Client("postgres://" + args.user + ":" + args.password + "@" + args.host + ":" + args.port + "/" + args.dbname + "?sslmode=" + args.sslmode)
69
+ await client.connect()
70
+ return 'Connection successful'
71
+ }
72
+ `,
73
+ args: {
74
+ args
75
+ }
76
+ }
77
+ });
78
+ await new Promise((r) => setTimeout(r, 3000));
79
+ loading = false;
80
+ const testResult = await JobService.getCompletedJob({
81
+ workspace: $workspaceStore,
82
+ id: job
83
+ });
84
+ if (testResult) {
85
+ sendUserToast(testResult.success ? testResult.result : testResult.result?.['error']?.['message'], !testResult.success);
86
+ }
87
+ }
43
88
  </script>
44
89
 
45
- {#if notFound}
90
+ {#if !notFound}
91
+ <div class="w-full flex gap-4 flex-row-reverse">
92
+ <Toggle
93
+ on:change={(e) => switchTab(e.detail)}
94
+ options={{
95
+ right: 'As JSON'
96
+ }}
97
+ />
98
+ {#if resource_type == 'postgresql'}
99
+ <Button size="sm" on:click={testConnection}
100
+ >{#if loading}<Loader2 class="animate-spin mr-2" />{/if} Test connection</Button
101
+ >
102
+ {/if}
103
+ </div>
104
+ {:else}
46
105
  <p class="italic text-gray-500 text-xs mb-4"
47
106
  >No corresponding resource type found in your workspace for {resource_type}. Define the value in
48
107
  JSON directly</p
49
108
  >
109
+ {/if}
110
+ {#if notFound || viewJsonSchema}
50
111
  {#if !emptyString(error)}<span class="text-red-400 text-xs mb-1 flex flex-row-reverse"
51
112
  >{error}</span
52
113
  >{:else}<div class="py-2" />{/if}
53
114
  <SimpleEditor autoHeight lang="json" bind:code={rawCode} fixedOverflowWidgets={false} />
54
115
  {:else}
55
- <SchemaForm {password} isValid {schema} bind:args />
116
+ <SchemaForm noDelete {password} isValid {schema} bind:args />
56
117
  {/if}
@@ -34,6 +34,14 @@ const apiTokenApps = {
34
34
  supabase: {
35
35
  img: '/supabase_connect.png',
36
36
  instructions: ['Go to the API Settings of your app to find the project URL and key']
37
+ },
38
+ square: {
39
+ img: '/square_connect.gif',
40
+ instructions: [
41
+ 'Go to <a href="https://developer.squareup.com/apps" target="_blank" rel=”noopener noreferrer”>https://developer.squareup.com/apps</a>',
42
+ 'In the left pane, choose Credentials',
43
+ 'At the top of the page, choose Production mode for a production access token or Sandbox mode for a Sandbox access token.'
44
+ ]
37
45
  }
38
46
  };
39
47
  </script>
@@ -52,6 +60,7 @@ import DrawerContent from './common/drawer/DrawerContent.svelte';
52
60
  import ApiConnectForm from './ApiConnectForm.svelte';
53
61
  import SearchItems from './SearchItems.svelte';
54
62
  import autosize from 'svelte-autosize';
63
+ import WhitelistIp from './WhitelistIp.svelte';
55
64
  export let newPageOAuth = false;
56
65
  let filter = '';
57
66
  let manual = false;
@@ -126,6 +135,7 @@ async function loadResources() {
126
135
  async function next() {
127
136
  if (step == 1 && manual) {
128
137
  step += 1;
138
+ args = {};
129
139
  }
130
140
  else if (step == 1 && !manual) {
131
141
  const url = new URL(`/api/oauth/connect/${resource_type}`, $page.url.origin);
@@ -355,12 +365,9 @@ let filteredConnectsManual = [];
355
365
  bind:error={pathError}
356
366
  bind:path
357
367
  initialPath=""
358
- namePlaceholder="my_{resource_type}"
368
+ namePlaceholder="{resource_type}"
359
369
  kind="resource"
360
370
  />
361
- <h2 class="mt-4 mb-2">Description</h2>
362
-
363
- <textarea type="text" autocomplete="off" use:autosize bind:value={description} />
364
371
 
365
372
  {#if apiTokenApps[resource_type]}
366
373
  <h2 class="mt-4 mb-2">Instructions</h2>
@@ -374,20 +381,28 @@ let filteredConnectsManual = [];
374
381
  </ol>
375
382
  </div>
376
383
  {#if apiTokenApps[resource_type].img}
377
- <div class="mt-4 w-full">
378
- <img class="max-h-96 m-auto" alt="connect" src={apiTokenApps[resource_type].img} />
384
+ <div class="mt-4 w-full overflow-hidden">
385
+ <img class="m-auto max-h-60" alt="connect" src={apiTokenApps[resource_type].img} />
379
386
  </div>
380
387
  {/if}
381
388
  {/if}
389
+ {#if resource_type == 'postgresql' || resource_type == 'mysql' || resource_type == 'mongodb'}
390
+ <WhitelistIp />
391
+ {/if}
382
392
 
383
- <h2 class="mt-8">Value</h2>
393
+ <h2 class="mt-4">Value</h2>
384
394
  <div class="mt-4">
385
- <ApiConnectForm password={key ?? ''} {resource_type} bind:args bind:isValid />
395
+ {#key resource_type}
396
+ <ApiConnectForm password={key ?? ''} {resource_type} bind:args bind:isValid />
397
+ {/key}
386
398
  </div>
399
+
400
+ <h2 class="mt-4 mb-2">Description</h2>
401
+ <textarea type="text" autocomplete="off" use:autosize bind:value={description} />
387
402
  {:else}
388
403
  <Path
389
404
  initialPath=""
390
- namePlaceholder="my_{resource_type}"
405
+ namePlaceholder="{resource_type}"
391
406
  bind:error={pathError}
392
407
  bind:path
393
408
  kind="resource"
@@ -141,7 +141,7 @@ $: inputCat = computeInputCat(type, format, itemsType?.type, enum_, contentEncod
141
141
  <FieldHeader {label} {required} {type} {contentEncoding} {format} {itemsType} />
142
142
  {/if}
143
143
  {#if editableSchema}
144
- <div class="my-1 text-xs border-solid border border-gray-400 rounded p-2">
144
+ <div class="p-2 my-1 text-xs border-solid border border-gray-400">
145
145
  <span
146
146
  class="underline"
147
147
  on:click={() => {
@@ -0,0 +1,49 @@
1
+ <script>import { page } from '$app/stores';
2
+ import { userWorkspaces, workspaceStore } from '../stores';
3
+ import { faChevronDown, faChevronUp } from '@fortawesome/free-solid-svg-icons';
4
+ import Icon from 'svelte-awesome';
5
+ import { slide } from 'svelte/transition';
6
+ import InlineCodeCopy from './InlineCodeCopy.svelte';
7
+ $: opened = false;
8
+ $: workspace = $userWorkspaces.find((e) => e.id === $workspaceStore);
9
+ $: workspaceName = workspace?.name;
10
+ $: workspaceId = workspace?.id;
11
+ $: url = `${$page.url.protocol}//${$page.url.hostname}/`;
12
+ </script>
13
+
14
+ <div class="text-sm mt-2 flex">
15
+ <!-- svelte-ignore a11y-click-events-have-key-events -->
16
+ <span
17
+ class="underline mr-4"
18
+ on:click={() => {
19
+ opened = !opened
20
+ }}
21
+ >
22
+ CLI quick setup
23
+ <Icon class="ml-2" data={opened ? faChevronUp : faChevronDown} scale={0.7} />
24
+ </span>
25
+ </div>
26
+
27
+ {#if opened}
28
+ <div
29
+ transition:slide|local
30
+ class="bg-gray-100 border-l-4 border-gray-600 text-gray-700 p-4 m-4"
31
+ role="alert"
32
+ id="dynamic-input-help-box"
33
+ >
34
+ <ul class="pl-0 list-decimal list-inside">
35
+ <li
36
+ >Install the latest wmill CLI from deno.land: <InlineCodeCopy
37
+ content={'deno install --unstable -A https://deno.land/x/wmill/main.ts'}
38
+ /></li
39
+ >
40
+ <li
41
+ >Setup the wmill cli for this workspace & remote: <InlineCodeCopy
42
+ content={`wmill workspace add ${workspaceName} ${workspaceId} ${url}`}
43
+ /></li
44
+ >
45
+ <li>Follow the prompts in your terminal</li>
46
+ <li>Use the run command above!</li>
47
+ </ul>
48
+ </div>
49
+ {/if}
@@ -0,0 +1,14 @@
1
+ import { SvelteComponentTyped } from "svelte";
2
+ declare const __propDef: {
3
+ props: Record<string, never>;
4
+ events: {
5
+ [evt: string]: CustomEvent<any>;
6
+ };
7
+ slots: {};
8
+ };
9
+ export type CliHelpBoxProps = typeof __propDef.props;
10
+ export type CliHelpBoxEvents = typeof __propDef.events;
11
+ export type CliHelpBoxSlots = typeof __propDef.slots;
12
+ export default class CliHelpBox extends SvelteComponentTyped<CliHelpBoxProps, CliHelpBoxEvents, CliHelpBoxSlots> {
13
+ }
14
+ export {};
@@ -5,9 +5,11 @@ import { truncate } from '../utils';
5
5
  import { Button } from './common';
6
6
  import autosize from 'svelte-autosize';
7
7
  export let result;
8
+ export let requireHtmlApproval = false;
8
9
  let resultKind;
9
10
  $: resultKind = inferResultKind(result);
10
11
  let forceJson = false;
12
+ let enableHtml = false;
11
13
  function isRectangularArray(obj) {
12
14
  if (!Array.isArray(obj) || obj.length == 0) {
13
15
  return false;
@@ -35,9 +37,15 @@ function inferResultKind(result) {
35
37
  else if (keys.map((k) => Array.isArray(result[k])).reduce((a, b) => a && b)) {
36
38
  return 'table-col';
37
39
  }
40
+ else if (keys.length == 1 && keys[0] == 'html') {
41
+ return 'html';
42
+ }
38
43
  else if (keys.length == 1 && keys[0] == 'png') {
39
44
  return 'png';
40
45
  }
46
+ else if (keys.length == 1 && keys[0] == 'svg') {
47
+ return 'svg';
48
+ }
41
49
  else if (keys.length == 1 && keys[0] == 'jpeg') {
42
50
  return 'jpeg';
43
51
  }
@@ -47,6 +55,9 @@ function inferResultKind(result) {
47
55
  else if (keys.length == 1 && keys[0] == 'error') {
48
56
  return 'error';
49
57
  }
58
+ else if (keys.length === 2 && keys.includes('file') && keys.includes('filename')) {
59
+ return 'filename';
60
+ }
50
61
  else if (keys.length == 3 &&
51
62
  keys.includes('resume') &&
52
63
  keys.includes('cancel') &&
@@ -104,6 +115,34 @@ let payload = '';
104
115
  </tbody>
105
116
  </TableCustom>
106
117
  </div>
118
+ {:else if !forceJson && resultKind == 'html'}
119
+ <div class="h-full">
120
+ {#if !requireHtmlApproval || enableHtml}
121
+ {@html result.html}
122
+ {:else}
123
+ <div class="font-main text-sm">
124
+ <div class="flex flex-col">
125
+ <div class="bg-red-400 py-1 rounded-t text-white font-bold text-center">
126
+ Warning
127
+ </div>
128
+ <p
129
+ class="text-gray-600 mb-2 text-left border-2 !border-t-0 rounded-b border-red-400 overflow-auto p-1"
130
+ >Rendering HTML can expose you to <a
131
+ href="https://owasp.org/www-community/attacks/xss/"
132
+ target="_blank"
133
+ rel="noreferrer"
134
+ class="hover:underline">XSS attacks</a
135
+ >. Only enable it if you trust the author of the script.
136
+ </p>
137
+ </div>
138
+ <div class="center-center">
139
+ <Button size="sm" color="dark" on:click={() => (enableHtml = true)}>
140
+ Enable HTML rendering
141
+ </Button>
142
+ </div>
143
+ </div>
144
+ {/if}
145
+ </div>
107
146
  {:else if !forceJson && resultKind == 'png'}
108
147
  <div class="h-full"
109
148
  ><img alt="png rendered" class="w-auto h-full" src="data:image/png;base64,{result.png}" />
@@ -116,6 +155,11 @@ let payload = '';
116
155
  src="data:image/jpeg;base64,{result.jpeg}"
117
156
  />
118
157
  </div>
158
+ {:else if !forceJson && resultKind == 'svg'}
159
+ <div
160
+ ><a download="windmill.svg" href="data:text/plain;base64,{btoa(result.svg)}">Download</a>
161
+ </div>
162
+ <div class="h-full overflow-auto">{@html result.svg} </div>
119
163
  {:else if !forceJson && resultKind == 'gif'}
120
164
  <div class="h-full"
121
165
  ><img alt="gif rendered" class="w-auto h-full" src="data:image/gif;base64,{result.gif}" />
@@ -126,8 +170,14 @@ let payload = '';
126
170
  >Download</a
127
171
  >
128
172
  </div>
173
+ {:else if !forceJson && resultKind === 'filename'}
174
+ <div>
175
+ <a download={result.filename} href="data:application/octet-stream;base64,{result.file}">
176
+ Download
177
+ </a>
178
+ </div>
129
179
  {:else if !forceJson && resultKind == 'error'}<div>
130
- <span class="text-red-500 font-semibold text-sm"
180
+ <span class="text-red-500 font-semibold text-sm whitespace-pre-wrap"
131
181
  >{result.error.name}: {result.error.message}</span
132
182
  >
133
183
  <pre class="text-sm whitespace-pre-wrap text-gray-900">{result.error.stack ?? ''}</pre>
@@ -2,6 +2,7 @@ import { SvelteComponentTyped } from "svelte";
2
2
  declare const __propDef: {
3
3
  props: {
4
4
  result: any;
5
+ requireHtmlApproval?: boolean | undefined;
5
6
  };
6
7
  events: {
7
8
  [evt: string]: CustomEvent<any>;
@@ -102,8 +102,16 @@ export function insertAtLine(code, line) {
102
102
  }
103
103
  export function setCode(ncode) {
104
104
  code = ncode;
105
- if (editor) {
106
- editor.setValue(ncode);
105
+ if (editor?.getModel()) {
106
+ // editor.setValue(ncode)
107
+ editor.pushUndoStop();
108
+ editor.executeEdits('set', [
109
+ {
110
+ range: editor.getModel().getFullModelRange(),
111
+ text: ncode
112
+ }
113
+ ]);
114
+ editor.pushUndoStop();
107
115
  }
108
116
  }
109
117
  export function format() {
@@ -246,8 +254,9 @@ export async function reloadWebsocket() {
246
254
  console.error(`connection to ${name} language server failed`);
247
255
  }
248
256
  }
257
+ const wsProtocol = $page.url.protocol == 'https:' ? 'wss' : 'ws';
249
258
  if (lang == 'typescript') {
250
- await connectToLanguageServer(`wss://${$page.url.host}/ws/deno`, 'deno', {
259
+ await connectToLanguageServer(`${wsProtocol}://${$page.url.host}/ws/deno`, 'deno', {
251
260
  certificateStores: null,
252
261
  enablePaths: [],
253
262
  config: null,
@@ -279,7 +288,7 @@ export async function reloadWebsocket() {
279
288
  });
280
289
  }
281
290
  else if (lang === 'python') {
282
- await connectToLanguageServer(`wss://${$page.url.host}/ws/pyright`, 'pyright', {
291
+ await connectToLanguageServer(`${wsProtocol}://${$page.url.host}/ws/pyright`, 'pyright', {
283
292
  executionEnvironments: [
284
293
  {
285
294
  root: '/tmp/pyright',
@@ -289,7 +298,7 @@ export async function reloadWebsocket() {
289
298
  }
290
299
  ]
291
300
  });
292
- connectToLanguageServer(`wss://${$page.url.host}/ws/black`, 'black', {
301
+ connectToLanguageServer(`${wsProtocol}://${$page.url.host}/ws/black`, 'black', {
293
302
  formatters: {
294
303
  black: {
295
304
  command: 'black',
@@ -302,7 +311,7 @@ export async function reloadWebsocket() {
302
311
  });
303
312
  }
304
313
  else if (lang === 'go') {
305
- connectToLanguageServer(`wss://${$page.url.host}/ws/go`, 'go', {
314
+ connectToLanguageServer(`${wsProtocol}://${$page.url.host}/ws/go`, 'go', {
306
315
  'build.allowImplicitNetworkAccess': true
307
316
  });
308
317
  }
@@ -355,7 +364,8 @@ async function loadMonaco() {
355
364
  const model = meditor.createModel(code, lang, mUri.parse(uri));
356
365
  model.updateOptions(updateOptions);
357
366
  editor = meditor.create(divEl, {
358
- ...editorConfig(model, code, lang, automaticLayout, fixedOverflowWidgets)
367
+ ...editorConfig(model, code, lang, automaticLayout, fixedOverflowWidgets),
368
+ tabSize: lang == 'python' ? 4 : 2
359
369
  });
360
370
  let timeoutModel = undefined;
361
371
  editor.onDidChangeModelContent((event) => {