windmill-components 1.444.2 → 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.
Files changed (229) hide show
  1. package/package/autosize.js +1 -1
  2. package/package/components/AppConnectInner.svelte +2 -1
  3. package/package/components/ArgInput.svelte +37 -24
  4. package/package/components/CapturesInputs.svelte +16 -0
  5. package/package/components/CapturesInputs.svelte.d.ts +21 -0
  6. package/package/components/Dev.svelte +7 -1
  7. package/package/components/EditableSchemaForm.svelte +369 -290
  8. package/package/components/EditableSchemaForm.svelte.d.ts +12 -2
  9. package/package/components/Editor.svelte +5 -7
  10. package/package/components/FirstStepInputs.svelte +111 -0
  11. package/package/components/FirstStepInputs.svelte.d.ts +17 -0
  12. package/package/components/FlowBuilder.svelte +28 -7
  13. package/package/components/FlowPreviewContent.svelte +72 -1
  14. package/package/components/FlowPreviewContent.svelte.d.ts +1 -0
  15. package/package/components/GfmMarkdown.svelte +93 -2
  16. package/package/components/HighlightCode.svelte +2 -0
  17. package/package/components/HistoricInputs.svelte +193 -0
  18. package/package/components/HistoricInputs.svelte.d.ts +20 -0
  19. package/package/components/InfiniteList.svelte +161 -0
  20. package/package/components/InfiniteList.svelte.d.ts +40 -0
  21. package/package/components/LightweightArgInput.svelte +19 -15
  22. package/package/components/MoveDrawer.svelte +2 -1
  23. package/package/components/Path.svelte +7 -1
  24. package/package/components/Path.svelte.d.ts +1 -1
  25. package/package/components/ResourcePicker.svelte +2 -1
  26. package/package/components/ResourcePicker.svelte.d.ts +1 -0
  27. package/package/components/ResultJobLoader.svelte.d.ts +1 -1
  28. package/package/components/SaveInputsButton.svelte +53 -0
  29. package/package/components/SaveInputsButton.svelte.d.ts +24 -0
  30. package/package/components/SavedInputs.svelte +33 -61
  31. package/package/components/SavedInputsPicker.svelte +264 -0
  32. package/package/components/SavedInputsPicker.svelte.d.ts +20 -0
  33. package/package/components/ScheduleEditorInner.svelte +0 -1
  34. package/package/components/SchemaForm.svelte +22 -3
  35. package/package/components/ScriptBuilder.svelte +595 -562
  36. package/package/components/ScriptEditor.svelte +10 -3
  37. package/package/components/ScriptEditor.svelte.d.ts +5 -2
  38. package/package/components/ScriptSchema.svelte +1 -2
  39. package/package/components/Section.svelte +6 -4
  40. package/package/components/ShareModal.svelte.d.ts +2 -2
  41. package/package/components/SimpleEditor.svelte +39 -7
  42. package/package/components/SimpleEditor.svelte.d.ts +1 -4
  43. package/package/components/StringTypeNarrowing.svelte +3 -1
  44. package/package/components/TestConnection.svelte +5 -0
  45. package/package/components/TestJobLoader.svelte.d.ts +1 -1
  46. package/package/components/WorkerGroup.svelte +2 -1
  47. package/package/components/apps/components/inputs/AppS3FileInput.svelte +1 -0
  48. package/package/components/apps/editor/component/components.d.ts +79 -79
  49. package/package/components/apps/editor/component/default-codes.d.ts +1 -1
  50. package/package/components/apps/editor/component/default-codes.js +10 -10
  51. package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +2 -1
  52. package/package/components/apps/inputType.d.ts +2 -2
  53. package/package/components/common/button/Button.svelte +10 -52
  54. package/package/components/common/button/PulseButton.svelte +81 -0
  55. package/package/components/common/button/PulseButton.svelte.d.ts +34 -0
  56. package/package/components/common/button/RoundIconButton.svelte +11 -0
  57. package/package/components/common/button/RoundIconButton.svelte.d.ts +19 -0
  58. package/package/components/common/button/model.d.ts +1 -0
  59. package/package/components/common/button/model.js +47 -0
  60. package/package/components/common/fileUpload/FileUpload.svelte +3 -1
  61. package/package/components/common/fileUpload/FileUpload.svelte.d.ts +1 -0
  62. package/package/components/common/languageIcons/LanguageIcon.svelte +3 -0
  63. package/package/components/common/layout/List.svelte +10 -4
  64. package/package/components/common/layout/List.svelte.d.ts +1 -0
  65. package/package/components/common/tabs/Tab.svelte +14 -1
  66. package/package/components/common/tabs/Tab.svelte.d.ts +1 -0
  67. package/package/components/copilot/ScriptGen.svelte +1 -1
  68. package/package/components/copilot/lib.js +1 -1
  69. package/package/components/copilot/prompts/edit.yaml +1 -1
  70. package/package/components/copilot/prompts/editPrompt.js +1 -1
  71. package/package/components/copilot/prompts/fix.yaml +1 -1
  72. package/package/components/copilot/prompts/fixPrompt.js +1 -1
  73. package/package/components/copilot/prompts/gen.yaml +1 -1
  74. package/package/components/copilot/prompts/genPrompt.js +1 -1
  75. package/package/components/custom_ui.d.ts +1 -0
  76. package/package/components/details/DetailPageDetailPanel.svelte +20 -19
  77. package/package/components/details/DetailPageDetailPanel.svelte.d.ts +4 -1
  78. package/package/components/details/DetailPageLayout.svelte +4 -1
  79. package/package/components/details/DetailPageLayout.svelte.d.ts +3 -0
  80. package/package/components/details/DetailPageTriggerPanel.svelte +84 -63
  81. package/package/components/details/DetailPageTriggerPanel.svelte.d.ts +3 -1
  82. package/package/components/details/EmailTriggerConfigSection.svelte +1 -1
  83. package/package/components/details/EmailTriggerConfigSection.svelte.d.ts +2 -1
  84. package/package/components/details/EmailTriggerPanel.svelte +2 -0
  85. package/package/components/details/EmailTriggerPanel.svelte.d.ts +2 -0
  86. package/package/components/flows/FlowEditor.svelte +8 -2
  87. package/package/components/flows/FlowEditor.svelte.d.ts +1 -0
  88. package/package/components/flows/common/FlowCard.svelte +12 -6
  89. package/package/components/flows/content/DynamicInputHelpBox.svelte +1 -0
  90. package/package/components/flows/content/FlowEditorPanel.svelte +15 -9
  91. package/package/components/flows/content/FlowEditorPanel.svelte.d.ts +1 -0
  92. package/package/components/flows/content/FlowInput.svelte +449 -98
  93. package/package/components/flows/content/FlowInput.svelte.d.ts +2 -0
  94. package/package/components/flows/content/FlowInputEditor.svelte +46 -0
  95. package/package/components/flows/content/FlowInputEditor.svelte.d.ts +25 -0
  96. package/package/components/flows/content/FlowInputsQuick.svelte +1 -1
  97. package/package/components/flows/content/FlowLoop.svelte +192 -194
  98. package/package/components/flows/content/FlowModuleComponent.svelte +372 -382
  99. package/package/components/flows/content/FlowModuleMock.svelte +6 -7
  100. package/package/components/flows/content/FlowPathViewer.svelte +2 -1
  101. package/package/components/flows/content/FlowSettings.svelte +25 -3
  102. package/package/components/flows/content/FlowWhileLoop.svelte +97 -99
  103. package/package/components/flows/flowStore.d.ts +13 -0
  104. package/package/components/flows/flowStore.js +41 -0
  105. package/package/components/flows/header/FlowPreviewButtons.svelte +10 -4
  106. package/package/components/flows/header/FlowPreviewButtons.svelte.d.ts +4 -2
  107. package/package/components/flows/header/FlowYamlEditor.svelte +3 -0
  108. package/package/components/flows/map/FlowModuleSchemaItem.svelte +8 -58
  109. package/package/components/flows/map/FlowModuleSchemaItemViewer.svelte +67 -0
  110. package/package/components/flows/map/FlowModuleSchemaItemViewer.svelte.d.ts +24 -0
  111. package/package/components/flows/map/FlowModuleSchemaMap.svelte +2 -2
  112. package/package/components/flows/pickers/FlowScriptPicker.svelte +1 -1
  113. package/package/components/flows/previousResults.d.ts +1 -1
  114. package/package/components/flows/previousResults.js +7 -2
  115. package/package/components/flows/types.d.ts +7 -0
  116. package/package/components/flows/utils.d.ts +1 -0
  117. package/package/components/flows/utils.js +3 -0
  118. package/package/components/graph/graphBuilder.js +1 -1
  119. package/package/components/graph/renderers/triggers/TriggersBadge.svelte +22 -8
  120. package/package/components/graph/renderers/triggers/TriggersBadge.svelte.d.ts +1 -1
  121. package/package/components/icons/NatsIcon.svelte +19 -0
  122. package/package/components/icons/NatsIcon.svelte.d.ts +18 -0
  123. package/package/components/icons/OracleDBIcon.svelte +15 -0
  124. package/package/components/icons/OracleDBIcon.svelte.d.ts +25 -0
  125. package/package/components/icons/index.d.ts +7 -1
  126. package/package/components/icons/index.js +8 -2
  127. package/package/components/meltComponents/ButtonDropDown.svelte +32 -0
  128. package/package/components/meltComponents/ButtonDropDown.svelte.d.ts +27 -0
  129. package/package/components/meltComponents/Popover.svelte +7 -4
  130. package/package/components/meltComponents/Popover.svelte.d.ts +1 -0
  131. package/package/components/runs/RunsFilter.svelte +2 -2
  132. package/package/components/schema/AddPropertyFormV2.svelte +46 -0
  133. package/package/components/schema/AddPropertyFormV2.svelte.d.ts +18 -0
  134. package/package/components/schema/AddPropertyV2.svelte +151 -0
  135. package/package/components/schema/AddPropertyV2.svelte.d.ts +25 -0
  136. package/package/components/schema/EditableSchemaDrawer.svelte +17 -8
  137. package/package/components/schema/EditableSchemaWrapper.svelte +58 -14
  138. package/package/components/schema/EditableSchemaWrapper.svelte.d.ts +0 -1
  139. package/package/components/schema/FlowPropertyEditor.svelte +8 -3
  140. package/package/components/schema/JobSchemaPicker.svelte +32 -0
  141. package/package/components/schema/JobSchemaPicker.svelte.d.ts +19 -0
  142. package/package/components/schema/PropertyEditor.svelte +9 -1
  143. package/package/components/schema/RunningJobSchemaPicker.svelte +67 -0
  144. package/package/components/schema/RunningJobSchemaPicker.svelte.d.ts +21 -0
  145. package/package/components/schema/SchemaFormDND.svelte +1 -1
  146. package/package/components/schema/SchemaPicker.svelte +92 -0
  147. package/package/components/schema/SchemaPicker.svelte.d.ts +23 -0
  148. package/package/components/schema/SchemaPickerRow.svelte +95 -0
  149. package/package/components/schema/SchemaPickerRow.svelte.d.ts +22 -0
  150. package/package/components/scriptEditor/LogPanel.svelte +1 -1
  151. package/package/components/settings/ChangeWorkspaceColor.svelte +103 -0
  152. package/package/components/settings/ChangeWorkspaceColor.svelte.d.ts +16 -0
  153. package/package/components/settings/ChangeWorkspaceId.svelte +1 -0
  154. package/package/components/settings/ChangeWorkspaceName.svelte +4 -0
  155. package/package/components/sidebar/MenuButton.svelte +5 -2
  156. package/package/components/sidebar/MenuButton.svelte.d.ts +1 -0
  157. package/package/components/sidebar/SidebarContent.svelte +8 -0
  158. package/package/components/sidebar/WorkspaceMenu.svelte +40 -21
  159. package/package/components/table/DataTable.svelte +43 -3
  160. package/package/components/table/DataTable.svelte.d.ts +2 -0
  161. package/package/components/table/Head.svelte +1 -1
  162. package/package/components/table/Row.svelte +11 -1
  163. package/package/components/table/Row.svelte.d.ts +3 -0
  164. package/package/components/table/index.d.ts +3 -0
  165. package/package/components/table/index.js +3 -0
  166. package/package/components/triggers/CaptureButton.svelte +38 -4
  167. package/package/components/triggers/CaptureButton.svelte.d.ts +3 -1
  168. package/package/components/triggers/CaptureIcon.svelte +7 -4
  169. package/package/components/triggers/CaptureIcon.svelte.d.ts +7 -13
  170. package/package/components/triggers/CaptureSection.svelte +50 -17
  171. package/package/components/triggers/CaptureSection.svelte.d.ts +5 -3
  172. package/package/components/triggers/CaptureTable.svelte +239 -186
  173. package/package/components/triggers/CaptureTable.svelte.d.ts +9 -11
  174. package/package/components/triggers/CaptureWrapper.svelte +126 -109
  175. package/package/components/triggers/CaptureWrapper.svelte.d.ts +3 -1
  176. package/package/components/triggers/KafkaTriggerEditorInner.svelte +1 -0
  177. package/package/components/triggers/KafkaTriggersConfigSection.svelte +16 -4
  178. package/package/components/triggers/KafkaTriggersConfigSection.svelte.d.ts +3 -1
  179. package/package/components/triggers/KafkaTriggersPanel.svelte +2 -0
  180. package/package/components/triggers/KafkaTriggersPanel.svelte.d.ts +2 -0
  181. package/package/components/triggers/NatsTriggerEditor.svelte +19 -0
  182. package/package/components/triggers/NatsTriggerEditor.svelte.d.ts +21 -0
  183. package/package/components/triggers/NatsTriggerEditorInner.svelte +239 -0
  184. package/package/components/triggers/NatsTriggerEditorInner.svelte.d.ts +21 -0
  185. package/package/components/triggers/NatsTriggersConfigSection.svelte +276 -0
  186. package/package/components/triggers/NatsTriggersConfigSection.svelte.d.ts +37 -0
  187. package/package/components/triggers/NatsTriggersPanel.svelte +126 -0
  188. package/package/components/triggers/NatsTriggersPanel.svelte.d.ts +26 -0
  189. package/package/components/triggers/RouteEditorConfigSection.svelte +12 -2
  190. package/package/components/triggers/RouteEditorConfigSection.svelte.d.ts +5 -1
  191. package/package/components/triggers/RouteEditorInner.svelte +5 -0
  192. package/package/components/triggers/RoutesPanel.svelte +4 -0
  193. package/package/components/triggers/RoutesPanel.svelte.d.ts +3 -0
  194. package/package/components/triggers/TriggersEditor.svelte +146 -97
  195. package/package/components/triggers/TriggersEditor.svelte.d.ts +2 -0
  196. package/package/components/triggers/TriggersEditorSection.svelte +19 -13
  197. package/package/components/triggers/TriggersEditorSection.svelte.d.ts +3 -0
  198. package/package/components/triggers/TriggersWrapper.svelte +7 -3
  199. package/package/components/triggers/TriggersWrapper.svelte.d.ts +2 -1
  200. package/package/components/triggers/WebhooksConfigSection.svelte +1 -0
  201. package/package/components/triggers/WebhooksConfigSection.svelte.d.ts +2 -1
  202. package/package/components/triggers/WebhooksPanel.svelte +2 -0
  203. package/package/components/triggers/WebhooksPanel.svelte.d.ts +2 -0
  204. package/package/components/triggers/WebsocketEditorConfigSection.svelte +3 -1
  205. package/package/components/triggers/WebsocketEditorConfigSection.svelte.d.ts +2 -1
  206. package/package/components/triggers/WebsocketTriggersPanel.svelte +2 -0
  207. package/package/components/triggers/WebsocketTriggersPanel.svelte.d.ts +2 -0
  208. package/package/components/triggers.d.ts +2 -1
  209. package/package/components/triggers.js +2 -0
  210. package/package/components/vscode.js +12 -8
  211. package/package/consts.d.ts +1 -0
  212. package/package/consts.js +18 -0
  213. package/package/gen/core/OpenAPI.js +1 -1
  214. package/package/gen/schemas.gen.d.ts +207 -13
  215. package/package/gen/schemas.gen.js +207 -13
  216. package/package/gen/services.gen.d.ts +118 -10
  217. package/package/gen/services.gen.js +237 -17
  218. package/package/gen/types.gen.d.ts +400 -40
  219. package/package/hubPaths.json +2 -1
  220. package/package/infer.js +11 -2
  221. package/package/monaco_workers/build_workers.js +39 -37
  222. package/package/monaco_workers/graphql.worker.bundle.js +18371 -36513
  223. package/package/script_helpers.d.ts +5 -2
  224. package/package/script_helpers.js +46 -8
  225. package/package/scripts.js +4 -0
  226. package/package/stores.d.ts +2 -1
  227. package/package/stores.js +2 -1
  228. package/package.json +14 -16
  229. package/package/monaco_workers/graphql.worker.bundle.d.ts +0 -0
