windmill-components 1.537.1 → 1.542.4
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.
- package/package/components/AIProviderPicker.svelte +181 -0
- package/package/components/AIProviderPicker.svelte.d.ts +15 -0
- package/package/components/ArgInfo.svelte +2 -2
- package/package/components/ArgInput.svelte +35 -9
- package/package/components/ArgInput.svelte.d.ts +3 -3
- package/package/components/AssignableTagsInner.svelte +89 -3
- package/package/components/ConcurrentJobsChart.svelte +36 -48
- package/package/components/ConcurrentJobsChart.svelte.d.ts +8 -20
- package/package/components/CustomPopover.svelte.d.ts +1 -1
- package/package/components/DropdownSelect.svelte +26 -0
- package/package/components/DropdownSelect.svelte.d.ts +11 -0
- package/package/components/DropdownV2Inner.svelte +1 -1
- package/package/components/{DynSelect.svelte → DynamicInput.svelte} +47 -15
- package/package/components/DynamicInput.svelte.d.ts +11 -0
- package/package/components/EditableSchemaForm.svelte +119 -95
- package/package/components/EditableSchemaForm.svelte.d.ts +4 -4
- package/package/components/Editor.svelte +86 -93
- package/package/components/Editor.svelte.d.ts +4 -3
- package/package/components/EditorBar.svelte +2 -5
- package/package/components/FlowBuilder.svelte +3 -3
- package/package/components/FlowLogRow.svelte +64 -0
- package/package/components/FlowLogRow.svelte.d.ts +15 -0
- package/package/components/FlowLogViewer.svelte +406 -373
- package/package/components/FlowLogViewer.svelte.d.ts +5 -1
- package/package/components/FlowLogViewerWrapper.svelte +44 -1
- package/package/components/FlowLoopIterationPreview.svelte.d.ts +1 -1
- package/package/components/FlowPreviewContent.svelte.d.ts +1 -1
- package/package/components/FlowStatusViewerInner.svelte +34 -3
- package/package/components/FolderPicker.svelte +1 -1
- package/package/components/InputTransformForm.svelte +20 -10
- package/package/components/JobArgs.svelte +1 -1
- package/package/components/JobLoader.svelte.d.ts +1 -1
- package/package/components/JobStatus.svelte +2 -0
- package/package/components/LogSnippetViewer.svelte +3 -3
- package/package/components/LogSnippetViewer.svelte.d.ts +1 -1
- package/package/components/LogViewer.svelte +87 -71
- package/package/components/LogViewer.svelte.d.ts +1 -0
- package/package/components/Path.svelte +7 -1
- package/package/components/Path.svelte.d.ts +1 -1
- package/package/components/PrefixedInput.svelte +120 -0
- package/package/components/PrefixedInput.svelte.d.ts +8 -0
- package/package/components/QueuePosition.svelte +81 -0
- package/package/components/QueuePosition.svelte.d.ts +8 -0
- package/package/components/ResourceNarrowing.svelte +13 -0
- package/package/components/ResourceNarrowing.svelte.d.ts +6 -0
- package/package/components/ResourceTypePicker.svelte +49 -74
- package/package/components/RunChart.svelte +74 -89
- package/package/components/RunChart.svelte.d.ts +10 -22
- package/package/components/S3FilePicker.svelte +1 -1
- package/package/components/SchemaForm.svelte.d.ts +2 -2
- package/package/components/ScriptBuilder.svelte +2 -1
- package/package/components/ScriptEditor.svelte +4 -3
- package/package/components/ScriptEditor.svelte.d.ts +2 -1
- package/package/components/ServiceLogsInner.svelte +1 -1
- package/package/components/ShareModal.svelte.d.ts +1 -1
- package/package/components/SimpleEditor.svelte +4 -67
- package/package/components/StringTypeNarrowing.svelte +5 -10
- package/package/components/TemplateEditor.svelte +2 -16
- package/package/components/TimeAgo.svelte +1 -1
- package/package/components/TimeAgo.svelte.d.ts +1 -0
- package/package/components/Toggle.svelte +2 -1
- package/package/components/Toggle.svelte.d.ts +2 -1
- package/package/components/WorkerRepl.svelte +1 -1
- package/package/components/apps/components/display/AppNavbarItem.svelte +2 -1
- package/package/components/apps/components/display/table/AppAggridTable.svelte +44 -48
- package/package/components/apps/components/display/table/SyncColumnDefs.svelte +101 -19
- package/package/components/apps/components/display/table/SyncColumnDefs.svelte.d.ts +5 -2
- package/package/components/apps/components/display/table/utils.js +36 -5
- package/package/components/apps/components/inputs/currency/CurrencyInput.svelte +10 -5
- package/package/components/apps/editor/AppEditor.svelte +4 -3
- package/package/components/apps/editor/AppEditorHeader.svelte +0 -1
- package/package/components/apps/editor/GridViewer.svelte.d.ts +11 -4
- package/package/components/apps/editor/SettingsPanel.svelte +2 -2
- package/package/components/apps/editor/componentsPanel/ListItem.svelte +2 -2
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte.d.ts +1 -1
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte.d.ts +1 -1
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte.d.ts +1 -1
- package/package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +26 -3
- package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +1 -1
- package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +13 -5
- package/package/components/apps/svelte-grid/Grid.svelte.d.ts +30 -11
- package/package/components/assets/JobAssetsViewer.svelte +28 -24
- package/package/components/auditLogs/AuditLogsTable.svelte +2 -6
- package/package/components/chartjs-wrappers/Chart.svelte.d.ts +14 -7
- package/package/components/common/OnChange.svelte.d.ts +11 -4
- package/package/components/common/badge/Badge.svelte +9 -2
- package/package/components/common/badge/Badge.svelte.d.ts +2 -1
- package/package/components/common/calendarPicker/CalendarPicker.svelte +5 -1
- package/package/components/common/calendarPicker/CalendarPicker.svelte.d.ts +5 -4
- package/package/components/common/drawer/Disposable.svelte +9 -11
- package/package/components/common/drawer/Drawer.svelte +3 -4
- package/package/components/common/drawer/Drawer.svelte.d.ts +1 -0
- package/package/components/common/menu/MenuItem.svelte.d.ts +2 -2
- package/package/components/common/modal/Modal.svelte.d.ts +1 -1
- package/package/components/common/tabs/TabContent.svelte +2 -7
- package/package/components/common/tabs/TabContent.svelte.d.ts +5 -27
- package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte +9 -3
- package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte.d.ts +1 -0
- package/package/components/common/toggleButton-v2/ToggleButtonMore.svelte +8 -4
- package/package/components/common/toggleButton-v2/ToggleButtonMore.svelte.d.ts +1 -0
- package/package/components/copilot/MetadataGen.svelte +1 -1
- package/package/components/copilot/chat/AIChatManager.svelte.js +24 -102
- package/package/components/copilot/chat/AssistantMessage.svelte +0 -4
- package/package/components/copilot/chat/anthropic.d.ts +15 -0
- package/package/components/copilot/chat/anthropic.js +208 -0
- package/package/components/copilot/chat/api/apiTools.d.ts +2 -2
- package/package/components/copilot/chat/api/apiTools.js +10 -7
- package/package/components/copilot/chat/api/core.d.ts +1 -1
- package/package/components/copilot/chat/api/core.js +7 -2
- package/package/components/copilot/chat/ask/core.d.ts +1 -1
- package/package/components/copilot/chat/ask/core.js +7 -2
- package/package/components/copilot/chat/flow/core.d.ts +1 -1
- package/package/components/copilot/chat/flow/core.js +14 -4
- package/package/components/copilot/chat/monaco-adapter.d.ts +6 -5
- package/package/components/copilot/chat/navigator/core.d.ts +1 -1
- package/package/components/copilot/chat/navigator/core.js +7 -2
- package/package/components/copilot/chat/script/CodeDisplay.svelte +10 -111
- package/package/components/copilot/chat/script/core.d.ts +5 -4
- package/package/components/copilot/chat/script/core.js +131 -19
- package/package/components/copilot/chat/shared.d.ts +7 -7
- package/package/components/copilot/lib.d.ts +29 -8
- package/package/components/copilot/lib.js +199 -24
- package/package/components/flows/content/FlowInput.svelte +5 -5
- package/package/components/flows/content/FlowModuleComponent.svelte +5 -2
- package/package/components/flows/content/FlowModuleEarlyStop.svelte +47 -17
- package/package/components/flows/content/FlowModuleSleep.svelte +4 -1
- package/package/components/flows/content/FlowModuleSuspend.svelte +0 -1
- package/package/components/flows/content/FlowModuleTimeout.svelte +50 -10
- package/package/components/flows/content/FlowModuleTimeout.svelte.d.ts +1 -0
- package/package/components/flows/content/FlowRetries.svelte +108 -3
- package/package/components/flows/content/FlowRetries.svelte.d.ts +3 -2
- package/package/components/flows/flowInfers.js +8 -35
- package/package/components/flows/flowStore.d.ts +45 -1
- package/package/components/flows/flowStore.js +1 -1
- package/package/components/flows/map/FlowJobsMenu.svelte +3 -3
- package/package/components/flows/map/FlowModuleSchemaItem.svelte +61 -54
- package/package/components/flows/map/FlowModuleSchemaItem.svelte.d.ts +1 -1
- package/package/components/flows/map/FlowModuleSchemaItemViewer.svelte +1 -1
- package/package/components/flows/map/InsertModuleButton.svelte +1 -0
- package/package/components/flows/map/InsertModuleInner.svelte +12 -15
- package/package/components/flows/map/InsertModuleInner.svelte.d.ts +10 -9
- package/package/components/flows/propPicker/OutputPickerInner.svelte.d.ts +1 -1
- package/package/components/git_sync/DetectionFlow.svelte +15 -17
- package/package/components/git_sync/GitSyncContext.svelte.js +1 -1
- package/package/components/git_sync/GitSyncRepositoryCard.svelte +0 -1
- package/package/components/graph/graphBuilder.svelte.d.ts +5 -1
- package/package/components/graph/renderers/edges/BaseEdge.svelte +9 -1
- package/package/components/graph/renderers/edges/BaseEdge.svelte.d.ts +4 -1
- package/package/components/graph/renderers/nodes/BranchAllStart.svelte +2 -3
- package/package/components/graph/renderers/nodes/BranchOneStart.svelte +2 -3
- package/package/components/graph/renderers/triggers/TriggerButton.svelte.d.ts +1 -1
- package/package/components/graph/renderers/triggers/TriggersBadge.svelte +3 -1
- package/package/components/graph/renderers/triggers/TriggersWrapper.svelte +34 -24
- package/package/components/graph/renderers/triggers/TriggersWrapper.svelte.d.ts +1 -2
- package/package/components/home/ItemsList.svelte +17 -13
- package/package/components/home/TreeView.svelte +21 -27
- package/package/components/home/TreeView.svelte.d.ts +2 -29
- package/package/components/home/TreeViewRoot.svelte +11 -23
- package/package/components/home/TreeViewRoot.svelte.d.ts +15 -13
- package/package/components/icons/GitIcon.svelte +10 -2
- package/package/components/icons/GitIcon.svelte.d.ts +1 -0
- package/package/components/meltComponents/MeltButton.svelte.d.ts +1 -1
- package/package/components/meltComponents/Popover.svelte +23 -3
- package/package/components/meltComponents/Popover.svelte.d.ts +2 -1
- package/package/components/monacoLanguagesOptions.d.ts +3 -0
- package/package/components/monacoLanguagesOptions.js +109 -0
- package/package/components/propertyPicker/ObjectViewer.svelte +7 -2
- package/package/components/propertyPicker/PropPicker.svelte +1 -1
- package/package/components/propertyPicker/utils.js +14 -7
- package/package/components/runs/JobRunsPreview.svelte +212 -177
- package/package/components/runs/JobsLoader.svelte +2 -2
- package/package/components/runs/JobsLoader.svelte.d.ts +1 -1
- package/package/components/runs/NoWorkerWithTagWarning.svelte +18 -5
- package/package/components/runs/RunBadges.svelte +100 -0
- package/package/components/runs/RunBadges.svelte.d.ts +12 -0
- package/package/components/runs/RunLabels.svelte +86 -0
- package/package/components/runs/RunLabels.svelte.d.ts +10 -0
- package/package/components/runs/RunOption.svelte +20 -0
- package/package/components/runs/RunOption.svelte.d.ts +10 -0
- package/package/components/runs/RunRow.svelte +239 -151
- package/package/components/runs/RunRow.svelte.d.ts +12 -9
- package/package/components/runs/RunsBatchActionsDropdown.svelte +13 -17
- package/package/components/runs/RunsBatchActionsDropdown.svelte.d.ts +5 -18
- package/package/components/runs/RunsFilter.svelte +369 -243
- package/package/components/runs/RunsFilter.svelte.d.ts +2 -0
- package/package/components/runs/RunsQueue.svelte +96 -25
- package/package/components/runs/RunsQueue.svelte.d.ts +7 -21
- package/package/components/runs/RunsTable.svelte +62 -71
- package/package/components/runs/RunsTable.svelte.d.ts +2 -1
- package/package/components/runs/runs-grid.css +95 -0
- package/package/components/schema/EditableSchemaDrawer.svelte +12 -12
- package/package/components/schema/FlowPropertyEditor.svelte +197 -206
- package/package/components/schema/PropertyEditor.svelte +33 -35
- package/package/components/schema/SchemaFormDND.svelte.d.ts +2 -2
- package/package/components/search/GlobalSearchModal.svelte +8 -1
- package/package/components/select/DraggableTags.svelte.d.ts +17 -7
- package/package/components/select/MultiSelect.svelte.d.ts +21 -11
- package/package/components/select/Select.svelte +2 -1
- package/package/components/select/Select.svelte.d.ts +25 -13
- package/package/components/select/SelectDropdown.svelte.d.ts +14 -7
- package/package/components/settings/TokenDisplay.svelte +1 -1
- package/package/components/sidebar/OperatorMenu.svelte +5 -0
- package/package/components/sidebar/SidebarContent.svelte +48 -2
- package/package/components/sidebar/WorkspaceMenu.svelte +116 -17
- package/package/components/toast.js +6 -3
- package/package/components/triggers/AddTriggersButton.svelte +7 -6
- package/package/components/triggers/CaptureWrapper.svelte +19 -3
- package/package/components/triggers/TriggerLabel.svelte +8 -0
- package/package/components/triggers/TriggerTokens.svelte +1 -1
- package/package/components/triggers/TriggersEditor.svelte +9 -5
- package/package/components/triggers/TriggersTable.svelte +2 -2
- package/package/components/triggers/TriggersWrapper.svelte +16 -5
- package/package/components/triggers/TriggersWrapper.svelte.d.ts +3 -19
- package/package/components/{details/EmailTriggerCaptures.svelte → triggers/email/DefaultEmailCapture.svelte} +5 -5
- package/package/components/{details/EmailTriggerCaptures.svelte.d.ts → triggers/email/DefaultEmailCapture.svelte.d.ts} +4 -4
- package/package/components/{details/EmailTriggerConfigSection.svelte → triggers/email/DefaultEmailConfigSection.svelte} +24 -14
- package/package/components/triggers/email/DefaultEmailConfigSection.svelte.d.ts +13 -0
- package/package/components/triggers/email/DefaultEmailPanel.svelte +71 -0
- package/package/components/triggers/email/DefaultEmailPanel.svelte.d.ts +11 -0
- package/package/components/triggers/email/EmailCapture.svelte +39 -0
- package/package/components/triggers/email/EmailCapture.svelte.d.ts +43 -0
- package/package/components/triggers/email/EmailTriggerEditor.svelte +20 -0
- package/package/components/triggers/email/EmailTriggerEditor.svelte.d.ts +11 -0
- package/package/components/triggers/email/EmailTriggerEditorConfigSection.svelte +133 -0
- package/package/components/triggers/email/EmailTriggerEditorConfigSection.svelte.d.ts +14 -0
- package/package/components/triggers/email/EmailTriggerEditorInner.svelte +335 -0
- package/package/components/triggers/email/EmailTriggerEditorInner.svelte.d.ts +22 -0
- package/package/components/triggers/email/EmailTriggerPanel.svelte +61 -0
- package/package/components/triggers/email/EmailTriggerPanel.svelte.d.ts +14 -0
- package/package/components/triggers/email/utils.d.ts +4 -0
- package/package/components/triggers/email/utils.js +52 -0
- package/package/components/triggers/http/RouteEditorConfigSection.svelte +1 -1
- package/package/components/triggers/http/utils.js +1 -1
- package/package/components/triggers/triggers.svelte.d.ts +1 -0
- package/package/components/triggers/triggers.svelte.js +24 -2
- package/package/components/triggers/utils.js +19 -5
- package/package/components/triggers.d.ts +1 -1
- package/package/components/triggers.js +2 -0
- package/package/components/wizards/AgGridWizard.svelte +85 -80
- package/package/components/workspaceSettings/AISettings.svelte +74 -22
- package/package/components/workspaceSettings/AISettings.svelte.d.ts +2 -1
- package/package/components/workspaceSettings/CreateWorkspace.svelte +395 -0
- package/package/components/workspaceSettings/CreateWorkspace.svelte.d.ts +6 -0
- package/package/components/workspaceSettings/DucklakeSettings.svelte +3 -1
- package/package/components/workspaceSettings/GitSyncFilterSettings.svelte +1 -1
- package/package/components/workspaceSettings/StorageSettings.svelte +69 -48
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +142 -3
- package/package/gen/schemas.gen.js +144 -3
- package/package/gen/services.gen.d.ts +129 -1
- package/package/gen/services.gen.js +267 -1
- package/package/gen/types.gen.d.ts +434 -8
- package/package/hubPaths.json +4 -2
- package/package/infer.js +1 -1
- package/package/keyboardChain.d.ts +5 -0
- package/package/keyboardChain.js +40 -0
- package/package/services/JobManager.js +2 -2
- package/package/stores.d.ts +3 -1
- package/package/stores.js +8 -5
- package/package/utils/workspaceHierarchy.d.ts +27 -0
- package/package/utils/workspaceHierarchy.js +101 -0
- package/package/utils.d.ts +6 -3
- package/package/utils.js +30 -15
- package/package/workspace_settings.js +2 -3
- package/package.json +9 -11
- package/package/components/DynSelect.svelte.d.ts +0 -11
- package/package/components/ObjectTypeNarrowing.svelte +0 -18
- package/package/components/ObjectTypeNarrowing.svelte.d.ts +0 -22
- package/package/components/details/DetailPageTriggerPanel.svelte +0 -121
- package/package/components/details/DetailPageTriggerPanel.svelte.d.ts +0 -20
- package/package/components/details/EmailTriggerConfigSection.svelte.d.ts +0 -12
- package/package/components/details/EmailTriggerPanel.svelte +0 -76
- package/package/components/details/EmailTriggerPanel.svelte.d.ts +0 -26
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
<script lang="ts">import Label from '
|
|
2
|
-
import { workspaceStore } from '
|
|
1
|
+
<script lang="ts">import Label from '../../Label.svelte';
|
|
2
|
+
import { workspaceStore } from '../../../stores';
|
|
3
3
|
import { base32 } from 'rfc4648';
|
|
4
|
-
import ClipboardPanel from '
|
|
5
|
-
import CaptureSection, {} from '../
|
|
4
|
+
import ClipboardPanel from '../../details/ClipboardPanel.svelte';
|
|
5
|
+
import CaptureSection, {} from '../CaptureSection.svelte';
|
|
6
6
|
import { fade } from 'svelte/transition';
|
|
7
7
|
let { isFlow = false, path, emailDomain = null, captureInfo = undefined, hasPreprocessor = false, captureLoading = false } = $props();
|
|
8
8
|
function getCaptureEmail() {
|
|
@@ -20,7 +20,7 @@ let captureEmail = $derived(getCaptureEmail());
|
|
|
20
20
|
|
|
21
21
|
{#if captureInfo}
|
|
22
22
|
<CaptureSection
|
|
23
|
-
captureType="
|
|
23
|
+
captureType="default_email"
|
|
24
24
|
disabled={false}
|
|
25
25
|
{captureInfo}
|
|
26
26
|
{captureLoading}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type CaptureInfo } from '../
|
|
1
|
+
import { type CaptureInfo } from '../CaptureSection.svelte';
|
|
2
2
|
interface Props {
|
|
3
3
|
isFlow?: boolean;
|
|
4
4
|
path: string;
|
|
@@ -20,7 +20,7 @@ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> =
|
|
|
20
20
|
};
|
|
21
21
|
z_$$bindings?: Bindings;
|
|
22
22
|
}
|
|
23
|
-
declare const
|
|
23
|
+
declare const DefaultEmailCapture: $$__sveltets_2_IsomorphicComponent<Props, {
|
|
24
24
|
captureToggle: CustomEvent<{
|
|
25
25
|
disableOnly?: boolean;
|
|
26
26
|
}>;
|
|
@@ -38,5 +38,5 @@ declare const EmailTriggerCaptures: $$__sveltets_2_IsomorphicComponent<Props, {
|
|
|
38
38
|
} & {
|
|
39
39
|
[evt: string]: CustomEvent<any>;
|
|
40
40
|
}, {}, {}, "">;
|
|
41
|
-
type
|
|
42
|
-
export default
|
|
41
|
+
type DefaultEmailCapture = InstanceType<typeof DefaultEmailCapture>;
|
|
42
|
+
export default DefaultEmailCapture;
|
|
@@ -1,17 +1,18 @@
|
|
|
1
|
-
<script lang="ts">import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import Tooltip from '../Tooltip.svelte';
|
|
1
|
+
<script lang="ts">import Button from '../../common/button/Button.svelte';
|
|
2
|
+
import Label from '../../Label.svelte';
|
|
3
|
+
import Tooltip from '../../Tooltip.svelte';
|
|
5
4
|
import { AlertTriangle } from 'lucide-svelte';
|
|
6
|
-
import { workspaceStore } from '
|
|
7
|
-
import { SCRIPT_VIEW_SHOW_CREATE_TOKEN_BUTTON } from '
|
|
8
|
-
import ToggleButton from '
|
|
9
|
-
import ToggleButtonGroup from '
|
|
10
|
-
import ClipboardPanel from '
|
|
11
|
-
import Alert from '
|
|
5
|
+
import { workspaceStore } from '../../../stores';
|
|
6
|
+
import { SCRIPT_VIEW_SHOW_CREATE_TOKEN_BUTTON } from '../../../consts';
|
|
7
|
+
import ToggleButton from '../../common/toggleButton-v2/ToggleButton.svelte';
|
|
8
|
+
import ToggleButtonGroup from '../../common/toggleButton-v2/ToggleButtonGroup.svelte';
|
|
9
|
+
import ClipboardPanel from '../../details/ClipboardPanel.svelte';
|
|
10
|
+
import Alert from '../../common/alert/Alert.svelte';
|
|
12
11
|
import { base32 } from 'rfc4648';
|
|
12
|
+
import { emptyString } from '../../../utils';
|
|
13
|
+
import UserSettings from '../../UserSettings.svelte';
|
|
13
14
|
let requestType = $state('path');
|
|
14
|
-
function emailAddress(
|
|
15
|
+
function emailAddress() {
|
|
15
16
|
const pathOrHash = requestType === 'hash' ? hash : path.replaceAll('/', '.');
|
|
16
17
|
const plainPrefix = `${$workspaceStore}+${(requestType === 'hash' ? 'hash.' : isFlow ? 'flow.' : '') + pathOrHash}+${token}`;
|
|
17
18
|
const encodedPrefix = base32
|
|
@@ -22,8 +23,8 @@ function emailAddress(requestType, path, hash, isFlow, token) {
|
|
|
22
23
|
return `${pathOrHash}+${encodedPrefix}@${emailDomain}`;
|
|
23
24
|
}
|
|
24
25
|
let { token = $bindable(''), isFlow = false, hash = undefined, path, userSettings, emailDomain = null, email = $bindable('') } = $props();
|
|
25
|
-
|
|
26
|
-
email = emailAddress(
|
|
26
|
+
$effect(() => {
|
|
27
|
+
email = emailAddress();
|
|
27
28
|
});
|
|
28
29
|
</script>
|
|
29
30
|
|
|
@@ -76,7 +77,16 @@ run(() => {
|
|
|
76
77
|
{#key requestType}
|
|
77
78
|
{#key token}
|
|
78
79
|
<Label label="Email address">
|
|
79
|
-
|
|
80
|
+
{#if !emptyString(token)}
|
|
81
|
+
<ClipboardPanel content={email} />
|
|
82
|
+
{:else}
|
|
83
|
+
<input
|
|
84
|
+
type="text"
|
|
85
|
+
disabled
|
|
86
|
+
value="Create a token first"
|
|
87
|
+
class="!text-xs !text-red-400"
|
|
88
|
+
/>
|
|
89
|
+
{/if}
|
|
80
90
|
</Label>
|
|
81
91
|
{/key}
|
|
82
92
|
{/key}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import UserSettings from '../../UserSettings.svelte';
|
|
2
|
+
interface Props {
|
|
3
|
+
token?: string;
|
|
4
|
+
isFlow?: boolean;
|
|
5
|
+
hash?: string | undefined;
|
|
6
|
+
path: string;
|
|
7
|
+
userSettings: UserSettings;
|
|
8
|
+
emailDomain?: string | null;
|
|
9
|
+
email?: string;
|
|
10
|
+
}
|
|
11
|
+
declare const DefaultEmailConfigSection: import("svelte").Component<Props, {}, "email" | "token">;
|
|
12
|
+
type DefaultEmailConfigSection = ReturnType<typeof DefaultEmailConfigSection>;
|
|
13
|
+
export default DefaultEmailConfigSection;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
<script lang="ts">import { enterpriseLicense, userStore, workspaceStore } from '../../../stores';
|
|
2
|
+
import UserSettings from '../../UserSettings.svelte';
|
|
3
|
+
import { generateRandomString } from '../../../utils';
|
|
4
|
+
import HighlightTheme from '../../HighlightTheme.svelte';
|
|
5
|
+
import Alert from '../../common/alert/Alert.svelte';
|
|
6
|
+
import Skeleton from '../../common/skeleton/Skeleton.svelte';
|
|
7
|
+
import TriggerTokens from '../TriggerTokens.svelte';
|
|
8
|
+
import Description from '../../Description.svelte';
|
|
9
|
+
import Section from '../../Section.svelte';
|
|
10
|
+
import DefaultEmailConfigSection from './DefaultEmailConfigSection.svelte';
|
|
11
|
+
import { getEmailDomain } from './utils';
|
|
12
|
+
let userSettings = $state(undefined);
|
|
13
|
+
let { token = $bindable(), scopes = [], isFlow = false, hash = undefined, path, onEmailDomain } = $props();
|
|
14
|
+
let emailDomain = $state(null);
|
|
15
|
+
let triggerTokens = $state(undefined);
|
|
16
|
+
let loading = $state(true);
|
|
17
|
+
getEmailDomain().then((domain) => {
|
|
18
|
+
emailDomain = domain;
|
|
19
|
+
loading = false;
|
|
20
|
+
});
|
|
21
|
+
$effect(() => {
|
|
22
|
+
if (emailDomain) {
|
|
23
|
+
onEmailDomain(emailDomain);
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
</script>
|
|
27
|
+
|
|
28
|
+
<HighlightTheme />
|
|
29
|
+
|
|
30
|
+
<UserSettings
|
|
31
|
+
bind:this={userSettings}
|
|
32
|
+
on:tokenCreated={(e) => {
|
|
33
|
+
token = e.detail
|
|
34
|
+
triggerTokens?.listTokens()
|
|
35
|
+
}}
|
|
36
|
+
newTokenWorkspace={$workspaceStore}
|
|
37
|
+
newTokenLabel={`email-${$userStore?.username ?? 'superadmin'}-${generateRandomString(4)}`}
|
|
38
|
+
{scopes}
|
|
39
|
+
/>
|
|
40
|
+
|
|
41
|
+
<Section label="Default email trigger" class="flex flex-col gap-4">
|
|
42
|
+
<Description link="https://www.windmill.dev/docs/advanced/email_triggers">
|
|
43
|
+
Default email trigger is a partially fixed email address that can be used to trigger a script or
|
|
44
|
+
flow. The email address is composed of the encoded workspace and script or flow path as well as
|
|
45
|
+
the token.
|
|
46
|
+
</Description>
|
|
47
|
+
{#if loading}
|
|
48
|
+
<Skeleton layout={[[18]]} />
|
|
49
|
+
{:else}
|
|
50
|
+
{#if emailDomain}
|
|
51
|
+
<DefaultEmailConfigSection {hash} {token} {path} {isFlow} {userSettings} {emailDomain} />
|
|
52
|
+
{:else}
|
|
53
|
+
<div>
|
|
54
|
+
<Alert title="Email triggers are disabled" size="xs" type="warning">
|
|
55
|
+
Ask an instance superadmin to setup the instance for email triggering (<a
|
|
56
|
+
target="_blank"
|
|
57
|
+
href="https://windmill.dev/docs/advanced/email_triggers">docs</a
|
|
58
|
+
>) and to set the email domain in the instance settings.
|
|
59
|
+
</Alert>
|
|
60
|
+
</div>
|
|
61
|
+
{/if}
|
|
62
|
+
|
|
63
|
+
{#if !$enterpriseLicense}
|
|
64
|
+
<Alert title="Community Edition limitations" type="warning" size="xs">
|
|
65
|
+
Email triggers on Windmill Community Edition are limited to 100 emails per day.
|
|
66
|
+
</Alert>
|
|
67
|
+
{/if}
|
|
68
|
+
|
|
69
|
+
<TriggerTokens bind:this={triggerTokens} {isFlow} {path} labelPrefix="email" />
|
|
70
|
+
{/if}
|
|
71
|
+
</Section>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
interface Props {
|
|
2
|
+
token: string;
|
|
3
|
+
scopes?: string[];
|
|
4
|
+
isFlow?: boolean;
|
|
5
|
+
hash?: string | undefined;
|
|
6
|
+
path: string;
|
|
7
|
+
onEmailDomain: (domain: string) => void;
|
|
8
|
+
}
|
|
9
|
+
declare const DefaultEmailPanel: import("svelte").Component<Props, {}, "token">;
|
|
10
|
+
type DefaultEmailPanel = ReturnType<typeof DefaultEmailPanel>;
|
|
11
|
+
export default DefaultEmailPanel;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
<script lang="ts">import { workspaceStore } from '../../../stores';
|
|
2
|
+
import Label from '../../Label.svelte';
|
|
3
|
+
import CaptureSection from '../CaptureSection.svelte';
|
|
4
|
+
import { fade } from 'svelte/transition';
|
|
5
|
+
import ClipboardPanel from '../../details/ClipboardPanel.svelte';
|
|
6
|
+
let { local_part, emailDomain = null, captureInfo = undefined, isValid = undefined, hasPreprocessor = false, isFlow = false, captureLoading = false } = $props();
|
|
7
|
+
let captureEmail = $derived(`capture+${$workspaceStore}-${local_part}@${emailDomain}`);
|
|
8
|
+
</script>
|
|
9
|
+
|
|
10
|
+
{#if captureInfo}
|
|
11
|
+
<CaptureSection
|
|
12
|
+
captureType="email"
|
|
13
|
+
disabled={isValid === false}
|
|
14
|
+
{captureInfo}
|
|
15
|
+
{captureLoading}
|
|
16
|
+
on:captureToggle
|
|
17
|
+
on:applyArgs
|
|
18
|
+
on:updateSchema
|
|
19
|
+
on:addPreprocessor
|
|
20
|
+
on:testWithArgs
|
|
21
|
+
{hasPreprocessor}
|
|
22
|
+
{isFlow}
|
|
23
|
+
>
|
|
24
|
+
{#snippet description()}
|
|
25
|
+
{#if captureInfo.active}
|
|
26
|
+
<p in:fade={{ duration: 100, delay: 50 }} out:fade={{ duration: 50 }}>
|
|
27
|
+
Send an email to the test address below to simulate an email trigger.
|
|
28
|
+
</p>
|
|
29
|
+
{:else}
|
|
30
|
+
<p in:fade={{ duration: 100, delay: 50 }} out:fade={{ duration: 50 }}>
|
|
31
|
+
Start capturing to listen to email events on this test address.
|
|
32
|
+
</p>
|
|
33
|
+
{/if}
|
|
34
|
+
{/snippet}
|
|
35
|
+
<Label label="Test email address" disabled={!captureInfo.active}>
|
|
36
|
+
<ClipboardPanel content={captureEmail} disabled={!captureInfo.active} />
|
|
37
|
+
</Label>
|
|
38
|
+
</CaptureSection>
|
|
39
|
+
{/if}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { CaptureInfo } from '../CaptureSection.svelte';
|
|
2
|
+
interface Props {
|
|
3
|
+
local_part: string | undefined;
|
|
4
|
+
emailDomain: string | null;
|
|
5
|
+
captureInfo?: CaptureInfo | undefined;
|
|
6
|
+
isValid?: boolean | undefined;
|
|
7
|
+
hasPreprocessor?: boolean;
|
|
8
|
+
isFlow?: boolean;
|
|
9
|
+
captureLoading?: boolean;
|
|
10
|
+
}
|
|
11
|
+
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
12
|
+
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
13
|
+
$$bindings?: Bindings;
|
|
14
|
+
} & Exports;
|
|
15
|
+
(internal: unknown, props: Props & {
|
|
16
|
+
$$events?: Events;
|
|
17
|
+
$$slots?: Slots;
|
|
18
|
+
}): Exports & {
|
|
19
|
+
$set?: any;
|
|
20
|
+
$on?: any;
|
|
21
|
+
};
|
|
22
|
+
z_$$bindings?: Bindings;
|
|
23
|
+
}
|
|
24
|
+
declare const EmailCapture: $$__sveltets_2_IsomorphicComponent<Props, {
|
|
25
|
+
captureToggle: CustomEvent<{
|
|
26
|
+
disableOnly?: boolean;
|
|
27
|
+
}>;
|
|
28
|
+
applyArgs: CustomEvent<{
|
|
29
|
+
kind: "main" | "preprocessor";
|
|
30
|
+
args: Record<string, any>;
|
|
31
|
+
}>;
|
|
32
|
+
updateSchema: CustomEvent<{
|
|
33
|
+
payloadData: Record<string, any>;
|
|
34
|
+
redirect: boolean;
|
|
35
|
+
args?: boolean;
|
|
36
|
+
}>;
|
|
37
|
+
addPreprocessor: CustomEvent<null>;
|
|
38
|
+
testWithArgs: CustomEvent<Record<string, any>>;
|
|
39
|
+
} & {
|
|
40
|
+
[evt: string]: CustomEvent<any>;
|
|
41
|
+
}, {}, {}, "">;
|
|
42
|
+
type EmailCapture = InstanceType<typeof EmailCapture>;
|
|
43
|
+
export default EmailCapture;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<script lang="ts">import { tick } from 'svelte';
|
|
2
|
+
import EmailTriggerEditorInner from './EmailTriggerEditorInner.svelte';
|
|
3
|
+
let { onUpdate = undefined, customSaveBehavior } = $props();
|
|
4
|
+
let open = $state(false);
|
|
5
|
+
export async function openEdit(ePath, isFlow) {
|
|
6
|
+
open = true;
|
|
7
|
+
await tick();
|
|
8
|
+
drawer?.openEdit(ePath, isFlow);
|
|
9
|
+
}
|
|
10
|
+
export async function openNew(is_flow, initial_script_path, defaultValues) {
|
|
11
|
+
open = true;
|
|
12
|
+
await tick();
|
|
13
|
+
drawer?.openNew(is_flow, initial_script_path, defaultValues);
|
|
14
|
+
}
|
|
15
|
+
let drawer = $state();
|
|
16
|
+
</script>
|
|
17
|
+
|
|
18
|
+
{#if open}
|
|
19
|
+
<EmailTriggerEditorInner {customSaveBehavior} {onUpdate} bind:this={drawer} />
|
|
20
|
+
{/if}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { EditEmailTrigger, EmailTrigger } from '../../../gen';
|
|
2
|
+
interface Props {
|
|
3
|
+
onUpdate?: (cfg?: Record<string, any>) => void;
|
|
4
|
+
customSaveBehavior?: (cfg: EmailTrigger | EditEmailTrigger) => void;
|
|
5
|
+
}
|
|
6
|
+
declare const EmailTriggerEditor: import("svelte").Component<Props, {
|
|
7
|
+
openEdit: (ePath: string, isFlow: boolean) => Promise<void>;
|
|
8
|
+
openNew: (is_flow: boolean, initial_script_path?: string, defaultValues?: Record<string, any>) => Promise<void>;
|
|
9
|
+
}, "">;
|
|
10
|
+
type EmailTriggerEditor = ReturnType<typeof EmailTriggerEditor>;
|
|
11
|
+
export default EmailTriggerEditor;
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
<script lang="ts">import { Alert } from '../../common';
|
|
2
|
+
import Required from '../../Required.svelte';
|
|
3
|
+
import Section from '../../Section.svelte';
|
|
4
|
+
import { userStore, workspaceStore } from '../../../stores';
|
|
5
|
+
// import { page } from '$app/stores'
|
|
6
|
+
import { getEmailAddress, getEmailDomain } from './utils';
|
|
7
|
+
import { isCloudHosted } from '../../../cloud';
|
|
8
|
+
import Toggle from '../../Toggle.svelte';
|
|
9
|
+
import TestingBadge from '../testingBadge.svelte';
|
|
10
|
+
import { untrack } from 'svelte';
|
|
11
|
+
import { EmailTriggerService } from '../../../gen';
|
|
12
|
+
import ClipboardPanel from '../../details/ClipboardPanel.svelte';
|
|
13
|
+
let { initialTriggerPath = undefined, dirtyLocalPart = $bindable(false), local_part = $bindable(), can_write = false, headless = false, workspaced_local_part = $bindable(false), isValid = $bindable(false), isDraftOnly = true, showTestingBadge = false } = $props();
|
|
14
|
+
let validateTimeout = undefined;
|
|
15
|
+
let addressError = $state('');
|
|
16
|
+
async function validateEmailAddress(localPart, workspaced_local_part) {
|
|
17
|
+
if (validateTimeout) {
|
|
18
|
+
clearTimeout(validateTimeout);
|
|
19
|
+
}
|
|
20
|
+
validateTimeout = setTimeout(async () => {
|
|
21
|
+
if (!localPart || !/^[a-z0-9._]{1,64}$/.test(localPart)) {
|
|
22
|
+
addressError =
|
|
23
|
+
'Local part not valid, only accepts lowercase alphanumeric characters, dots and underscores, and must be between 1 and 64 characters';
|
|
24
|
+
}
|
|
25
|
+
else if (await emailTriggerExists(localPart, workspaced_local_part)) {
|
|
26
|
+
addressError = 'Email address already taken';
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
addressError = '';
|
|
30
|
+
}
|
|
31
|
+
validateTimeout = undefined;
|
|
32
|
+
}, 500);
|
|
33
|
+
}
|
|
34
|
+
async function emailTriggerExists(local_part, workspaced_local_part) {
|
|
35
|
+
return await EmailTriggerService.existsEmailLocalPart({
|
|
36
|
+
workspace: $workspaceStore,
|
|
37
|
+
requestBody: {
|
|
38
|
+
local_part,
|
|
39
|
+
trigger_path: initialTriggerPath,
|
|
40
|
+
workspaced_local_part: workspaced_local_part
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
$effect.pre(() => {
|
|
45
|
+
;
|
|
46
|
+
[local_part, workspaced_local_part];
|
|
47
|
+
untrack(() => {
|
|
48
|
+
validateEmailAddress(local_part, workspaced_local_part);
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
$effect.pre(() => {
|
|
52
|
+
isValid = addressError === '';
|
|
53
|
+
});
|
|
54
|
+
let emailDomain = $state(null);
|
|
55
|
+
getEmailDomain().then((domain) => {
|
|
56
|
+
emailDomain = domain;
|
|
57
|
+
});
|
|
58
|
+
let fullEmailAddress = $derived(getEmailAddress(local_part, workspaced_local_part, $workspaceStore ?? '', emailDomain ?? ''));
|
|
59
|
+
$effect.pre(() => {
|
|
60
|
+
local_part === undefined && (local_part = '');
|
|
61
|
+
});
|
|
62
|
+
let userIsAdmin = $derived($userStore?.is_admin || $userStore?.is_super_admin);
|
|
63
|
+
let userCanEditConfig = $derived(userIsAdmin || isDraftOnly); // User can edit config if they are admin or if the trigger is a draft which will not be saved
|
|
64
|
+
</script>
|
|
65
|
+
|
|
66
|
+
<div>
|
|
67
|
+
<Section label="Email" {headless}>
|
|
68
|
+
{#snippet header()}
|
|
69
|
+
{#if showTestingBadge}
|
|
70
|
+
<TestingBadge />
|
|
71
|
+
{/if}
|
|
72
|
+
{/snippet}
|
|
73
|
+
{#if !userCanEditConfig && isDraftOnly}
|
|
74
|
+
<Alert type="info" title="Admin only" collapsible size="xs">
|
|
75
|
+
Email triggers can only be edited by workspace admins
|
|
76
|
+
</Alert>
|
|
77
|
+
<div class="my-2"></div>
|
|
78
|
+
{/if}
|
|
79
|
+
<div class="flex flex-col w-full gap-4">
|
|
80
|
+
<label class="block grow w-full">
|
|
81
|
+
<div class="flex flex-col gap-1">
|
|
82
|
+
<div class="text-secondary text-sm flex items-center gap-1 w-full justify-between">
|
|
83
|
+
<div>
|
|
84
|
+
Local part
|
|
85
|
+
<Required required={true} />
|
|
86
|
+
</div>
|
|
87
|
+
</div>
|
|
88
|
+
<!-- svelte-ignore a11y_autofocus -->
|
|
89
|
+
<input
|
|
90
|
+
type="text"
|
|
91
|
+
autocomplete="off"
|
|
92
|
+
bind:value={local_part}
|
|
93
|
+
disabled={!userCanEditConfig || !can_write}
|
|
94
|
+
class={addressError === ''
|
|
95
|
+
? ''
|
|
96
|
+
: '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'}
|
|
97
|
+
oninput={() => {
|
|
98
|
+
dirtyLocalPart = true
|
|
99
|
+
}}
|
|
100
|
+
/>
|
|
101
|
+
</div>
|
|
102
|
+
</label>
|
|
103
|
+
|
|
104
|
+
<div class="flex flex-col w-full">
|
|
105
|
+
<ClipboardPanel content={fullEmailAddress} />
|
|
106
|
+
|
|
107
|
+
<div class="text-red-600 dark:text-red-400 text-2xs mt-1.5"
|
|
108
|
+
>{dirtyLocalPart ? addressError : ''}</div
|
|
109
|
+
>
|
|
110
|
+
{#if !isCloudHosted()}
|
|
111
|
+
<div class="mt-1">
|
|
112
|
+
<Toggle
|
|
113
|
+
size="sm"
|
|
114
|
+
checked={workspaced_local_part}
|
|
115
|
+
disabled={!can_write || !userCanEditConfig}
|
|
116
|
+
on:change={() => {
|
|
117
|
+
workspaced_local_part = !workspaced_local_part
|
|
118
|
+
dirtyLocalPart = true
|
|
119
|
+
}}
|
|
120
|
+
options={{
|
|
121
|
+
right: 'Prefix with workspace',
|
|
122
|
+
rightTooltip:
|
|
123
|
+
'Prefixes the email address with the workspace ID (e.g., ${workspace_id}-${local_part}@). Note: deploying the email trigger to another workspace updates the email address workspace prefix accordingly.',
|
|
124
|
+
rightDocumentationLink:
|
|
125
|
+
'https://www.windmill.dev/docs/advanced/email_triggers#workspace-prefix'
|
|
126
|
+
}}
|
|
127
|
+
/>
|
|
128
|
+
</div>
|
|
129
|
+
{/if}
|
|
130
|
+
</div>
|
|
131
|
+
</div>
|
|
132
|
+
</Section>
|
|
133
|
+
</div>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
interface Props {
|
|
2
|
+
initialTriggerPath?: string | undefined;
|
|
3
|
+
dirtyLocalPart?: boolean;
|
|
4
|
+
local_part: string | undefined;
|
|
5
|
+
can_write?: boolean;
|
|
6
|
+
headless?: boolean;
|
|
7
|
+
workspaced_local_part?: boolean;
|
|
8
|
+
isValid?: boolean;
|
|
9
|
+
isDraftOnly?: boolean;
|
|
10
|
+
showTestingBadge?: boolean;
|
|
11
|
+
}
|
|
12
|
+
declare const EmailTriggerEditorConfigSection: import("svelte").Component<Props, {}, "local_part" | "workspaced_local_part" | "isValid" | "dirtyLocalPart">;
|
|
13
|
+
type EmailTriggerEditorConfigSection = ReturnType<typeof EmailTriggerEditorConfigSection>;
|
|
14
|
+
export default EmailTriggerEditorConfigSection;
|