windmill-components 1.550.0 → 1.555.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 (268) hide show
  1. package/package/aiStore.d.ts +13 -0
  2. package/package/aiStore.js +70 -0
  3. package/package/common.d.ts +2 -1
  4. package/package/components/AIProviderPicker.svelte +25 -8
  5. package/package/components/ArgEnum.svelte +3 -2
  6. package/package/components/ArgEnum.svelte.d.ts +1 -0
  7. package/package/components/ArgInput.svelte +235 -174
  8. package/package/components/ArgInput.svelte.d.ts +4 -1
  9. package/package/components/ArrayTypeNarrowing.svelte +38 -32
  10. package/package/components/AutoscalingEvents.svelte +21 -5
  11. package/package/components/AutoscalingEvents.svelte.d.ts +4 -18
  12. package/package/components/DateTimeInput.svelte +8 -6
  13. package/package/components/DeployButton.svelte +1 -1
  14. package/package/components/Dev.svelte +6 -4
  15. package/package/components/EditableSchemaForm.svelte +7 -6
  16. package/package/components/Editor.svelte +2 -1
  17. package/package/components/EditorSettings.svelte +5 -5
  18. package/package/components/EditorSettings.svelte.d.ts +4 -18
  19. package/package/components/FakeMonacoPlaceHolder.svelte +4 -2
  20. package/package/components/FakeMonacoPlaceHolder.svelte.d.ts +1 -0
  21. package/package/components/FieldHeader.svelte +5 -7
  22. package/package/components/FirstStepInputs.svelte +1 -1
  23. package/package/components/FlowLoopIterationPreview.svelte.d.ts +1 -1
  24. package/package/components/FlowPlugConnect.svelte +8 -2
  25. package/package/components/FlowPlugConnect.svelte.d.ts +1 -0
  26. package/package/components/FlowPreviewContent.svelte +113 -92
  27. package/package/components/FlowPreviewContent.svelte.d.ts +3 -3
  28. package/package/components/FlowStatusViewer.svelte +3 -2
  29. package/package/components/FlowStatusViewerInner.svelte +1 -1
  30. package/package/components/FolderEditor.svelte +6 -7
  31. package/package/components/GroupEditor.svelte +148 -141
  32. package/package/components/GroupEditor.svelte.d.ts +5 -4
  33. package/package/components/InputTransformForm.svelte +88 -82
  34. package/package/components/InputTransformSchemaForm.svelte +5 -4
  35. package/package/components/InstanceSetting.svelte +17 -9
  36. package/package/components/JsonEditor.svelte +18 -9
  37. package/package/components/JsonEditor.svelte.d.ts +1 -1
  38. package/package/components/JsonInputs.svelte +1 -1
  39. package/package/components/ModulePreviewForm.svelte +23 -19
  40. package/package/components/NumberTypeNarrowing.svelte +32 -16
  41. package/package/components/ObjectStoreConfigSettings.svelte +27 -19
  42. package/package/components/Path.svelte +2 -8
  43. package/package/components/Path.svelte.d.ts +1 -1
  44. package/package/components/ResourceEditor.svelte +3 -10
  45. package/package/components/ResourcePicker.svelte +85 -72
  46. package/package/components/ResourcePicker.svelte.d.ts +2 -0
  47. package/package/components/RunChart.svelte +1 -1
  48. package/package/components/RunForm.svelte +11 -7
  49. package/package/components/S3ArrayHelperButton.svelte +12 -6
  50. package/package/components/S3ArrayHelperButton.svelte.d.ts +1 -0
  51. package/package/components/S3FilePicker.svelte +1 -1
  52. package/package/components/SchemaForm.svelte +18 -10
  53. package/package/components/SchemaForm.svelte.d.ts +7 -1
  54. package/package/components/SchemaFormWithArgPicker.svelte +1 -1
  55. package/package/components/ScriptBuilder.svelte +2 -2
  56. package/package/components/ScriptEditor.svelte +4 -3
  57. package/package/components/ScriptEditor.svelte.d.ts +1 -1
  58. package/package/components/ShareModal.svelte +4 -4
  59. package/package/components/SimpleEditor.svelte +6 -2
  60. package/package/components/SimpleEditor.svelte.d.ts +3 -0
  61. package/package/components/StringTypeNarrowing.svelte +5 -1
  62. package/package/components/SuperadminSettingsInner.svelte +3 -3
  63. package/package/components/TemplateEditor.svelte +18 -9
  64. package/package/components/Toast.svelte +2 -7
  65. package/package/components/Toast.svelte.d.ts +4 -18
  66. package/package/components/Toggle.svelte +17 -7
  67. package/package/components/ToggleHubWorkspaceQuick.svelte +3 -3
  68. package/package/components/WorkerGroup.svelte +2 -14
  69. package/package/components/apps/components/buttons/AppButton.svelte +57 -39
  70. package/package/components/apps/components/display/dbtable/InsertRow.svelte +32 -2
  71. package/package/components/apps/components/display/dbtable/queries/insert.js +2 -1
  72. package/package/components/apps/components/display/dbtable/utils.d.ts +8 -8
  73. package/package/components/apps/components/display/table/utils.js +13 -3
  74. package/package/components/apps/components/helpers/RunnableComponent.svelte +3 -3
  75. package/package/components/apps/components/inputs/currency/CurrencyInput.svelte +2 -1
  76. package/package/components/apps/editor/AppEditorHeader.svelte +33 -271
  77. package/package/components/apps/editor/AppEditorHeaderDeploy.svelte +233 -0
  78. package/package/components/apps/editor/AppEditorHeaderDeploy.svelte.d.ts +18 -0
  79. package/package/components/apps/editor/AppEditorHeaderDeployInitialDraft.svelte +47 -0
  80. package/package/components/apps/editor/AppEditorHeaderDeployInitialDraft.svelte.d.ts +8 -0
  81. package/package/components/apps/editor/GridEditor.svelte +7 -2
  82. package/package/components/apps/editor/appDeploy.svelte.d.ts +1 -0
  83. package/package/components/apps/editor/appDeploy.svelte.js +6 -0
  84. package/package/components/apps/editor/appUtils.d.ts +1 -0
  85. package/package/components/apps/editor/appUtils.js +30 -1
  86. package/package/components/apps/editor/component/ComponentNavigation.svelte +3 -1
  87. package/package/components/apps/editor/component/components.d.ts +3 -3
  88. package/package/components/apps/editor/component/components.js +1 -1
  89. package/package/components/apps/editor/contextPanel/ComponentOutputViewer.svelte +1 -1
  90. package/package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +6 -4
  91. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte.d.ts +1 -1
  92. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte.d.ts +1 -1
  93. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte.d.ts +1 -1
  94. package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +58 -8
  95. package/package/components/auditLogs/AuditLogsFilters.svelte +1 -1
  96. package/package/components/common/ResizeTransitionWrapper.svelte +39 -0
  97. package/package/components/common/ResizeTransitionWrapper.svelte.d.ts +12 -0
  98. package/package/components/common/badge/CountBadge.svelte +29 -0
  99. package/package/components/common/badge/CountBadge.svelte.d.ts +8 -0
  100. package/package/components/common/button/Button.svelte +1 -0
  101. package/package/components/common/button/ConnectionButton.svelte +6 -1
  102. package/package/components/common/button/ConnectionButton.svelte.d.ts +2 -0
  103. package/package/components/common/button/RefreshButton.svelte +8 -4
  104. package/package/components/common/button/RefreshButton.svelte.d.ts +3 -0
  105. package/package/components/common/calendarPicker/CalendarPicker.svelte +1 -1
  106. package/package/components/common/fileInput/FileInput.svelte +7 -6
  107. package/package/components/common/fileUpload/S3ArgInput.svelte +11 -9
  108. package/package/components/common/fileUpload/S3ArgInput.svelte.d.ts +1 -0
  109. package/package/components/common/popup/PopupV2.svelte +6 -0
  110. package/package/components/common/toggleButton-v2/ToggleButton.svelte +17 -26
  111. package/package/components/common/toggleButton-v2/ToggleButton.svelte.d.ts +16 -30
  112. package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte +1 -1
  113. package/package/components/common/toggleButton-v2/ToggleButtonMore.svelte +3 -3
  114. package/package/components/common/toggleButton-v2/ToggleButtonMore.svelte.d.ts +1 -0
  115. package/package/components/copilot/CodeCompletionStatus.svelte +2 -1
  116. package/package/components/copilot/CronGen.svelte +1 -1
  117. package/package/components/copilot/FlowInlineScriptAIButton.svelte +2 -2
  118. package/package/components/copilot/IteratorGen.svelte +30 -25
  119. package/package/components/copilot/IteratorGen.svelte.d.ts +8 -7
  120. package/package/components/copilot/MetadataGen.svelte +4 -3
  121. package/package/components/copilot/PredicateGen.svelte +15 -12
  122. package/package/components/copilot/PredicateGen.svelte.d.ts +5 -4
  123. package/package/components/copilot/RegexGen.svelte +1 -1
  124. package/package/components/copilot/ScriptFix.svelte +1 -1
  125. package/package/components/copilot/ScriptGen.svelte +2 -1
  126. package/package/components/copilot/StepGenQuick.svelte +15 -16
  127. package/package/components/copilot/StepGenQuick.svelte.d.ts +14 -13
  128. package/package/components/copilot/StepInputGen.svelte +50 -36
  129. package/package/components/copilot/StepInputGen.svelte.d.ts +13 -10
  130. package/package/components/copilot/StepInputsGen.svelte +18 -19
  131. package/package/components/copilot/StepInputsGen.svelte.d.ts +4 -18
  132. package/package/components/copilot/autocomplete/Autocompletor.js +1 -1
  133. package/package/components/copilot/autocomplete/request.js +1 -1
  134. package/package/components/copilot/chat/AIChat.svelte +2 -1
  135. package/package/components/copilot/chat/AIChatManager.svelte.js +2 -1
  136. package/package/components/copilot/chat/AiChatLayout.svelte +2 -1
  137. package/package/components/copilot/chat/ProviderModelSelector.svelte +10 -9
  138. package/package/components/copilot/chat/ProviderModelSelector.svelte.d.ts +2 -17
  139. package/package/components/copilot/chat/flow/FlowAIButton.svelte +1 -1
  140. package/package/components/copilot/chat/script/core.js +2 -1
  141. package/package/components/copilot/chat/shared.js +2 -1
  142. package/package/components/copilot/lib.js +2 -1
  143. package/package/components/details/DetailPageLayout.svelte +3 -2
  144. package/package/components/details/DetailPageLayout.svelte.d.ts +1 -0
  145. package/package/components/flows/CreateActionsFlow.svelte +1 -1
  146. package/package/components/flows/FlowChatInterface.svelte +404 -0
  147. package/package/components/flows/FlowChatInterface.svelte.d.ts +19 -0
  148. package/package/components/flows/FlowChatMessage.svelte +41 -0
  149. package/package/components/flows/FlowChatMessage.svelte.d.ts +9 -0
  150. package/package/components/flows/FlowConversationsSidebar.svelte +213 -0
  151. package/package/components/flows/FlowConversationsSidebar.svelte.d.ts +15 -0
  152. package/package/components/flows/FlowEditor.svelte.d.ts +1 -1
  153. package/package/components/flows/FlowModuleIcon.svelte +10 -10
  154. package/package/components/flows/common/FlowCard.svelte +10 -2
  155. package/package/components/flows/common/FlowCard.svelte.d.ts +1 -0
  156. package/package/components/flows/common/FlowCardHeader.svelte +2 -1
  157. package/package/components/flows/common/FlowCardHeader.svelte.d.ts +1 -0
  158. package/package/components/flows/content/DynamicInputHelpBox.svelte +4 -4
  159. package/package/components/flows/content/FlowEditorPanel.svelte.d.ts +1 -1
  160. package/package/components/flows/content/FlowInput.svelte +381 -259
  161. package/package/components/flows/content/FlowInput.svelte.d.ts +1 -1
  162. package/package/components/flows/content/FlowInputsQuick.svelte +55 -34
  163. package/package/components/flows/content/FlowInputsQuick.svelte.d.ts +2 -2
  164. package/package/components/flows/content/FlowModuleComponent.svelte +5 -10
  165. package/package/components/flows/flowInfers.d.ts +60 -0
  166. package/package/components/flows/flowInfers.js +72 -66
  167. package/package/components/flows/{flowStore.d.ts → flowStore.svelte.d.ts} +1 -0
  168. package/package/components/flows/header/FlowPreviewButtons.svelte +1 -1
  169. package/package/components/flows/map/FlowErrorHandlerItem.svelte +4 -2
  170. package/package/components/flows/map/FlowErrorHandlerItem.svelte.d.ts +1 -0
  171. package/package/components/flows/map/FlowModuleSchemaItem.svelte +1 -1
  172. package/package/components/flows/map/FlowModuleSchemaMap.svelte +5 -2
  173. package/package/components/flows/map/FlowStickyNode.svelte +2 -2
  174. package/package/components/flows/map/FlowStickyNode.svelte.d.ts +1 -0
  175. package/package/components/flows/map/InsertModuleButton.svelte +5 -2
  176. package/package/components/flows/map/InsertModuleButton.svelte.d.ts +4 -3
  177. package/package/components/flows/map/InsertModuleInner.svelte +3 -1
  178. package/package/components/flows/map/InsertModuleInner.svelte.d.ts +2 -2
  179. package/package/components/flows/map/VirtualItem.svelte +1 -2
  180. package/package/components/flows/pickers/PickHubScriptQuick.svelte +8 -3
  181. package/package/components/flows/pickers/PickHubScriptQuick.svelte.d.ts +1 -1
  182. package/package/components/flows/pickers/WorkspaceScriptPickerQuick.svelte +15 -12
  183. package/package/components/flows/propPicker/PropPickerWrapper.svelte +1 -15
  184. package/package/components/graph/FlowGraphV2.svelte +2 -1
  185. package/package/components/graph/FlowGraphV2.svelte.d.ts +1 -0
  186. package/package/components/graph/graphBuilder.svelte.d.ts +2 -0
  187. package/package/components/graph/graphBuilder.svelte.js +1 -0
  188. package/package/components/graph/renderers/edges/BaseEdge.svelte +1 -0
  189. package/package/components/graph/renderers/nodes/InputNode.svelte +13 -2
  190. package/package/components/graph/renderers/triggers/TriggersBadge.svelte +2 -27
  191. package/package/components/instanceSettings.js +17 -0
  192. package/package/components/progressBar/ProgressBar.svelte +1 -1
  193. package/package/components/raw_apps/FileEditorIcon.svelte +1 -1
  194. package/package/components/raw_apps/FileEditorIcon.svelte.d.ts +4 -18
  195. package/package/components/raw_apps/RawAppBackgroundRunner.svelte +2 -8
  196. package/package/components/raw_apps/RawAppBackgroundRunner.svelte.d.ts +4 -18
  197. package/package/components/raw_apps/RawAppEditor.svelte +6 -7
  198. package/package/components/raw_apps/RawAppEditorHeader.svelte +48 -301
  199. package/package/components/raw_apps/RawAppEditorHeader.svelte.d.ts +18 -19
  200. package/package/components/raw_apps/RawAppInlineScriptEditor.svelte +10 -16
  201. package/package/components/raw_apps/RawAppInlineScriptEditor.svelte.d.ts +13 -13
  202. package/package/components/raw_apps/RawAppInlineScriptPanelList.svelte +8 -11
  203. package/package/components/raw_apps/RawAppInlineScriptPanelList.svelte.d.ts +1 -2
  204. package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte +0 -1
  205. package/package/components/raw_apps/RawAppInlineScriptsPanel.svelte +7 -13
  206. package/package/components/raw_apps/RawAppInlineScriptsPanel.svelte.d.ts +8 -8
  207. package/package/components/raw_apps/RawAppPreview.svelte +3 -7
  208. package/package/components/raw_apps/RawAppPreview.svelte.d.ts +5 -19
  209. package/package/components/raw_apps/utils.d.ts +1 -1
  210. package/package/components/raw_apps/utils.js +3 -3
  211. package/package/components/runs/RunOption.svelte +2 -2
  212. package/package/components/runs/RunsFilter.svelte +15 -12
  213. package/package/components/runs/RunsFilter.svelte.d.ts +1 -1
  214. package/package/components/schema/EditableSchemaDrawer.svelte +19 -18
  215. package/package/components/schema/FlowPropertyEditor.svelte +9 -2
  216. package/package/components/schema/FlowPropertyEditor.svelte.d.ts +1 -1
  217. package/package/components/schema/PropertyEditor.svelte +22 -26
  218. package/package/components/schema/SchemaFormDND.svelte +3 -2
  219. package/package/components/schema/SchemaFormDND.svelte.d.ts +1 -0
  220. package/package/components/select/DraggableTags.svelte +2 -2
  221. package/package/components/select/MultiSelect.svelte +14 -8
  222. package/package/components/select/Select.svelte +12 -5
  223. package/package/components/select/Select.svelte.d.ts +11 -0
  224. package/package/components/select/SelectDropdown.svelte +98 -46
  225. package/package/components/select/SelectDropdown.svelte.d.ts +10 -0
  226. package/package/components/select/utils.svelte.js +2 -0
  227. package/package/components/settings/CreateToken.svelte +76 -49
  228. package/package/components/settings/WorkspaceUserSettings.svelte +20 -17
  229. package/package/components/sidebar/CriticalAlertTable.svelte +2 -1
  230. package/package/components/sidebar/Linkify.svelte +14 -0
  231. package/package/components/sidebar/Linkify.svelte.d.ts +5 -0
  232. package/package/components/sidebar/WorkspaceMenu.svelte +8 -3
  233. package/package/components/table/tableUtils.js +1 -1
  234. package/package/components/text_input/TextInput.svelte +30 -0
  235. package/package/components/text_input/TextInput.svelte.d.ts +17 -0
  236. package/package/components/triggers/TriggersEditor.svelte +11 -1
  237. package/package/components/triggers/triggers.svelte.d.ts +1 -1
  238. package/package/components/triggers/triggers.svelte.js +8 -4
  239. package/package/components/tutorials/FlowBuilderTutorialErrorHandler.svelte +2 -2
  240. package/package/components/tutorials/FlowBuilderTutorialForLoop.svelte +3 -0
  241. package/package/components/tutorials/FlowBuilderTutorialSimpleFlow.svelte +49 -17
  242. package/package/components/tutorials/Tutorial.svelte +9 -0
  243. package/package/components/tutorials/Tutorial.svelte.d.ts +1 -0
  244. package/package/components/tutorials/app/AppTutorial.svelte +41 -57
  245. package/package/components/tutorials/app/BackgroundRunnablesTutorial.svelte +3 -5
  246. package/package/components/tutorials/app/ConnectionTutorial.svelte +2 -2
  247. package/package/components/tutorials/utils.js +2 -154
  248. package/package/components/vscode.js +16 -8
  249. package/package/components/workspaceSettings/AISettings.svelte +4 -3
  250. package/package/components/workspaceSettings/CreateWorkspace.svelte +2 -2
  251. package/package/components/workspaceSettings/DucklakeSettings.svelte +64 -7
  252. package/package/components/workspaceSettings/StorageSettings.svelte +24 -26
  253. package/package/editorUtils.d.ts +1 -1
  254. package/package/gen/core/OpenAPI.js +1 -1
  255. package/package/gen/schemas.gen.d.ts +82 -1
  256. package/package/gen/schemas.gen.js +82 -1
  257. package/package/gen/services.gen.d.ts +175 -1
  258. package/package/gen/services.gen.js +345 -2
  259. package/package/gen/types.gen.d.ts +1324 -549
  260. package/package/script_helpers.js +5 -5
  261. package/package/services/JobManager.js +4 -2
  262. package/package/stores.d.ts +4 -13
  263. package/package/stores.js +5 -68
  264. package/package/toast.js +2 -1
  265. package/package/utils.d.ts +1 -0
  266. package/package/utils.js +3 -0
  267. package/package.json +3 -3
  268. /package/package/components/flows/{flowStore.js → flowStore.svelte.js} +0 -0