@@ -0,0 +1,26 @@
1
+ import { SvelteComponent } from "svelte";
2
+ declare const __propDef: {
3
+ props: {
4
+ isFlow: boolean;
5
+ path: string;
6
+ newItem?: boolean | undefined;
7
+ isEditor?: boolean | undefined;
8
+ canHavePreprocessor?: boolean | undefined;
9
+ hasPreprocessor?: boolean | undefined;
10
+ loadTriggers?: (() => Promise<void>) | undefined;
11
+ };
12
+ events: {
13
+ applyArgs: any;
14
+ addPreprocessor: any;
15
+ } & {
16
+ [evt: string]: CustomEvent<any>;
17
+ };
18
+ slots: {};
19
+ };
20
+ export type NatsTriggersPanelProps = typeof __propDef.props;
21
+ export type NatsTriggersPanelEvents = typeof __propDef.events;
22
+ export type NatsTriggersPanelSlots = typeof __propDef.slots;
23
+ export default class NatsTriggersPanel extends SvelteComponent<NatsTriggersPanelProps, NatsTriggersPanelEvents, NatsTriggersPanelSlots> {
24
+ get loadTriggers(): () => Promise<void>;
25
+ }
26
+ export {};
@@ -14,6 +14,9 @@ import { base } from '../../base';
14
14
  import CaptureSection from './CaptureSection.svelte';
