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
|
@@ -1,12 +1,15 @@
|
|
|
1
|
-
<script>
|
|
2
|
-
|
|
1
|
+
<script>import { ScanIcon } from 'lucide-svelte';
|
|
2
|
+
export let size = 14;
|
|
3
|
+
export let variant = undefined;
|
|
3
4
|
</script>
|
|
4
5
|
|
|
5
6
|
<div class="relative">
|
|
6
|
-
<ScanIcon size
|
|
7
|
+
<ScanIcon {size} />
|
|
7
8
|
<div class="absolute inset-0 flex items-center justify-center">
|
|
8
9
|
<svg
|
|
9
|
-
class=
|
|
10
|
+
class={variant === 'redDot' ? 'text-red-500' : ''}
|
|
11
|
+
width={size}
|
|
12
|
+
height={size}
|
|
10
13
|
viewBox="0 0 24 24"
|
|
11
14
|
fill="currentColor"
|
|
12
15
|
xmlns="http://www.w3.org/2000/svg"
|
|
@@ -1,23 +1,17 @@
|
|
|
1
|
-
/** @typedef {typeof __propDef.props} CaptureIconProps */
|
|
2
|
-
/** @typedef {typeof __propDef.events} CaptureIconEvents */
|
|
3
|
-
/** @typedef {typeof __propDef.slots} CaptureIconSlots */
|
|
4
|
-
export default class CaptureIcon extends SvelteComponent<{
|
|
5
|
-
[x: string]: never;
|
|
6
|
-
}, {
|
|
7
|
-
[evt: string]: CustomEvent<any>;
|
|
8
|
-
}, {}> {
|
|
9
|
-
}
|
|
10
|
-
export type CaptureIconProps = typeof __propDef.props;
|
|
11
|
-
export type CaptureIconEvents = typeof __propDef.events;
|
|
12
|
-
export type CaptureIconSlots = typeof __propDef.slots;
|
|
13
1
|
import { SvelteComponent } from "svelte";
|
|
14
2
|
declare const __propDef: {
|
|
15
3
|
props: {
|
|
16
|
-
|
|
4
|
+
size?: number | undefined;
|
|
5
|
+
variant?: 'redDot' | undefined;
|
|
17
6
|
};
|
|
18
7
|
events: {
|
|
19
8
|
[evt: string]: CustomEvent<any>;
|
|
20
9
|
};
|
|
21
10
|
slots: {};
|
|
22
11
|
};
|
|
12
|
+
export type CaptureIconProps = typeof __propDef.props;
|
|
13
|
+
export type CaptureIconEvents = typeof __propDef.events;
|
|
14
|
+
export type CaptureIconSlots = typeof __propDef.slots;
|
|
15
|
+
export default class CaptureIcon extends SvelteComponent<CaptureIconProps, CaptureIconEvents, CaptureIconSlots> {
|
|
16
|
+
}
|
|
23
17
|
export {};
|
|
@@ -3,11 +3,12 @@
|
|
|
3
3
|
|
|
4
4
|
<script>import { slide } from 'svelte/transition';
|
|
5
5
|
import AnimatedButton from '../common/button/AnimatedButton.svelte';
|
|
6
|
+
import PulseButton from '../common/button/PulseButton.svelte';
|
|
6
7
|
import Button from '../common/button/Button.svelte';
|
|
7
8
|
import { CircleStop } from 'lucide-svelte';
|
|
8
9
|
import ConnectionIndicator, {} from '../common/alert/ConnectionIndicator.svelte';
|
|
9
10
|
import CaptureTable from './CaptureTable.svelte';
|
|
10
|
-
import { createEventDispatcher } from 'svelte';
|
|
11
|
+
import { createEventDispatcher, onDestroy, getContext } from 'svelte';
|
|
11
12
|
import CaptureIcon from './CaptureIcon.svelte';
|
|
12
13
|
import Tooltip from '../Tooltip.svelte';
|
|
13
14
|
export let disabled;
|
|
@@ -15,25 +16,56 @@ export let captureType;
|
|
|
15
16
|
export let captureInfo;
|
|
16
17
|
export let captureTable;
|
|
17
18
|
const dispatch = createEventDispatcher();
|
|
19
|
+
const { showCaptureHint } = getContext('TriggerContext');
|
|
20
|
+
onDestroy(() => {
|
|
21
|
+
if (captureInfo.active) {
|
|
22
|
+
dispatch('captureToggle');
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
function handleUpdateSchema(e) {
|
|
26
|
+
dispatch('updateSchema', {
|
|
27
|
+
payloadData: e.detail.payloadData,
|
|
28
|
+
redirect: e.detail.redirect
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
let openingDuration = 400;
|
|
32
|
+
let pulseButton;
|
|
33
|
+
function updateShowCaptureHint(show) {
|
|
34
|
+
if (show) {
|
|
35
|
+
$showCaptureHint = false;
|
|
36
|
+
setTimeout(() => {
|
|
37
|
+
pulseButton?.triggerPulse(1);
|
|
38
|
+
}, 300);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
$: updateShowCaptureHint($showCaptureHint);
|
|
18
42
|
</script>
|
|
19
43
|
|
|
20
|
-
<div transition:slide class="pb-
|
|
44
|
+
<div transition:slide={{ duration: openingDuration }} class="pb-12 overflow-hidden">
|
|
21
45
|
<div class="border p-4 rounded-lg">
|
|
22
46
|
<div class="flex flex-col gap-1 mb-4">
|
|
23
47
|
<div class="flex flex-row items-center justify-start gap-1">
|
|
24
|
-
<
|
|
25
|
-
<
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
48
|
+
<PulseButton bind:this={pulseButton} numberOfPulses={1} pulseDuration={1}>
|
|
49
|
+
<AnimatedButton animate={captureInfo.active} baseRadius="6px" wrapperClasses="ml-[-2px]">
|
|
50
|
+
<Button
|
|
51
|
+
size="xs2"
|
|
52
|
+
on:click={() => dispatch('captureToggle')}
|
|
53
|
+
variant="border"
|
|
54
|
+
{disabled}
|
|
55
|
+
color="light"
|
|
56
|
+
btnClasses={captureInfo.active ? 'text-blue-500 hover:text-blue-500' : ''}
|
|
57
|
+
>
|
|
58
|
+
<div class="flex flex-row items-center gap-1 w-28 justify-center">
|
|
59
|
+
{#if captureInfo.active}
|
|
60
|
+
<CircleStop size={14} />
|
|
61
|
+
{:else}
|
|
62
|
+
<CaptureIcon variant="redDot" size={14} />
|
|
63
|
+
{/if}
|
|
64
|
+
{captureInfo.active ? 'Stop' : 'Start capturing'}
|
|
65
|
+
</div>
|
|
66
|
+
</Button>
|
|
67
|
+
</AnimatedButton>
|
|
68
|
+
</PulseButton>
|
|
37
69
|
|
|
38
70
|
{#if captureInfo.active}
|
|
39
71
|
<ConnectionIndicator connectionInfo={captureInfo.connectionInfo} />
|
|
@@ -68,9 +100,10 @@ const dispatch = createEventDispatcher();
|
|
|
68
100
|
path={captureInfo.path}
|
|
69
101
|
canEdit={true}
|
|
70
102
|
on:applyArgs
|
|
71
|
-
on:updateSchema
|
|
103
|
+
on:updateSchema={handleUpdateSchema}
|
|
72
104
|
on:addPreprocessor
|
|
73
|
-
|
|
105
|
+
on:testWithArgs
|
|
106
|
+
fullHeight={false}
|
|
74
107
|
/>
|
|
75
108
|
</div>
|
|
76
109
|
</div>
|
|
@@ -9,6 +9,7 @@ export type CaptureInfo = {
|
|
|
9
9
|
};
|
|
10
10
|
import { type ConnectionInfo } from '../common/alert/ConnectionIndicator.svelte';
|
|
11
11
|
import CaptureTable from './CaptureTable.svelte';
|
|
12
|
+
import type { CaptureTriggerKind } from '../../gen';
|
|
12
13
|
declare const __propDef: {
|
|
13
14
|
props: {
|
|
14
15
|
disabled: boolean;
|
|
@@ -21,12 +22,13 @@ declare const __propDef: {
|
|
|
21
22
|
kind: "main" | "preprocessor";
|
|
22
23
|
args: Record<string, any> | undefined;
|
|
23
24
|
}>;
|
|
25
|
+
addPreprocessor: CustomEvent<null>;
|
|
26
|
+
testWithArgs: CustomEvent<any>;
|
|
27
|
+
captureToggle: CustomEvent<undefined>;
|
|
24
28
|
updateSchema: CustomEvent<{
|
|
25
|
-
|
|
29
|
+
payloadData: Record<string, any>;
|
|
26
30
|
redirect: boolean;
|
|
27
31
|
}>;
|
|
28
|
-
addPreprocessor: CustomEvent<null>;
|
|
29
|
-
captureToggle: CustomEvent<undefined>;
|
|
30
32
|
} & {
|
|
31
33
|
[evt: string]: CustomEvent<any>;
|
|
32
34
|
};
|
|
@@ -1,224 +1,277 @@
|
|
|
1
1
|
<script>import Label from '../Label.svelte';
|
|
2
|
-
import {
|
|
2
|
+
import { Info, Trash2 } from 'lucide-svelte';
|
|
3
3
|
import ToggleButton from '../common/toggleButton-v2/ToggleButton.svelte';
|
|
4
4
|
import ToggleButtonGroup from '../common/toggleButton-v2/ToggleButtonGroup.svelte';
|
|
5
|
-
import { copyToClipboard } from '../../utils';
|
|
6
5
|
import Button from '../common/button/Button.svelte';
|
|
7
6
|
import CustomPopover from '../CustomPopover.svelte';
|
|
8
|
-
import {
|
|
9
|
-
import
|
|
7
|
+
import { Webhook, Route, Unplug, Mail, Play } from 'lucide-svelte';
|
|
8
|
+
import KafkaIcon from '../icons/KafkaIcon.svelte';
|
|
10
9
|
import { isObject } from '../../utils';
|
|
11
|
-
import { createEventDispatcher } from 'svelte';
|
|
10
|
+
import { createEventDispatcher, onDestroy } from 'svelte';
|
|
12
11
|
import {} from '../triggers';
|
|
13
12
|
import { CaptureService } from '../../gen';
|
|
14
13
|
import { workspaceStore } from '../../stores';
|
|
15
14
|
import {} from '../../gen';
|
|
16
|
-
import
|
|
17
|
-
import
|
|
18
|
-
import {
|
|
15
|
+
import CaptureButton from './CaptureButton.svelte';
|
|
16
|
+
import InfiniteList from '../InfiniteList.svelte';
|
|
17
|
+
import { sendUserToast } from '../../utils';
|
|
18
|
+
import SchemaPickerRow from '../schema/SchemaPickerRow.svelte';
|
|
19
|
+
import { clickOutside } from '../../utils';
|
|
19
20
|
export let path;
|
|
20
21
|
export let hasPreprocessor = false;
|
|
21
22
|
export let canHavePreprocessor = false;
|
|
22
23
|
export let isFlow = false;
|
|
23
|
-
export let captureType =
|
|
24
|
+
export let captureType = undefined;
|
|
24
25
|
export let headless = false;
|
|
25
26
|
export let addButton = false;
|
|
26
|
-
export let hideCapturesWhenEmpty = false;
|
|
27
27
|
export let canEdit = false;
|
|
28
|
-
export let
|
|
29
|
-
let
|
|
28
|
+
export let fullHeight = true;
|
|
29
|
+
let selected = undefined;
|
|
30
30
|
let testKind = 'main';
|
|
31
|
+
let isEmpty = true;
|
|
32
|
+
let infiniteList = null;
|
|
33
|
+
let firstClick = true;
|
|
34
|
+
let capturesLength = 0;
|
|
31
35
|
$: hasPreprocessor && (testKind = 'preprocessor');
|
|
32
|
-
|
|
33
|
-
async function
|
|
34
|
-
|
|
35
|
-
|
|
36
|
+
const dispatch = createEventDispatcher();
|
|
37
|
+
export async function loadCaptures(refresh = false) {
|
|
38
|
+
await infiniteList?.loadData(refresh ? 'refresh' : 'loadMore');
|
|
39
|
+
}
|
|
40
|
+
function initLoadCaptures(testKind = 'main') {
|
|
41
|
+
const loadInputsPageFn = async (page, perPage) => {
|
|
42
|
+
const captures = await CaptureService.listCaptures({
|
|
43
|
+
workspace: $workspaceStore,
|
|
44
|
+
runnableKind: isFlow ? 'flow' : 'script',
|
|
45
|
+
path: path ?? '',
|
|
46
|
+
triggerKind: captureType,
|
|
47
|
+
page,
|
|
48
|
+
perPage
|
|
49
|
+
});
|
|
50
|
+
let capturesWithPayload = captures.map((capture) => {
|
|
51
|
+
const payload = isObject(capture.payload) ? capture.payload : {};
|
|
52
|
+
const triggerExtra = isObject(capture.trigger_extra) ? capture.trigger_extra : {};
|
|
53
|
+
return {
|
|
54
|
+
...capture,
|
|
55
|
+
payloadData: testKind === 'preprocessor'
|
|
56
|
+
? {
|
|
57
|
+
...payload,
|
|
58
|
+
...triggerExtra
|
|
59
|
+
}
|
|
60
|
+
: { ...payload }
|
|
61
|
+
};
|
|
62
|
+
});
|
|
63
|
+
return capturesWithPayload;
|
|
64
|
+
};
|
|
65
|
+
infiniteList?.setLoader(loadInputsPageFn);
|
|
66
|
+
const deleteInputFn = async (id) => {
|
|
36
67
|
await CaptureService.deleteCapture({
|
|
37
68
|
workspace: $workspaceStore,
|
|
38
69
|
id
|
|
39
70
|
});
|
|
40
|
-
|
|
71
|
+
};
|
|
72
|
+
infiniteList?.setDeleteItemFn(deleteInputFn);
|
|
73
|
+
}
|
|
74
|
+
function handleSelect(capture) {
|
|
75
|
+
if (selected === capture.id) {
|
|
76
|
+
deselect();
|
|
41
77
|
}
|
|
42
|
-
|
|
43
|
-
|
|
78
|
+
else {
|
|
79
|
+
selected = capture.id;
|
|
80
|
+
dispatch('select', capture.payloadData);
|
|
44
81
|
}
|
|
45
82
|
}
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
workspace: $workspaceStore,
|
|
50
|
-
runnableKind: isFlow ? 'flow' : 'script',
|
|
51
|
-
path,
|
|
52
|
-
triggerKind: captureType !== 'all' ? captureType : undefined
|
|
53
|
-
});
|
|
83
|
+
function deselect() {
|
|
84
|
+
selected = undefined;
|
|
85
|
+
dispatch('select', undefined);
|
|
54
86
|
}
|
|
55
|
-
|
|
87
|
+
onDestroy(() => {
|
|
88
|
+
deselect();
|
|
89
|
+
});
|
|
90
|
+
const captureKindToIcon = {
|
|
91
|
+
webhook: Webhook,
|
|
92
|
+
http: Route,
|
|
93
|
+
email: Mail,
|
|
94
|
+
websocket: Unplug,
|
|
95
|
+
kafka: KafkaIcon
|
|
96
|
+
};
|
|
97
|
+
async function getPropPickerElements() {
|
|
98
|
+
return Array.from(document.querySelectorAll('[data-schema-picker], [data-schema-picker] *'));
|
|
99
|
+
}
|
|
100
|
+
function handleKeydown(event) {
|
|
101
|
+
if (event.key === 'Escape' && selected) {
|
|
102
|
+
deselect();
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
function handleError(error) {
|
|
106
|
+
if (error.type === 'delete') {
|
|
107
|
+
sendUserToast(`Failed to delete capture: ${error.error}`, true);
|
|
108
|
+
}
|
|
109
|
+
else if (error.type === 'load') {
|
|
110
|
+
sendUserToast(`Failed to load captures: ${error.error}`, true);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
$: path && infiniteList && initLoadCaptures();
|
|
56
114
|
</script>
|
|
57
115
|
|
|
58
|
-
{
|
|
59
|
-
<Label
|
|
60
|
-
label="Captures"
|
|
61
|
-
{headless}
|
|
62
|
-
class={twMerge(
|
|
63
|
-
'flex flex-col h-full divide-y gap-1',
|
|
64
|
-
maxHeight ? `max-h-[${maxHeight}px]` : ''
|
|
65
|
-
)}
|
|
66
|
-
>
|
|
67
|
-
<svelte:fragment slot="header">
|
|
68
|
-
{#if addButton && captureType !== 'all'}
|
|
69
|
-
<Button
|
|
70
|
-
size="xs2"
|
|
71
|
-
color="light"
|
|
72
|
-
variant="contained"
|
|
73
|
-
iconOnly
|
|
74
|
-
startIcon={{ icon: Plus }}
|
|
75
|
-
on:click={() => {
|
|
76
|
-
if (captureType !== 'all') {
|
|
77
|
-
dispatch('openTriggers', {
|
|
78
|
-
kind: captureTriggerKindToTriggerKind(captureType),
|
|
79
|
-
config: {}
|
|
80
|
-
})
|
|
81
|
-
}
|
|
82
|
-
}}
|
|
83
|
-
/>
|
|
84
|
-
{/if}
|
|
85
|
-
</svelte:fragment>
|
|
86
|
-
<svelte:fragment slot="action">
|
|
87
|
-
{#if canHavePreprocessor}
|
|
88
|
-
<div>
|
|
89
|
-
<ToggleButtonGroup bind:selected={testKind} class="h-full">
|
|
90
|
-
<ToggleButton value="main" label={isFlow ? 'Flow' : 'Main'} small />
|
|
91
|
-
<ToggleButton
|
|
92
|
-
value="preprocessor"
|
|
93
|
-
label="Preprocessor"
|
|
94
|
-
small
|
|
95
|
-
tooltip="When the runnable has a preprocessor, it receives additional information about the request"
|
|
96
|
-
/>
|
|
97
|
-
</ToggleButtonGroup>
|
|
98
|
-
</div>
|
|
99
|
-
{/if}
|
|
100
|
-
</svelte:fragment>
|
|
101
|
-
<div class="flex flex-col gap-1 pt-2 grow overflow-y-auto">
|
|
102
|
-
{#if captures.length === 0}
|
|
103
|
-
<div class="text-xs text-secondary">
|
|
104
|
-
{captureType === 'all' ? 'No captures yet' : `No ${captureType} captures yet`}
|
|
105
|
-
</div>
|
|
106
|
-
{:else}
|
|
107
|
-
{#each captures as capture}
|
|
108
|
-
{@const payload = isObject(capture.payload) ? capture.payload : {}}
|
|
109
|
-
{@const triggerExtra = isObject(capture.trigger_extra) ? capture.trigger_extra : {}}
|
|
110
|
-
{@const payloadData =
|
|
111
|
-
testKind === 'preprocessor'
|
|
112
|
-
? {
|
|
113
|
-
...payload,
|
|
114
|
-
...triggerExtra
|
|
115
|
-
}
|
|
116
|
-
: payload}
|
|
117
|
-
{@const schema =
|
|
118
|
-
isFlow && testKind === 'main'
|
|
119
|
-
? { required: [], properties: {}, ...convert(payloadData) }
|
|
120
|
-
: {}}
|
|
121
|
-
<div class="flex flex-row gap-1" transition:slide>
|
|
122
|
-
<div class="text-xs border p-2 rounded-md overflow-auto grow whitespace-nowrap">
|
|
123
|
-
{JSON.stringify(payloadData)}
|
|
124
|
-
</div>
|
|
125
|
-
<Button
|
|
126
|
-
size="xs2"
|
|
127
|
-
color="light"
|
|
128
|
-
variant="border"
|
|
129
|
-
on:click={() => {
|
|
130
|
-
copyToClipboard(JSON.stringify(payloadData))
|
|
131
|
-
}}
|
|
132
|
-
iconOnly
|
|
133
|
-
startIcon={{ icon: Clipboard }}
|
|
134
|
-
/>
|
|
116
|
+
<svelte:window on:keydown={handleKeydown} />
|
|
135
117
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
118
|
+
<Label label="Trigger captures" {headless} class="h-full flex flex-col gap-1">
|
|
119
|
+
<svelte:fragment slot="header">
|
|
120
|
+
{#if addButton}
|
|
121
|
+
<div class="inline-block">
|
|
122
|
+
<CaptureButton small={true} on:openTriggers />
|
|
123
|
+
</div>
|
|
124
|
+
{/if}
|
|
125
|
+
</svelte:fragment>
|
|
126
|
+
<svelte:fragment slot="action">
|
|
127
|
+
{#if canHavePreprocessor && !isEmpty}
|
|
128
|
+
<div>
|
|
129
|
+
<ToggleButtonGroup
|
|
130
|
+
bind:selected={testKind}
|
|
131
|
+
class="h-full"
|
|
132
|
+
on:selected={(e) => {
|
|
133
|
+
initLoadCaptures(e.detail)
|
|
134
|
+
}}
|
|
135
|
+
>
|
|
136
|
+
<ToggleButton value="main" label={isFlow ? 'Flow' : 'Main'} small />
|
|
137
|
+
<ToggleButton
|
|
138
|
+
value="preprocessor"
|
|
139
|
+
label="Preprocessor"
|
|
140
|
+
small
|
|
141
|
+
tooltip="When the runnable has a preprocessor, it receives additional information about the request"
|
|
142
|
+
/>
|
|
143
|
+
</ToggleButtonGroup>
|
|
144
|
+
</div>
|
|
145
|
+
{/if}
|
|
146
|
+
</svelte:fragment>
|
|
149
147
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
148
|
+
<div
|
|
149
|
+
class={fullHeight ? 'h-full' : capturesLength > 7 ? 'h-[300px]' : 'h-fit'}
|
|
150
|
+
use:clickOutside={{ capture: false, exclude: getPropPickerElements }}
|
|
151
|
+
on:click_outside={() => {
|
|
152
|
+
if (firstClick) {
|
|
153
|
+
firstClick = false
|
|
154
|
+
return
|
|
155
|
+
}
|
|
156
|
+
deselect()
|
|
157
|
+
}}
|
|
158
|
+
>
|
|
159
|
+
<InfiniteList
|
|
160
|
+
bind:this={infiniteList}
|
|
161
|
+
selectedItemId={selected}
|
|
162
|
+
bind:isEmpty
|
|
163
|
+
on:error={(e) => handleError(e.detail)}
|
|
164
|
+
on:select={(e) => handleSelect(e.detail)}
|
|
165
|
+
bind:length={capturesLength}
|
|
166
|
+
>
|
|
167
|
+
<svelte:fragment slot="columns">
|
|
168
|
+
<colgroup>
|
|
169
|
+
<col class="w-8" />
|
|
170
|
+
<col class="w-20" />
|
|
171
|
+
<col />
|
|
172
|
+
</colgroup>
|
|
173
|
+
</svelte:fragment>
|
|
174
|
+
<svelte:fragment let:item let:hover>
|
|
175
|
+
{@const captureIcon = captureKindToIcon[item.trigger_kind]}
|
|
176
|
+
<SchemaPickerRow
|
|
177
|
+
date={item.created_at}
|
|
178
|
+
payloadData={item.payloadData}
|
|
179
|
+
selected={selected === item.id}
|
|
180
|
+
hovering={hover}
|
|
181
|
+
>
|
|
182
|
+
<svelte:fragment slot="start">
|
|
183
|
+
<div class="center-center">
|
|
184
|
+
<svelte:component this={captureIcon} size={12} />
|
|
185
|
+
</div>
|
|
186
|
+
</svelte:fragment>
|
|
159
187
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
disabled
|
|
166
|
-
endIcon={{
|
|
167
|
-
icon: Info
|
|
168
|
-
}}
|
|
169
|
-
wrapperClasses="h-full"
|
|
170
|
-
>
|
|
171
|
-
Apply args
|
|
172
|
-
</Button>
|
|
173
|
-
<svelte:fragment slot="overlay">
|
|
174
|
-
<div class="text-sm p-2 flex flex-col gap-1 items-start">
|
|
175
|
-
<p>You need to add a preprocessor to use preprocessor captures as args</p>
|
|
188
|
+
<svelte:fragment slot="extra">
|
|
189
|
+
{#if canEdit}
|
|
190
|
+
<div class="flex flex-row items-center gap-2 px-2">
|
|
191
|
+
{#if testKind === 'preprocessor' && !hasPreprocessor}
|
|
192
|
+
<CustomPopover noPadding>
|
|
176
193
|
<Button
|
|
177
|
-
size="
|
|
194
|
+
size="xs2"
|
|
178
195
|
color="dark"
|
|
179
|
-
|
|
180
|
-
|
|
196
|
+
disabled
|
|
197
|
+
endIcon={{
|
|
198
|
+
icon: Info
|
|
181
199
|
}}
|
|
200
|
+
wrapperClasses="h-full"
|
|
182
201
|
>
|
|
183
|
-
|
|
202
|
+
Apply args
|
|
184
203
|
</Button>
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
204
|
+
<svelte:fragment slot="overlay">
|
|
205
|
+
<div class="text-sm p-2 flex flex-col gap-1 items-start">
|
|
206
|
+
<p> You need to add a preprocessor to use preprocessor captures as args </p>
|
|
207
|
+
<Button
|
|
208
|
+
size="xs2"
|
|
209
|
+
color="dark"
|
|
210
|
+
on:click={() => {
|
|
211
|
+
dispatch('addPreprocessor')
|
|
212
|
+
}}
|
|
213
|
+
>
|
|
214
|
+
Add preprocessor
|
|
215
|
+
</Button>
|
|
216
|
+
</div>
|
|
217
|
+
</svelte:fragment>
|
|
218
|
+
</CustomPopover>
|
|
219
|
+
{:else}
|
|
220
|
+
<Button
|
|
221
|
+
size="xs2"
|
|
222
|
+
color={hover || selected === item.id ? 'dark' : 'light'}
|
|
223
|
+
dropdownItems={[
|
|
224
|
+
{
|
|
225
|
+
label: 'Use as input schema',
|
|
226
|
+
onClick: () => {
|
|
227
|
+
dispatch('updateSchema', {
|
|
228
|
+
payloadData: item.payloadData,
|
|
229
|
+
redirect: true,
|
|
230
|
+
args: true
|
|
231
|
+
})
|
|
232
|
+
},
|
|
233
|
+
disabled: !isFlow || testKind !== 'main'
|
|
234
|
+
}
|
|
235
|
+
].filter((item) => !item.disabled)}
|
|
236
|
+
on:click={() => {
|
|
237
|
+
if (isFlow && testKind === 'main') {
|
|
238
|
+
dispatch('testWithArgs', item.payloadData)
|
|
239
|
+
} else {
|
|
240
|
+
dispatch('applyArgs', {
|
|
241
|
+
kind: testKind,
|
|
242
|
+
args: item.payloadData
|
|
243
|
+
})
|
|
244
|
+
}
|
|
245
|
+
}}
|
|
246
|
+
disabled={testKind === 'preprocessor' && !hasPreprocessor}
|
|
247
|
+
title={isFlow && testKind === 'main'
|
|
248
|
+
? 'Test flow with args'
|
|
249
|
+
: 'Apply args to preprocessor'}
|
|
250
|
+
startIcon={isFlow && testKind === 'main' ? { icon: Play } : {}}
|
|
251
|
+
>
|
|
252
|
+
{isFlow && testKind === 'main' ? 'Test' : 'Apply args'}
|
|
253
|
+
</Button>
|
|
254
|
+
{/if}
|
|
255
|
+
<Button
|
|
256
|
+
size="xs2"
|
|
257
|
+
color="light"
|
|
258
|
+
variant="contained"
|
|
259
|
+
iconOnly
|
|
260
|
+
startIcon={{ icon: Trash2 }}
|
|
261
|
+
loading={item.isDeleting}
|
|
262
|
+
on:click={() => {
|
|
263
|
+
infiniteList?.deleteItem(item.id)
|
|
264
|
+
}}
|
|
265
|
+
btnClasses="hover:text-white hover:bg-red-500 text-red-500"
|
|
266
|
+
/>
|
|
267
|
+
</div>
|
|
218
268
|
{/if}
|
|
219
|
-
</
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
269
|
+
</svelte:fragment>
|
|
270
|
+
</SchemaPickerRow>
|
|
271
|
+
</svelte:fragment>
|
|
272
|
+
<svelte:fragment slot="empty">
|
|
273
|
+
<div class="text-center text-xs text-tertiary">No captures yet</div>
|
|
274
|
+
</svelte:fragment>
|
|
275
|
+
</InfiniteList>
|
|
276
|
+
</div>
|
|
277
|
+
</Label>
|