windmill-components 1.394.8 → 1.405.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.
- package/package/ata/edgeCases.d.ts +0 -1
- package/package/ata/edgeCases.js +2 -8
- package/package/ata/index.js +4 -3
- package/package/common.d.ts +1 -1
- package/package/common.js +2 -2
- package/package/components/ApiConnectForm.svelte +33 -7
- package/package/components/ArgInput.svelte +4 -2
- package/package/components/CenteredModal.svelte +4 -1
- package/package/components/CenteredModal.svelte.d.ts +1 -0
- package/package/components/DateInput.svelte +2 -0
- package/package/components/DateInput.svelte.d.ts +1 -0
- package/package/components/DefaultScripts.svelte +8 -3
- package/package/components/DefaultScripts.svelte.d.ts +5 -1
- package/package/components/DefaultScriptsInner.svelte +16 -7
- package/package/components/DefaultScriptsInner.svelte.d.ts +3 -1
- package/package/components/Dev.svelte +68 -11
- package/package/components/DropdownV2.svelte.d.ts +3 -3
- package/package/components/DropdownV2Inner.svelte.d.ts +3 -3
- package/package/components/EditableSchemaForm.svelte +1 -0
- package/package/components/Editor.svelte +3 -2
- package/package/components/Editor.svelte.d.ts +1 -1
- package/package/components/ExecutionDuration.svelte +44 -0
- package/package/components/ExecutionDuration.svelte.d.ts +24 -0
- package/package/components/FlowBuilder.svelte +20 -12
- package/package/components/FlowGraphViewer.svelte +9 -2
- package/package/components/FlowGraphViewerStep.svelte +23 -10
- package/package/components/FlowJobResult.svelte +0 -1
- package/package/components/FlowStatusViewerInner.svelte +17 -4
- package/package/components/FlowTimeline.svelte +3 -3
- package/package/components/HighlightCode.svelte +3 -0
- package/package/components/IconedResourceType.svelte +17 -10
- package/package/components/IconedResourceType.svelte.d.ts +2 -0
- package/package/components/IdEditorInput.svelte +0 -1
- package/package/components/InstanceSettings.svelte +247 -129
- package/package/components/InstanceSettings.svelte.d.ts +2 -0
- package/package/components/JobArgs.svelte +3 -1
- package/package/components/LightweightArgInput.svelte +35 -10
- package/package/components/LightweightArgInput.svelte.d.ts +1 -0
- package/package/components/LightweightObjectResourceInput.svelte +2 -0
- package/package/components/LightweightObjectResourceInput.svelte.d.ts +1 -0
- package/package/components/LightweightSchemaForm.svelte +2 -0
- package/package/components/LightweightSchemaForm.svelte.d.ts +1 -0
- package/package/components/Login.svelte +10 -5
- package/package/components/Login.svelte.d.ts +1 -0
- package/package/components/ModulePreview.svelte +21 -2
- package/package/components/ModuleStatus.svelte +3 -0
- package/package/components/ModuleStatus.svelte.d.ts +1 -0
- package/package/components/OAuthSetting.svelte +40 -15
- package/package/components/ObjectStoreConfigSettings.svelte +78 -76
- package/package/components/ParqetCsvTableRenderer.svelte +25 -3
- package/package/components/Password.svelte.d.ts +1 -1
- package/package/components/Path.svelte +74 -54
- package/package/components/Path.svelte.d.ts +2 -1
- package/package/components/ResourceEditor.svelte +38 -9
- package/package/components/ResultJobLoader.svelte +6 -3
- package/package/components/ResultJobLoader.svelte.d.ts +1 -1
- package/package/components/ScheduleEditorInner.svelte +2 -2
- package/package/components/SchemaForm.svelte +6 -1
- package/package/components/ScriptBuilder.svelte +12 -5
- package/package/components/ScriptEditor.svelte +33 -3
- package/package/components/ScriptEditor.svelte.d.ts +1 -1
- package/package/components/Scrollable.svelte +47 -0
- package/package/components/Scrollable.svelte.d.ts +21 -0
- package/package/components/ShareModal.svelte.d.ts +2 -2
- package/package/components/SuperadminSettings.svelte +5 -7
- package/package/components/TestJobLoader.svelte +46 -5
- package/package/components/TestJobLoader.svelte.d.ts +2 -1
- package/package/components/ToggleHubWorkspaceQuick.svelte +14 -0
- package/package/components/ToggleHubWorkspaceQuick.svelte.d.ts +16 -0
- package/package/components/WorkspaceGroup.svelte +3 -2
- package/package/components/apps/components/helpers/DebouncedInput.svelte +9 -1
- package/package/components/apps/components/inputs/AppSelect.svelte +1 -1
- package/package/components/apps/editor/component/components.d.ts +79 -79
- package/package/components/apps/svelte-select/lib/Select.svelte +1 -1
- package/package/components/common/fileUpload/FileUpload.svelte +1 -1
- package/package/components/common/languageIcons/LanguageIcon.svelte +5 -2
- package/package/components/common/menu/Menu.svelte +2 -1
- package/package/components/common/menu/MenuV2.svelte +3 -1
- package/package/components/common/menu/MenuV2.svelte.d.ts +1 -0
- package/package/components/common/popup/Popup.svelte +22 -12
- package/package/components/common/popup/Popup.svelte.d.ts +2 -0
- package/package/components/common/popup/PopupV2.svelte +58 -0
- package/package/components/common/popup/PopupV2.svelte.d.ts +27 -0
- package/package/components/copilot/CronGen.svelte +1 -1
- package/package/components/copilot/RegexGen.svelte +4 -4
- package/package/components/copilot/StepGen.svelte +6 -6
- package/package/components/copilot/StepGenQuick.svelte +57 -0
- package/package/components/copilot/StepGenQuick.svelte.d.ts +23 -0
- package/package/components/copilot/flow.d.ts +2 -0
- package/package/components/copilot/flow.js +55 -0
- package/package/components/details/DetailPageDetailPanel.svelte +9 -1
- package/package/components/details/DetailPageDetailPanel.svelte.d.ts +2 -1
- package/package/components/details/DetailPageLayout.svelte +2 -0
- package/package/components/details/DetailPageLayout.svelte.d.ts +3 -0
- package/package/components/details/utils.d.ts +0 -1
- package/package/components/details/utils.js +1 -12
- package/package/components/flows/FlowEditor.svelte +2 -1
- package/package/components/flows/FlowProgressBar.svelte +16 -1
- package/package/components/flows/FlowProgressBar.svelte.d.ts +1 -0
- package/package/components/flows/content/FlowBranchesAllWrapper.svelte +8 -0
- package/package/components/flows/content/FlowBranchesAllWrapper.svelte.d.ts +1 -0
- package/package/components/flows/content/FlowBranchesOneWrapper.svelte +8 -0
- package/package/components/flows/content/FlowBranchesOneWrapper.svelte.d.ts +1 -0
- package/package/components/flows/content/FlowConstants.svelte +1 -1
- package/package/components/flows/content/FlowEditorPanel.svelte +3 -0
- package/package/components/flows/content/FlowInputs.svelte +7 -6
- package/package/components/flows/content/FlowInputs.svelte.d.ts +1 -0
- package/package/components/flows/content/FlowInputsFlowQuick.svelte +65 -0
- package/package/components/flows/content/FlowInputsFlowQuick.svelte.d.ts +19 -0
- package/package/components/flows/content/FlowInputsQuick.svelte +419 -0
- package/package/components/flows/content/FlowInputsQuick.svelte.d.ts +33 -0
- package/package/components/flows/content/FlowLoop.svelte +7 -1
- package/package/components/flows/content/FlowModuleComponent.svelte +12 -3
- package/package/components/flows/content/FlowModuleComponent.svelte.d.ts +1 -0
- package/package/components/flows/content/FlowModuleSkip.svelte +69 -0
- package/package/components/flows/content/FlowModuleSkip.svelte.d.ts +20 -0
- package/package/components/flows/content/FlowModuleWrapper.svelte +17 -4
- package/package/components/flows/content/FlowPreprocessorModule.svelte +16 -0
- package/package/components/flows/content/FlowPreprocessorModule.svelte.d.ts +16 -0
- package/package/components/flows/content/FlowWhileLoop.svelte +9 -0
- package/package/components/flows/content/FlowWhileLoop.svelte.d.ts +1 -0
- package/package/components/flows/content/GenAiQuick.svelte +30 -0
- package/package/components/flows/content/GenAiQuick.svelte.d.ts +20 -0
- package/package/components/flows/content/ScriptEditorDrawer.svelte +3 -2
- package/package/components/flows/flowInfers.js +1 -1
- package/package/components/flows/header/FlowPreviewButtons.svelte +1 -0
- package/package/components/flows/idUtils.js +3 -1
- package/package/components/flows/map/FlowCopilotButton.svelte +55 -0
- package/package/components/flows/map/FlowCopilotButton.svelte.d.ts +16 -0
- package/package/components/flows/map/FlowErrorHandlerItem.svelte +77 -47
- package/package/components/flows/map/FlowJobsMenu.svelte +1 -1
- package/package/components/flows/map/FlowModuleSchemaItem.svelte +25 -12
- package/package/components/flows/map/FlowModuleSchemaItem.svelte.d.ts +1 -0
- package/package/components/flows/map/FlowModuleSchemaMap.svelte +61 -18
- package/package/components/flows/map/InsertModuleButton.svelte +161 -138
- package/package/components/flows/map/InsertModuleButton.svelte.d.ts +7 -4
- package/package/components/flows/map/MapItem.svelte +11 -0
- package/package/components/flows/map/MapItem.svelte.d.ts +1 -0
- package/package/components/flows/pickers/FlowScriptPickerQuick.svelte +48 -0
- package/package/components/flows/pickers/FlowScriptPickerQuick.svelte.d.ts +23 -0
- package/package/components/flows/pickers/FlowToplevelNode.svelte +19 -0
- package/package/components/flows/pickers/FlowToplevelNode.svelte.d.ts +19 -0
- package/package/components/flows/pickers/PickHubScriptQuick.svelte +138 -0
- package/package/components/flows/pickers/PickHubScriptQuick.svelte.d.ts +33 -0
- package/package/components/flows/pickers/TopLevelNode.svelte +58 -0
- package/package/components/flows/pickers/TopLevelNode.svelte.d.ts +21 -0
- package/package/components/flows/pickers/WorkspaceScriptPickerQuick.svelte +120 -0
- package/package/components/flows/pickers/WorkspaceScriptPickerQuick.svelte.d.ts +35 -0
- package/package/components/flows/types.d.ts +1 -0
- package/package/components/graph/FlowGraphV2.svelte +93 -58
- package/package/components/graph/FlowGraphV2.svelte.d.ts +2 -1
- package/package/components/graph/graphBuilder.d.ts +2 -1
- package/package/components/graph/graphBuilder.js +345 -280
- package/package/components/graph/model.d.ts +1 -0
- package/package/components/graph/renderers/edges/BaseEdge.svelte +36 -14
- package/package/components/graph/renderers/nodes/BranchOneStart.svelte +1 -1
- package/package/components/graph/renderers/nodes/InputNode.svelte +31 -51
- package/package/components/graph/renderers/nodes/InputNode.svelte.d.ts +6 -1
- package/package/components/graph/renderers/nodes/ModuleNode.svelte +2 -1
- package/package/components/graph/util.d.ts +1 -1
- package/package/components/graph/util.js +7 -2
- package/package/components/home/ListFiltersQuick.svelte +51 -0
- package/package/components/home/ListFiltersQuick.svelte.d.ts +23 -0
- package/package/components/icons/AnsibleIcon.svelte +42 -0
- package/package/components/icons/AnsibleIcon.svelte.d.ts +25 -0
- package/package/components/icons/WindmillIcon2.svelte +141 -0
- package/package/components/icons/WindmillIcon2.svelte.d.ts +20 -0
- package/package/components/icons/index.d.ts +2 -1
- package/package/components/icons/index.js +2 -1
- package/package/components/instanceSettings.d.ts +2 -2
- package/package/components/instanceSettings.js +25 -58
- package/package/components/jobs/JobProgressBar.svelte +52 -0
- package/package/components/jobs/JobProgressBar.svelte.d.ts +23 -0
- package/package/components/progressBar/ProgressBar.svelte +18 -1
- package/package/components/progressBar/ProgressBar.svelte.d.ts +3 -0
- package/package/components/runs/JobPreview.svelte +1 -0
- package/package/components/runs/PreprocessedArgsDisplay.svelte +71 -0
- package/package/components/runs/PreprocessedArgsDisplay.svelte.d.ts +16 -0
- package/package/components/schema/AddProperty.svelte +1 -0
- package/package/components/schema/EditableSchemaWrapper.svelte +142 -19
- package/package/components/schema/EditableSchemaWrapper.svelte.d.ts +1 -0
- package/package/components/schema/FlowPropertyEditor.svelte +12 -0
- package/package/components/schema/FlowPropertyEditor.svelte.d.ts +1 -0
- package/package/components/scriptEditor/LogPanel.svelte +1 -0
- package/package/components/scriptEditor/LogPanel.svelte.d.ts +3 -1
- package/package/components/search/GlobalSearchModal.svelte +2 -1
- package/package/components/sidebar/SidebarContent.svelte +69 -8
- package/package/components/sidebar/changelogs.js +10 -0
- package/package/components/triggers/RouteEditor.svelte +19 -0
- package/package/components/triggers/RouteEditor.svelte.d.ts +21 -0
- package/package/components/triggers/RouteEditorInner.svelte +327 -0
- package/package/components/triggers/RouteEditorInner.svelte.d.ts +21 -0
- package/package/components/triggers/RoutesPanel.svelte +74 -0
- package/package/components/triggers/RoutesPanel.svelte.d.ts +17 -0
- package/package/editorUtils.js +2 -0
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +159 -8
- package/package/gen/schemas.gen.js +161 -8
- package/package/gen/services.gen.d.ts +139 -1
- package/package/gen/services.gen.js +282 -1
- package/package/gen/types.gen.d.ts +455 -12
- package/package/hubPaths.json +6 -8
- package/package/infer.d.ts +4 -2
- package/package/infer.js +25 -23
- package/package/inferArgSig.js +8 -2
- package/package/monaco_workers/graphql.worker.bundle.js +45440 -174
- package/package/relative_imports.d.ts +3 -0
- package/package/relative_imports.js +25 -0
- package/package/script_helpers.d.ts +7 -2
- package/package/script_helpers.js +151 -3
- package/package/scripts.d.ts +1 -1
- package/package/scripts.js +5 -1
- package/package/stores.d.ts +1 -0
- package/package/stores.js +1 -0
- package/package/utils.d.ts +1 -0
- package/package/utils.js +4 -0
- package/package.json +16 -7
- package/package/components/flows/map/InsertTriggerButton.svelte +0 -48
- package/package/components/flows/map/InsertTriggerButton.svelte.d.ts +0 -24
|
@@ -2,7 +2,7 @@ export const settings = {
|
|
|
2
2
|
Core: [
|
|
3
3
|
{
|
|
4
4
|
label: 'Base url',
|
|
5
|
-
description: 'Public base url of the instance',
|
|
5
|
+
description: 'Public base url of the instance. <a href="https://www.windmill.dev/docs/advanced/instance_settings#global-users">Learn more</a>',
|
|
6
6
|
key: 'base_url',
|
|
7
7
|
fieldType: 'text',
|
|
8
8
|
placeholder: 'https://windmill.com',
|
|
@@ -17,7 +17,7 @@ export const settings = {
|
|
|
17
17
|
},
|
|
18
18
|
{
|
|
19
19
|
label: 'Email domain',
|
|
20
|
-
description: 'Domain to display in webhooks for email triggers (should match the MX record)',
|
|
20
|
+
description: 'Domain to display in webhooks for <a href="https://www.windmill.dev/docs/advanced/email_triggers">email triggers</a> (should match the MX record)',
|
|
21
21
|
key: 'email_domain',
|
|
22
22
|
fieldType: 'text',
|
|
23
23
|
storage: 'setting',
|
|
@@ -35,22 +35,23 @@ export const settings = {
|
|
|
35
35
|
{
|
|
36
36
|
label: 'Default timeout',
|
|
37
37
|
key: 'job_default_timeout',
|
|
38
|
-
description: 'Default timeout for individual jobs',
|
|
38
|
+
description: 'Default timeout for individual jobs. <a href="https://www.windmill.dev/docs/core_concepts/jobs#retention-policy">Learn more</a>',
|
|
39
39
|
fieldType: 'seconds',
|
|
40
40
|
storage: 'setting',
|
|
41
41
|
cloudonly: false
|
|
42
42
|
},
|
|
43
43
|
{
|
|
44
44
|
label: 'Max timeout for sync endpoints',
|
|
45
|
+
description: 'Maximum amount of time (measured in seconds) that a <a href="https://www.windmill.dev/docs/core_concepts/webhooks">sync endpoint</a> is allowed to run before it is forcibly stopped or timed out.',
|
|
45
46
|
key: 'timeout_wait_result',
|
|
46
47
|
cloudonly: true,
|
|
47
48
|
fieldType: 'seconds',
|
|
48
49
|
placeholder: '60',
|
|
49
|
-
storage: '
|
|
50
|
+
storage: 'setting'
|
|
50
51
|
},
|
|
51
52
|
{
|
|
52
53
|
label: 'License key',
|
|
53
|
-
description: 'License key required to use the EE (switch image for windmill-ee)',
|
|
54
|
+
description: 'License key required to use the EE (switch image for windmill-ee). <a href="https://www.windmill.dev/docs/advanced/instance_settings#license-key">Learn more</a>',
|
|
54
55
|
key: 'license_key',
|
|
55
56
|
fieldType: 'license_key',
|
|
56
57
|
placeholder: 'only needed to prepare upgrade to EE',
|
|
@@ -58,16 +59,15 @@ export const settings = {
|
|
|
58
59
|
},
|
|
59
60
|
{
|
|
60
61
|
label: 'Non-prod instance',
|
|
61
|
-
description: 'Whether we should consider the reported usage of this instance as non-prod',
|
|
62
|
+
description: 'Whether we should consider the reported usage of this instance as non-prod. <a href="https://www.windmill.dev/docs/advanced/instance_settings#non-prod-instance">Learn more</a>',
|
|
62
63
|
key: 'dev_instance',
|
|
63
64
|
fieldType: 'boolean',
|
|
64
|
-
storage: 'setting'
|
|
65
|
-
ee_only: 'This is only relevant for EE'
|
|
65
|
+
storage: 'setting'
|
|
66
66
|
},
|
|
67
67
|
{
|
|
68
68
|
label: 'Retention period in secs',
|
|
69
69
|
key: 'retention_period_secs',
|
|
70
|
-
description: 'How long to keep the jobs data in the database (max 30 days on CE)',
|
|
70
|
+
description: 'How long to keep the jobs data in the database (max 30 days on CE). <a href="https://www.windmill.dev/docs/advanced/instance_settings#retention-period-in-secs">Learn more</a>',
|
|
71
71
|
fieldType: 'seconds',
|
|
72
72
|
placeholder: '30',
|
|
73
73
|
storage: 'setting',
|
|
@@ -76,15 +76,15 @@ export const settings = {
|
|
|
76
76
|
},
|
|
77
77
|
{
|
|
78
78
|
label: 'Expose metrics',
|
|
79
|
-
description: 'Expose Prometheus metrics for workers and servers on port 8001 at /metrics',
|
|
79
|
+
description: 'Expose Prometheus metrics for workers and servers on port 8001 at /metrics. <a href="https://www.windmill.dev/docs/advanced/instance_settings#expose-metrics">Learn more</a>',
|
|
80
80
|
key: 'expose_metrics',
|
|
81
81
|
fieldType: 'boolean',
|
|
82
82
|
storage: 'setting',
|
|
83
83
|
ee_only: ''
|
|
84
84
|
},
|
|
85
85
|
{
|
|
86
|
-
label: '
|
|
87
|
-
description: '
|
|
86
|
+
label: 'Instance object storage',
|
|
87
|
+
description: ' S3/Azure bucket to store large logs and global cache for Python and Go. <a href="https://www.windmill.dev/docs/core_concepts/object_storage_in_windmill#instance-object-storage">Learn more</a>',
|
|
88
88
|
key: 'object_store_cache_config',
|
|
89
89
|
fieldType: 'object_store_config',
|
|
90
90
|
storage: 'setting',
|
|
@@ -92,7 +92,7 @@ export const settings = {
|
|
|
92
92
|
},
|
|
93
93
|
{
|
|
94
94
|
label: 'Critical alert channels',
|
|
95
|
-
description: 'Channels to send critical alerts to. SMTP must be configured for the email channel. A Slack workspace must be connected to the instance for the Slack channel.',
|
|
95
|
+
description: 'Channels to send critical alerts to. SMTP must be configured for the email channel. A Slack workspace must be connected to the instance for the Slack channel. <a href="https://www.windmill.dev/docs/core_concepts/critical_alert_channels">Learn more</a>',
|
|
96
96
|
key: 'critical_error_channels',
|
|
97
97
|
fieldType: 'critical_error_channels',
|
|
98
98
|
storage: 'setting',
|
|
@@ -100,7 +100,7 @@ export const settings = {
|
|
|
100
100
|
},
|
|
101
101
|
{
|
|
102
102
|
label: 'Azure OpenAI base path',
|
|
103
|
-
description: 'All Windmill AI features will run on the specified deployed model. Format: https://{your-resource-name}.openai.azure.com/openai/deployments/{deployment-id}',
|
|
103
|
+
description: 'All Windmill AI features will run on the specified deployed model. Format: https://{your-resource-name}.openai.azure.com/openai/deployments/{deployment-id}. <a href="https://www.windmill.dev/docs/core_concepts/ai_generation#azure-openai-advanced-models">Learn more</a>',
|
|
104
104
|
key: 'openai_azure_base_path',
|
|
105
105
|
fieldType: 'text',
|
|
106
106
|
storage: 'setting',
|
|
@@ -108,7 +108,7 @@ export const settings = {
|
|
|
108
108
|
},
|
|
109
109
|
{
|
|
110
110
|
label: 'Private Hub base url',
|
|
111
|
-
description: 'Base url of your private Hub instance, without trailing slash',
|
|
111
|
+
description: 'Base url of your private Hub instance, without trailing slash. <a href="https://www.windmill.dev/docs/core_concepts/private_hub">Learn more</a>',
|
|
112
112
|
placeholder: 'https://hub.company.com',
|
|
113
113
|
key: 'hub_base_url',
|
|
114
114
|
fieldType: 'text',
|
|
@@ -120,7 +120,7 @@ export const settings = {
|
|
|
120
120
|
Registries: [
|
|
121
121
|
{
|
|
122
122
|
label: 'Pip Index Url',
|
|
123
|
-
description: 'Add private
|
|
123
|
+
description: 'Add private Pip registry',
|
|
124
124
|
key: 'pip_index_url',
|
|
125
125
|
fieldType: 'text',
|
|
126
126
|
placeholder: 'https://username:password@pypi.company.com/simple',
|
|
@@ -129,7 +129,7 @@ export const settings = {
|
|
|
129
129
|
},
|
|
130
130
|
{
|
|
131
131
|
label: 'Pip Extra Index Url',
|
|
132
|
-
description: 'Add private extra
|
|
132
|
+
description: 'Add private extra Pip registry',
|
|
133
133
|
key: 'pip_extra_index_url',
|
|
134
134
|
fieldType: 'text',
|
|
135
135
|
placeholder: 'https://username:password@pypi.company.com/simple',
|
|
@@ -138,7 +138,7 @@ export const settings = {
|
|
|
138
138
|
},
|
|
139
139
|
{
|
|
140
140
|
label: 'Npm Config Registry',
|
|
141
|
-
description: 'Add private
|
|
141
|
+
description: 'Add private npm registry',
|
|
142
142
|
key: 'npm_config_registry',
|
|
143
143
|
fieldType: 'text',
|
|
144
144
|
placeholder: 'https://registry.npmjs.org/:_authToken=npm_FOOBAR',
|
|
@@ -157,44 +157,11 @@ export const settings = {
|
|
|
157
157
|
],
|
|
158
158
|
SMTP: [
|
|
159
159
|
{
|
|
160
|
-
label: '
|
|
161
|
-
key: '
|
|
162
|
-
fieldType: '
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
},
|
|
166
|
-
{
|
|
167
|
-
label: 'Port',
|
|
168
|
-
key: 'smtp_port',
|
|
169
|
-
fieldType: 'number',
|
|
170
|
-
placeholder: '587',
|
|
171
|
-
storage: 'config'
|
|
172
|
-
},
|
|
173
|
-
{
|
|
174
|
-
label: 'Username',
|
|
175
|
-
key: 'smtp_username',
|
|
176
|
-
fieldType: 'text',
|
|
177
|
-
placeholder: 'ruben@windmill.dev',
|
|
178
|
-
storage: 'config'
|
|
179
|
-
},
|
|
180
|
-
{
|
|
181
|
-
label: 'Password',
|
|
182
|
-
key: 'smtp_password',
|
|
183
|
-
fieldType: 'password',
|
|
184
|
-
storage: 'config'
|
|
185
|
-
},
|
|
186
|
-
{
|
|
187
|
-
label: 'From Address',
|
|
188
|
-
key: 'smtp_from',
|
|
189
|
-
placeholder: 'noreply@windmill.dev',
|
|
190
|
-
fieldType: 'email',
|
|
191
|
-
storage: 'config'
|
|
192
|
-
},
|
|
193
|
-
{
|
|
194
|
-
label: 'Implicit TLS',
|
|
195
|
-
key: 'smtp_tls_implicit',
|
|
196
|
-
fieldType: 'boolean',
|
|
197
|
-
storage: 'config'
|
|
160
|
+
label: 'SMTP',
|
|
161
|
+
key: 'smtp_settings',
|
|
162
|
+
fieldType: 'smtp_connect',
|
|
163
|
+
storage: 'setting',
|
|
164
|
+
ee_only: '',
|
|
198
165
|
}
|
|
199
166
|
],
|
|
200
167
|
Slack: [
|
|
@@ -231,14 +198,14 @@ export const settings = {
|
|
|
231
198
|
label: 'Keep job directories',
|
|
232
199
|
key: 'keep_job_dir',
|
|
233
200
|
fieldType: 'boolean',
|
|
234
|
-
|
|
201
|
+
description: 'Keep Job directories after execution at /tmp/windmill/<worker>/<job_id>',
|
|
235
202
|
storage: 'setting'
|
|
236
203
|
},
|
|
237
204
|
{
|
|
238
205
|
label: 'Expose debug metrics',
|
|
239
206
|
key: 'expose_debug_metrics',
|
|
240
207
|
fieldType: 'boolean',
|
|
241
|
-
|
|
208
|
+
description: 'Expose additional metrics (require metrics to be enabled)',
|
|
242
209
|
storage: 'setting'
|
|
243
210
|
}
|
|
244
211
|
],
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
<script>import {} from '../../gen';
|
|
2
|
+
import ProgressBar from '../progressBar/ProgressBar.svelte';
|
|
3
|
+
export let job = undefined;
|
|
4
|
+
export let compact = false;
|
|
5
|
+
/// Progress of currently running job
|
|
6
|
+
export let scriptProgress = undefined;
|
|
7
|
+
// Removes `Step 1` and replaces it with `Running`
|
|
8
|
+
export let hideStepTitle = false;
|
|
9
|
+
let error = undefined;
|
|
10
|
+
let index = 0;
|
|
11
|
+
let subIndex = 0;
|
|
12
|
+
let subLength = 100;
|
|
13
|
+
let length = 1;
|
|
14
|
+
let nextInProgress = false;
|
|
15
|
+
$: if (job)
|
|
16
|
+
updateJobProgress(job);
|
|
17
|
+
$: subIndex = scriptProgress ?? 0;
|
|
18
|
+
function updateJobProgress(job) {
|
|
19
|
+
if (!job['running'] && !job['success']) {
|
|
20
|
+
error = 0;
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
error = undefined;
|
|
24
|
+
}
|
|
25
|
+
// Anything that is success automatically gets 100% progress
|
|
26
|
+
if (job['success'] && scriptProgress)
|
|
27
|
+
index = 1, subLength = 0, subIndex = 0, scriptProgress = 100;
|
|
28
|
+
}
|
|
29
|
+
let resetP;
|
|
30
|
+
export function reset() {
|
|
31
|
+
resetP?.();
|
|
32
|
+
error = undefined;
|
|
33
|
+
subIndex = 0;
|
|
34
|
+
subLength = 100;
|
|
35
|
+
length = 1;
|
|
36
|
+
index = 0;
|
|
37
|
+
scriptProgress = undefined;
|
|
38
|
+
}
|
|
39
|
+
</script>
|
|
40
|
+
|
|
41
|
+
<ProgressBar
|
|
42
|
+
bind:resetP
|
|
43
|
+
{length}
|
|
44
|
+
{index}
|
|
45
|
+
{nextInProgress}
|
|
46
|
+
{subLength}
|
|
47
|
+
{subIndex}
|
|
48
|
+
{error}
|
|
49
|
+
class={$$props.class}
|
|
50
|
+
bind:compact
|
|
51
|
+
bind:hideStepTitle
|
|
52
|
+
/>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { SvelteComponent } from "svelte";
|
|
2
|
+
import { type Job } from '../../gen';
|
|
3
|
+
declare const __propDef: {
|
|
4
|
+
props: {
|
|
5
|
+
[x: string]: any;
|
|
6
|
+
job?: Job | undefined;
|
|
7
|
+
compact?: boolean | undefined;
|
|
8
|
+
scriptProgress?: number | undefined;
|
|
9
|
+
hideStepTitle?: boolean | undefined;
|
|
10
|
+
reset?: (() => void) | undefined;
|
|
11
|
+
};
|
|
12
|
+
events: {
|
|
13
|
+
[evt: string]: CustomEvent<any>;
|
|
14
|
+
};
|
|
15
|
+
slots: {};
|
|
16
|
+
};
|
|
17
|
+
export type JobProgressBarProps = typeof __propDef.props;
|
|
18
|
+
export type JobProgressBarEvents = typeof __propDef.events;
|
|
19
|
+
export type JobProgressBarSlots = typeof __propDef.slots;
|
|
20
|
+
export default class JobProgressBar extends SvelteComponent<JobProgressBarProps, JobProgressBarEvents, JobProgressBarSlots> {
|
|
21
|
+
get reset(): () => void;
|
|
22
|
+
}
|
|
23
|
+
export {};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<script>import { tweened } from 'svelte/motion';
|
|
2
2
|
import { linear } from 'svelte/easing';
|
|
3
|
+
import { twMerge } from 'tailwind-merge';
|
|
3
4
|
function getTween(initialValue = 0, duration = 200) {
|
|
4
5
|
return tweened(initialValue, {
|
|
5
6
|
duration,
|
|
@@ -11,6 +12,13 @@ export let index;
|
|
|
11
12
|
export let subIndex;
|
|
12
13
|
export let subLength;
|
|
13
14
|
export let nextInProgress = false;
|
|
15
|
+
// Used for displaying progress of subjob of flow
|
|
16
|
+
export let subIndexIsPercent = false;
|
|
17
|
+
// Remove padding/margin, border radius and titles
|
|
18
|
+
// Used in individual job test runs
|
|
19
|
+
export let compact = false;
|
|
20
|
+
// Removes `Step 1` and replaces it with `Running`
|
|
21
|
+
export let hideStepTitle = false;
|
|
14
22
|
export let length;
|
|
15
23
|
let duration = 200;
|
|
16
24
|
let percent = getTween(0, duration);
|
|
@@ -31,6 +39,7 @@ $: finished = index == length;
|
|
|
31
39
|
</script>
|
|
32
40
|
|
|
33
41
|
<div class={$$props.class}>
|
|
42
|
+
{#if !compact}
|
|
34
43
|
<div
|
|
35
44
|
class="flex justify-between items-end font-medium mb-1 {error != undefined
|
|
36
45
|
? 'text-red-700 dark:text-red-200'
|
|
@@ -41,12 +50,17 @@ $: finished = index == length;
|
|
|
41
50
|
? 'Error occured'
|
|
42
51
|
: finished
|
|
43
52
|
? 'Done'
|
|
53
|
+
: hideStepTitle
|
|
54
|
+
? `Running`
|
|
55
|
+
: subIndexIsPercent
|
|
56
|
+
? `Step ${index + 1} (${subIndex !== undefined ? `${subIndex}%)` : ''}`
|
|
44
57
|
: `Step ${index + 1}${subIndex !== undefined ? `.${subIndex + 1}` : ''}`}
|
|
45
58
|
</span>
|
|
46
59
|
<span class="text-sm">
|
|
47
60
|
{$percent.toFixed(0)}%
|
|
48
61
|
</span>
|
|
49
62
|
</div>
|
|
63
|
+
{/if}
|
|
50
64
|
<!-- {#each state as step, index}
|
|
51
65
|
{index} {JSON.stringify(step)}
|
|
52
66
|
{/each} -->
|
|
@@ -56,7 +70,10 @@ $: finished = index == length;
|
|
|
56
70
|
{getPercent(index)}
|
|
57
71
|
|
|
|
58
72
|
{/each} -->
|
|
59
|
-
<div class=
|
|
73
|
+
<div class={twMerge(
|
|
74
|
+
"flex w-full bg-gray-200 overflow-hidden",
|
|
75
|
+
(compact) ? "rounded-none h-3" : "rounded-full h-4",
|
|
76
|
+
)}>
|
|
60
77
|
{#each new Array(length) as _, partIndex (partIndex)}
|
|
61
78
|
<div class="h-full relative border-white {partIndex === 0 ? '' : 'border-l'} w-full">
|
|
62
79
|
{#if partIndex == index && nextInProgress}
|
|
@@ -7,6 +7,9 @@ declare const __propDef: {
|
|
|
7
7
|
subIndex: number | undefined;
|
|
8
8
|
subLength: number | undefined;
|
|
9
9
|
nextInProgress?: boolean | undefined;
|
|
10
|
+
subIndexIsPercent?: boolean | undefined;
|
|
11
|
+
compact?: boolean | undefined;
|
|
12
|
+
hideStepTitle?: boolean | undefined;
|
|
10
13
|
length: number;
|
|
11
14
|
resetP?: (() => void) | undefined;
|
|
12
15
|
};
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
<script>import Badge from '../common/badge/Badge.svelte';
|
|
2
|
+
// import { ClipboardCopy, Download } from 'lucide-svelte'
|
|
3
|
+
// import Drawer from '../common/drawer/Drawer.svelte'
|
|
4
|
+
// import DrawerContent from '../common/drawer/DrawerContent.svelte'
|
|
5
|
+
// import { Highlight } from 'svelte-highlight'
|
|
6
|
+
// import Button from '../common/button/Button.svelte'
|
|
7
|
+
// import { json } from 'svelte-highlight/languages'
|
|
8
|
+
// import { copyToClipboard } from '../../utils'
|
|
9
|
+
// import { deepEqual } from 'fast-equals'
|
|
10
|
+
export let flowStatus;
|
|
11
|
+
// $: args =
|
|
12
|
+
// '_metadata' in flowStatus && 'original_args' in flowStatus['_metadata']
|
|
13
|
+
// ? flowStatus['_metadata']['original_args']
|
|
14
|
+
// : undefined
|
|
15
|
+
$: hasPreprocessedArgs =
|
|
16
|
+
'_metadata' in flowStatus && !!flowStatus['_metadata']['preprocessed_args'];
|
|
17
|
+
// $: argsStr = args !== undefined ? JSON.stringify(args, null, 4) : undefined
|
|
18
|
+
// let jsonViewer: Drawer | undefined = undefined
|
|
19
|
+
</script>
|
|
20
|
+
|
|
21
|
+
{#if hasPreprocessedArgs}
|
|
22
|
+
<div>
|
|
23
|
+
<Badge color="yellow">preprocessed args</Badge>
|
|
24
|
+
</div>
|
|
25
|
+
{/if}
|
|
26
|
+
|
|
27
|
+
<!--
|
|
28
|
+
{#if args !== undefined && argsStr !== undefined}
|
|
29
|
+
<Drawer bind:this={jsonViewer} size="900px">
|
|
30
|
+
<DrawerContent title="Original args" on:close={jsonViewer.closeDrawer}>
|
|
31
|
+
<svelte:fragment slot="actions">
|
|
32
|
+
<Button
|
|
33
|
+
download="windmill-args.json"
|
|
34
|
+
href={`data:text/json;charset=utf-8,${encodeURIComponent(argsStr)}`}
|
|
35
|
+
startIcon={{ icon: Download }}
|
|
36
|
+
size="xs"
|
|
37
|
+
color="light"
|
|
38
|
+
>
|
|
39
|
+
Download
|
|
40
|
+
</Button>
|
|
41
|
+
<Button
|
|
42
|
+
on:click={() => copyToClipboard(argsStr)}
|
|
43
|
+
color="light"
|
|
44
|
+
size="xs"
|
|
45
|
+
startIcon={{ icon: ClipboardCopy }}
|
|
46
|
+
>
|
|
47
|
+
Copy to clipboard
|
|
48
|
+
</Button>
|
|
49
|
+
</svelte:fragment>
|
|
50
|
+
{#if args.length > 100000 || (args && typeof args === 'object' && deepEqual( Object.keys(args), ['reason'] ) && args['reason'] == 'WINDMILL_TOO_BIG')}
|
|
51
|
+
<div class="text-sm mb-2 text-tertiary">
|
|
52
|
+
<a
|
|
53
|
+
download="windmill-args.json"
|
|
54
|
+
href={`data:text/json;charset=utf-8,${encodeURIComponent(args)}`}
|
|
55
|
+
>
|
|
56
|
+
JSON is too large to be displayed in full.
|
|
57
|
+
</a></div
|
|
58
|
+
>
|
|
59
|
+
{:else}
|
|
60
|
+
<Highlight language={json} code={argsStr.replace(/\\n/g, '\n')} />
|
|
61
|
+
{/if}
|
|
62
|
+
</DrawerContent>
|
|
63
|
+
</Drawer>
|
|
64
|
+
<button
|
|
65
|
+
on:click={() => {
|
|
66
|
+
jsonViewer?.openDrawer()
|
|
67
|
+
}}
|
|
68
|
+
>
|
|
69
|
+
<Badge color="yellow">preprocessed args</Badge>
|
|
70
|
+
</button>
|
|
71
|
+
{/if} -->
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { SvelteComponent } from "svelte";
|
|
2
|
+
declare const __propDef: {
|
|
3
|
+
props: {
|
|
4
|
+
flowStatus: any;
|
|
5
|
+
};
|
|
6
|
+
events: {
|
|
7
|
+
[evt: string]: CustomEvent<any>;
|
|
8
|
+
};
|
|
9
|
+
slots: {};
|
|
10
|
+
};
|
|
11
|
+
export type PreprocessedArgsDisplayProps = typeof __propDef.props;
|
|
12
|
+
export type PreprocessedArgsDisplayEvents = typeof __propDef.events;
|
|
13
|
+
export type PreprocessedArgsDisplaySlots = typeof __propDef.slots;
|
|
14
|
+
export default class PreprocessedArgsDisplay extends SvelteComponent<PreprocessedArgsDisplayProps, PreprocessedArgsDisplayEvents, PreprocessedArgsDisplaySlots> {
|
|
15
|
+
}
|
|
16
|
+
export {};
|
|
@@ -2,33 +2,156 @@
|
|
|
2
2
|
import EditableSchemaForm from '../EditableSchemaForm.svelte';
|
|
3
3
|
import AddProperty from './AddProperty.svelte';
|
|
4
4
|
import { createEventDispatcher } from 'svelte';
|
|
5
|
+
import Toggle from '../Toggle.svelte';
|
|
6
|
+
import { emptySchema, validateFileExtension } from '../../utils';
|
|
7
|
+
import AutoComplete from 'simple-svelte-autocomplete';
|
|
8
|
+
import { Alert } from '../common';
|
|
5
9
|
export let schema;
|
|
6
10
|
export let offset = 0;
|
|
7
11
|
export let uiOnly = false;
|
|
8
12
|
export let noPreview = false;
|
|
9
13
|
export let fullHeight = true;
|
|
10
14
|
export let lightweightMode = false;
|
|
15
|
+
export let formatExtension = undefined;
|
|
16
|
+
let resourceIsTextFile = false;
|
|
11
17
|
let addProperty = undefined;
|
|
12
18
|
const dispatch = createEventDispatcher();
|
|
19
|
+
$: !resourceIsTextFile && (formatExtension = undefined);
|
|
20
|
+
$: invalidExtension =
|
|
21
|
+
formatExtension && formatExtension != ''
|
|
22
|
+
? !validateFileExtension(formatExtension ?? 'txt')
|
|
23
|
+
: false;
|
|
24
|
+
function switchResourceIsFile() {
|
|
25
|
+
if (!resourceIsTextFile) {
|
|
26
|
+
schema = emptySchema();
|
|
27
|
+
formatExtension = undefined;
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
formatExtension = "";
|
|
31
|
+
schema = emptySchema();
|
|
32
|
+
schema.order = ['content'];
|
|
33
|
+
schema.properties = {
|
|
34
|
+
content: {
|
|
35
|
+
type: 'string',
|
|
36
|
+
description: 'Text contents of the file'
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
dispatch('change', schema);
|
|
41
|
+
}
|
|
42
|
+
function numberOfMatches(listItem, searchWords) {
|
|
43
|
+
if (!listItem) {
|
|
44
|
+
return 0;
|
|
45
|
+
}
|
|
46
|
+
let matches = 0;
|
|
47
|
+
searchWords.forEach((searchWord) => {
|
|
48
|
+
const searchLetters = searchWord.split('');
|
|
49
|
+
if (searchLetters.every((l) => listItem.includes(l))) {
|
|
50
|
+
matches++;
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
return matches;
|
|
54
|
+
}
|
|
55
|
+
let suggestedFileExtensions = ['json', 'yaml', 'jinja', 'j2', 'ini', 'cfg', 'toml', 'html', 'xml', 'yml'];
|
|
56
|
+
let autocompleteExtension = true;
|
|
13
57
|
</script>
|
|
14
58
|
|
|
15
|
-
|
|
16
|
-
<div class=
|
|
17
|
-
<
|
|
59
|
+
{#if !resourceIsTextFile}
|
|
60
|
+
<div class={twMerge(fullHeight ? 'h-full' : 'h-80', 'border overflow-y-auto rounded-md')}>
|
|
61
|
+
<div class="p-4 border-b">
|
|
62
|
+
<AddProperty
|
|
63
|
+
on:change={() => dispatch('change', schema)}
|
|
64
|
+
bind:schema
|
|
65
|
+
bind:this={addProperty}
|
|
66
|
+
/>
|
|
67
|
+
</div>
|
|
68
|
+
<EditableSchemaForm
|
|
69
|
+
bind:schema
|
|
70
|
+
on:change={() => dispatch('change', schema)}
|
|
71
|
+
isFlowInput
|
|
72
|
+
on:edit={(e) => {
|
|
73
|
+
addProperty?.openDrawer(e.detail)
|
|
74
|
+
}}
|
|
75
|
+
on:delete={(e) => {
|
|
76
|
+
addProperty?.handleDeleteArgument([e.detail])
|
|
77
|
+
}}
|
|
78
|
+
{offset}
|
|
79
|
+
{uiOnly}
|
|
80
|
+
{noPreview}
|
|
81
|
+
{lightweightMode}
|
|
82
|
+
/>
|
|
18
83
|
</div>
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
84
|
+
{/if}
|
|
85
|
+
{#if resourceIsTextFile}
|
|
86
|
+
<div class="flex items-center space-x-2 w-5/12">
|
|
87
|
+
<label for="format-extension" class="text-base font-medium whitespace-nowrap">
|
|
88
|
+
File extension{autocompleteExtension ? "" : " (free text)"}:
|
|
89
|
+
</label>
|
|
90
|
+
{#if autocompleteExtension}
|
|
91
|
+
<AutoComplete
|
|
92
|
+
inputId="format-extension"
|
|
93
|
+
autofocus={true}
|
|
94
|
+
items={[...suggestedFileExtensions, 'Choose another extension']}
|
|
95
|
+
onChange={(a) => {
|
|
96
|
+
if (a == 'Choose another extension') {
|
|
97
|
+
formatExtension = ''
|
|
98
|
+
autocompleteExtension = false
|
|
99
|
+
}
|
|
100
|
+
}}
|
|
101
|
+
itemFilterFunction={(listItem, searchWords) => {
|
|
102
|
+
if (searchWords.length == 0 || listItem === 'Choose another extension') {
|
|
103
|
+
return true
|
|
104
|
+
}
|
|
105
|
+
return numberOfMatches(listItem, searchWords) > 0
|
|
106
|
+
}}
|
|
107
|
+
noResultsText="No matches, try the 'Choose another extension' option"
|
|
108
|
+
bind:selectedItem={formatExtension}
|
|
109
|
+
inputClassName="!h-[32px] py-1 !text-xs !w-64"
|
|
110
|
+
hideArrow
|
|
111
|
+
className={'!font-bold'}
|
|
112
|
+
dropdownClassName="!font-normal !w-64 !max-w-64"
|
|
113
|
+
maxItemsToShowInList={8}
|
|
114
|
+
moreItemsText={null}
|
|
115
|
+
lock={true}
|
|
116
|
+
/>
|
|
117
|
+
{:else}
|
|
118
|
+
<input
|
|
119
|
+
autofocus={true}
|
|
120
|
+
bind:value={formatExtension}
|
|
121
|
+
class="!h-[32px] py-1 !text-xs !w-64"
|
|
122
|
+
placeholder="Enter your extension"
|
|
123
|
+
on:keydown={(event) => {
|
|
124
|
+
if (event.key === 'Enter') {
|
|
125
|
+
if (formatExtension && !suggestedFileExtensions.includes(formatExtension))
|
|
126
|
+
suggestedFileExtensions.push(formatExtension)
|
|
127
|
+
|
|
128
|
+
autocompleteExtension = true
|
|
129
|
+
}
|
|
130
|
+
}}
|
|
131
|
+
/>
|
|
132
|
+
{/if}
|
|
133
|
+
</div>
|
|
134
|
+
|
|
135
|
+
{#if invalidExtension}
|
|
136
|
+
<Alert title="Invalid file extension" type="error">
|
|
137
|
+
The provided extension (<span class="font-bold font-mono">.{formatExtension}</span>) contains
|
|
138
|
+
invalid characters. Note that you shouldn't add the leading dot, (i.e. enter `json` instead of `.json`)
|
|
139
|
+
</Alert>
|
|
140
|
+
{:else if formatExtension && formatExtension !== ''}
|
|
141
|
+
<Alert title={`Example: my_file.${formatExtension}`} type="info">
|
|
142
|
+
The <span class="font-bold font-mono"> .{formatExtension} </span> extension will be used to infer
|
|
143
|
+
the format when displaying the content and this is also how the resource will appear when pulling
|
|
144
|
+
via the CLI.
|
|
145
|
+
</Alert>
|
|
146
|
+
<div />
|
|
147
|
+
{/if}
|
|
148
|
+
{/if}
|
|
149
|
+
<Toggle
|
|
150
|
+
bind:checked={resourceIsTextFile}
|
|
151
|
+
options={{
|
|
152
|
+
right: 'This resource type represents a plain text file (clears current schema)',
|
|
153
|
+
rightTooltip:
|
|
154
|
+
'A text file such as a config file, template, or any other file format that contains plain text'
|
|
155
|
+
}}
|
|
156
|
+
on:change={() => switchResourceIsFile()}
|
|
157
|
+
/>
|