15
15
  import CaptureTable from './CaptureTable.svelte';
16
16
  import ClipboardPanel from '../details/ClipboardPanel.svelte';
17
+ export let isFlow;
18
+ export let path;
19
+ export let args = { route_path: '', http_method: 'get' };
17
20
  export let dirtyRoutePath = false;
18
21
  export let route_path = '';
19
22
  export let http_method = 'post';
@@ -53,12 +56,18 @@ async function routeExists(route_path, method) {
53
56
  }
54
57
  });
55
58
  }
59
+ $: captureURL = `${location.origin}${base}/api/w/${$workspaceStore}/capture_u/http/${isFlow ? 'flow' : 'script'}/${path.replaceAll('/', '.')}/${route_path}`;
56
60
  function getHttpRoute(route_path) {
57
61
  return `${location.origin}${base}/api/r/${isCloudHosted() ? $workspaceStore + '/' : ''}${route_path}`;
58
62
  }
59
63
  $: validateRoute(route_path, http_method);
60
64
  $: isValid = routeError === '';
61
65
  $: fullRoute = getHttpRoute(route_path);
66
+ $: showCapture && (http_method = 'post');
67
+ function updateArgs(route_path, http_method) {
68
+ args && ((args.route_path = route_path), (args.http_method = http_method));
69
+ }
70
+ $: updateArgs(route_path, http_method);
62
71
  </script>