@@ -1,13 +1,10 @@
1
- <script lang="ts">import { createBubbler, stopPropagation } from 'svelte/legacy';
2
- const bubble = createBubbler();
3
- import { Alert, Drawer, DrawerContent, UndoRedo } from '../../common';
1
+ <script lang="ts">import { Drawer, DrawerContent, UndoRedo } from '../../common';
4
2
  import Button from '../../common/button/Button.svelte';
5
- import Path from '../../Path.svelte';
6
3
  import Toggle from '../../Toggle.svelte';
7
- import { AppService, DraftService, SettingService } from '../../../gen';
4
+ import { AppService, DraftService } from '../../../gen';
8
5
  import { redo, undo } from '../../../history.svelte';
9
6
  import { enterpriseLicense, userStore, workspaceStore } from '../../../stores';
10
- import { AlignHorizontalSpaceAround, BellOff, Bug, DiffIcon, Expand, FileJson, FileUp, FormInput, History, Laptop2, Loader2, Save, Smartphone, FileClock, Sun, Moon, SunMoon, Zap, Globe, AlertTriangle } from 'lucide-svelte';
7
+ import { AlignHorizontalSpaceAround, BellOff, Bug, DiffIcon, Expand, FileJson, FileUp, FormInput, History, Laptop2, Save, Smartphone, FileClock, Sun, Moon, SunMoon, Zap, Globe } from 'lucide-svelte';
11
8
  import { getContext, untrack } from 'svelte';
