windmill-components 1.60.4 → 1.70.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/app.css +3 -0
- package/common.d.ts +5 -1
- package/components/ApiConnectForm.svelte +66 -5
- package/components/AppConnect.svelte +24 -9
- package/components/ArgInput.svelte +1 -1
- package/components/CliHelpBox.svelte +49 -0
- package/components/CliHelpBox.svelte.d.ts +14 -0
- package/components/DisplayResult.svelte +51 -1
- package/components/DisplayResult.svelte.d.ts +1 -0
- package/components/Editor.svelte +17 -7
- package/components/EditorBar.svelte +129 -111
- package/components/FlowBuilder.svelte +2 -2
- package/components/FlowJobResult.svelte +10 -2
- package/components/FlowJobResult.svelte.d.ts +1 -0
- package/components/FlowMetadata.svelte +24 -8
- package/components/FlowPreviewContent.svelte +3 -4
- package/components/FlowStatusViewer.svelte +41 -9
- package/components/FolderEditor.svelte +3 -2
- package/components/HighlightCode.svelte +7 -1
- package/components/InlineCodeCopy.svelte +11 -0
- package/components/InlineCodeCopy.svelte.d.ts +16 -0
- package/components/InputTransformForm.svelte +9 -5
- package/components/LogViewer.svelte +6 -0
- package/components/LogViewer.svelte.d.ts +1 -0
- package/components/ModulePreview.svelte +11 -2
- package/components/MoveDrawer.svelte +1 -1
- package/components/Multiselect.svelte.d.ts +2 -2
- package/components/ObjectResourceInput.svelte +6 -1
- package/components/Path.svelte +14 -5
- package/components/Popover.svelte +8 -2
- package/components/Popover.svelte.d.ts +1 -0
- package/components/Range.svelte.d.ts +2 -2
- package/components/ResourceEditor.svelte +39 -16
- package/components/ResourcePicker.svelte +0 -1
- package/components/RunForm.svelte +26 -2
- package/components/RunForm.svelte.d.ts +1 -0
- package/components/ScheduleEditor.svelte +1 -1
- package/components/SchemaEditor.svelte +2 -2
- package/components/SchemaForm.svelte +14 -4
- package/components/SchemaForm.svelte.d.ts +1 -0
- package/components/ScriptBuilder.svelte +45 -22
- package/components/ScriptBuilder.svelte.d.ts +1 -0
- package/components/ScriptEditor.svelte +1 -0
- package/components/SharedBadge.svelte +5 -5
- package/components/Slider.svelte +14 -0
- package/components/Slider.svelte.d.ts +19 -0
- package/components/StringTypeNarrowing.svelte +0 -1
- package/components/SuperadminSettings.svelte +11 -3
- package/components/SuperadminSettings.svelte.d.ts +2 -0
- package/components/TemplateEditor.svelte.d.ts +204 -0
- package/components/TestJobLoader.svelte +3 -3
- package/components/Toggle.svelte +1 -2
- package/components/UserSettings.svelte +11 -3
- package/components/UserSettings.svelte.d.ts +2 -0
- package/components/VariableEditor.svelte +1 -1
- package/components/WhitelistIp.svelte +23 -0
- package/components/WhitelistIp.svelte.d.ts +14 -0
- package/components/apps/components/buttons/AppButton.svelte +52 -6
- package/components/apps/components/buttons/AppButton.svelte.d.ts +3 -0
- package/components/apps/components/{form → buttons}/AppForm.svelte +3 -1
- package/components/apps/components/buttons/AppFormButton.svelte +137 -0
- package/components/apps/components/buttons/AppFormButton.svelte.d.ts +25 -0
- package/components/apps/components/buttons/index.d.ts +3 -0
- package/components/apps/components/buttons/index.js +3 -0
- package/components/apps/components/{dataDisplay → display}/AppBarChart.svelte +15 -4
- package/components/apps/components/{dataDisplay → display}/AppBarChart.svelte.d.ts +1 -0
- package/components/apps/components/display/AppDisplayComponent.svelte +31 -0
- package/components/apps/components/display/AppDisplayComponent.svelte.d.ts +23 -0
- package/components/apps/components/{dataDisplay → display}/AppHtml.svelte +6 -5
- package/components/apps/components/{dataDisplay → display}/AppHtml.svelte.d.ts +1 -1
- package/components/apps/components/display/AppIcon.svelte +35 -0
- package/components/apps/components/display/AppIcon.svelte.d.ts +22 -0
- package/components/apps/components/display/AppImage.svelte +27 -0
- package/components/apps/components/display/AppImage.svelte.d.ts +22 -0
- package/components/apps/components/{dataDisplay → display}/AppPieChart.svelte +2 -1
- package/components/apps/components/{dataDisplay → display}/AppPieChart.svelte.d.ts +1 -0
- package/components/apps/components/{dataDisplay → display}/AppScatterChart.svelte +2 -1
- package/components/apps/components/{dataDisplay → display}/AppScatterChart.svelte.d.ts +1 -0
- package/components/apps/components/{dataDisplay → display}/AppText.svelte +16 -14
- package/components/apps/components/{dataDisplay → display}/AppText.svelte.d.ts +3 -0
- package/components/apps/components/{dataDisplay → display}/AppTimeseries.svelte +3 -2
- package/components/apps/components/{dataDisplay → display}/AppTimeseries.svelte.d.ts +1 -0
- package/components/apps/components/display/PlotlyHtml.svelte +38 -0
- package/components/apps/components/display/PlotlyHtml.svelte.d.ts +24 -0
- package/components/apps/components/{dataDisplay → display}/VegaLiteHtml.svelte +2 -3
- package/components/apps/components/{dataDisplay → display}/VegaLiteHtml.svelte.d.ts +1 -0
- package/components/apps/components/display/index.d.ts +12 -0
- package/components/apps/components/display/index.js +12 -0
- package/components/apps/components/display/table/AppAggridTable.svelte +83 -0
- package/components/apps/components/display/table/AppAggridTable.svelte.d.ts +24 -0
- package/components/apps/components/{table → display/table}/AppTable.svelte +32 -21
- package/components/apps/components/{table → display/table}/AppTable.svelte.d.ts +4 -2
- package/components/apps/components/{table → display/table}/AppTableFooter.svelte +1 -1
- package/components/apps/components/helpers/AlignWrapper.svelte +19 -19
- package/components/apps/components/helpers/AlignWrapper.svelte.d.ts +4 -2
- package/components/apps/components/helpers/HiddenComponent.svelte +22 -0
- package/components/apps/components/helpers/HiddenComponent.svelte.d.ts +25 -0
- package/components/apps/components/helpers/InputDefaultValue.svelte +17 -0
- package/components/apps/components/helpers/InputDefaultValue.svelte.d.ts +17 -0
- package/components/apps/components/helpers/InputValue.svelte +5 -7
- package/components/apps/components/helpers/InputValue.svelte.d.ts +0 -1
- package/components/apps/components/helpers/RunnableComponent.svelte +37 -48
- package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +2 -1
- package/components/apps/components/helpers/RunnableWrapper.svelte +7 -2
- package/components/apps/components/helpers/RunnableWrapper.svelte.d.ts +2 -1
- package/components/apps/components/helpers/index.d.ts +10 -0
- package/components/apps/components/helpers/index.js +10 -0
- package/components/apps/components/icon.d.ts +1 -0
- package/components/apps/components/icon.js +18 -0
- package/components/apps/components/index.d.ts +5 -0
- package/components/apps/components/index.js +5 -0
- package/components/apps/components/{selectInputs → inputs}/AppCheckbox.svelte +4 -2
- package/components/apps/components/{dateInputs → inputs}/AppDateInput.svelte +6 -0
- package/components/apps/components/inputs/AppFileInput.svelte +34 -0
- package/components/apps/components/inputs/AppFileInput.svelte.d.ts +20 -0
- package/components/apps/components/inputs/AppNumberInput.svelte +48 -0
- package/components/apps/components/inputs/AppRangeInput.svelte +44 -0
- package/components/apps/components/inputs/AppRangeInput.svelte.d.ts +23 -0
- package/components/apps/components/inputs/AppSelect.svelte +90 -0
- package/components/apps/components/{selectInputs → inputs}/AppSelect.svelte.d.ts +2 -0
- package/components/apps/components/{numberInputs → inputs}/AppSliderInputs.svelte +13 -9
- package/components/apps/components/{textInputs → inputs}/AppTextInput.svelte +6 -0
- package/components/apps/components/inputs/currency/AppCurrencyInput.svelte +49 -0
- package/components/apps/components/inputs/currency/AppCurrencyInput.svelte.d.ts +21 -0
- package/components/apps/components/inputs/currency/CurrencyInput.svelte +181 -0
- package/components/apps/components/inputs/currency/CurrencyInput.svelte.d.ts +32 -0
- package/components/apps/components/inputs/index.d.ts +9 -0
- package/components/apps/components/inputs/index.js +9 -0
- package/components/apps/components/layout/AppContainer.svelte +32 -0
- package/components/apps/components/layout/AppContainer.svelte.d.ts +21 -0
- package/components/apps/components/layout/AppDivider.svelte +20 -0
- package/components/apps/components/layout/AppDivider.svelte.d.ts +22 -0
- package/components/apps/components/layout/AppTabs.svelte +58 -0
- package/components/apps/components/layout/AppTabs.svelte.d.ts +24 -0
- package/components/apps/components/layout/index.d.ts +3 -0
- package/components/apps/components/layout/index.js +3 -0
- package/components/apps/editor/AppComponentInput.svelte +33 -0
- package/components/apps/editor/AppComponentInput.svelte.d.ts +18 -0
- package/components/apps/editor/AppComponentInputs.svelte +13 -0
- package/components/apps/editor/AppComponentInputs.svelte.d.ts +20 -0
- package/components/apps/editor/AppEditor.svelte +66 -31
- package/components/apps/editor/AppEditor.svelte.d.ts +1 -0
- package/components/apps/editor/AppEditorHeader.svelte +74 -18
- package/components/apps/editor/AppEditorHeader.svelte.d.ts +1 -0
- package/components/apps/editor/AppInputs.svelte +60 -0
- package/components/apps/editor/AppInputs.svelte.d.ts +14 -0
- package/components/apps/editor/AppPreview.svelte +11 -6
- package/components/apps/editor/ComponentHeader.svelte +40 -2
- package/components/apps/editor/ComponentHeader.svelte.d.ts +1 -1
- package/components/apps/editor/GridEditor.svelte +75 -32
- package/components/apps/editor/GridEditor.svelte.d.ts +2 -0
- package/components/apps/editor/SettingsPanel.svelte +31 -3
- package/components/apps/editor/SubGridEditor.svelte +111 -0
- package/components/apps/editor/SubGridEditor.svelte.d.ts +24 -0
- package/components/apps/editor/TablePanel.svelte +2 -0
- package/components/apps/editor/TablePanel.svelte.d.ts +1 -1
- package/components/apps/editor/appUtils.d.ts +9 -0
- package/components/apps/editor/appUtils.js +141 -0
- package/components/apps/editor/component/Component.svelte +209 -0
- package/components/apps/editor/component/Component.svelte.d.ts +23 -0
- package/components/apps/editor/component/README.md +15 -0
- package/components/apps/editor/component/components.d.ts +65 -0
- package/components/apps/editor/component/components.js +1102 -0
- package/components/apps/editor/component/default-codes.d.ts +3 -0
- package/components/apps/editor/component/default-codes.js +322 -0
- package/components/apps/editor/component/index.d.ts +4 -0
- package/components/apps/editor/component/index.js +4 -0
- package/components/apps/editor/component/sets.d.ts +2 -0
- package/components/apps/editor/component/sets.js +47 -0
- package/components/apps/editor/componentsPanel/ComponentList.svelte +30 -106
- package/components/apps/editor/componentsPanel/CssProperty.svelte +31 -0
- package/components/apps/editor/componentsPanel/CssProperty.svelte.d.ts +20 -0
- package/components/apps/editor/componentsPanel/CssSettings.svelte +141 -0
- package/components/apps/editor/componentsPanel/CssSettings.svelte.d.ts +14 -0
- package/components/apps/editor/componentsPanel/ListItem.svelte +28 -0
- package/components/apps/editor/componentsPanel/ListItem.svelte.d.ts +20 -0
- package/components/apps/editor/componentsPanel/componentStaticValues.d.ts +4 -1
- package/components/apps/editor/componentsPanel/componentStaticValues.js +4 -1
- package/components/apps/editor/contextPanel/ContextPanel.svelte +8 -6
- package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +98 -9
- package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +38 -29
- package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorPanel.svelte +21 -1
- package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanel.svelte +66 -8
- package/components/apps/editor/inlineScriptsPanel/InlineScriptsPanelList.svelte +92 -46
- package/components/apps/editor/inlineScriptsPanel/utils.d.ts +5 -1
- package/components/apps/editor/inlineScriptsPanel/utils.js +30 -0
- package/components/apps/editor/settingsPanel/AlignmentEditor.svelte +1 -1
- package/components/apps/editor/settingsPanel/AlignmentEditor.svelte.d.ts +1 -1
- package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +4 -1
- package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte.d.ts +59 -1
- package/components/apps/editor/settingsPanel/ComponentPanel.svelte +64 -34
- package/components/apps/editor/settingsPanel/ComponentPanel.svelte.d.ts +5 -3
- package/components/apps/editor/settingsPanel/GridTab.svelte +73 -0
- package/components/apps/editor/settingsPanel/GridTab.svelte.d.ts +18 -0
- package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +3 -0
- package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte.d.ts +2 -2
- package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +92 -77
- package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte.d.ts +1 -0
- package/components/apps/editor/settingsPanel/MoveToOtherGrid.svelte +85 -0
- package/components/apps/editor/settingsPanel/MoveToOtherGrid.svelte.d.ts +18 -0
- package/components/apps/editor/settingsPanel/Recompute.svelte +4 -1
- package/components/apps/editor/settingsPanel/TableActions.svelte +17 -6
- package/components/apps/editor/settingsPanel/TableActions.svelte.d.ts +2 -1
- package/components/apps/editor/settingsPanel/common/PanelSection.svelte +5 -3
- package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte +83 -0
- package/components/apps/editor/settingsPanel/inputEditor/IconSelectInput.svelte.d.ts +19 -0
- package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +6 -1
- package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte.d.ts +2 -0
- package/components/apps/editor/settingsPanel/inputEditor/UploadInputEditor.svelte +23 -0
- package/components/apps/editor/settingsPanel/inputEditor/UploadInputEditor.svelte.d.ts +17 -0
- package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +3 -20
- package/components/apps/gridUtils.d.ts +3 -1
- package/components/apps/gridUtils.js +5 -3
- package/components/apps/inputType.d.ts +33 -6
- package/components/apps/types.d.ts +35 -40
- package/components/apps/types.js +1 -1
- package/components/apps/utils.d.ts +6 -5
- package/components/apps/utils.js +90 -94
- package/components/common/button/Button.svelte +12 -5
- package/components/common/button/Button.svelte.d.ts +3 -1
- package/components/common/button/ButtonPopup.svelte.d.ts +1 -1
- package/components/common/button/model.d.ts +2 -2
- package/components/common/button/model.js +21 -6
- package/components/common/confirmationModal/ConfirmationModal.svelte +8 -1
- package/components/common/confirmationModal/UnsavedConfirmationModal.svelte +4 -4
- package/components/common/drawer/Drawer.svelte +3 -1
- package/components/common/fileInput/FileInput.svelte +112 -0
- package/components/common/fileInput/FileInput.svelte.d.ts +27 -0
- package/components/common/index.d.ts +1 -0
- package/components/common/index.js +1 -0
- package/components/common/kbd/Kbd.svelte.d.ts +2 -2
- package/components/common/modal/Modal.svelte +74 -0
- package/components/common/modal/Modal.svelte.d.ts +22 -0
- package/components/common/popup/Popup.svelte +34 -17
- package/components/common/popup/Popup.svelte.d.ts +11 -4
- package/components/common/table/FlowRow.svelte +22 -3
- package/components/common/table/LanguageBadge.svelte +10 -4
- package/components/common/table/Row.svelte +1 -1
- package/components/common/table/ScriptRow.svelte +2 -2
- package/components/common/tabs/Tabs.svelte +9 -7
- package/components/common/tabs/Tabs.svelte.d.ts +3 -1
- package/components/flows/CreateActionsFlow.svelte +2 -3
- package/components/flows/content/BranchPredicateEditor.svelte +10 -8
- package/components/flows/content/FlowInputs.svelte +109 -99
- package/components/flows/content/FlowLoop.svelte +1 -1
- package/components/flows/content/FlowModuleComponent.svelte +3 -2
- package/components/flows/content/FlowRetries.svelte +8 -6
- package/components/flows/content/FlowSettings.svelte +72 -26
- package/components/flows/flowState.d.ts +1 -0
- package/components/flows/flowState.js +1 -0
- package/components/flows/flowStateUtils.js +4 -2
- package/components/flows/flowStore.d.ts +1 -0
- package/components/flows/flowStore.js +1 -0
- package/components/flows/map/FlowBranchAllMap.svelte +1 -1
- package/components/flows/map/FlowBranchOneMap.svelte +2 -2
- package/components/flows/map/FlowModuleSchemaItem.svelte +5 -5
- package/components/flows/map/FlowModuleSchemaMap.svelte +15 -8
- package/components/flows/map/FlowModuleSchemaMap.svelte.d.ts +1 -0
- package/components/flows/map/InsertModuleButton.svelte +24 -10
- package/components/flows/map/InsertModuleButton.svelte.d.ts +1 -0
- package/components/flows/map/MapItem.svelte +3 -1
- package/components/flows/utils.js +16 -10
- package/components/graph/FlowGraph.svelte +38 -15
- package/components/graph/FlowGraph.svelte.d.ts +1 -0
- package/components/icons/SquareIcon.svelte +9 -0
- package/components/icons/SquareIcon.svelte.d.ts +17 -0
- package/components/icons/index.d.ts +2 -0
- package/components/icons/index.js +2 -0
- package/components/jobs/JobDetail.svelte +29 -5
- package/components/propertyPicker/ObjectViewer.svelte +8 -5
- package/components/propertyPicker/ObjectViewer.svelte.d.ts +1 -0
- package/components/propertyPicker/PropPicker.svelte +8 -1
- package/components/propertyPicker/PropPickerResult.svelte +1 -1
- package/components/random_positive_adjetive.d.ts +1 -0
- package/components/random_positive_adjetive.js +961 -0
- package/components/scriptEditor/LogPanel.svelte +2 -1
- package/components/sidebar/SidebarContent.svelte +1 -1
- package/components/sidebar/UserMenu.svelte +46 -16
- package/components/sidebar/UserMenu.svelte.d.ts +0 -3
- package/components/sidebar/WorkspaceMenu.svelte +3 -1
- package/components/sidebar/settings.d.ts +2 -0
- package/components/sidebar/settings.js +2 -0
- package/gen/core/OpenAPI.js +1 -1
- package/gen/models/CompletedJob.d.ts +1 -0
- package/gen/models/FlowModule.d.ts +0 -1
- package/gen/models/QueuedJob.d.ts +1 -0
- package/gen/models/WorkerPing.d.ts +1 -1
- package/gen/services/FlowService.d.ts +9 -0
- package/gen/services/FlowService.js +15 -0
- package/gen/services/JobService.d.ts +97 -15
- package/gen/services/JobService.js +74 -15
- package/gen/services/ScriptService.d.ts +10 -1
- package/gen/services/ScriptService.js +16 -1
- package/gen/services/VariableService.d.ts +4 -2
- package/gen/services/VariableService.js +8 -2
- package/gen/services/WorkspaceService.d.ts +17 -0
- package/gen/services/WorkspaceService.js +16 -0
- package/infer.js +3 -0
- package/init_scripts/python_failure_module.py +10 -0
- package/init_scripts/python_init_code.py +37 -0
- package/init_scripts/python_init_code_clear.py +5 -0
- package/init_scripts/python_init_code_trigger.py +14 -0
- package/logout.js +2 -1
- package/package.json +577 -522
- package/script_helpers.d.ts +6 -5
- package/script_helpers.js +7 -73
- package/stores.d.ts +5 -1
- package/stores.js +8 -1
- package/user.d.ts +1 -1
- package/user.js +14 -8
- package/utils.d.ts +1 -1
- package/utils.js +8 -7
- package/components/apps/components/DisplayComponent.svelte +0 -16
- package/components/apps/components/DisplayComponent.svelte.d.ts +0 -20
- package/components/apps/components/numberInputs/AppNumberInput.svelte +0 -33
- package/components/apps/components/selectInputs/AppSelect.svelte +0 -47
- package/components/apps/editor/ComponentEditor.svelte +0 -145
- package/components/apps/editor/ComponentEditor.svelte.d.ts +0 -23
- package/components/apps/editor/componentsPanel/data.d.ts +0 -3
- package/components/apps/editor/componentsPanel/data.js +0 -499
- package/components/apps/editorUtils.d.ts +0 -1
- package/components/apps/editorUtils.js +0 -292
- /package/components/apps/components/{form → buttons}/AppForm.svelte.d.ts +0 -0
- /package/components/apps/components/{table → display/table}/AppTableFooter.svelte.d.ts +0 -0
- /package/components/apps/components/{table → display/table}/tableOptions.d.ts +0 -0
- /package/components/apps/components/{table → display/table}/tableOptions.js +0 -0
- /package/components/apps/components/{selectInputs → inputs}/AppCheckbox.svelte.d.ts +0 -0
- /package/components/apps/components/{dateInputs → inputs}/AppDateInput.svelte.d.ts +0 -0
- /package/components/apps/components/{numberInputs → inputs}/AppNumberInput.svelte.d.ts +0 -0
- /package/components/apps/components/{numberInputs → inputs}/AppSliderInputs.svelte.d.ts +0 -0
- /package/components/apps/components/{textInputs → inputs}/AppTextInput.svelte.d.ts +0 -0
package/assets/app.css
CHANGED
package/common.d.ts
CHANGED
|
@@ -19,7 +19,7 @@ export interface SchemaProperty {
|
|
|
19
19
|
};
|
|
20
20
|
}
|
|
21
21
|
export type Schema = {
|
|
22
|
-
$schema: string;
|
|
22
|
+
$schema: string | undefined;
|
|
23
23
|
type: string;
|
|
24
24
|
properties: {
|
|
25
25
|
[name: string]: SchemaProperty;
|
|
@@ -31,4 +31,8 @@ export type Meta = {
|
|
|
31
31
|
owner: string;
|
|
32
32
|
name: string;
|
|
33
33
|
};
|
|
34
|
+
type Enumerate<N extends number, Acc extends number[] = []> = Acc['length'] extends N ? Acc[number] : Enumerate<N, [...Acc, Acc['length']]>;
|
|
35
|
+
/** An inclusive range of integer numbers */
|
|
36
|
+
export type IntRange<F extends number, T extends number> = F | Exclude<Enumerate<T>, Enumerate<F>> | T;
|
|
34
37
|
export declare function pathToMeta(path: string): Meta;
|
|
38
|
+
export {};
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
<script>import { ResourceService } from '../gen';
|
|
1
|
+
<script>import { JobService, Preview, ResourceService } from '../gen';
|
|
2
2
|
import { workspaceStore } from '../stores';
|
|
3
|
-
import { emptySchema, emptyString } from '../utils';
|
|
3
|
+
import { emptySchema, emptyString, sendUserToast } from '../utils';
|
|
4
|
+
import { Loader2 } from 'lucide-svelte';
|
|
5
|
+
import Button from './common/button/Button.svelte';
|
|
4
6
|
import SchemaForm from './SchemaForm.svelte';
|
|
5
7
|
import SimpleEditor from './SimpleEditor.svelte';
|
|
8
|
+
import Toggle from './Toggle.svelte';
|
|
6
9
|
export let resource_type;
|
|
7
10
|
export let args = {};
|
|
8
11
|
export let password;
|
|
@@ -10,6 +13,8 @@ export let isValid = true;
|
|
|
10
13
|
let schema = emptySchema();
|
|
11
14
|
let notFound = false;
|
|
12
15
|
async function loadSchema() {
|
|
16
|
+
rawCode = '{}';
|
|
17
|
+
viewJsonSchema = false;
|
|
13
18
|
try {
|
|
14
19
|
const rt = await ResourceService.getResourceType({
|
|
15
20
|
workspace: $workspaceStore,
|
|
@@ -19,7 +24,6 @@ async function loadSchema() {
|
|
|
19
24
|
notFound = false;
|
|
20
25
|
}
|
|
21
26
|
catch (e) {
|
|
22
|
-
rawCode = '{}';
|
|
23
27
|
notFound = true;
|
|
24
28
|
}
|
|
25
29
|
}
|
|
@@ -40,17 +44,74 @@ function parseJson() {
|
|
|
40
44
|
}
|
|
41
45
|
let error = '';
|
|
42
46
|
let rawCode = '';
|
|
47
|
+
let viewJsonSchema = false;
|
|
48
|
+
$: rawCode && parseJson();
|
|
49
|
+
function switchTab(asJson) {
|
|
50
|
+
viewJsonSchema = asJson;
|
|
51
|
+
if (asJson) {
|
|
52
|
+
rawCode = JSON.stringify(args, null, 2);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
parseJson();
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
let loading = false;
|
|
59
|
+
async function testConnection() {
|
|
60
|
+
loading = true;
|
|
61
|
+
const job = await JobService.runScriptPreview({
|
|
62
|
+
workspace: $workspaceStore,
|
|
63
|
+
requestBody: {
|
|
64
|
+
language: 'deno',
|
|
65
|
+
content: `
|
|
66
|
+
import { Client } from 'https://deno.land/x/postgres/mod.ts'
|
|
67
|
+
export async function main(args: any) {
|
|
68
|
+
const client = new Client("postgres://" + args.user + ":" + args.password + "@" + args.host + ":" + args.port + "/" + args.dbname + "?sslmode=" + args.sslmode)
|
|
69
|
+
await client.connect()
|
|
70
|
+
return 'Connection successful'
|
|
71
|
+
}
|
|
72
|
+
`,
|
|
73
|
+
args: {
|
|
74
|
+
args
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
await new Promise((r) => setTimeout(r, 3000));
|
|
79
|
+
loading = false;
|
|
80
|
+
const testResult = await JobService.getCompletedJob({
|
|
81
|
+
workspace: $workspaceStore,
|
|
82
|
+
id: job
|
|
83
|
+
});
|
|
84
|
+
if (testResult) {
|
|
85
|
+
sendUserToast(testResult.success ? testResult.result : testResult.result?.['error']?.['message'], !testResult.success);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
43
88
|
</script>
|
|
44
89
|
|
|
45
|
-
{#if notFound}
|
|
90
|
+
{#if !notFound}
|
|
91
|
+
<div class="w-full flex gap-4 flex-row-reverse">
|
|
92
|
+
<Toggle
|
|
93
|
+
on:change={(e) => switchTab(e.detail)}
|
|
94
|
+
options={{
|
|
95
|
+
right: 'As JSON'
|
|
96
|
+
}}
|
|
97
|
+
/>
|
|
98
|
+
{#if resource_type == 'postgresql'}
|
|
99
|
+
<Button size="sm" on:click={testConnection}
|
|
100
|
+
>{#if loading}<Loader2 class="animate-spin mr-2" />{/if} Test connection</Button
|
|
101
|
+
>
|
|
102
|
+
{/if}
|
|
103
|
+
</div>
|
|
104
|
+
{:else}
|
|
46
105
|
<p class="italic text-gray-500 text-xs mb-4"
|
|
47
106
|
>No corresponding resource type found in your workspace for {resource_type}. Define the value in
|
|
48
107
|
JSON directly</p
|
|
49
108
|
>
|
|
109
|
+
{/if}
|
|
110
|
+
{#if notFound || viewJsonSchema}
|
|
50
111
|
{#if !emptyString(error)}<span class="text-red-400 text-xs mb-1 flex flex-row-reverse"
|
|
51
112
|
>{error}</span
|
|
52
113
|
>{:else}<div class="py-2" />{/if}
|
|
53
114
|
<SimpleEditor autoHeight lang="json" bind:code={rawCode} fixedOverflowWidgets={false} />
|
|
54
115
|
{:else}
|
|
55
|
-
<SchemaForm {password} isValid {schema} bind:args />
|
|
116
|
+
<SchemaForm noDelete {password} isValid {schema} bind:args />
|
|
56
117
|
{/if}
|
|
@@ -34,6 +34,14 @@ const apiTokenApps = {
|
|
|
34
34
|
supabase: {
|
|
35
35
|
img: '/supabase_connect.png',
|
|
36
36
|
instructions: ['Go to the API Settings of your app to find the project URL and key']
|
|
37
|
+
},
|
|
38
|
+
square: {
|
|
39
|
+
img: '/square_connect.gif',
|
|
40
|
+
instructions: [
|
|
41
|
+
'Go to <a href="https://developer.squareup.com/apps" target="_blank" rel=”noopener noreferrer”>https://developer.squareup.com/apps</a>',
|
|
42
|
+
'In the left pane, choose Credentials',
|
|
43
|
+
'At the top of the page, choose Production mode for a production access token or Sandbox mode for a Sandbox access token.'
|
|
44
|
+
]
|
|
37
45
|
}
|
|
38
46
|
};
|
|
39
47
|
</script>
|
|
@@ -52,6 +60,7 @@ import DrawerContent from './common/drawer/DrawerContent.svelte';
|
|
|
52
60
|
import ApiConnectForm from './ApiConnectForm.svelte';
|
|
53
61
|
import SearchItems from './SearchItems.svelte';
|
|
54
62
|
import autosize from 'svelte-autosize';
|
|
63
|
+
import WhitelistIp from './WhitelistIp.svelte';
|
|
55
64
|
export let newPageOAuth = false;
|
|
56
65
|
let filter = '';
|
|
57
66
|
let manual = false;
|
|
@@ -126,6 +135,7 @@ async function loadResources() {
|
|
|
126
135
|
async function next() {
|
|
127
136
|
if (step == 1 && manual) {
|
|
128
137
|
step += 1;
|
|
138
|
+
args = {};
|
|
129
139
|
}
|
|
130
140
|
else if (step == 1 && !manual) {
|
|
131
141
|
const url = new URL(`/api/oauth/connect/${resource_type}`, $page.url.origin);
|
|
@@ -355,12 +365,9 @@ let filteredConnectsManual = [];
|
|
|
355
365
|
bind:error={pathError}
|
|
356
366
|
bind:path
|
|
357
367
|
initialPath=""
|
|
358
|
-
namePlaceholder="
|
|
368
|
+
namePlaceholder="{resource_type}"
|
|
359
369
|
kind="resource"
|
|
360
370
|
/>
|
|
361
|
-
<h2 class="mt-4 mb-2">Description</h2>
|
|
362
|
-
|
|
363
|
-
<textarea type="text" autocomplete="off" use:autosize bind:value={description} />
|
|
364
371
|
|
|
365
372
|
{#if apiTokenApps[resource_type]}
|
|
366
373
|
<h2 class="mt-4 mb-2">Instructions</h2>
|
|
@@ -374,20 +381,28 @@ let filteredConnectsManual = [];
|
|
|
374
381
|
</ol>
|
|
375
382
|
</div>
|
|
376
383
|
{#if apiTokenApps[resource_type].img}
|
|
377
|
-
<div class="mt-4 w-full">
|
|
378
|
-
<img class="max-h-
|
|
384
|
+
<div class="mt-4 w-full overflow-hidden">
|
|
385
|
+
<img class="m-auto max-h-60" alt="connect" src={apiTokenApps[resource_type].img} />
|
|
379
386
|
</div>
|
|
380
387
|
{/if}
|
|
381
388
|
{/if}
|
|
389
|
+
{#if resource_type == 'postgresql' || resource_type == 'mysql' || resource_type == 'mongodb'}
|
|
390
|
+
<WhitelistIp />
|
|
391
|
+
{/if}
|
|
382
392
|
|
|
383
|
-
<h2 class="mt-
|
|
393
|
+
<h2 class="mt-4">Value</h2>
|
|
384
394
|
<div class="mt-4">
|
|
385
|
-
|
|
395
|
+
{#key resource_type}
|
|
396
|
+
<ApiConnectForm password={key ?? ''} {resource_type} bind:args bind:isValid />
|
|
397
|
+
{/key}
|
|
386
398
|
</div>
|
|
399
|
+
|
|
400
|
+
<h2 class="mt-4 mb-2">Description</h2>
|
|
401
|
+
<textarea type="text" autocomplete="off" use:autosize bind:value={description} />
|
|
387
402
|
{:else}
|
|
388
403
|
<Path
|
|
389
404
|
initialPath=""
|
|
390
|
-
namePlaceholder="
|
|
405
|
+
namePlaceholder="{resource_type}"
|
|
391
406
|
bind:error={pathError}
|
|
392
407
|
bind:path
|
|
393
408
|
kind="resource"
|
|
@@ -141,7 +141,7 @@ $: inputCat = computeInputCat(type, format, itemsType?.type, enum_, contentEncod
|
|
|
141
141
|
<FieldHeader {label} {required} {type} {contentEncoding} {format} {itemsType} />
|
|
142
142
|
{/if}
|
|
143
143
|
{#if editableSchema}
|
|
144
|
-
<div class="my-1 text-xs border-solid border border-gray-400
|
|
144
|
+
<div class="p-2 my-1 text-xs border-solid border border-gray-400">
|
|
145
145
|
<span
|
|
146
146
|
class="underline"
|
|
147
147
|
on:click={() => {
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
<script>import { page } from '$app/stores';
|
|
2
|
+
import { userWorkspaces, workspaceStore } from '../stores';
|
|
3
|
+
import { faChevronDown, faChevronUp } from '@fortawesome/free-solid-svg-icons';
|
|
4
|
+
import Icon from 'svelte-awesome';
|
|
5
|
+
import { slide } from 'svelte/transition';
|
|
6
|
+
import InlineCodeCopy from './InlineCodeCopy.svelte';
|
|
7
|
+
$: opened = false;
|
|
8
|
+
$: workspace = $userWorkspaces.find((e) => e.id === $workspaceStore);
|
|
9
|
+
$: workspaceName = workspace?.name;
|
|
10
|
+
$: workspaceId = workspace?.id;
|
|
11
|
+
$: url = `${$page.url.protocol}//${$page.url.hostname}/`;
|
|
12
|
+
</script>
|
|
13
|
+
|
|
14
|
+
<div class="text-sm mt-2 flex">
|
|
15
|
+
<!-- svelte-ignore a11y-click-events-have-key-events -->
|
|
16
|
+
<span
|
|
17
|
+
class="underline mr-4"
|
|
18
|
+
on:click={() => {
|
|
19
|
+
opened = !opened
|
|
20
|
+
}}
|
|
21
|
+
>
|
|
22
|
+
CLI quick setup
|
|
23
|
+
<Icon class="ml-2" data={opened ? faChevronUp : faChevronDown} scale={0.7} />
|
|
24
|
+
</span>
|
|
25
|
+
</div>
|
|
26
|
+
|
|
27
|
+
{#if opened}
|
|
28
|
+
<div
|
|
29
|
+
transition:slide|local
|
|
30
|
+
class="bg-gray-100 border-l-4 border-gray-600 text-gray-700 p-4 m-4"
|
|
31
|
+
role="alert"
|
|
32
|
+
id="dynamic-input-help-box"
|
|
33
|
+
>
|
|
34
|
+
<ul class="pl-0 list-decimal list-inside">
|
|
35
|
+
<li
|
|
36
|
+
>Install the latest wmill CLI from deno.land: <InlineCodeCopy
|
|
37
|
+
content={'deno install --unstable -A https://deno.land/x/wmill/main.ts'}
|
|
38
|
+
/></li
|
|
39
|
+
>
|
|
40
|
+
<li
|
|
41
|
+
>Setup the wmill cli for this workspace & remote: <InlineCodeCopy
|
|
42
|
+
content={`wmill workspace add ${workspaceName} ${workspaceId} ${url}`}
|
|
43
|
+
/></li
|
|
44
|
+
>
|
|
45
|
+
<li>Follow the prompts in your terminal</li>
|
|
46
|
+
<li>Use the run command above!</li>
|
|
47
|
+
</ul>
|
|
48
|
+
</div>
|
|
49
|
+
{/if}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { SvelteComponentTyped } from "svelte";
|
|
2
|
+
declare const __propDef: {
|
|
3
|
+
props: Record<string, never>;
|
|
4
|
+
events: {
|
|
5
|
+
[evt: string]: CustomEvent<any>;
|
|
6
|
+
};
|
|
7
|
+
slots: {};
|
|
8
|
+
};
|
|
9
|
+
export type CliHelpBoxProps = typeof __propDef.props;
|
|
10
|
+
export type CliHelpBoxEvents = typeof __propDef.events;
|
|
11
|
+
export type CliHelpBoxSlots = typeof __propDef.slots;
|
|
12
|
+
export default class CliHelpBox extends SvelteComponentTyped<CliHelpBoxProps, CliHelpBoxEvents, CliHelpBoxSlots> {
|
|
13
|
+
}
|
|
14
|
+
export {};
|
|
@@ -5,9 +5,11 @@ import { truncate } from '../utils';
|
|
|
5
5
|
import { Button } from './common';
|
|
6
6
|
import autosize from 'svelte-autosize';
|
|
7
7
|
export let result;
|
|
8
|
+
export let requireHtmlApproval = false;
|
|
8
9
|
let resultKind;
|
|
9
10
|
$: resultKind = inferResultKind(result);
|
|
10
11
|
let forceJson = false;
|
|
12
|
+
let enableHtml = false;
|
|
11
13
|
function isRectangularArray(obj) {
|
|
12
14
|
if (!Array.isArray(obj) || obj.length == 0) {
|
|
13
15
|
return false;
|
|
@@ -35,9 +37,15 @@ function inferResultKind(result) {
|
|
|
35
37
|
else if (keys.map((k) => Array.isArray(result[k])).reduce((a, b) => a && b)) {
|
|
36
38
|
return 'table-col';
|
|
37
39
|
}
|
|
40
|
+
else if (keys.length == 1 && keys[0] == 'html') {
|
|
41
|
+
return 'html';
|
|
42
|
+
}
|
|
38
43
|
else if (keys.length == 1 && keys[0] == 'png') {
|
|
39
44
|
return 'png';
|
|
40
45
|
}
|
|
46
|
+
else if (keys.length == 1 && keys[0] == 'svg') {
|
|
47
|
+
return 'svg';
|
|
48
|
+
}
|
|
41
49
|
else if (keys.length == 1 && keys[0] == 'jpeg') {
|
|
42
50
|
return 'jpeg';
|
|
43
51
|
}
|
|
@@ -47,6 +55,9 @@ function inferResultKind(result) {
|
|
|
47
55
|
else if (keys.length == 1 && keys[0] == 'error') {
|
|
48
56
|
return 'error';
|
|
49
57
|
}
|
|
58
|
+
else if (keys.length === 2 && keys.includes('file') && keys.includes('filename')) {
|
|
59
|
+
return 'filename';
|
|
60
|
+
}
|
|
50
61
|
else if (keys.length == 3 &&
|
|
51
62
|
keys.includes('resume') &&
|
|
52
63
|
keys.includes('cancel') &&
|
|
@@ -104,6 +115,34 @@ let payload = '';
|
|
|
104
115
|
</tbody>
|
|
105
116
|
</TableCustom>
|
|
106
117
|
</div>
|
|
118
|
+
{:else if !forceJson && resultKind == 'html'}
|
|
119
|
+
<div class="h-full">
|
|
120
|
+
{#if !requireHtmlApproval || enableHtml}
|
|
121
|
+
{@html result.html}
|
|
122
|
+
{:else}
|
|
123
|
+
<div class="font-main text-sm">
|
|
124
|
+
<div class="flex flex-col">
|
|
125
|
+
<div class="bg-red-400 py-1 rounded-t text-white font-bold text-center">
|
|
126
|
+
Warning
|
|
127
|
+
</div>
|
|
128
|
+
<p
|
|
129
|
+
class="text-gray-600 mb-2 text-left border-2 !border-t-0 rounded-b border-red-400 overflow-auto p-1"
|
|
130
|
+
>Rendering HTML can expose you to <a
|
|
131
|
+
href="https://owasp.org/www-community/attacks/xss/"
|
|
132
|
+
target="_blank"
|
|
133
|
+
rel="noreferrer"
|
|
134
|
+
class="hover:underline">XSS attacks</a
|
|
135
|
+
>. Only enable it if you trust the author of the script.
|
|
136
|
+
</p>
|
|
137
|
+
</div>
|
|
138
|
+
<div class="center-center">
|
|
139
|
+
<Button size="sm" color="dark" on:click={() => (enableHtml = true)}>
|
|
140
|
+
Enable HTML rendering
|
|
141
|
+
</Button>
|
|
142
|
+
</div>
|
|
143
|
+
</div>
|
|
144
|
+
{/if}
|
|
145
|
+
</div>
|
|
107
146
|
{:else if !forceJson && resultKind == 'png'}
|
|
108
147
|
<div class="h-full"
|
|
109
148
|
><img alt="png rendered" class="w-auto h-full" src="data:image/png;base64,{result.png}" />
|
|
@@ -116,6 +155,11 @@ let payload = '';
|
|
|
116
155
|
src="data:image/jpeg;base64,{result.jpeg}"
|
|
117
156
|
/>
|
|
118
157
|
</div>
|
|
158
|
+
{:else if !forceJson && resultKind == 'svg'}
|
|
159
|
+
<div
|
|
160
|
+
><a download="windmill.svg" href="data:text/plain;base64,{btoa(result.svg)}">Download</a>
|
|
161
|
+
</div>
|
|
162
|
+
<div class="h-full overflow-auto">{@html result.svg} </div>
|
|
119
163
|
{:else if !forceJson && resultKind == 'gif'}
|
|
120
164
|
<div class="h-full"
|
|
121
165
|
><img alt="gif rendered" class="w-auto h-full" src="data:image/gif;base64,{result.gif}" />
|
|
@@ -126,8 +170,14 @@ let payload = '';
|
|
|
126
170
|
>Download</a
|
|
127
171
|
>
|
|
128
172
|
</div>
|
|
173
|
+
{:else if !forceJson && resultKind === 'filename'}
|
|
174
|
+
<div>
|
|
175
|
+
<a download={result.filename} href="data:application/octet-stream;base64,{result.file}">
|
|
176
|
+
Download
|
|
177
|
+
</a>
|
|
178
|
+
</div>
|
|
129
179
|
{:else if !forceJson && resultKind == 'error'}<div>
|
|
130
|
-
<span class="text-red-500 font-semibold text-sm"
|
|
180
|
+
<span class="text-red-500 font-semibold text-sm whitespace-pre-wrap"
|
|
131
181
|
>{result.error.name}: {result.error.message}</span
|
|
132
182
|
>
|
|
133
183
|
<pre class="text-sm whitespace-pre-wrap text-gray-900">{result.error.stack ?? ''}</pre>
|
package/components/Editor.svelte
CHANGED
|
@@ -102,8 +102,16 @@ export function insertAtLine(code, line) {
|
|
|
102
102
|
}
|
|
103
103
|
export function setCode(ncode) {
|
|
104
104
|
code = ncode;
|
|
105
|
-
if (editor) {
|
|
106
|
-
editor.setValue(ncode)
|
|
105
|
+
if (editor?.getModel()) {
|
|
106
|
+
// editor.setValue(ncode)
|
|
107
|
+
editor.pushUndoStop();
|
|
108
|
+
editor.executeEdits('set', [
|
|
109
|
+
{
|
|
110
|
+
range: editor.getModel().getFullModelRange(),
|
|
111
|
+
text: ncode
|
|
112
|
+
}
|
|
113
|
+
]);
|
|
114
|
+
editor.pushUndoStop();
|
|
107
115
|
}
|
|
108
116
|
}
|
|
109
117
|
export function format() {
|
|
@@ -246,8 +254,9 @@ export async function reloadWebsocket() {
|
|
|
246
254
|
console.error(`connection to ${name} language server failed`);
|
|
247
255
|
}
|
|
248
256
|
}
|
|
257
|
+
const wsProtocol = $page.url.protocol == 'https:' ? 'wss' : 'ws';
|
|
249
258
|
if (lang == 'typescript') {
|
|
250
|
-
await connectToLanguageServer(
|
|
259
|
+
await connectToLanguageServer(`${wsProtocol}://${$page.url.host}/ws/deno`, 'deno', {
|
|
251
260
|
certificateStores: null,
|
|
252
261
|
enablePaths: [],
|
|
253
262
|
config: null,
|
|
@@ -279,7 +288,7 @@ export async function reloadWebsocket() {
|
|
|
279
288
|
});
|
|
280
289
|
}
|
|
281
290
|
else if (lang === 'python') {
|
|
282
|
-
await connectToLanguageServer(
|
|
291
|
+
await connectToLanguageServer(`${wsProtocol}://${$page.url.host}/ws/pyright`, 'pyright', {
|
|
283
292
|
executionEnvironments: [
|
|
284
293
|
{
|
|
285
294
|
root: '/tmp/pyright',
|
|
@@ -289,7 +298,7 @@ export async function reloadWebsocket() {
|
|
|
289
298
|
}
|
|
290
299
|
]
|
|
291
300
|
});
|
|
292
|
-
connectToLanguageServer(
|
|
301
|
+
connectToLanguageServer(`${wsProtocol}://${$page.url.host}/ws/black`, 'black', {
|
|
293
302
|
formatters: {
|
|
294
303
|
black: {
|
|
295
304
|
command: 'black',
|
|
@@ -302,7 +311,7 @@ export async function reloadWebsocket() {
|
|
|
302
311
|
});
|
|
303
312
|
}
|
|
304
313
|
else if (lang === 'go') {
|
|
305
|
-
connectToLanguageServer(
|
|
314
|
+
connectToLanguageServer(`${wsProtocol}://${$page.url.host}/ws/go`, 'go', {
|
|
306
315
|
'build.allowImplicitNetworkAccess': true
|
|
307
316
|
});
|
|
308
317
|
}
|
|
@@ -355,7 +364,8 @@ async function loadMonaco() {
|
|
|
355
364
|
const model = meditor.createModel(code, lang, mUri.parse(uri));
|
|
356
365
|
model.updateOptions(updateOptions);
|
|
357
366
|
editor = meditor.create(divEl, {
|
|
358
|
-
...editorConfig(model, code, lang, automaticLayout, fixedOverflowWidgets)
|
|
367
|
+
...editorConfig(model, code, lang, automaticLayout, fixedOverflowWidgets),
|
|
368
|
+
tabSize: lang == 'python' ? 4 : 2
|
|
359
369
|
});
|
|
360
370
|
let timeoutModel = undefined;
|
|
361
371
|
editor.onDidChangeModelContent((event) => {
|