windmill-components 1.444.1 → 1.447.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/autosize.js +1 -1
- package/package/components/AppConnectInner.svelte +2 -1
- package/package/components/ArgInput.svelte +37 -24
- package/package/components/CapturesInputs.svelte +16 -0
- package/package/components/CapturesInputs.svelte.d.ts +21 -0
- package/package/components/Dev.svelte +7 -1
- package/package/components/EditableSchemaForm.svelte +369 -290
- package/package/components/EditableSchemaForm.svelte.d.ts +12 -2
- package/package/components/Editor.svelte +5 -7
- package/package/components/FirstStepInputs.svelte +111 -0
- package/package/components/FirstStepInputs.svelte.d.ts +17 -0
- package/package/components/FlowBuilder.svelte +28 -7
- package/package/components/FlowPreviewContent.svelte +72 -1
- package/package/components/FlowPreviewContent.svelte.d.ts +1 -0
- package/package/components/GfmMarkdown.svelte +93 -2
- package/package/components/HighlightCode.svelte +2 -0
- package/package/components/HistoricInputs.svelte +193 -0
- package/package/components/HistoricInputs.svelte.d.ts +20 -0
- package/package/components/InfiniteList.svelte +161 -0
- package/package/components/InfiniteList.svelte.d.ts +40 -0
- package/package/components/LightweightArgInput.svelte +19 -15
- package/package/components/MoveDrawer.svelte +2 -1
- package/package/components/Path.svelte +7 -1
- package/package/components/Path.svelte.d.ts +1 -1
- package/package/components/ResourcePicker.svelte +2 -1
- package/package/components/ResourcePicker.svelte.d.ts +1 -0
- package/package/components/ResultJobLoader.svelte.d.ts +1 -1
- package/package/components/SaveInputsButton.svelte +53 -0
- package/package/components/SaveInputsButton.svelte.d.ts +24 -0
- package/package/components/SavedInputs.svelte +33 -61
- package/package/components/SavedInputsPicker.svelte +264 -0
- package/package/components/SavedInputsPicker.svelte.d.ts +20 -0
- package/package/components/ScheduleEditorInner.svelte +0 -1
- package/package/components/SchemaForm.svelte +22 -3
- package/package/components/ScriptBuilder.svelte +595 -562
- package/package/components/ScriptEditor.svelte +10 -3
- package/package/components/ScriptEditor.svelte.d.ts +5 -2
- package/package/components/ScriptSchema.svelte +1 -2
- package/package/components/Section.svelte +6 -4
- package/package/components/ShareModal.svelte.d.ts +2 -2
- package/package/components/SimpleEditor.svelte +39 -7
- package/package/components/SimpleEditor.svelte.d.ts +1 -4
- package/package/components/StringTypeNarrowing.svelte +3 -1
- package/package/components/TestConnection.svelte +5 -0
- package/package/components/TestJobLoader.svelte.d.ts +1 -1
- package/package/components/WorkerGroup.svelte +2 -1
- package/package/components/apps/components/inputs/AppS3FileInput.svelte +1 -0
- package/package/components/apps/editor/component/components.d.ts +79 -79
- package/package/components/apps/editor/component/default-codes.d.ts +1 -1
- package/package/components/apps/editor/component/default-codes.js +10 -10
- package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +2 -1
- package/package/components/apps/inputType.d.ts +2 -2
- package/package/components/common/button/Button.svelte +10 -52
- package/package/components/common/button/PulseButton.svelte +81 -0
- package/package/components/common/button/PulseButton.svelte.d.ts +34 -0
- package/package/components/common/button/RoundIconButton.svelte +11 -0
- package/package/components/common/button/RoundIconButton.svelte.d.ts +19 -0
- package/package/components/common/button/model.d.ts +1 -0
- package/package/components/common/button/model.js +47 -0
- package/package/components/common/fileUpload/FileUpload.svelte +3 -1
- package/package/components/common/fileUpload/FileUpload.svelte.d.ts +1 -0
- package/package/components/common/languageIcons/LanguageIcon.svelte +3 -0
- package/package/components/common/layout/List.svelte +10 -4
- package/package/components/common/layout/List.svelte.d.ts +1 -0
- package/package/components/common/tabs/Tab.svelte +14 -1
- package/package/components/common/tabs/Tab.svelte.d.ts +1 -0
- package/package/components/copilot/ScriptGen.svelte +1 -1
- package/package/components/copilot/lib.js +1 -1
- package/package/components/copilot/prompts/edit.yaml +1 -1
- package/package/components/copilot/prompts/editPrompt.js +1 -1
- package/package/components/copilot/prompts/fix.yaml +1 -1
- package/package/components/copilot/prompts/fixPrompt.js +1 -1
- package/package/components/copilot/prompts/gen.yaml +1 -1
- package/package/components/copilot/prompts/genPrompt.js +1 -1
- package/package/components/custom_ui.d.ts +1 -0
- package/package/components/details/DetailPageDetailPanel.svelte +20 -19
- package/package/components/details/DetailPageDetailPanel.svelte.d.ts +4 -1
- package/package/components/details/DetailPageLayout.svelte +4 -1
- package/package/components/details/DetailPageLayout.svelte.d.ts +3 -0
- package/package/components/details/DetailPageTriggerPanel.svelte +84 -63
- package/package/components/details/DetailPageTriggerPanel.svelte.d.ts +3 -1
- package/package/components/details/EmailTriggerConfigSection.svelte +1 -1
- package/package/components/details/EmailTriggerConfigSection.svelte.d.ts +2 -1
- package/package/components/details/EmailTriggerPanel.svelte +2 -0
- package/package/components/details/EmailTriggerPanel.svelte.d.ts +2 -0
- package/package/components/flows/FlowEditor.svelte +8 -2
- package/package/components/flows/FlowEditor.svelte.d.ts +1 -0
- package/package/components/flows/common/FlowCard.svelte +12 -6
- package/package/components/flows/content/DynamicInputHelpBox.svelte +1 -0
- package/package/components/flows/content/FlowEditorPanel.svelte +15 -9
- package/package/components/flows/content/FlowEditorPanel.svelte.d.ts +1 -0
- package/package/components/flows/content/FlowInput.svelte +449 -98
- package/package/components/flows/content/FlowInput.svelte.d.ts +2 -0
- package/package/components/flows/content/FlowInputEditor.svelte +46 -0
- package/package/components/flows/content/FlowInputEditor.svelte.d.ts +25 -0
- package/package/components/flows/content/FlowInputsQuick.svelte +1 -1
- package/package/components/flows/content/FlowLoop.svelte +192 -194
- package/package/components/flows/content/FlowModuleComponent.svelte +372 -382
- package/package/components/flows/content/FlowModuleMock.svelte +6 -7
- package/package/components/flows/content/FlowPathViewer.svelte +2 -1
- package/package/components/flows/content/FlowSettings.svelte +25 -3
- package/package/components/flows/content/FlowWhileLoop.svelte +97 -99
- package/package/components/flows/flowStore.d.ts +13 -0
- package/package/components/flows/flowStore.js +41 -0
- package/package/components/flows/header/FlowPreviewButtons.svelte +10 -4
- package/package/components/flows/header/FlowPreviewButtons.svelte.d.ts +4 -2
- package/package/components/flows/header/FlowYamlEditor.svelte +3 -0
- package/package/components/flows/map/FlowModuleSchemaItem.svelte +8 -58
- package/package/components/flows/map/FlowModuleSchemaItemViewer.svelte +67 -0
- package/package/components/flows/map/FlowModuleSchemaItemViewer.svelte.d.ts +24 -0
- package/package/components/flows/map/FlowModuleSchemaMap.svelte +2 -2
- package/package/components/flows/pickers/FlowScriptPicker.svelte +1 -1
- package/package/components/flows/previousResults.d.ts +1 -1
- package/package/components/flows/previousResults.js +7 -2
- package/package/components/flows/types.d.ts +7 -0
- package/package/components/flows/utils.d.ts +1 -0
- package/package/components/flows/utils.js +3 -0
- package/package/components/graph/graphBuilder.js +1 -1
- package/package/components/graph/renderers/triggers/TriggersBadge.svelte +22 -8
- package/package/components/graph/renderers/triggers/TriggersBadge.svelte.d.ts +1 -1
- package/package/components/icons/NatsIcon.svelte +19 -0
- package/package/components/icons/NatsIcon.svelte.d.ts +18 -0
- package/package/components/icons/OracleDBIcon.svelte +15 -0
- package/package/components/icons/OracleDBIcon.svelte.d.ts +25 -0
- package/package/components/icons/index.d.ts +7 -1
- package/package/components/icons/index.js +8 -2
- package/package/components/meltComponents/ButtonDropDown.svelte +32 -0
- package/package/components/meltComponents/ButtonDropDown.svelte.d.ts +27 -0
- package/package/components/meltComponents/Popover.svelte +7 -4
- package/package/components/meltComponents/Popover.svelte.d.ts +1 -0
- package/package/components/runs/RunsFilter.svelte +2 -2
- package/package/components/schema/AddPropertyFormV2.svelte +46 -0
- package/package/components/schema/AddPropertyFormV2.svelte.d.ts +18 -0
- package/package/components/schema/AddPropertyV2.svelte +151 -0
- package/package/components/schema/AddPropertyV2.svelte.d.ts +25 -0
- package/package/components/schema/EditableSchemaDrawer.svelte +17 -8
- package/package/components/schema/EditableSchemaWrapper.svelte +58 -14
- package/package/components/schema/EditableSchemaWrapper.svelte.d.ts +0 -1
- package/package/components/schema/FlowPropertyEditor.svelte +8 -3
- package/package/components/schema/JobSchemaPicker.svelte +32 -0
- package/package/components/schema/JobSchemaPicker.svelte.d.ts +19 -0
- package/package/components/schema/PropertyEditor.svelte +9 -1
- package/package/components/schema/RunningJobSchemaPicker.svelte +67 -0
- package/package/components/schema/RunningJobSchemaPicker.svelte.d.ts +21 -0
- package/package/components/schema/SchemaFormDND.svelte +1 -1
- package/package/components/schema/SchemaPicker.svelte +92 -0
- package/package/components/schema/SchemaPicker.svelte.d.ts +23 -0
- package/package/components/schema/SchemaPickerRow.svelte +95 -0
- package/package/components/schema/SchemaPickerRow.svelte.d.ts +22 -0
- package/package/components/scriptEditor/LogPanel.svelte +1 -1
- package/package/components/settings/ChangeWorkspaceColor.svelte +103 -0
- package/package/components/settings/ChangeWorkspaceColor.svelte.d.ts +16 -0
- package/package/components/settings/ChangeWorkspaceId.svelte +1 -0
- package/package/components/settings/ChangeWorkspaceName.svelte +4 -0
- package/package/components/sidebar/MenuButton.svelte +5 -2
- package/package/components/sidebar/MenuButton.svelte.d.ts +1 -0
- package/package/components/sidebar/SidebarContent.svelte +8 -0
- package/package/components/sidebar/WorkspaceMenu.svelte +40 -21
- package/package/components/table/DataTable.svelte +43 -3
- package/package/components/table/DataTable.svelte.d.ts +2 -0
- package/package/components/table/Head.svelte +1 -1
- package/package/components/table/Row.svelte +11 -1
- package/package/components/table/Row.svelte.d.ts +3 -0
- package/package/components/table/index.d.ts +3 -0
- package/package/components/table/index.js +3 -0
- package/package/components/triggers/CaptureButton.svelte +38 -4
- package/package/components/triggers/CaptureButton.svelte.d.ts +3 -1
- package/package/components/triggers/CaptureIcon.svelte +7 -4
- package/package/components/triggers/CaptureIcon.svelte.d.ts +7 -13
- package/package/components/triggers/CaptureSection.svelte +50 -17
- package/package/components/triggers/CaptureSection.svelte.d.ts +5 -3
- package/package/components/triggers/CaptureTable.svelte +239 -186
- package/package/components/triggers/CaptureTable.svelte.d.ts +9 -11
- package/package/components/triggers/CaptureWrapper.svelte +126 -109
- package/package/components/triggers/CaptureWrapper.svelte.d.ts +3 -1
- package/package/components/triggers/KafkaTriggerEditorInner.svelte +1 -0
- package/package/components/triggers/KafkaTriggersConfigSection.svelte +16 -4
- package/package/components/triggers/KafkaTriggersConfigSection.svelte.d.ts +3 -1
- package/package/components/triggers/KafkaTriggersPanel.svelte +2 -0
- package/package/components/triggers/KafkaTriggersPanel.svelte.d.ts +2 -0
- package/package/components/triggers/NatsTriggerEditor.svelte +19 -0
- package/package/components/triggers/NatsTriggerEditor.svelte.d.ts +21 -0
- package/package/components/triggers/NatsTriggerEditorInner.svelte +239 -0
- package/package/components/triggers/NatsTriggerEditorInner.svelte.d.ts +21 -0
- package/package/components/triggers/NatsTriggersConfigSection.svelte +276 -0
- package/package/components/triggers/NatsTriggersConfigSection.svelte.d.ts +37 -0
- package/package/components/triggers/NatsTriggersPanel.svelte +126 -0
- package/package/components/triggers/NatsTriggersPanel.svelte.d.ts +26 -0
- package/package/components/triggers/RouteEditorConfigSection.svelte +12 -2
- package/package/components/triggers/RouteEditorConfigSection.svelte.d.ts +5 -1
- package/package/components/triggers/RouteEditorInner.svelte +5 -0
- package/package/components/triggers/RoutesPanel.svelte +4 -0
- package/package/components/triggers/RoutesPanel.svelte.d.ts +3 -0
- package/package/components/triggers/TriggersEditor.svelte +146 -97
- package/package/components/triggers/TriggersEditor.svelte.d.ts +2 -0
- package/package/components/triggers/TriggersEditorSection.svelte +19 -13
- package/package/components/triggers/TriggersEditorSection.svelte.d.ts +3 -0
- package/package/components/triggers/TriggersWrapper.svelte +7 -3
- package/package/components/triggers/TriggersWrapper.svelte.d.ts +2 -1
- package/package/components/triggers/WebhooksConfigSection.svelte +7 -6
- package/package/components/triggers/WebhooksConfigSection.svelte.d.ts +2 -1
- package/package/components/triggers/WebhooksPanel.svelte +2 -0
- package/package/components/triggers/WebhooksPanel.svelte.d.ts +2 -0
- package/package/components/triggers/WebsocketEditorConfigSection.svelte +3 -1
- package/package/components/triggers/WebsocketEditorConfigSection.svelte.d.ts +2 -1
- package/package/components/triggers/WebsocketTriggersPanel.svelte +2 -0
- package/package/components/triggers/WebsocketTriggersPanel.svelte.d.ts +2 -0
- package/package/components/triggers.d.ts +2 -1
- package/package/components/triggers.js +2 -0
- package/package/components/vscode.js +12 -8
- package/package/consts.d.ts +1 -0
- package/package/consts.js +18 -0
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +207 -13
- package/package/gen/schemas.gen.js +207 -13
- package/package/gen/services.gen.d.ts +118 -10
- package/package/gen/services.gen.js +237 -17
- package/package/gen/types.gen.d.ts +400 -40
- package/package/hubPaths.json +2 -1
- package/package/infer.js +11 -2
- package/package/monaco_workers/build_workers.js +39 -37
- package/package/monaco_workers/graphql.worker.bundle.js +18371 -36513
- package/package/script_helpers.d.ts +5 -2
- package/package/script_helpers.js +46 -8
- package/package/scripts.js +4 -0
- package/package/stores.d.ts +2 -1
- package/package/stores.js +2 -1
- package/package.json +14 -16
- package/package/monaco_workers/graphql.worker.bundle.d.ts +0 -0
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
<script>import { Alert, Button } from '../common';
|
|
2
|
+
import Drawer from '../common/drawer/Drawer.svelte';
|
|
3
|
+
import DrawerContent from '../common/drawer/DrawerContent.svelte';
|
|
4
|
+
import Path from '../Path.svelte';
|
|
5
|
+
import Required from '../Required.svelte';
|
|
6
|
+
import ScriptPicker from '../ScriptPicker.svelte';
|
|
7
|
+
import { NatsTriggerService } from '../../gen';
|
|
8
|
+
import { usedTriggerKinds, userStore, workspaceStore } from '../../stores';
|
|
9
|
+
import { canWrite, emptyString, sendUserToast } from '../../utils';
|
|
10
|
+
import { createEventDispatcher } from 'svelte';
|
|
11
|
+
import Section from '../Section.svelte';
|
|
12
|
+
import { Loader2, Save } from 'lucide-svelte';
|
|
13
|
+
import Label from '../Label.svelte';
|
|
14
|
+
import Toggle from '../Toggle.svelte';
|
|
15
|
+
import NatsTriggersConfigSection from './NatsTriggersConfigSection.svelte';
|
|
16
|
+
let drawer;
|
|
17
|
+
let is_flow = false;
|
|
18
|
+
let initialPath = '';
|
|
19
|
+
let edit = true;
|
|
20
|
+
let itemKind = 'script';
|
|
21
|
+
let script_path = '';
|
|
22
|
+
let initialScriptPath = '';
|
|
23
|
+
let fixedScriptPath = '';
|
|
24
|
+
let path = '';
|
|
25
|
+
let pathError = '';
|
|
26
|
+
let enabled = false;
|
|
27
|
+
let dirtyPath = false;
|
|
28
|
+
let can_write = true;
|
|
29
|
+
let drawerLoading = true;
|
|
30
|
+
let defaultValues = undefined;
|
|
31
|
+
let args = {};
|
|
32
|
+
const dispatch = createEventDispatcher();
|
|
33
|
+
$: is_flow = itemKind === 'flow';
|
|
34
|
+
export async function openEdit(ePath, isFlow) {
|
|
35
|
+
drawerLoading = true;
|
|
36
|
+
try {
|
|
37
|
+
drawer?.openDrawer();
|
|
38
|
+
initialPath = ePath;
|
|
39
|
+
itemKind = isFlow ? 'flow' : 'script';
|
|
40
|
+
edit = true;
|
|
41
|
+
dirtyPath = false;
|
|
42
|
+
await loadTrigger();
|
|
43
|
+
}
|
|
44
|
+
catch (err) {
|
|
45
|
+
sendUserToast(`Could not load nats trigger: ${err}`, true);
|
|
46
|
+
}
|
|
47
|
+
finally {
|
|
48
|
+
drawerLoading = false;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
export async function openNew(nis_flow, fixedScriptPath_, nDefaultValues) {
|
|
52
|
+
drawerLoading = true;
|
|
53
|
+
try {
|
|
54
|
+
drawer?.openDrawer();
|
|
55
|
+
is_flow = nis_flow;
|
|
56
|
+
edit = false;
|
|
57
|
+
itemKind = nis_flow ? 'flow' : 'script';
|
|
58
|
+
args.nats_resource_path = nDefaultValues?.nats_resource_path ?? '';
|
|
59
|
+
args.subjects = nDefaultValues?.subjects ?? [''];
|
|
60
|
+
args.use_jetstream = nDefaultValues?.use_jetstream ?? false;
|
|
61
|
+
args.stream_name = args.use_jetstream ? nDefaultValues?.stream_name ?? '' : undefined;
|
|
62
|
+
args.consumer_name = args.use_jetstream ? nDefaultValues?.consumer_name ?? '' : undefined;
|
|
63
|
+
initialScriptPath = '';
|
|
64
|
+
fixedScriptPath = fixedScriptPath_ ?? '';
|
|
65
|
+
script_path = fixedScriptPath;
|
|
66
|
+
path = '';
|
|
67
|
+
initialPath = '';
|
|
68
|
+
dirtyPath = false;
|
|
69
|
+
defaultValues = nDefaultValues;
|
|
70
|
+
}
|
|
71
|
+
finally {
|
|
72
|
+
drawerLoading = false;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
async function loadTrigger() {
|
|
76
|
+
const s = await NatsTriggerService.getNatsTrigger({
|
|
77
|
+
workspace: $workspaceStore,
|
|
78
|
+
path: initialPath
|
|
79
|
+
});
|
|
80
|
+
script_path = s.script_path;
|
|
81
|
+
initialScriptPath = s.script_path;
|
|
82
|
+
is_flow = s.is_flow;
|
|
83
|
+
path = s.path;
|
|
84
|
+
args.nats_resource_path = s.nats_resource_path;
|
|
85
|
+
args.stream_name = s.stream_name;
|
|
86
|
+
args.consumer_name = s.consumer_name;
|
|
87
|
+
args.subjects = s.subjects;
|
|
88
|
+
args.use_jetstream = s.use_jetstream;
|
|
89
|
+
enabled = s.enabled;
|
|
90
|
+
can_write = canWrite(s.path, s.extra_perms, $userStore);
|
|
91
|
+
}
|
|
92
|
+
async function updateTrigger() {
|
|
93
|
+
if (edit) {
|
|
94
|
+
await NatsTriggerService.updateNatsTrigger({
|
|
95
|
+
workspace: $workspaceStore,
|
|
96
|
+
path: initialPath,
|
|
97
|
+
requestBody: {
|
|
98
|
+
path,
|
|
99
|
+
script_path,
|
|
100
|
+
is_flow,
|
|
101
|
+
nats_resource_path: args.nats_resource_path,
|
|
102
|
+
stream_name: args.stream_name,
|
|
103
|
+
consumer_name: args.consumer_name,
|
|
104
|
+
subjects: args.subjects,
|
|
105
|
+
use_jetstream: args.use_jetstream
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
sendUserToast(`Nats trigger ${path} updated`);
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
await NatsTriggerService.createNatsTrigger({
|
|
112
|
+
workspace: $workspaceStore,
|
|
113
|
+
requestBody: {
|
|
114
|
+
path,
|
|
115
|
+
script_path,
|
|
116
|
+
is_flow,
|
|
117
|
+
enabled: true,
|
|
118
|
+
nats_resource_path: args.nats_resource_path,
|
|
119
|
+
stream_name: args.stream_name,
|
|
120
|
+
consumer_name: args.consumer_name,
|
|
121
|
+
subjects: args.subjects,
|
|
122
|
+
use_jetstream: args.use_jetstream
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
sendUserToast(`Nats trigger ${path} created`);
|
|
126
|
+
}
|
|
127
|
+
if (!$usedTriggerKinds.includes('nats')) {
|
|
128
|
+
$usedTriggerKinds = [...$usedTriggerKinds, 'nats'];
|
|
129
|
+
}
|
|
130
|
+
dispatch('update');
|
|
131
|
+
drawer.closeDrawer();
|
|
132
|
+
}
|
|
133
|
+
function useDefaultValues() {
|
|
134
|
+
if (args.nats_resource_path && args.nats_resource_path != '') {
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
if (!defaultValues) {
|
|
138
|
+
return false;
|
|
139
|
+
}
|
|
140
|
+
return (defaultValues.servers &&
|
|
141
|
+
defaultValues.servers.length > 0 &&
|
|
142
|
+
defaultValues.servers.some((broker) => broker.trim() !== ''));
|
|
143
|
+
}
|
|
144
|
+
let isValid = false;
|
|
145
|
+
</script>
|
|
146
|
+
|
|
147
|
+
<Drawer size="800px" bind:this={drawer}>
|
|
148
|
+
<DrawerContent
|
|
149
|
+
title={edit
|
|
150
|
+
? can_write
|
|
151
|
+
? `Edit NATS trigger ${initialPath}`
|
|
152
|
+
: `NATS trigger ${initialPath}`
|
|
153
|
+
: 'New NATS trigger'}
|
|
154
|
+
on:close={drawer.closeDrawer}
|
|
155
|
+
>
|
|
156
|
+
<svelte:fragment slot="actions">
|
|
157
|
+
{#if !drawerLoading}
|
|
158
|
+
{#if edit}
|
|
159
|
+
<div class="mr-8 center-center -mt-1">
|
|
160
|
+
<Toggle
|
|
161
|
+
disabled={!can_write}
|
|
162
|
+
checked={enabled}
|
|
163
|
+
options={{ right: 'enable', left: 'disable' }}
|
|
164
|
+
on:change={async (e) => {
|
|
165
|
+
await NatsTriggerService.setNatsTriggerEnabled({
|
|
166
|
+
path: initialPath,
|
|
167
|
+
workspace: $workspaceStore ?? '',
|
|
168
|
+
requestBody: { enabled: e.detail }
|
|
169
|
+
})
|
|
170
|
+
sendUserToast(`${e.detail ? 'enabled' : 'disabled'} NATS trigger ${initialPath}`)
|
|
171
|
+
}}
|
|
172
|
+
/>
|
|
173
|
+
</div>
|
|
174
|
+
{/if}
|
|
175
|
+
{#if can_write}
|
|
176
|
+
<Button
|
|
177
|
+
startIcon={{ icon: Save }}
|
|
178
|
+
disabled={pathError != '' || emptyString(script_path) || !can_write || !isValid}
|
|
179
|
+
on:click={updateTrigger}
|
|
180
|
+
>
|
|
181
|
+
Save
|
|
182
|
+
</Button>
|
|
183
|
+
{/if}
|
|
184
|
+
{/if}
|
|
185
|
+
</svelte:fragment>
|
|
186
|
+
{#if drawerLoading}
|
|
187
|
+
<Loader2 class="animate-spin" />
|
|
188
|
+
{:else}
|
|
189
|
+
<Alert title="Info" type="info">
|
|
190
|
+
{#if edit}
|
|
191
|
+
Changes can take up to 30 seconds to take effect.
|
|
192
|
+
{:else}
|
|
193
|
+
NATS consumers can take up to 30 seconds to start.
|
|
194
|
+
{/if}
|
|
195
|
+
</Alert>
|
|
196
|
+
<div class="flex flex-col gap-12 mt-6">
|
|
197
|
+
<div class="flex flex-col gap-4">
|
|
198
|
+
<Label label="Path">
|
|
199
|
+
<Path
|
|
200
|
+
bind:dirty={dirtyPath}
|
|
201
|
+
bind:error={pathError}
|
|
202
|
+
bind:path
|
|
203
|
+
{initialPath}
|
|
204
|
+
checkInitialPathExistence={!edit}
|
|
205
|
+
namePlaceholder="nats_trigger"
|
|
206
|
+
kind="nats_trigger"
|
|
207
|
+
disabled={!can_write}
|
|
208
|
+
/>
|
|
209
|
+
</Label>
|
|
210
|
+
</div>
|
|
211
|
+
|
|
212
|
+
<NatsTriggersConfigSection
|
|
213
|
+
{path}
|
|
214
|
+
bind:args
|
|
215
|
+
bind:isValid
|
|
216
|
+
defaultValues={useDefaultValues() ? defaultValues : undefined}
|
|
217
|
+
/>
|
|
218
|
+
|
|
219
|
+
<Section label="Runnable">
|
|
220
|
+
<p class="text-xs mb-1 text-tertiary">
|
|
221
|
+
Pick a script or flow to be triggered<Required required={true} />
|
|
222
|
+
</p>
|
|
223
|
+
<div class="flex flex-row mb-2">
|
|
224
|
+
<ScriptPicker
|
|
225
|
+
disabled={fixedScriptPath != '' || !can_write}
|
|
226
|
+
initialPath={fixedScriptPath || initialScriptPath}
|
|
227
|
+
kinds={['script']}
|
|
228
|
+
allowFlow={true}
|
|
229
|
+
bind:itemKind
|
|
230
|
+
bind:scriptPath={script_path}
|
|
231
|
+
allowRefresh={can_write}
|
|
232
|
+
allowEdit={!$userStore?.operator}
|
|
233
|
+
/>
|
|
234
|
+
</div>
|
|
235
|
+
</Section>
|
|
236
|
+
</div>
|
|
237
|
+
{/if}
|
|
238
|
+
</DrawerContent>
|
|
239
|
+
</Drawer>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { SvelteComponent } from "svelte";
|
|
2
|
+
declare const __propDef: {
|
|
3
|
+
props: {
|
|
4
|
+
openEdit?: ((ePath: string, isFlow: boolean) => Promise<void>) | undefined;
|
|
5
|
+
openNew?: ((nis_flow: boolean, fixedScriptPath_?: string, nDefaultValues?: Record<string, any>) => Promise<void>) | undefined;
|
|
6
|
+
};
|
|
7
|
+
events: {
|
|
8
|
+
update: CustomEvent<any>;
|
|
9
|
+
} & {
|
|
10
|
+
[evt: string]: CustomEvent<any>;
|
|
11
|
+
};
|
|
12
|
+
slots: {};
|
|
13
|
+
};
|
|
14
|
+
export type NatsTriggerEditorInnerProps = typeof __propDef.props;
|
|
15
|
+
export type NatsTriggerEditorInnerEvents = typeof __propDef.events;
|
|
16
|
+
export type NatsTriggerEditorInnerSlots = typeof __propDef.slots;
|
|
17
|
+
export default class NatsTriggerEditorInner extends SvelteComponent<NatsTriggerEditorInnerProps, NatsTriggerEditorInnerEvents, NatsTriggerEditorInnerSlots> {
|
|
18
|
+
get openEdit(): (ePath: string, isFlow: boolean) => Promise<void>;
|
|
19
|
+
get openNew(): (nis_flow: boolean, fixedScriptPath_?: string | undefined, nDefaultValues?: Record<string, any> | undefined) => Promise<void>;
|
|
20
|
+
}
|
|
21
|
+
export {};
|
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
<script>import ResourcePicker from '../ResourcePicker.svelte';
|
|
2
|
+
import { Boxes } from 'lucide-svelte';
|
|
3
|
+
import Section from '../Section.svelte';
|
|
4
|
+
import Subsection from '../Subsection.svelte';
|
|
5
|
+
import ToggleButton from '../common/toggleButton-v2/ToggleButton.svelte';
|
|
6
|
+
import ToggleButtonGroup from '../common/toggleButton-v2/ToggleButtonGroup.svelte';
|
|
7
|
+
import SchemaForm from '../SchemaForm.svelte';
|
|
8
|
+
import CaptureSection, {} from './CaptureSection.svelte';
|
|
9
|
+
import CaptureTable from './CaptureTable.svelte';
|
|
10
|
+
import { workspaceStore } from '../../stores';
|
|
11
|
+
export let defaultValues = undefined;
|
|
12
|
+
export let headless = false;
|
|
13
|
+
export let args = {};
|
|
14
|
+
export let staticInputDisabled = true;
|
|
15
|
+
export let showCapture = false;
|
|
16
|
+
export let captureInfo = undefined;
|
|
17
|
+
export let captureTable = undefined;
|
|
18
|
+
export let isValid = false;
|
|
19
|
+
export let path;
|
|
20
|
+
let selected = staticInputDisabled ? 'resource' : 'static';
|
|
21
|
+
const connnectionSchema = {
|
|
22
|
+
$schema: 'http://json-schema.org/draft-07/schema#',
|
|
23
|
+
type: 'object',
|
|
24
|
+
properties: {
|
|
25
|
+
servers: {
|
|
26
|
+
type: 'array',
|
|
27
|
+
items: {
|
|
28
|
+
type: 'string'
|
|
29
|
+
},
|
|
30
|
+
title: 'Servers',
|
|
31
|
+
default: ['']
|
|
32
|
+
},
|
|
33
|
+
require_tls: {
|
|
34
|
+
type: 'boolean',
|
|
35
|
+
title: 'Require TLS',
|
|
36
|
+
default: false
|
|
37
|
+
},
|
|
38
|
+
auth: {
|
|
39
|
+
type: 'object',
|
|
40
|
+
title: 'Authentication',
|
|
41
|
+
default: {
|
|
42
|
+
label: 'NO_AUTH'
|
|
43
|
+
},
|
|
44
|
+
oneOf: [
|
|
45
|
+
{
|
|
46
|
+
type: 'object',
|
|
47
|
+
title: 'NO_AUTH',
|
|
48
|
+
properties: {
|
|
49
|
+
label: {
|
|
50
|
+
enum: ['NO_AUTH'],
|
|
51
|
+
type: 'string'
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
type: 'object',
|
|
57
|
+
order: ['token'],
|
|
58
|
+
title: 'TOKEN',
|
|
59
|
+
required: ['token'],
|
|
60
|
+
properties: {
|
|
61
|
+
label: {
|
|
62
|
+
enum: ['TOKEN'],
|
|
63
|
+
type: 'string'
|
|
64
|
+
},
|
|
65
|
+
token: {
|
|
66
|
+
type: 'string',
|
|
67
|
+
password: true
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
type: 'object',
|
|
73
|
+
title: 'USER_PASSWORD',
|
|
74
|
+
required: ['user', 'password'],
|
|
75
|
+
properties: {
|
|
76
|
+
label: {
|
|
77
|
+
enum: ['USER_PASSWORD'],
|
|
78
|
+
type: 'string'
|
|
79
|
+
},
|
|
80
|
+
user: {
|
|
81
|
+
type: 'string'
|
|
82
|
+
},
|
|
83
|
+
password: {
|
|
84
|
+
type: 'string',
|
|
85
|
+
password: true
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
type: 'object',
|
|
91
|
+
order: ['nkey'],
|
|
92
|
+
title: 'NKEY',
|
|
93
|
+
required: ['nkey'],
|
|
94
|
+
properties: {
|
|
95
|
+
label: {
|
|
96
|
+
enum: ['NKEY'],
|
|
97
|
+
type: 'string'
|
|
98
|
+
},
|
|
99
|
+
seed: {
|
|
100
|
+
type: 'string',
|
|
101
|
+
password: true
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
type: 'object',
|
|
107
|
+
title: 'JWT',
|
|
108
|
+
required: ['jwt', 'seed'],
|
|
109
|
+
properties: {
|
|
110
|
+
label: {
|
|
111
|
+
enum: ['JWT'],
|
|
112
|
+
type: 'string'
|
|
113
|
+
},
|
|
114
|
+
jwt: {
|
|
115
|
+
type: 'string',
|
|
116
|
+
password: true
|
|
117
|
+
},
|
|
118
|
+
seed: {
|
|
119
|
+
type: 'string',
|
|
120
|
+
password: true
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
]
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
required: ['servers', 'auth', 'require_tls']
|
|
128
|
+
};
|
|
129
|
+
const argsSchema = {
|
|
130
|
+
$schema: 'http://json-schema.org/draft-07/schema#',
|
|
131
|
+
type: 'object',
|
|
132
|
+
properties: {
|
|
133
|
+
subjects: {
|
|
134
|
+
type: 'array',
|
|
135
|
+
items: {
|
|
136
|
+
type: 'string'
|
|
137
|
+
},
|
|
138
|
+
nullable: false,
|
|
139
|
+
title: 'Subjects',
|
|
140
|
+
default: [''],
|
|
141
|
+
description: 'The subjects to listen to. If not using JetStream, only one subject is supported.'
|
|
142
|
+
},
|
|
143
|
+
use_jetstream: {
|
|
144
|
+
type: 'boolean',
|
|
145
|
+
title: 'Use JetStream',
|
|
146
|
+
default: false,
|
|
147
|
+
description: 'Whether to use JetStream (durable push-consumer)'
|
|
148
|
+
},
|
|
149
|
+
stream_name: {
|
|
150
|
+
type: 'string',
|
|
151
|
+
title: 'Stream name',
|
|
152
|
+
pattern: '^((\\$var:[\\w-\\/]+)|[a-zA-Z0-9-_]+)$',
|
|
153
|
+
customErrorMessage: 'Invalid stream name',
|
|
154
|
+
showExpr: 'fields.use_jetstream',
|
|
155
|
+
description: 'Required if using JetStream. If the stream already exists, it will be updated to include the specified subjects if not already present. Otherwise, it will be created.'
|
|
156
|
+
},
|
|
157
|
+
consumer_name: {
|
|
158
|
+
type: 'string',
|
|
159
|
+
title: 'Consumer name',
|
|
160
|
+
pattern: '^((\\$var:[\\w-\\/]+)|[a-zA-Z0-9-_]+)$',
|
|
161
|
+
customErrorMessage: 'Invalid consumer name',
|
|
162
|
+
showExpr: 'fields.use_jetstream',
|
|
163
|
+
description: 'Required is using JetStream. If a consumer with the same name already exists, it will be overwritten. It is also used as the deliver subject.'
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
required: ['subjects', 'use_jetstream', 'stream_name', 'consumer_name']
|
|
167
|
+
};
|
|
168
|
+
let connectionValid = false;
|
|
169
|
+
let otherArgsValid = false;
|
|
170
|
+
let globalError = '';
|
|
171
|
+
$: globalError =
|
|
172
|
+
!args.use_jetstream && args.subjects && args.subjects.length > 1
|
|
173
|
+
? 'Only one subject is supported if not using JetStream.'
|
|
174
|
+
: '';
|
|
175
|
+
$: isValid =
|
|
176
|
+
(selected === 'resource'
|
|
177
|
+
? !!args.nats_resource_path
|
|
178
|
+
: connectionValid &&
|
|
179
|
+
args.servers &&
|
|
180
|
+
args.servers.length > 0 &&
|
|
181
|
+
args.servers.every((b) => b.length > 0) &&
|
|
182
|
+
args.require_tls !== undefined &&
|
|
183
|
+
args.require_tls !== null) &&
|
|
184
|
+
otherArgsValid &&
|
|
185
|
+
args.subjects &&
|
|
186
|
+
args.subjects.length > 0 &&
|
|
187
|
+
args.subjects.every((b) => /^[a-zA-Z0-9-_.*>]+$/.test(b)) &&
|
|
188
|
+
globalError === '';
|
|
189
|
+
$: usingResource = !!args.nats_resource_path;
|
|
190
|
+
$: usingResource && (selected = 'resource');
|
|
191
|
+
function setStreamAndConsumerNames() {
|
|
192
|
+
if (!args.stream_name) {
|
|
193
|
+
args.stream_name = `windmill_stream-${$workspaceStore}-${path.replaceAll('/', '__')}`;
|
|
194
|
+
}
|
|
195
|
+
if (!args.consumer_name) {
|
|
196
|
+
args.consumer_name = `windmill_consumer-${$workspaceStore}-${path.replaceAll('/', '__')}`;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
$: useJetStream = args.use_jetstream;
|
|
200
|
+
$: useJetStream && setStreamAndConsumerNames();
|
|
201
|
+
</script>
|
|
202
|
+
|
|
203
|
+
<div>
|
|
204
|
+
{#if showCapture && captureInfo}
|
|
205
|
+
<CaptureSection
|
|
206
|
+
captureType="nats"
|
|
207
|
+
disabled={!isValid}
|
|
208
|
+
{captureInfo}
|
|
209
|
+
on:captureToggle
|
|
210
|
+
on:applyArgs
|
|
211
|
+
on:updateSchema
|
|
212
|
+
on:addPreprocessor
|
|
213
|
+
bind:captureTable
|
|
214
|
+
/>
|
|
215
|
+
{/if}
|
|
216
|
+
<Section label="NATS" {headless}>
|
|
217
|
+
<div class="flex flex-col w-full gap-4">
|
|
218
|
+
<div class="block grow w-full">
|
|
219
|
+
<Subsection label="Connection">
|
|
220
|
+
<svelte:fragment slot="header">
|
|
221
|
+
{#if !staticInputDisabled}
|
|
222
|
+
<ToggleButtonGroup
|
|
223
|
+
bind:selected
|
|
224
|
+
class="h-full"
|
|
225
|
+
on:selected={(ev) => {
|
|
226
|
+
if (ev.detail === 'static') {
|
|
227
|
+
delete args.nats_resource_path
|
|
228
|
+
args.require_tls = false
|
|
229
|
+
args.servers = ['']
|
|
230
|
+
args.auth = {
|
|
231
|
+
label: 'NO_AUTH'
|
|
232
|
+
}
|
|
233
|
+
} else {
|
|
234
|
+
delete args.servers
|
|
235
|
+
delete args.auth
|
|
236
|
+
delete args.require_tls
|
|
237
|
+
}
|
|
238
|
+
}}
|
|
239
|
+
>
|
|
240
|
+
<ToggleButton value="static" label="Static" small={true} />
|
|
241
|
+
<ToggleButton value="resource" label="Resource" icon={Boxes} small={true} />
|
|
242
|
+
</ToggleButtonGroup>
|
|
243
|
+
{/if}
|
|
244
|
+
</svelte:fragment>
|
|
245
|
+
|
|
246
|
+
{#if selected === 'resource'}
|
|
247
|
+
<ResourcePicker
|
|
248
|
+
resourceType="nats"
|
|
249
|
+
bind:value={args.nats_resource_path}
|
|
250
|
+
{defaultValues}
|
|
251
|
+
/>
|
|
252
|
+
{:else}
|
|
253
|
+
<SchemaForm
|
|
254
|
+
schema={connnectionSchema}
|
|
255
|
+
bind:args
|
|
256
|
+
bind:isValid={connectionValid}
|
|
257
|
+
lightHeader={true}
|
|
258
|
+
/>
|
|
259
|
+
{/if}
|
|
260
|
+
</Subsection>
|
|
261
|
+
</div>
|
|
262
|
+
|
|
263
|
+
<div class="block grow w-full">
|
|
264
|
+
<Subsection headless={true}>
|
|
265
|
+
<SchemaForm
|
|
266
|
+
schema={argsSchema}
|
|
267
|
+
bind:args
|
|
268
|
+
bind:isValid={otherArgsValid}
|
|
269
|
+
lightHeader={true}
|
|
270
|
+
/>
|
|
271
|
+
</Subsection>
|
|
272
|
+
<span class="text-xs text-red-500">{globalError}</span>
|
|
273
|
+
</div>
|
|
274
|
+
</div>
|
|
275
|
+
</Section>
|
|
276
|
+
</div>
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { SvelteComponent } from "svelte";
|
|
2
|
+
import { type CaptureInfo } from './CaptureSection.svelte';
|
|
3
|
+
import CaptureTable from './CaptureTable.svelte';
|
|
4
|
+
declare const __propDef: {
|
|
5
|
+
props: {
|
|
6
|
+
defaultValues?: Record<string, any> | undefined;
|
|
7
|
+
headless?: boolean | undefined;
|
|
8
|
+
args?: Record<string, any> | undefined;
|
|
9
|
+
staticInputDisabled?: boolean | undefined;
|
|
10
|
+
showCapture?: boolean | undefined;
|
|
11
|
+
captureInfo?: CaptureInfo | undefined;
|
|
12
|
+
captureTable?: CaptureTable | undefined;
|
|
13
|
+
isValid?: boolean | undefined;
|
|
14
|
+
path: string;
|
|
15
|
+
};
|
|
16
|
+
events: {
|
|
17
|
+
captureToggle: CustomEvent<undefined>;
|
|
18
|
+
applyArgs: CustomEvent<{
|
|
19
|
+
kind: "main" | "preprocessor";
|
|
20
|
+
args: Record<string, any> | undefined;
|
|
21
|
+
}>;
|
|
22
|
+
updateSchema: CustomEvent<{
|
|
23
|
+
payloadData: Record<string, any>;
|
|
24
|
+
redirect: boolean;
|
|
25
|
+
}>;
|
|
26
|
+
addPreprocessor: CustomEvent<null>;
|
|
27
|
+
} & {
|
|
28
|
+
[evt: string]: CustomEvent<any>;
|
|
29
|
+
};
|
|
30
|
+
slots: {};
|
|
31
|
+
};
|
|
32
|
+
export type NatsTriggersConfigSectionProps = typeof __propDef.props;
|
|
33
|
+
export type NatsTriggersConfigSectionEvents = typeof __propDef.events;
|
|
34
|
+
export type NatsTriggersConfigSectionSlots = typeof __propDef.slots;
|
|
35
|
+
export default class NatsTriggersConfigSection extends SvelteComponent<NatsTriggersConfigSectionProps, NatsTriggersConfigSectionEvents, NatsTriggersConfigSectionSlots> {
|
|
36
|
+
}
|
|
37
|
+
export {};
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
<script>import { enterpriseLicense, userStore, workspaceStore } from '../../stores';
|
|
2
|
+
import { NatsTriggerService } from '../../gen';
|
|
3
|
+
import { canWrite } from '../../utils';
|
|
4
|
+
import Alert from '../common/alert/Alert.svelte';
|
|
5
|
+
import { getContext, onMount } from 'svelte';
|
|
6
|
+
import NatsTriggerEditor from './NatsTriggerEditor.svelte';
|
|
7
|
+
import { isCloudHosted } from '../../cloud';
|
|
8
|
+
import TriggersEditorSection from './TriggersEditorSection.svelte';
|
|
9
|
+
import Section from '../Section.svelte';
|
|
10
|
+
import Skeleton from '../common/skeleton/Skeleton.svelte';
|
|
11
|
+
import Description from '../Description.svelte';
|
|
12
|
+
export let isFlow;
|
|
13
|
+
export let path;
|
|
14
|
+
export let newItem = false;
|
|
15
|
+
export let isEditor = false;
|
|
16
|
+
export let canHavePreprocessor = false;
|
|
17
|
+
export let hasPreprocessor = false;
|
|
18
|
+
let natsTriggerEditor;
|
|
19
|
+
$: path && loadTriggers();
|
|
20
|
+
const { triggersCount, selectedTrigger, defaultValues } = getContext('TriggerContext');
|
|
21
|
+
onMount(() => {
|
|
22
|
+
if (defaultValues &&
|
|
23
|
+
$selectedTrigger === 'nats' &&
|
|
24
|
+
Object.keys($defaultValues ?? {}).length > 0) {
|
|
25
|
+
natsTriggerEditor.openNew(isFlow, path, $defaultValues);
|
|
26
|
+
defaultValues.set(undefined);
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
let natsTriggers = undefined;
|
|
30
|
+
export async function loadTriggers() {
|
|
31
|
+
try {
|
|
32
|
+
natsTriggers = (await NatsTriggerService.listNatsTriggers({
|
|
33
|
+
workspace: $workspaceStore ?? '',
|
|
34
|
+
path,
|
|
35
|
+
isFlow
|
|
36
|
+
})).map((x) => {
|
|
37
|
+
return { canWrite: canWrite(x.path, x.extra_perms, $userStore), ...x };
|
|
38
|
+
});
|
|
39
|
+
$triggersCount = { ...($triggersCount ?? {}), nats_count: natsTriggers?.length };
|
|
40
|
+
}
|
|
41
|
+
catch (e) {
|
|
42
|
+
console.error('impossible to load nats triggers', e);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
let data = {
|
|
46
|
+
natsTriggers: [],
|
|
47
|
+
newItem
|
|
48
|
+
};
|
|
49
|
+
function saveTrigger(path, args) {
|
|
50
|
+
natsTriggerEditor?.openNew(isFlow, path, args);
|
|
51
|
+
}
|
|
52
|
+
</script>
|
|
53
|
+
|
|
54
|
+
<NatsTriggerEditor
|
|
55
|
+
on:update={() => {
|
|
56
|
+
loadTriggers()
|
|
57
|
+
}}
|
|
58
|
+
bind:this={natsTriggerEditor}
|
|
59
|
+
/>
|
|
60
|
+
|
|
61
|
+
{#if !$enterpriseLicense}
|
|
62
|
+
<Alert title="EE Only" type="warning" size="xs">
|
|
63
|
+
Nats triggers are an enterprise only feature.
|
|
64
|
+
</Alert>
|
|
65
|
+
{:else if isCloudHosted()}
|
|
66
|
+
<Alert title="Not compatible with multi-tenant cloud" type="warning" size="xs">
|
|
67
|
+
Nats triggers are disabled in the multi-tenant cloud.
|
|
68
|
+
</Alert>
|
|
69
|
+
{:else}
|
|
70
|
+
<div class="flex flex-col gap-4">
|
|
71
|
+
<Description link="https://www.windmill.dev/docs/core_concepts/nats_triggers">
|
|
72
|
+
NATS triggers execute scripts and flows in response to messages published to NATS subjects.
|
|
73
|
+
</Description>
|
|
74
|
+
<TriggersEditorSection
|
|
75
|
+
on:saveTrigger={(e) => {
|
|
76
|
+
saveTrigger(path, e.detail.config)
|
|
77
|
+
}}
|
|
78
|
+
on:applyArgs
|
|
79
|
+
on:addPreprocessor
|
|
80
|
+
cloudDisabled={false}
|
|
81
|
+
triggerType="nats"
|
|
82
|
+
{isFlow}
|
|
83
|
+
{data}
|
|
84
|
+
{path}
|
|
85
|
+
{isEditor}
|
|
86
|
+
{canHavePreprocessor}
|
|
87
|
+
{hasPreprocessor}
|
|
88
|
+
{newItem}
|
|
89
|
+
/>
|
|
90
|
+
|
|
91
|
+
{#if !newItem}
|
|
92
|
+
{#if natsTriggers}
|
|
93
|
+
<Section label="NATS Triggers">
|
|
94
|
+
{#if natsTriggers.length == 0}
|
|
95
|
+
<div class="text-xs text-secondary text-center"> No nats triggers </div>
|
|
96
|
+
{:else}
|
|
97
|
+
<div class="flex flex-col divide-y pt-2">
|
|
98
|
+
{#each natsTriggers as natsTrigger (natsTrigger.path)}
|
|
99
|
+
<div class="grid grid-cols-5 text-2xs items-center py-2">
|
|
100
|
+
<div class="col-span-2 truncate">{natsTrigger.path}</div>
|
|
101
|
+
<div class="col-span-2 truncate">
|
|
102
|
+
{natsTrigger.nats_resource_path}
|
|
103
|
+
</div>
|
|
104
|
+
<div class="flex justify-end">
|
|
105
|
+
<button
|
|
106
|
+
on:click={() => natsTriggerEditor?.openEdit(natsTrigger.path, isFlow)}
|
|
107
|
+
class="px-2"
|
|
108
|
+
>
|
|
109
|
+
{#if natsTrigger.canWrite}
|
|
110
|
+
Edit
|
|
111
|
+
{:else}
|
|
112
|
+
View
|
|
113
|
+
{/if}
|
|
114
|
+
</button>
|
|
115
|
+
</div>
|
|
116
|
+
</div>
|
|
117
|
+
{/each}
|
|
118
|
+
</div>
|
|
119
|
+
{/if}
|
|
120
|
+
</Section>
|
|
121
|
+
{:else}
|
|
122
|
+
<Skeleton layout={[[8]]} />
|
|
123
|
+
{/if}
|
|
124
|
+
{/if}
|
|
125
|
+
</div>
|
|
126
|
+
{/if}
|