12
9
  import { cleanValueProperties, orderedJsonStringify, replaceFalseWithUndefined } from '../../../utils';
13
10
  import { BG_PREFIX, allItems, toStatic } from '../utils';
@@ -16,7 +13,6 @@ import AppInputs from './AppInputs.svelte';
16
13
  import PreviewToggle from './PreviewToggle.svelte';
17
14
  import ToggleButtonGroup from '../../common/toggleButton-v2/ToggleButtonGroup.svelte';
18
15
  import ToggleButton from '../../common/toggleButton-v2/ToggleButton.svelte';
19
- import Tooltip from '../../Tooltip.svelte';
20
16
  import { sendUserToast } from '../../../toast';
21
17
  import DeploymentHistory from './DeploymentHistory.svelte';
22
18
  import Awareness from '../../Awareness.svelte';
@@ -36,13 +32,13 @@ import Summary from '../../Summary.svelte';
36
32
  import HideButton from './settingsPanel/HideButton.svelte';
37
33
  import DeployOverrideConfirmationModal from '../../common/confirmationModal/DeployOverrideConfirmationModal.svelte';
38
34
  import { computeS3FileInputPolicy, computeWorkspaceS3FileInputPolicy, computeS3ImageViewerPolicy } from './appUtilsS3';
39
- import { isCloudHosted } from '../../../cloud';
40
- import { base } from '../../../base';
41
- import ClipboardPanel from '../../details/ClipboardPanel.svelte';
42
35
  import AppJobsDrawer from './AppJobsDrawer.svelte';