63
72
 
64
73
  <div>
@@ -71,17 +80,18 @@ $: fullRoute = getHttpRoute(route_path);
71
80
  on:applyArgs
72
81
  on:updateSchema
73
82
  on:addPreprocessor
83
+ on:testWithArgs
74
84
  bind:captureTable
75
85
  >
76
86
  <Label label="URL">
77
- <ClipboardPanel content={fullRoute} disabled={!captureInfo.active} />
87
+ <ClipboardPanel content={captureURL} disabled={!captureInfo.active} />
78
88
  </Label>
79
89
 
80
90
  <Label label="Example cUrl">
81
91
  <CopyableCodeBlock
82
92
  disabled={!captureInfo.active}
83
93
  code={`curl \\
84
- -X POST ${fullRoute} \\
94
+ -X POST ${captureURL} \\
85
95
  -H 'Content-Type: application/json' \\
86
96
  -d '{"foo": 42}'`}
87
97
  language={bash}
@@ -3,6 +3,9 @@ import type { CaptureInfo } from './CaptureSection.svelte';
3
3
  import CaptureTable from './CaptureTable.svelte';
4
4
  declare const __propDef: {
5
5
  props: {
6
+ isFlow: boolean;
7
+ path: string;
8
+ args?: Record<string, any> | undefined;
6
9
  dirtyRoutePath?: boolean | undefined;
7
10
  route_path?: string | undefined;
8
11
  http_method?: "get" | "post" | "put" | "delete" | "patch" | undefined;
@@ -26,10 +29,11 @@ declare const __propDef: {
26
29
  args: Record<string, any> | undefined;
27
30
  }>;
28
31
  updateSchema: CustomEvent<{
29
- schema: any;
32
+ payloadData: Record<string, any>;
30
33
  redirect: boolean;
31
34
  }>;
32
35
  addPreprocessor: CustomEvent<null>;
36
+ testWithArgs: CustomEvent<any>;
33
37
  } & {
34
38
  [evt: string]: CustomEvent<any>;
35
39
  };
@@ -149,6 +149,8 @@ async function triggerScript() {
149
149
  }
150
150
  let drawer;
151
151
  let dirtyPath = false;
152
+ let args = { route_path: '' };
153
+ $: args && (route_path = args.route_path);
152
154
  </script>
153
155
 
154
156
  {#if static_asset_config}
@@ -203,7 +205,10 @@ let dirtyPath = false;
203
205
  </div>
204
206
 
205
207
  <RouteEditorConfigSection
208
+ isFlow={is_flow}
209
+ {path}
206
210
  bind:route_path
211
+ bind:args
207
212
  bind:isValid
208
213
  bind:dirtyRoutePath
209
214
  bind:http_method
@@ -13,6 +13,7 @@ export let path;
13
13
  export let newItem = false;
14
14
  export let isEditor = false;
15
15
  export let canHavePreprocessor = false;
16
+ export let hasPreprocessor = false;
16
17
  let routeEditor;
17
18
  $: path && loadTriggers();
18
19
  const { triggersCount, selectedTrigger, defaultValues } = getContext('TriggerContext');
@@ -60,12 +61,15 @@ export async function loadTriggers() {
60
61
  }}
61
62
  on:applyArgs
62
63
  on:addPreprocessor
64
+ on:updateSchema
65
+ on:testWithArgs
63
66
  cloudDisabled={false}
64
67
  triggerType="http"
65
68
  {isFlow}
66
69
  {path}
67
70
  {isEditor}
68
71
  {canHavePreprocessor}
72
+ {hasPreprocessor}
69
73
  {newItem}
70
74
  />
71
75
  {#if !newItem}
@@ -6,11 +6,14 @@ declare const __propDef: {
6
6
  newItem?: boolean | undefined;
7
7
  isEditor?: boolean | undefined;
8
8
  canHavePreprocessor?: boolean | undefined;
9
+ hasPreprocessor?: boolean | undefined;
9
10
  loadTriggers?: (() => Promise<void>) | undefined;
10
11
  };
11
12
  events: {
12
13
  applyArgs: any;
13
14
  addPreprocessor: any;
15
+ updateSchema: any;
16
+ testWithArgs: any;
14
17
  } & {
15
18
  [evt: string]: CustomEvent<any>;
16
19
  };
@@ -11,6 +11,10 @@ import { getContext, onDestroy, createEventDispatcher } from 'svelte';
11
11
  import WebsocketTriggersPanel from './WebsocketTriggersPanel.svelte';
12
12
  import ScheduledPollPanel from './ScheduledPollPanel.svelte';
13
13
  import KafkaTriggersPanel from './KafkaTriggersPanel.svelte';
14
+ import NatsTriggersPanel from './NatsTriggersPanel.svelte';
15
+ import ToggleButtonGroup from '../common/toggleButton-v2/ToggleButtonGroup.svelte';
16
+ import ToggleButton from '../common/toggleButton-v2/ToggleButton.svelte';
17
+ import { KafkaIcon, NatsIcon } from '../icons';
14
18
  export let noEditor;
15
19
  export let newItem = false;
16
20
  export let currentPath;
@@ -20,6 +24,12 @@ export let schema;
20
24
  export let isFlow;
21
25
  export let canHavePreprocessor = false;
22
26
  export let hasPreprocessor = false;
27
+ let eventStreamType = 'kafka';
28
+ $: {
29
+ if ($selectedTrigger === 'kafka' || $selectedTrigger === 'nats') {
30
+ eventStreamType = $selectedTrigger;
31
+ }
32
+ }
23
33
  const { selectedTrigger, simplifiedPoll } = getContext('TriggerContext');
24
34
  const dispatch = createEventDispatcher();
25
35
  onDestroy(() => {
@@ -29,106 +39,145 @@ onDestroy(() => {
29
39
 
30
40
  <FlowCard {noEditor} title="Triggers">
31
41
  {#if !$simplifiedPoll}
32
- <Tabs bind:selected={$selectedTrigger}>
33
- <Tab value="webhooks" selectedClass="text-primary font-semibold">Webhooks</Tab>
34
- <Tab value="schedules" selectedClass="text-primary text-sm font-semibold">Schedules</Tab>
35
- <Tab value="routes" selectedClass="text-primary text-sm font-semibold">HTTP</Tab>
36
- <Tab value="websockets" selectedClass="text-primary text-sm font-semibold">Websockets</Tab>
37
- <Tab value="kafka" selectedClass="text-primary text-sm font-semibold">Kafka</Tab>
38
- <Tab value="emails" selectedClass="text-primary text-sm font-semibold">Email</Tab>
39
- {#if isFlow}
40
- <Tab value="scheduledPoll" selectedClass="text-primary text-sm font-semibold"
41
- >Scheduled Poll</Tab
42
+ <div class="h-full flex flex-col">
43
+ <Tabs bind:selected={$selectedTrigger} wrapperClass="overflow-hidden shrink-0">
44
+ <Tab value="webhooks" selectedClass="text-primary font-semibold">Webhooks</Tab>
45
+ <Tab value="schedules" selectedClass="text-primary text-sm font-semibold">Schedules</Tab>
46
+ <Tab value="routes" selectedClass="text-primary text-sm font-semibold">HTTP</Tab>
47
+ <Tab value="websockets" selectedClass="text-primary text-sm font-semibold">Websockets</Tab>
48
+ <Tab
49
+ value="kafka"
50
+ otherValues={['nats']}
51
+ selectedClass="text-primary text-sm font-semibold"
42
52
  >
43
- {/if}
53
+ Event streams
54
+ </Tab>
55
+ <Tab value="emails" selectedClass="text-primary text-sm font-semibold">Email</Tab>
56
+ {#if isFlow}
57
+ <Tab value="scheduledPoll" selectedClass="text-primary text-sm font-semibold"
58
+ >Scheduled Poll</Tab
59
+ >
60
+ {/if}
44
61
 
45
- <svelte:fragment slot="content">
46
- {#if $selectedTrigger === 'webhooks'}
47
- <div class="p-4">
48
- <WebhooksPanel
49
- on:applyArgs
50
- on:addPreprocessor
51
- scopes={isFlow ? [`run:flow/${currentPath}`] : [`run:script/${currentPath}`]}
52
- path={currentPath}
53
- {hash}
54
- {isFlow}
55
- args={{}}
56
- token=""
57
- {newItem}
58
- isEditor={true}
59
- {canHavePreprocessor}
60
- {hasPreprocessor}
61
- />
62
- </div>
63
- {:else if $selectedTrigger === 'emails'}
64
- <div class="p-4">
65
- <EmailTriggerPanel
66
- on:applyArgs
67
- on:addPreprocessor
68
- token=""
69
- scopes={isFlow ? [`run:flow/${currentPath}`] : [`run:script/${currentPath}`]}
70
- path={currentPath}
71
- {isFlow}
72
- isEditor={true}
73
- {canHavePreprocessor}
74
- {hasPreprocessor}
75
- {newItem}
76
- />
77
- </div>
78
- {:else if $selectedTrigger === 'routes'}
79
- <div class="p-4">
80
- <RoutesPanel
81
- on:applyArgs
82
- on:addPreprocessor
83
- {newItem}
84
- path={currentPath}
85
- {isFlow}
86
- isEditor={true}
87
- />
88
- </div>
89
- {:else if $selectedTrigger === 'websockets'}
90
- <div class="p-4">
91
- <WebsocketTriggersPanel
92
- on:applyArgs
93
- on:addPreprocessor
94
- {newItem}
95
- path={currentPath}
96
- {isFlow}
97
- isEditor={true}
98
- {canHavePreprocessor}
99
- {hasPreprocessor}
100
- />
101
- </div>
102
- {:else if $selectedTrigger === 'kafka'}
103
- <div class="p-4">
104
- <KafkaTriggersPanel
105
- on:applyArgs
106
- on:addPreprocessor
107
- {newItem}
108
- path={currentPath}
109
- {isFlow}
110
- isEditor={true}
111
- {canHavePreprocessor}
112
- {hasPreprocessor}
113
- />
62
+ <svelte:fragment slot="content">
63
+ <div class="min-h-0 grow overflow-y-auto">
64
+ {#if $selectedTrigger === 'webhooks'}
65
+ <div class="p-4">
66
+ <WebhooksPanel
67
+ on:applyArgs
68
+ on:addPreprocessor
69
+ on:updateSchema
70
+ on:testWithArgs
71
+ scopes={isFlow ? [`run:flow/${currentPath}`] : [`run:script/${currentPath}`]}
72
+ path={currentPath}
73
+ {hash}
74
+ {isFlow}
75
+ args={{}}
76
+ token=""
77
+ {newItem}
78
+ isEditor={true}
79
+ {canHavePreprocessor}
80
+ {hasPreprocessor}
81
+ />
82
+ </div>
83
+ {:else if $selectedTrigger === 'emails'}
84
+ <div class="p-4">
85
+ <EmailTriggerPanel
86
+ on:applyArgs
87
+ on:addPreprocessor
88
+ on:updateSchema
89
+ on:testWithArgs
90
+ token=""
91
+ scopes={isFlow ? [`run:flow/${currentPath}`] : [`run:script/${currentPath}`]}
92
+ path={currentPath}
93
+ {isFlow}
94
+ isEditor={true}
95
+ {canHavePreprocessor}
96
+ {hasPreprocessor}
97
+ {newItem}
98
+ />
99
+ </div>
100
+ {:else if $selectedTrigger === 'routes'}
101
+ <div class="p-4">
102
+ <RoutesPanel
103
+ on:applyArgs
104
+ on:addPreprocessor
105
+ on:updateSchema
106
+ on:testWithArgs
107
+ {newItem}
108
+ path={currentPath}
109
+ {isFlow}
110
+ isEditor={true}
111
+ {canHavePreprocessor}
112
+ {hasPreprocessor}
113
+ />
114
+ </div>
115
+ {:else if $selectedTrigger === 'websockets'}
116
+ <div class="p-4">
117
+ <WebsocketTriggersPanel
118
+ on:applyArgs
119
+ on:addPreprocessor
120
+ on:updateSchema
121
+ on:testWithArgs
122
+ {newItem}
123
+ path={currentPath}
124
+ {isFlow}
125
+ isEditor={true}
126
+ {canHavePreprocessor}
127
+ {hasPreprocessor}
128
+ />
129
+ </div>
130
+ {:else if $selectedTrigger === 'kafka' || $selectedTrigger === 'nats'}
131
+ <div class="p-4 flex flex-col gap-2">
132
+ <ToggleButtonGroup bind:selected={eventStreamType}>
133
+ <ToggleButton value="kafka" label="Kafka" icon={KafkaIcon} />
134
+ <ToggleButton value="nats" label="NATS" icon={NatsIcon} />
135
+ </ToggleButtonGroup>
136
+ {#if eventStreamType === 'kafka'}
137
+ <KafkaTriggersPanel
138
+ on:applyArgs
139
+ on:addPreprocessor
140
+ on:updateSchema
141
+ on:testWithArgs
142
+ {newItem}
143
+ path={currentPath}
144
+ {isFlow}
145
+ isEditor={true}
146
+ {canHavePreprocessor}
147
+ {hasPreprocessor}
148
+ />
149
+ {:else if eventStreamType === 'nats'}
150
+ <NatsTriggersPanel
151
+ on:applyArgs
152
+ on:addPreprocessor
153
+ {newItem}
154
+ path={currentPath}
155
+ {isFlow}
156
+ isEditor={true}
157
+ {canHavePreprocessor}
158
+ {hasPreprocessor}
159
+ />
160
+ {/if}
161
+ </div>
162
+ {:else if $selectedTrigger === 'schedules'}
163
+ <div class="p-4">
164
+ <RunPageSchedules
165
+ {schema}
166
+ {isFlow}
167
+ path={initialPath}
168
+ {newItem}
169
+ can_write={canWrite(currentPath, {}, $userStore)}
170
+ />
171
+ </div>
172
+ {:else if $selectedTrigger === 'scheduledPoll'}
173
+ <div class="p-4">
174
+ <ScheduledPollPanel />
175
+ </div>
176
+ {/if}
114
177
  </div>
115
- {:else if $selectedTrigger === 'schedules'}
116
- <div class="p-4">
117
- <RunPageSchedules
118
- {schema}
119
- {isFlow}
120
- path={initialPath}
121
- {newItem}
122
- can_write={canWrite(currentPath, {}, $userStore)}
123
- />
124
- </div>
125
- {:else if $selectedTrigger === 'scheduledPoll'}
126
- <div class="p-4">
127
- <ScheduledPollPanel />
128
- </div>
129
- {/if}
130
- </svelte:fragment>
131
- </Tabs>
178
+ </svelte:fragment>
179
+ </Tabs>
180
+ </div>
132
181
  {:else}
133
182
  <div class="px-4 pb-2">
134
183
  <RunPageSchedules
@@ -14,6 +14,8 @@ declare const __propDef: {
14
14
  events: {
15
15
  applyArgs: any;
16
16
  addPreprocessor: any;
17
+ updateSchema: any;
18
+ testWithArgs: any;
17
19
  exitTriggers: CustomEvent<any>;
18
20
  } & {
19
21
  [evt: string]: CustomEvent<any>;
@@ -23,12 +23,22 @@ const captureTypeLabels = {
23
23
  websocket: 'New websocket trigger',
24
24
  webhook: 'Webhook',
25
25
  kafka: 'New kafka trigger',
26
- email: 'Email trigger'
26
+ email: 'Email trigger',
27
+ nats: 'NATS trigger'
27
28
  };
28
29
  const { captureOn } = getContext('TriggerContext');
29
30
  let args = {};
30
31
  const dispatch = createEventDispatcher();
31
- const { flowStore, selectedId } = getContext('FlowEditorContext') || {};
32
+ let showCapture = false;
33
+ let init = false;
34
+ $: updateShowCapture(!!$captureOn);
35
+ function updateShowCapture(show) {
36
+ if (show && !init) {
37
+ $captureOn = undefined;
38
+ showCapture = true;
39
+ init = true;
40
+ }
41
+ }
32
42
  </script>
33
43
 
34
44
  <Section label={captureTypeLabels[triggerType]}>
@@ -38,16 +48,16 @@ const { flowStore, selectedId } = getContext('FlowEditorContext') || {};
38
48
  <Button
39
49
  size="xs2"
40
50
  on:click={() => {
41
- $captureOn = !$captureOn
51
+ showCapture = !showCapture
42
52
  }}
43
53
  variant="border"
44
54
  color="light"
45
55
  endIcon={{
46
56
  icon: ChevronDown,
47
- classes: twMerge('transition', $captureOn ? 'rotate-180' : '')
57
+ classes: twMerge('transition', showCapture ? 'rotate-180' : '')
48
58
  }}
49
59
  >
50
- Capture
60
+ Test trigger
51
61
  </Button>
52
62
  {/if}
53
63
 
@@ -59,6 +69,7 @@ const { flowStore, selectedId } = getContext('FlowEditorContext') || {};
59
69
  {disabled}
60
70
  startIcon={{ icon: Save }}
61
71
  on:click={() => {
72
+ console.log('saveTrigger', args)
62
73
  dispatch('saveTrigger', {
63
74
  config: args
64
75
  })
@@ -91,17 +102,12 @@ const { flowStore, selectedId } = getContext('FlowEditorContext') || {};
91
102
  {canHavePreprocessor}
92
103
  on:applyArgs
93
104
  on:addPreprocessor
94
- on:updateSchema={(e) => {
95
- const { schema, redirect } = e.detail
96
- $flowStore.schema = schema
97
- if (redirect) {
98
- $selectedId = 'Input'
99
- }
100
- }}
105
+ on:updateSchema
101
106
  on:saveTrigger
107
+ on:testWithArgs
102
108
  bind:args
103
109
  {data}
104
- showCapture={$captureOn}
110
+ {showCapture}
105
111
  />
106
112
  {:else}
107
113
  <TriggersWrapper {path} {isFlow} {triggerType} {cloudDisabled} {args} {data} />
@@ -1,4 +1,5 @@
1
1
  import { SvelteComponent } from "svelte";
2
+ import { type CaptureTriggerKind } from '../../gen';
2
3
  declare const __propDef: {
3
4
  props: {
4
5
  cloudDisabled: boolean;
@@ -15,7 +16,9 @@ declare const __propDef: {
15
16
  events: {
16
17
  applyArgs: any;
17
18
  addPreprocessor: any;
19
+ updateSchema: any;
18
20
  saveTrigger: CustomEvent<any>;
21
+ testWithArgs: any;
19
22
  } & {
20
23
  [evt: string]: CustomEvent<any>;
21
24
  };
@@ -6,6 +6,7 @@ import WebsocketEditorConfigSection from './WebsocketEditorConfigSection.svelte'
6
6
  import WebhooksConfigSection from './WebhooksConfigSection.svelte';
7
7
  import EmailTriggerConfigSection from '../details/EmailTriggerConfigSection.svelte';
8
8
  import KafkaTriggersConfigSection from './KafkaTriggersConfigSection.svelte';
9
+ import NatsTriggersConfigSection from './NatsTriggersConfigSection.svelte';
9
10
  export let triggerType = 'webhook';
10
11
  export let cloudDisabled = false;
11
12
  export let args;
@@ -41,9 +42,10 @@ export let data = {};
41
42
  <RouteEditorConfigSection
42
43
  showCapture={false}
43
44
  can_write={true}
44
- bind:route_path={args.route_path}
45
- bind:http_method={args.http_method}
45
+ bind:args
46
46
  headless
47
+ {isFlow}
48
+ {path}
47
49
  />
48
50
  {:else if triggerType === 'email'}
49
51
  <EmailTriggerConfigSection
@@ -55,6 +57,8 @@ export let data = {};
55
57
  emailDomain={data?.emailDomain}
56
58
  />
57
59
  {:else if triggerType === 'kafka'}
58
- <KafkaTriggersConfigSection headless={true} bind:args staticInputDisabled={false} />
60
+ <KafkaTriggersConfigSection headless={true} bind:args staticInputDisabled={false} {path} />
61
+ {:else if triggerType === 'nats'}
62
+ <NatsTriggersConfigSection headless={true} bind:args staticInputDisabled={false} {path} />
59
63
  {/if}
60
64
  </div>
@@ -1,7 +1,8 @@
1
1
  import { SvelteComponent } from "svelte";
2
+ import { type CaptureTriggerKind } from '../../gen';
2
3
  declare const __propDef: {
3
4
  props: {
4
- triggerType?: any;
5
+ triggerType?: CaptureTriggerKind | undefined;
5
6
  cloudDisabled?: boolean | undefined;
6
7
  args: any;
7
8
  isFlow?: boolean | undefined;
@@ -210,6 +210,7 @@ $: url =
210
210
  on:applyArgs
211
211
  on:updateSchema
212
212
  on:addPreprocessor
213
+ on:testWithArgs
213
214
  >
214
215
  <Label label="URL">
215
216
  <ClipboardPanel content={captureUrl} disabled={!captureInfo.active} />
@@ -22,10 +22,11 @@ declare const __propDef: {
22
22
  args: Record<string, any> | undefined;
23
23
  }>;
24
24
  updateSchema: CustomEvent<{
25
- schema: any;
25
+ payloadData: Record<string, any>;
26
26
  redirect: boolean;
27
27
  }>;
28
28
  addPreprocessor: CustomEvent<null>;
29
+ testWithArgs: CustomEvent<any>;
29
30
  } & {
30
31
  [evt: string]: CustomEvent<any>;
31
32
  };
@@ -38,6 +38,8 @@ let data = {
38
38
  on:applyArgs
39
39
  on:addPreprocessor
40
40
  on:refreshCaptures
41
+ on:updateSchema
42
+ on:testWithArgs
41
43
  cloudDisabled={false}
42
44
  triggerType="webhook"
43
45
  {isFlow}
@@ -16,6 +16,8 @@ declare const __propDef: {
16
16
  applyArgs: any;
17
17
  addPreprocessor: any;
18
18
  refreshCaptures: CustomEvent<any>;
19
+ updateSchema: any;
20
+ testWithArgs: any;
19
21
  } & {
20
22
  [evt: string]: CustomEvent<any>;
21
23
  };
@@ -59,7 +59,7 @@ function validateUrl(url) {
59
59
  }
60
60
  }
61
61
  else if (!url || /^(ws:|wss:)\/\/[^\s]+$/.test(url) === false) {
62
- urlError = 'Invalid websocket URL';
62
+ urlError = 'Websocket URL must start with ws:// or wss://';
63
63
  }
64
64
  else {
65
65
  urlError = '';
@@ -81,6 +81,7 @@ $: isValid = urlError === '' && (!url?.startsWith('$') || areRunnableArgsValid);
81
81
  on:applyArgs
82
82
  on:updateSchema
83
83
  on:addPreprocessor
84
+ on:testWithArgs
84
85
  bind:captureTable
85
86
  />
86
87
  {/if}
@@ -162,6 +163,7 @@ $: isValid = urlError === '' && (!url?.startsWith('$') || areRunnableArgsValid);
162
163
  on:input={() => {
163
164
  dirtyUrl = true
164
165
  }}
166
+ placeholder="ws://example.com"
165
167
  class={urlError === ''
166
168
  ? ''
167
169
  : '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'}
@@ -20,10 +20,11 @@ declare const __propDef: {
20
20
  args: Record<string, any> | undefined;
21
21
  }>;
22
22
  updateSchema: CustomEvent<{
23
- schema: any;
23
+ payloadData: Record<string, any>;
24
24
  redirect: boolean;
25
25
  }>;
26
26
  addPreprocessor: CustomEvent<null>;
27
+ testWithArgs: CustomEvent<any>;
27
28
  } & {
28
29
  [evt: string]: CustomEvent<any>;
29
30
  };
@@ -67,6 +67,8 @@ export async function loadTriggers() {
67
67
  wsTriggerEditor?.openNew(isFlow, path, e.detail.config)
68
68
  }}
69
69
  on:addPreprocessor
70
+ on:updateSchema
71
+ on:testWithArgs
70
72
  cloudDisabled={false}
71
73
  triggerType="websocket"
72
74
  {isFlow}