43
36
  import { collectStaticFields } from './commonAppUtils';
44
37
  import LazyModePanel from './contextPanel/LazyModePanel.svelte';
45
38
  import { Sha256 } from '@aws-crypto/sha256-js';
39
+ import AppEditorHeaderDeploy from './AppEditorHeaderDeploy.svelte';
40
+ import AppEditorHeaderDeployInitialDraft from './AppEditorHeaderDeployInitialDraft.svelte';
41
+ import { computeSecretUrl } from './appDeploy.svelte';
46
42
  async function hash(message) {
47
43
  try {
48
44
  const msgUint8 = new TextEncoder().encode(message); // encode as (utf-8) Uint8Array
@@ -66,6 +62,7 @@ let deployedValue = $state(undefined); // Value to diff against
66
62
  let deployedBy = $state(undefined); // Author
67
63
  let confirmCallback = $state(() => { }); // What happens when user clicks `override` in warning
68
64
  let open = $state(false); // Is confirmation modal open
65
+ let customPathError = $state('');
69
66
  const { app, summary, breakpoint, appPath, jobs, jobsById, staticExporter, errorByComponent, openDebugRun, mode, darkMode } = getContext('AppViewerContext');
70
67
  const { history, jobsDrawerOpen, refreshComponents } = getContext('AppEditorContext');
71
68
  const loading = $state({
@@ -74,7 +71,7 @@ const loading = $state({
74
71
  saveDraft: false
75
72
  });
76
73
  let selectedJobId = $state(undefined);
77
- let pathError = $state(undefined);
74
+ let pathError = $state('');
78
75
  let appExport = $state();
79
76
  let draftDrawerOpen = $state(false);
80
77
  let saveDrawerOpen = $state(false);
@@ -82,7 +79,7 @@ let inputsDrawerOpen = $state(fromHub);
82
79
  let historyBrowserDrawerOpen = $state(false);
83
80
  let debugAppDrawerOpen = $state(false);
84
81
  let lazyDrawerOpen = $state(false);
85
- let deploymentMsg = $state(undefined);
82
+ let deploymentMsg = $state('');
86
83
  function closeSaveDrawer() {
87
84
  saveDrawerOpen = false;
88
85
  }
@@ -366,13 +363,6 @@ async function updateApp(npath) {
366
363
  onSavedNewAppPath?.(npath);
367
364
  }
368
365
  }
369
- let secretUrl = $state(undefined);
370
- async function getSecretUrl() {
371
- secretUrl = await AppService.getPublicSecretOfApp({
372
- workspace: $workspaceStore,
373
- path: $appPath
374
- });
375
- }
376
366
  async function setPublishState() {
377
367
  await computeTriggerables();
378
368
  await AppService.updateApp({
@@ -614,11 +604,6 @@ function onKeyDown(event) {
614
604
  }
615
605
  lock = false;
616
606
  }
617
- let dirtyPath = $state(false);
618
- let path = $state(undefined);
619
- let secretUrlHref = $derived(secretUrl
620
- ? `${window.location.origin}${base}/public/${$workspaceStore}/${secretUrl}`
621
- : undefined);
622
607
  let moreItems = $derived([
623
608
  {
624
609
  displayName: 'Deployment history',
@@ -638,9 +623,13 @@ let moreItems = $derived([
638
623
  {
639
624
  displayName: 'Public URL',
640
625
  icon: Globe,
641
- disabled: !secretUrlHref,
642
- href: secretUrlHref,
643
- hrefTarget: '_blank'
626
+ action: async () => {
627
+ const secretUrl = await AppService.getPublicSecretOfApp({
628
+ workspace: $workspaceStore,
629
+ path: $appPath
630
+ });
631
+ window.open(computeSecretUrl(secretUrl), '_blank');
632
+ }
644
633
  },
645
634
  // {
646
635
  // displayName: 'Publish to Hub',
@@ -736,43 +725,6 @@ function setTheme(newDarkMode) {
736
725
  let priorDarkMode = document.documentElement.classList.contains('dark');
737
726
  setTheme($app?.darkMode);
738
727
  let customPath = $state(savedApp?.custom_path);
739
- let dirtyCustomPath = $state(false);
740
- let customPathError = $state('');
741
- let globalWorkspacedRoute = $state(false);
742
- async function loadGlobalWorkspacedRouteSetting() {
743
- try {
744
- const setting = await SettingService.getGlobal({ key: 'app_workspaced_route' });
745
- globalWorkspacedRoute = setting ?? false;
746
- }
747
- catch (error) {
748
- globalWorkspacedRoute = false;
749
- }
750
- }
751
- async function appExists(customPath) {
752
- return await AppService.customPathExists({
753
- workspace: $workspaceStore,
754
- customPath
755
- });
756
- }
757
- let validateTimeout = undefined;
758
- async function validateCustomPath(customPath) {
759
- customPathError = '';
760
- if (validateTimeout) {
761
- clearTimeout(validateTimeout);
762
- }
763
- validateTimeout = setTimeout(async () => {
764
- if (!/^[\w-]+(\/[\w-]+)*$/.test(customPath)) {
765
- customPathError = 'Invalid path';
766
- }
767
- else if (customPath !== savedApp?.custom_path && (await appExists(customPath))) {
768
- customPathError = 'Path already taken';
769
- }
770
- else {
771
- customPathError = '';
772
- }
773
- validateTimeout = undefined;
774
- }, 500);
775
- }
776
728
  $effect(() => {
777
729
  if ($openDebugRun == undefined) {
778
730
  $openDebugRun = (jobId) => {
@@ -781,20 +733,10 @@ $effect(() => {
781
733
  };
782
734
  }
783
735
  });
784
- $effect(() => {
785
- $appPath && $appPath != '' && secretUrl == undefined && untrack(() => getSecretUrl());
786
- });
787
736
  $effect(() => {
788
737
  saveDrawerOpen && untrack(() => compareVersions());
789
738
  });
790
739
  let hasErrors = $derived(Object.keys($errorByComponent).length > 0);
791
- let fullCustomUrl = $derived(`${window.location.origin}${base}/a/${isCloudHosted() || globalWorkspacedRoute ? $workspaceStore + '/' : ''}${customPath}`);
792
- $effect(() => {
793
- ;
794
- [customPath];
795
- untrack(() => customPath !== undefined && validateCustomPath(customPath));
796
- });
797
- loadGlobalWorkspacedRouteSetting();
798
740
  </script>
799
741
 
800
742
  <svelte:window onkeydown={onKeyDown} />
@@ -835,45 +777,6 @@ loadGlobalWorkspacedRouteSetting();
835
777
  {#if $appPath == ''}
836
778
  <Drawer bind:open={draftDrawerOpen} size="800px">
837
779
  <DrawerContent title="Initial draft save" on:close={() => closeDraftDrawer()}>
838
- <Alert bgClass="mb-4" title="Require path" type="info">
839
- Choose a path to save the initial draft of the app.
840
- </Alert>
841
- <h3>Summary</h3>
842
- <div class="w-full pt-2">
843
- <!-- svelte-ignore a11y_autofocus -->
844
- <input
845
- autofocus
846
- type="text"
847
- placeholder="App summary"
848
- class="text-sm w-full font-semibold"
849
- onkeydown={stopPropagation(bubble('keydown'))}
850
- bind:value={$summary}
851
- onkeyup={() => {
852
- if ($appPath == '' && $summary?.length > 0 && !dirtyPath) {
853
- path?.setName(
854
- $summary
855
- .toLowerCase()
856
- .replace(/[^a-z0-9_]/g, '_')
857
- .replace(/-+/g, '_')
858
- .replace(/^-|-$/g, '')
859
- )
860
- }
861
- }}
862
- />
863
- </div>
864
- <div class="py-2"></div>
865
- <Path
866
- autofocus={false}
867
- bind:this={path}
868
- bind:error={pathError}
869
- bind:path={newEditedPath}
870
- bind:dirty={dirtyPath}
871
- initialPath=""
872
- namePlaceholder="app"
873
- kind="app"
874
- />
875
- <div class="py-4"></div>
876
-
877
780
  {#snippet actions()}
878
781
  <div>
879
782
  <Button
@@ -885,6 +788,8 @@ loadGlobalWorkspacedRouteSetting();
885
788
  </Button>
886
789
  </div>
887
790
  {/snippet}
791
+
792
+ <AppEditorHeaderDeployInitialDraft {summary} {appPath} bind:pathError bind:newEditedPath />
888
793
  </DrawerContent>
889
794
  </Drawer>
890
795
  {/if}
@@ -907,59 +812,6 @@ loadGlobalWorkspacedRouteSetting();
907
812
  />
908
813
  <Drawer bind:open={saveDrawerOpen} size="800px">
909
814
  <DrawerContent title="Deploy" on:close={() => closeSaveDrawer()}>
910
- {#if !onLatest}
911
- <Alert title="You're not on the latest app version. " type="warning">
912
- By deploying, you may overwrite changes made by other users. Press 'Deploy' to see diff.
913
- </Alert>
914
- <div class="py-2"></div>
915
- {/if}
916
- <span class="text-secondary text-sm font-bold">Summary</span>
917
- <div class="w-full pt-2">
918
- <!-- svelte-ignore a11y_autofocus -->
919
- <input
920
- autofocus
921
- type="text"
922
- placeholder="App summary"
923
- class="text-sm w-full"
924
- bind:value={$summary}
925
- onkeydown={stopPropagation(bubble('keydown'))}
926
- onkeyup={() => {
927
- if ($appPath == '' && $summary?.length > 0 && !dirtyPath) {
928
- path?.setName(
929
- $summary
930
- .toLowerCase()
931
- .replace(/[^a-z0-9_]/g, '_')
932
- .replace(/-+/g, '_')
933
- .replace(/^-|-$/g, '')
934
- )
935
- }
936
- }}
937
- />
938
- </div>
939
- <div class="py-4"></div>
940
- <span class="text-secondary text-sm font-bold">Deployment message</span>
941
- <div class="w-full pt-2">
942
- <!-- svelte-ignore a11y_autofocus -->
943
- <input
944
- type="text"
945
- placeholder="Optional deployment message"
946
- class="text-sm w-full"
947
- bind:value={deploymentMsg}
948
- />
949
- </div>
950
- <div class="py-4"></div>
951
- <span class="text-secondary text-sm font-bold">Path</span>
952
- <Path
953
- bind:this={path}
954
- bind:dirty={dirtyPath}
955
- bind:error={pathError}
956
- bind:path={newEditedPath}
957
- initialPath={newPath}
958
- namePlaceholder="app"
959
- kind="app"
960
- autofocus={false}
961
- />
962
-
963
815
  {#snippet actions()}
964
816
  <div class="flex flex-row gap-4">
965
817
  <Button
@@ -1019,111 +871,21 @@ loadGlobalWorkspacedRouteSetting();
1019
871
  </Button>
1020
872
  </div>
1021
873
  {/snippet}
1022
- <div class="py-2"></div>
1023
- <Alert title="App executed on behalf of you">
1024
- A viewer of the app will execute the runnables of the app on behalf of the publisher (you)
1025
- <Tooltip>
1026
- It ensures that all required resources/runnable visible for publisher but not for viewer at
1027
- time of creating the app would prevent the execution of the app. To guarantee tight
1028
- security, a policy is computed at time of deployment of the app which only allow the
1029
- scripts/flows referred to in the app to be called on behalf of. Furthermore, static
1030
- parameters are not overridable. Hence, users will only be able to use the app as intended by
1031
- the publisher without risk for leaking resources not used in the app.
1032
- </Tooltip>
1033
- </Alert>
1034
-
1035
- <div class="mt-10"></div>
1036
-
1037
- <h2>Public URL</h2>
1038
-
1039
- <div class="my-6">
1040
- <div class="flex gap-2 items-center mb-2">
1041
- <Toggle
1042
- options={{
1043
- left: `Require login and read-access`,
1044
- right: `No login required`
1045
- }}
1046
- checked={policy.execution_mode == 'anonymous'}
1047
- on:change={(e) => {
1048
- policy.execution_mode = e.detail ? 'anonymous' : 'publisher'
1049
- setPublishState()
1050
- }}
1051
- disabled={$appPath == ''}
1052
- />
1053
- </div>
1054
- {#if $appPath == ''}
1055
- <ClipboardPanel content={`Save this app once to get the public secret URL`} size="md" />
1056
- {:else if secretUrlHref}
1057
- <ClipboardPanel content={secretUrlHref} size="md" />
1058
- {:else}<Loader2 class="animate-spin" />
1059
- {/if}
1060
- <div class="text-xs text-secondary mt-1">
1061
- Share this url directly or embed it using an iframe (if requiring login, top-level domain of
1062
- embedding app must be the same as the one of Windmill)
1063
- </div>
1064
-
1065
- <div class="mt-4">
1066
- {#if !($userStore?.is_admin || $userStore?.is_super_admin)}
1067
- <Alert type="warning" title="Admin only" size="xs">
1068
- Custom path can only be set by workspace admins
1069
- </Alert>
1070
- <div class="mb-2"></div>
1071
- {/if}
1072
- {#if !$enterpriseLicense}
1073
- <div class="flex text-xs items-center gap-1 text-yellow-500 whitespace-nowrap mb-2">
1074
- <AlertTriangle size={16} />
1075
- EE only <Tooltip>Enterprise Edition only feature</Tooltip>
1076
- </div>
1077
- {/if}
1078
- <Toggle
1079
- on:change={({ detail }) => {
1080
- customPath = detail ? '' : undefined
1081
- if (customPath === undefined) {
1082
- customPathError = ''
1083
- }
1084
- }}
1085
- checked={customPath !== undefined}
1086
- options={{
1087
- right: 'Use a custom URL'
1088
- }}
1089
- disabled={!$enterpriseLicense || !($userStore?.is_admin || $userStore?.is_super_admin)}
1090
- />
1091
-
1092
- {#if customPath !== undefined}
1093
- <div class="text-secondary text-sm flex items-center gap-1 w-full justify-between">
1094
- <div>Custom path</div>
1095
- </div>
1096
- <input
1097
- disabled={!($userStore?.is_admin || $userStore?.is_super_admin)}
1098
- type="text"
1099
- autocomplete="off"
1100
- bind:value={customPath}
1101
- class={customPathError === ''
1102
- ? ''
1103
- : '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'}
1104
- oninput={() => {
1105
- dirtyCustomPath = true
1106
- }}
1107
- />
1108
- <div class="text-secondary text-sm flex items-center gap-1 mt-2 w-full justify-between">
1109
- <div>Custom public URL</div>
1110
- </div>
1111
- <ClipboardPanel content={fullCustomUrl} size="md" />
1112
-
1113
- <div class="text-red-600 dark:text-red-400 text-2xs mt-1.5"
1114
- >{dirtyCustomPath ? customPathError : ''}
1115
- </div>
1116
- {/if}
1117
- </div>
1118
- </div>
1119
- <Alert type="info" title="Only latest deployed app is publicly available">
1120
- You will still need to deploy the app to make visible the latest changes
1121
- </Alert>
1122
-
1123
- <a
1124
- href="https://www.windmill.dev/docs/advanced/external_auth_with_jwt#embed-public-apps-using-your-own-authentification"
1125
- class="mt-4 text-2xs">Embed this app in your own product to be used by your own users</a
1126
- >
874
+ <AppEditorHeaderDeploy
875
+ {newPath}
876
+ {policy}
877
+ {setPublishState}
878
+ appPath={$appPath}
879
+ {onLatest}
880
+ {savedApp}
881
+ bind:summary={$summary}
882
+ bind:customPath
883
+ bind:deploymentMsg
884
+ bind:customPathError
885
+ bind:pathError
886
+ bind:newEditedPath
887
+ hideSecretUrl={false}
888
+ />
1127
889
  </DrawerContent>
1128
890
  </Drawer>
1129
891
 
@@ -0,0 +1,233 @@
1
+ <script lang="ts">import { Alert } from '../../common';
2
+ import Toggle from '../../Toggle.svelte';
3
+ import { enterpriseLicense, userStore, workspaceStore } from '../../../stores';
4
+ import { Loader2, AlertTriangle } from 'lucide-svelte';
5
+ import Tooltip from '../../Tooltip.svelte';
6
+ import ClipboardPanel from '../../details/ClipboardPanel.svelte';
7
+ import { untrack } from 'svelte';
8
+ import { AppService, SettingService } from '../../../gen';
9
+ import Path from '../../Path.svelte';
10
+ import { computeSecretUrl } from './appDeploy.svelte';
11
+ import { base } from '../../../base';
12
+ import { isCloudHosted } from '../../../cloud';
13
+ let { policy, setPublishState, appPath, customPath = $bindable(), onLatest, savedApp, summary = $bindable(), deploymentMsg = $bindable(), customPathError = $bindable(), pathError = $bindable(), newEditedPath = $bindable(), newPath, hideSecretUrl = false } = $props();
14
+ let dirtyCustomPath = $state(false);
15
+ let path = $state(undefined);
16
+ let dirtyPath = $state(false);
17
+ async function appExists(customPath) {
18
+ return await AppService.customPathExists({
19
+ workspace: $workspaceStore,
20
+ customPath
21
+ });
22
+ }
23
+ let globalWorkspacedRoute = $state(false);
24
+ async function loadGlobalWorkspacedRouteSetting() {
25
+ try {
26
+ const setting = await SettingService.getGlobal({ key: 'app_workspaced_route' });
27
+ globalWorkspacedRoute = setting ?? false;
28
+ }
29
+ catch (error) {
30
+ globalWorkspacedRoute = false;
31
+ }
32
+ }
33
+ loadGlobalWorkspacedRouteSetting();
34
+ let secretUrl = $state(undefined);
35
+ let secretUrlHref = $derived(secretUrl ? computeSecretUrl(secretUrl) : undefined);
36
+ let fullCustomUrl = $derived(`${window.location.origin}${base}/a/${isCloudHosted() || globalWorkspacedRoute ? $workspaceStore + '/' : ''}${customPath}`);
37
+ async function getSecretUrl() {
38
+ secretUrl = await AppService.getPublicSecretOfApp({
39
+ workspace: $workspaceStore,
40
+ path: appPath
41
+ });
42
+ }
43
+ let validateTimeout = undefined;
44
+ async function validateCustomPath(customPath) {
45
+ customPathError = '';
46
+ if (validateTimeout) {
47
+ clearTimeout(validateTimeout);
48
+ }
49
+ validateTimeout = setTimeout(async () => {
50
+ if (!/^[\w-]+(\/[\w-]+)*$/.test(customPath)) {
51
+ customPathError = 'Invalid path';
52
+ }
53
+ else if (customPath !== savedApp?.custom_path && (await appExists(customPath))) {
54
+ customPathError = 'Path already taken';
55
+ }
56
+ else {
57
+ customPathError = '';
58
+ }
59
+ validateTimeout = undefined;
60
+ }, 500);
61
+ }
62
+ $effect(() => {
63
+ ;
64
+ [customPath];
65
+ untrack(() => customPath !== undefined && validateCustomPath(customPath));
66
+ });
67
+ $effect(() => {
68
+ appPath && appPath != '' && secretUrl == undefined && untrack(() => getSecretUrl());
69
+ });
70
+ </script>
71
+
72
+ {#if !onLatest}
73
+ <Alert title="You're not on the latest app version. " type="warning">
74
+ By deploying, you may overwrite changes made by other users. Press 'Deploy' to see diff.
75
+ </Alert>
76
+ <div class="py-2"></div>
77
+ {/if}
78
+ <span class="text-secondary text-sm font-bold">Summary</span>
79
+ <div class="w-full pt-2">
80
+ <!-- svelte-ignore a11y_autofocus -->
81
+ <input
82
+ autofocus
83
+ type="text"
84
+ placeholder="App summary"
85
+ class="text-sm w-full"
86
+ bind:value={summary}
87
+ onkeydown={(e) => {
88
+ e.stopPropagation()
89
+ }}
90
+ onkeyup={() => {
91
+ if (appPath == '' && summary?.length > 0 && !dirtyPath) {
92
+ path?.setName(
93
+ summary
94
+ .toLowerCase()
95
+ .replace(/[^a-z0-9_]/g, '_')
96
+ .replace(/-+/g, '_')
97
+ .replace(/^-|-$/g, '')
98
+ )
99
+ }
100
+ }}
101
+ />
102
+ </div>
103
+ <div class="py-4"></div>
104
+ <span class="text-secondary text-sm font-bold">Deployment message</span>
105
+ <div class="w-full pt-2">
106
+ <!-- svelte-ignore a11y_autofocus -->
107
+ <input
108
+ type="text"
109
+ placeholder="Optional deployment message"
110
+ class="text-sm w-full"
111
+ bind:value={deploymentMsg}
112
+ />
113
+ </div>
114
+ <div class="py-4"></div>
115
+ <span class="text-secondary text-sm font-bold">Path</span>
116
+ <Path
117
+ bind:this={path}
118
+ bind:dirty={dirtyPath}
119
+ bind:error={pathError}
120
+ bind:path={newEditedPath}
121
+ initialPath={newPath}
122
+ namePlaceholder="app"
123
+ kind="app"
124
+ autofocus={false}
125
+ />
126
+
127
+ <div class="py-2"></div>
128
+ <Alert title="App executed on behalf of you">
129
+ A viewer of the app will execute the runnables of the app on behalf of the publisher (you)
130
+ <Tooltip>
131
+ It ensures that all required resources/runnable visible for publisher but not for viewer at time
132
+ of creating the app would prevent the execution of the app. To guarantee tight security, a
133
+ policy is computed at time of deployment of the app which only allow the scripts/flows referred
134
+ to in the app to be called on behalf of. Furthermore, static parameters are not overridable.
135
+ Hence, users will only be able to use the app as intended by the publisher without risk for
136
+ leaking resources not used in the app.
137
+ </Tooltip>
138
+ </Alert>
139
+
140
+ <div class="mt-10"></div>
141
+
142
+ {#if !hideSecretUrl}
143
+ <h2>Public URL</h2>
144
+
145
+ <div class="my-6">
146
+ <div class="flex gap-2 items-center mb-2">
147
+ <Toggle
148
+ options={{
149
+ left: `Require login and read-access`,
150
+ right: `No login required`
151
+ }}
152
+ checked={policy.execution_mode == 'anonymous'}
153
+ on:change={(e) => {
154
+ policy.execution_mode = e.detail ? 'anonymous' : 'publisher'
155
+ setPublishState()
156
+ }}
157
+ disabled={appPath == ''}
158
+ />
159
+ </div>
160
+ {#if appPath == ''}
161
+ <ClipboardPanel content={`Save this app once to get the public secret URL`} size="md" />
162
+ {:else if secretUrlHref}
163
+ <ClipboardPanel content={secretUrlHref} size="md" />
164
+ {:else}<Loader2 class="animate-spin" />
165
+ {/if}
166
+ <div class="text-xs text-secondary mt-1">
167
+ Share this url directly or embed it using an iframe (if requiring login, top-level domain of
168
+ embedding app must be the same as the one of Windmill)
169
+ </div>
170
+
171
+ <div class="mt-4">
172
+ {#if !($userStore?.is_admin || $userStore?.is_super_admin)}
173
+ <Alert type="warning" title="Admin only" size="xs">
174
+ Custom path can only be set by workspace admins
175
+ </Alert>
176
+ <div class="mb-2"></div>
177
+ {/if}
178
+ {#if !$enterpriseLicense}
179
+ <div class="flex text-xs items-center gap-1 text-yellow-500 whitespace-nowrap mb-2">
180
+ <AlertTriangle size={16} />
181
+ EE only <Tooltip>Enterprise Edition only feature</Tooltip>
182
+ </div>
183
+ {/if}
184
+ <Toggle
185
+ on:change={({ detail }) => {
186
+ customPath = detail ? '' : undefined
187
+ if (customPath === undefined) {
188
+ customPathError = ''
189
+ }
190
+ }}
191
+ checked={customPath !== undefined}
192
+ options={{
193
+ right: 'Use a custom URL'
194
+ }}
195
+ disabled={!$enterpriseLicense || !($userStore?.is_admin || $userStore?.is_super_admin)}
196
+ />
197
+
198
+ {#if customPath !== undefined}
199
+ <div class="text-secondary text-sm flex items-center gap-1 w-full justify-between">
200
+ <div>Custom path</div>
201
+ </div>
202
+ <input
203
+ disabled={!($userStore?.is_admin || $userStore?.is_super_admin)}
204
+ type="text"
205
+ autocomplete="off"
206
+ bind:value={customPath}
207
+ class={customPathError === ''
208
+ ? ''
209
+ : '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'}
210
+ oninput={() => {
211
+ dirtyCustomPath = true
212
+ }}
213
+ />
214
+ <div class="text-secondary text-sm flex items-center gap-1 mt-2 w-full justify-between">
215
+ <div>Custom public URL</div>
216
+ </div>
217
+ <ClipboardPanel content={fullCustomUrl} size="md" />
218
+
219
+ <div class="text-red-600 dark:text-red-400 text-2xs mt-1.5"
220
+ >{dirtyCustomPath ? customPathError : ''}
221
+ </div>
222
+ {/if}
223
+ </div>
224
+ </div>
225
+ <Alert type="info" title="Only latest deployed app is publicly available">
226
+ You will still need to deploy the app to make visible the latest changes
227
+ </Alert>
228
+
229
+ <a
230
+ href="https://www.windmill.dev/docs/advanced/external_auth_with_jwt#embed-public-apps-using-your-own-authentification"
231
+ class="mt-4 text-2xs">Embed this app in your own product to be used by your own users</a
232
+ >
233
+ {/if}
@@ -0,0 +1,18 @@
1
+ type $$ComponentProps = {
2
+ policy: any;
3
+ setPublishState: () => void;
4
+ appPath: string;
5
+ customPath: string | undefined;
6
+ onLatest: boolean;
7
+ savedApp: any;
8
+ summary: string;
9
+ deploymentMsg: string | undefined;
10
+ customPathError: string;
11
+ pathError: string;
12
+ newEditedPath: string;
13
+ newPath: string;
14
+ hideSecretUrl: boolean;
15
+ };
16
+ declare const AppEditorHeaderDeploy: import("svelte").Component<$$ComponentProps, {}, "summary" | "customPath" | "deploymentMsg" | "customPathError" | "pathError" | "newEditedPath">;
17
+ type AppEditorHeaderDeploy = ReturnType<typeof AppEditorHeaderDeploy>;
18
+ export default AppEditorHeaderDeploy;