windmill-components 1.291.4 → 1.305.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package/autosize.d.ts +4 -0
- package/package/autosize.js +76 -0
- package/package/components/AppConnect.svelte +26 -7
- package/package/components/ArgInput.svelte +129 -103
- package/package/components/ContentSearch.svelte +8 -2
- package/package/components/ContextualVariableEditor.svelte +69 -0
- package/package/components/ContextualVariableEditor.svelte.d.ts +21 -0
- package/package/components/CronInput.svelte +3 -0
- package/package/components/DBSchemaExplorer.svelte +2 -2
- package/package/components/DarkModeObserver.svelte +2 -2
- package/package/components/DateTimeInput.svelte +9 -3
- package/package/components/DefaultScripts.svelte +1 -0
- package/package/components/DisplayResult.svelte +83 -41
- package/package/components/DisplayResult.svelte.d.ts +1 -0
- package/package/components/DurationMs.svelte +1 -10
- package/package/components/DurationMs.svelte.d.ts +0 -1
- package/package/components/Editor.svelte +40 -10
- package/package/components/ErrorOrRecoveryHandler.svelte +5 -2
- package/package/components/FlowBuilder.svelte +9 -5
- package/package/components/FlowBuilder.svelte.d.ts +1 -0
- package/package/components/FlowGraphViewerStep.svelte +5 -4
- package/package/components/FlowJobResult.svelte +36 -1
- package/package/components/FlowJobResult.svelte.d.ts +2 -1
- package/package/components/FlowLoopIterationPreview.svelte +18 -2
- package/package/components/FlowLoopIterationPreview.svelte.d.ts +6 -0
- package/package/components/FlowStatusViewer.svelte +1 -1
- package/package/components/FlowStatusViewerInner.svelte +117 -44
- package/package/components/FlowStatusViewerInner.svelte.d.ts +1 -0
- package/package/components/FlowStatusWaitingForEvents.svelte +97 -54
- package/package/components/GfmMarkdown.svelte +14 -0
- package/package/components/GfmMarkdown.svelte.d.ts +16 -0
- package/package/components/GroupEditor.svelte +1 -2
- package/package/components/HighlightCode.svelte +1 -1
- package/package/components/InputTransformForm.svelte +24 -2
- package/package/components/InstanceGroupEditor.svelte +1 -2
- package/package/components/InstanceSettings.svelte +4 -0
- package/package/components/JobArgs.svelte +5 -4
- package/package/components/JobArgs.svelte.d.ts +1 -0
- package/package/components/JobStatus.svelte +2 -8
- package/package/components/LightweightArgInput.svelte +3 -6
- package/package/components/LightweightArgInput.svelte.d.ts +0 -1
- package/package/components/LogId.svelte +3 -0
- package/package/components/LogId.svelte.d.ts +16 -0
- package/package/components/LogViewer.svelte +14 -5
- package/package/components/MapResult.svelte +151 -0
- package/package/components/MapResult.svelte.d.ts +27 -0
- package/package/components/MoveDrawer.svelte +2 -1
- package/package/components/ObjectStoreConfigSettings.svelte +169 -0
- package/package/components/ObjectStoreConfigSettings.svelte.d.ts +32 -0
- package/package/components/ParqetTableRenderer.svelte +3 -2
- package/package/components/ResourceEditor.svelte +33 -11
- package/package/components/RunChart.svelte +0 -1
- package/package/components/RunForm.svelte.d.ts +1 -1
- package/package/components/RunFormAdvancedPopup.svelte.d.ts +1 -1
- package/package/components/SavedInputs.svelte +1 -1
- package/package/components/ScriptBuilder.svelte +38 -8
- package/package/components/SimpleEditor.svelte +1 -3
- package/package/components/SimpleEditor.svelte.d.ts +0 -3
- package/package/components/SupabaseConnect.svelte +2 -2
- package/package/components/TableSimple.svelte +12 -1
- package/package/components/TableSimple.svelte.d.ts +1 -0
- package/package/components/TestConnection.svelte +29 -4
- package/package/components/TestConnection.svelte.d.ts +2 -0
- package/package/components/TestJobLoader.svelte +19 -2
- package/package/components/TestJobLoader.svelte.d.ts +3 -0
- package/package/components/UserSettings.svelte +5 -2
- package/package/components/UserSettings.svelte.d.ts +4 -0
- package/package/components/VariableEditor.svelte +2 -3
- package/package/components/WorkspaceGroup.svelte +10 -1
- package/package/components/apps/components/display/AppCustomComponent.svelte +3 -0
- package/package/components/apps/components/display/AppText.svelte +14 -19
- package/package/components/apps/components/display/PlotlyHtml.svelte +5 -1
- package/package/components/apps/components/display/PlotlyHtmlV2.svelte +4 -1
- package/package/components/apps/components/display/VegaLiteHtml.svelte +3 -3
- package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +18 -2
- package/package/components/apps/components/display/dbtable/DbExplorerCount.svelte +8 -5
- package/package/components/apps/components/display/dbtable/DbExplorerCount.svelte.d.ts +2 -0
- package/package/components/apps/components/display/dbtable/InsertRow.svelte +32 -18
- package/package/components/apps/components/display/dbtable/queries/count.js +2 -2
- package/package/components/apps/components/display/dbtable/queries/select.js +8 -6
- package/package/components/apps/components/display/dbtable/utils.d.ts +10 -5
- package/package/components/apps/components/display/dbtable/utils.js +83 -29
- package/package/components/apps/components/display/table/AppAggridTable.svelte +1 -1
- package/package/components/apps/components/display/table/AppTable.svelte +5 -1
- package/package/components/apps/components/helpers/RunnableComponent.svelte +3 -0
- package/package/components/apps/components/helpers/eval.d.ts +1 -0
- package/package/components/apps/components/inputs/AppFileInput.svelte +8 -1
- package/package/components/apps/editor/AppEditorHeader.svelte +1 -1
- package/package/components/apps/editor/GridEditorMenu.svelte +11 -1
- package/package/components/apps/editor/RunnableJobPanel.svelte +5 -30
- package/package/components/apps/editor/appUtils.js +2 -1
- package/package/components/apps/editor/component/components.d.ts +78 -78
- package/package/components/apps/editor/component/components.js +12 -12
- package/package/components/apps/editor/component/default-codes.js +5 -1
- package/package/components/apps/editor/componentsPanel/CssEval.svelte +0 -1
- package/package/components/apps/editor/componentsPanel/CssProperty.svelte +113 -109
- package/package/components/apps/editor/componentsPanel/QuickStyleMenu.svelte +14 -7
- package/package/components/apps/editor/componentsPanel/componentControlUtils.js +2 -0
- package/package/components/apps/editor/componentsPanel/quickStyleProperties.js +2 -1
- package/package/components/apps/editor/inlineScriptsPanel/EmptyInlineScript.svelte +3 -1
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte +6 -0
- package/package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +4 -0
- package/package/components/apps/editor/settingsPanel/ComponentInputTypeEditor.svelte +1 -1
- package/package/components/apps/editor/settingsPanel/GridPane.svelte +11 -15
- package/package/components/apps/editor/settingsPanel/InputsSpecEditor.svelte +1 -1
- package/package/components/apps/editor/settingsPanel/StylePanel.svelte +40 -39
- package/package/components/apps/editor/settingsPanel/SubTypeEditor.svelte +2 -0
- package/package/components/apps/editor/settingsPanel/SubTypeEditor.svelte.d.ts +1 -0
- package/package/components/apps/editor/settingsPanel/inputEditor/EvalV2InputEditor.svelte +0 -1
- package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +13 -6
- package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte.d.ts +1 -0
- package/package/components/apps/editor/settingsPanel/mainInput/RunnableSelector.svelte +6 -2
- package/package/components/apps/editor/settingsPanel/secondaryMenu/SecondaryMenu.svelte +1 -6
- package/package/components/apps/svelte-select/lib/Select.svelte.d.ts +2 -2
- package/package/components/apps/types.d.ts +1 -0
- package/package/components/apps/utils.js +3 -3
- package/package/components/build_workers.js +2 -1
- package/package/components/common/FileProgressBar.svelte +1 -1
- package/package/components/common/clearableInput/ClearableInput.svelte.d.ts +1 -1
- package/package/components/common/fileInput/FileInput.svelte +4 -0
- package/package/components/common/fileInput/FileInput.svelte.d.ts +2 -0
- package/package/components/common/modal/Modal.svelte +2 -0
- package/package/components/copilot/MetadataGen.svelte +17 -12
- package/package/components/copilot/MetadataGen.svelte.d.ts +1 -1
- package/package/components/copilot/ScriptGen.svelte +61 -27
- package/package/components/copilot/lib.d.ts +4 -1
- package/package/components/copilot/lib.js +46 -31
- package/package/components/copilot/prompts/edit.yaml +1 -0
- package/package/components/copilot/prompts/editPrompt.js +1 -1
- package/package/components/copilot/prompts/fix.yaml +1 -0
- package/package/components/copilot/prompts/fixPrompt.js +1 -1
- package/package/components/copilot/prompts/gen.yaml +1 -0
- package/package/components/copilot/prompts/genPrompt.js +1 -1
- package/package/components/details/WebhooksPanel.svelte +10 -3
- package/package/components/flows/content/FlowInputs.svelte +35 -36
- package/package/components/flows/content/FlowLoop.svelte +0 -1
- package/package/components/flows/content/FlowModuleComponent.svelte +18 -1
- package/package/components/flows/content/FlowModuleSuspend.svelte +7 -0
- package/package/components/flows/content/FlowModuleWrapper.svelte +4 -1
- package/package/components/flows/content/FlowSettings.svelte +32 -4
- package/package/components/flows/content/FlowWhileLoop.svelte +137 -0
- package/package/components/flows/content/FlowWhileLoop.svelte.d.ts +19 -0
- package/package/components/flows/content/SuspendDrawer.svelte +4 -4
- package/package/components/flows/dfs.js +1 -1
- package/package/components/flows/flowExplorer.js +1 -1
- package/package/components/flows/flowStateUtils.d.ts +1 -0
- package/package/components/flows/flowStateUtils.js +12 -0
- package/package/components/flows/map/FlowModuleSchemaMap.svelte +6 -2
- package/package/components/flows/map/InsertModuleButton.svelte +12 -0
- package/package/components/flows/map/MapItem.svelte +5 -5
- package/package/components/flows/map/MapItem.svelte.d.ts +1 -1
- package/package/components/flows/types.d.ts +1 -0
- package/package/components/flows/utils.d.ts +1 -0
- package/package/components/flows/utils.js +3 -0
- package/package/components/graph/FlowGraph.svelte +1 -1
- package/package/components/graph/model.d.ts +5 -2
- package/package/components/graph/svelvet/container/views/GraphView.svelte +2 -0
- package/package/components/home/Item.svelte +7 -2
- package/package/components/home/TreeView.svelte +4 -2
- package/package/components/home/TreeViewRoot.svelte +1 -1
- package/package/components/instanceSettings.d.ts +1 -1
- package/package/components/instanceSettings.js +12 -4
- package/package/components/jobs/JobPreview.svelte +1 -4
- package/package/components/propertyPicker/ObjectViewer.svelte +3 -0
- package/package/components/propertyPicker/ObjectViewer.svelte.d.ts +1 -0
- package/package/components/runs/JobLoader.svelte +3 -2
- package/package/components/runs/JobPreview.svelte +13 -7
- package/package/components/runs/RunsFilter.svelte.d.ts +1 -1
- package/package/components/scriptEditor/LogPanel.svelte +6 -8
- package/package/components/settings/ChangeWorkspaceId.svelte +98 -0
- package/package/components/settings/ChangeWorkspaceId.svelte.d.ts +16 -0
- package/package/components/settings/ChangeWorkspaceName.svelte +71 -0
- package/package/components/settings/ChangeWorkspaceName.svelte.d.ts +16 -0
- package/package/components/settings/PremiumInfo.svelte +2 -1
- package/package/components/sidebar/OperatorMenu.svelte +3 -2
- package/package/components/sidebar/UserMenu.svelte +13 -2
- package/package/components/sidebar/WorkspaceMenu.svelte +30 -1
- package/package/components/sidebar/changelogs.js +51 -1
- package/package/components/table/AutoDataTable.svelte +62 -41
- package/package/components/tutorials/FlowBuilderTutorialSimpleFlow.svelte +2 -2
- package/package/es6.d.ts.txt +1 -12395
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/index.d.ts +2 -0
- package/package/gen/models/CacheTtl.d.ts +4 -0
- package/package/gen/models/CacheTtl.js +5 -0
- package/package/gen/models/ContextualVariable.d.ts +1 -0
- package/package/gen/models/CreateWorkspace.d.ts +1 -1
- package/package/gen/models/FlowMetadata.d.ts +1 -0
- package/package/gen/models/FlowModule.d.ts +2 -0
- package/package/gen/models/FlowModuleValue.d.ts +2 -1
- package/package/gen/models/FlowStatus.d.ts +1 -0
- package/package/gen/models/FlowValue.d.ts +1 -0
- package/package/gen/models/GitRepositorySettings.d.ts +2 -1
- package/package/gen/models/GlobalUserInfo.d.ts +1 -0
- package/package/gen/models/NewScript.d.ts +1 -0
- package/package/gen/models/OpenFlowWPath.d.ts +1 -0
- package/package/gen/models/Script.d.ts +1 -0
- package/package/gen/models/WhileloopFlow.d.ts +8 -0
- package/package/gen/models/WhileloopFlow.js +5 -0
- package/package/gen/models/WorkspaceGitSyncSettings.d.ts +1 -1
- package/package/gen/services/JobService.d.ts +74 -8
- package/package/gen/services/JobService.js +55 -8
- package/package/gen/services/ScheduleService.d.ts +5 -1
- package/package/gen/services/ScheduleService.js +2 -1
- package/package/gen/services/SettingService.d.ts +11 -0
- package/package/gen/services/SettingService.js +13 -0
- package/package/gen/services/UserService.d.ts +29 -1
- package/package/gen/services/UserService.js +30 -0
- package/package/gen/services/WorkspaceService.d.ts +57 -2
- package/package/gen/services/WorkspaceService.js +76 -0
- package/package/hub.d.ts +3 -3
- package/package/hub.js +6 -6
- package/package/infer.d.ts +1 -20
- package/package/infer.js +1 -95
- package/package/inferArgSig.d.ts +20 -0
- package/package/inferArgSig.js +95 -0
- package/package/script_helpers.d.ts +3 -3
- package/package/script_helpers.js +47 -7
- package/package/scripts.d.ts +2 -2
- package/package/scripts.js +4 -4
- package/package/stores.d.ts +4 -0
- package/package/stores.js +2 -0
- package/package/utils.js +1 -0
- package/package.json +3 -2
|
@@ -5,15 +5,16 @@ import { Alert, Button, Drawer, Skeleton } from './common';
|
|
|
5
5
|
import Path from './Path.svelte';
|
|
6
6
|
import Required from './Required.svelte';
|
|
7
7
|
import { userStore, workspaceStore } from '../stores';
|
|
8
|
-
import autosize from 'svelte-autosize';
|
|
9
8
|
import DrawerContent from './common/drawer/DrawerContent.svelte';
|
|
10
9
|
import SchemaForm from './SchemaForm.svelte';
|
|
11
10
|
import SimpleEditor from './SimpleEditor.svelte';
|
|
12
11
|
import Toggle from './Toggle.svelte';
|
|
13
12
|
import { sendUserToast } from '../toast';
|
|
14
13
|
import TestConnection from './TestConnection.svelte';
|
|
15
|
-
import { Save } from 'lucide-svelte';
|
|
14
|
+
import { Pen, Save } from 'lucide-svelte';
|
|
16
15
|
import Markdown from 'svelte-exmarkdown';
|
|
16
|
+
import autosize from '../autosize';
|
|
17
|
+
import GfmMarkdown from './GfmMarkdown.svelte';
|
|
17
18
|
let path = '';
|
|
18
19
|
let initialPath = '';
|
|
19
20
|
let resourceToEdit;
|
|
@@ -27,6 +28,7 @@ let loadingSchema = false;
|
|
|
27
28
|
let linkedVars = [];
|
|
28
29
|
let drawer;
|
|
29
30
|
let resourceTypeInfo = undefined;
|
|
31
|
+
let renderDescription = true;
|
|
30
32
|
let rawCode = undefined;
|
|
31
33
|
const dispatch = createEventDispatcher();
|
|
32
34
|
export async function initEdit(p) {
|
|
@@ -48,6 +50,7 @@ export async function initEdit(p) {
|
|
|
48
50
|
linkedVars = Object.entries(args)
|
|
49
51
|
.filter(([_, v]) => typeof v == 'string' && v == `$var:${initialPath}`)
|
|
50
52
|
.map(([k, _]) => k);
|
|
53
|
+
renderDescription = false;
|
|
51
54
|
}
|
|
52
55
|
async function editResource() {
|
|
53
56
|
if (resourceToEdit) {
|
|
@@ -141,11 +144,38 @@ function switchTab(asJson) {
|
|
|
141
144
|
/>
|
|
142
145
|
</div>
|
|
143
146
|
{#if !emptyString(resourceTypeInfo?.description)}
|
|
144
|
-
<
|
|
147
|
+
<h4 class="mt-4 mb-2">{resourceTypeInfo?.name} description</h4>
|
|
145
148
|
<div class="text-sm">
|
|
146
149
|
<Markdown md={urlize(resourceTypeInfo?.description ?? '', 'md')} />
|
|
147
150
|
</div>
|
|
148
151
|
{/if}
|
|
152
|
+
<h4 class="mt-4 inline-flex items-center gap-4"
|
|
153
|
+
>Resource description <Required required={false} />
|
|
154
|
+
{#if can_write}
|
|
155
|
+
<div class="flex gap-1 items-center">
|
|
156
|
+
<Toggle size="xs" bind:checked={renderDescription} />
|
|
157
|
+
<Pen size={14} />
|
|
158
|
+
</div>
|
|
159
|
+
{/if}</h4
|
|
160
|
+
>
|
|
161
|
+
|
|
162
|
+
{#if can_write && renderDescription}
|
|
163
|
+
<div>
|
|
164
|
+
<div class="flex flex-row-reverse text-2xs text-tertiary -mt-1">GH Markdown</div>
|
|
165
|
+
<textarea
|
|
166
|
+
disabled={!can_write}
|
|
167
|
+
use:autosize
|
|
168
|
+
bind:value={description}
|
|
169
|
+
placeholder={DESCRIPTION_PLACEHOLDER}
|
|
170
|
+
/>
|
|
171
|
+
</div>
|
|
172
|
+
{:else if description == undefined || description == ''}
|
|
173
|
+
<div class="text-sm text-tertiary">No description provided</div>
|
|
174
|
+
{:else}
|
|
175
|
+
<div class="mt-2" />
|
|
176
|
+
|
|
177
|
+
<GfmMarkdown md={description} />
|
|
178
|
+
{/if}
|
|
149
179
|
<div class="flex w-full justify-between max-w-lg items-center mt-4">
|
|
150
180
|
<Toggle
|
|
151
181
|
on:change={(e) => switchTab(e.detail)}
|
|
@@ -191,14 +221,6 @@ function switchTab(asJson) {
|
|
|
191
221
|
</div>
|
|
192
222
|
{/if}
|
|
193
223
|
</div>
|
|
194
|
-
<h3 class="mt-4">Description <Required required={false} /> </h3>
|
|
195
|
-
<textarea
|
|
196
|
-
type="text"
|
|
197
|
-
disabled={!can_write}
|
|
198
|
-
use:autosize
|
|
199
|
-
bind:value={description}
|
|
200
|
-
placeholder={DESCRIPTION_PLACEHOLDER}
|
|
201
|
-
/>
|
|
202
224
|
</div>
|
|
203
225
|
</div>
|
|
204
226
|
<svelte:fragment slot="actions">
|
|
@@ -88,7 +88,6 @@ function maxJobTime(jobs) {
|
|
|
88
88
|
return max;
|
|
89
89
|
}
|
|
90
90
|
function computeMinMaxTime(jobs, minTimeSet, maxTimeSet) {
|
|
91
|
-
console.log(minTimeSet, maxTimeSet);
|
|
92
91
|
let minTimeSetDate = minTimeSet ? new Date(minTimeSet) : undefined;
|
|
93
92
|
let maxTimeSetDate = maxTimeSet ? new Date(maxTimeSet) : undefined;
|
|
94
93
|
if (minTimeSetDate && maxTimeSetDate) {
|
|
@@ -27,7 +27,7 @@ declare const __propDef: {
|
|
|
27
27
|
isFlow: boolean;
|
|
28
28
|
viewKeybinding?: boolean | undefined;
|
|
29
29
|
scheduledForStr: string | undefined;
|
|
30
|
-
invisible_to_owner:
|
|
30
|
+
invisible_to_owner: boolean | undefined;
|
|
31
31
|
overrideTag: string | undefined;
|
|
32
32
|
args?: Record<string, any> | undefined;
|
|
33
33
|
setArgs?: ((nargs: Record<string, any>) => Promise<void>) | undefined;
|
|
@@ -14,7 +14,7 @@ declare const __propDef: {
|
|
|
14
14
|
extra_perms?: Record<string, boolean>;
|
|
15
15
|
} | undefined;
|
|
16
16
|
scheduledForStr: string | undefined;
|
|
17
|
-
invisible_to_owner:
|
|
17
|
+
invisible_to_owner: boolean | undefined;
|
|
18
18
|
overrideTag: string | undefined;
|
|
19
19
|
};
|
|
20
20
|
events: {
|
|
@@ -281,7 +281,7 @@ function selectArgs(selected_args) {
|
|
|
281
281
|
<div
|
|
282
282
|
class="whitespace-nowrap col-span-3 !text-tertiary !text-2xs overflow-hidden text-ellipsis flex-shrink text-center"
|
|
283
283
|
>
|
|
284
|
-
<TimeAgo date={i.
|
|
284
|
+
<TimeAgo date={i.started_at ?? ''} />
|
|
285
285
|
</div>
|
|
286
286
|
<div class="col-span-2">
|
|
287
287
|
<a
|
|
@@ -182,7 +182,8 @@ async function editScript(stay) {
|
|
|
182
182
|
restart_unless_cancelled: script.restart_unless_cancelled,
|
|
183
183
|
delete_after_use: script.delete_after_use,
|
|
184
184
|
timeout: script.timeout,
|
|
185
|
-
concurrency_key: emptyString(script.concurrency_key) ? undefined : script.concurrency_key
|
|
185
|
+
concurrency_key: emptyString(script.concurrency_key) ? undefined : script.concurrency_key,
|
|
186
|
+
visible_to_runner_only: script.visible_to_runner_only
|
|
186
187
|
}
|
|
187
188
|
});
|
|
188
189
|
const { enabled, timezone, args, cron, summary } = $scheduleStore;
|
|
@@ -301,7 +302,8 @@ async function saveDraft(forceSave = false) {
|
|
|
301
302
|
timeout: script.timeout,
|
|
302
303
|
concurrency_key: emptyString(script.concurrency_key)
|
|
303
304
|
? undefined
|
|
304
|
-
: script.concurrency_key
|
|
305
|
+
: script.concurrency_key,
|
|
306
|
+
visible_to_runner_only: script.visible_to_runner_only
|
|
305
307
|
}
|
|
306
308
|
});
|
|
307
309
|
}
|
|
@@ -586,18 +588,21 @@ let selectedTab = 'metadata';
|
|
|
586
588
|
bind:seconds={script.concurrency_time_window_s}
|
|
587
589
|
/>
|
|
588
590
|
</Label>
|
|
589
|
-
<Label label="Custom concurrency key">
|
|
591
|
+
<Label label="Custom concurrency key (optional)">
|
|
592
|
+
<svelte:fragment slot="header">
|
|
593
|
+
<Tooltip>
|
|
594
|
+
Concurrency keys are global, you can have them be workspace specific using
|
|
595
|
+
the variable `$workspace`. You can also use an argument's value using
|
|
596
|
+
`$args[name_of_arg]`</Tooltip
|
|
597
|
+
>
|
|
598
|
+
</svelte:fragment>
|
|
590
599
|
<input
|
|
600
|
+
disabled={!$enterpriseLicense}
|
|
591
601
|
type="text"
|
|
592
602
|
autofocus
|
|
593
603
|
bind:value={script.concurrency_key}
|
|
594
604
|
placeholder={`$workspace/script/${script.path}-$args[foo]`}
|
|
595
605
|
/>
|
|
596
|
-
<Tooltip
|
|
597
|
-
>Concurrency keys are global, you can have them be workspace specific using
|
|
598
|
-
the variable `$workspace`. You can also use an argument's value using
|
|
599
|
-
`$args[name_of_arg]`</Tooltip
|
|
600
|
-
>
|
|
601
606
|
</Label>
|
|
602
607
|
</div>
|
|
603
608
|
</Section>
|
|
@@ -801,6 +806,31 @@ let selectedTab = 'metadata';
|
|
|
801
806
|
</svelte:fragment>
|
|
802
807
|
</Section>
|
|
803
808
|
{/if}
|
|
809
|
+
<Section label="Runs visibility">
|
|
810
|
+
<svelte:fragment slot="header">
|
|
811
|
+
<Tooltip>
|
|
812
|
+
When this option is enabled, manual executions of this script are invisible to
|
|
813
|
+
users other than the user running it, including the owner(s). This setting can
|
|
814
|
+
be overridden when this script is run manually from the advanced menu.
|
|
815
|
+
</Tooltip>
|
|
816
|
+
</svelte:fragment>
|
|
817
|
+
<div class="flex gap-2 shrink flex-col">
|
|
818
|
+
<Toggle
|
|
819
|
+
size="sm"
|
|
820
|
+
checked={Boolean(script.visible_to_runner_only)}
|
|
821
|
+
on:change={() => {
|
|
822
|
+
if (script.visible_to_runner_only) {
|
|
823
|
+
script.visible_to_runner_only = undefined
|
|
824
|
+
} else {
|
|
825
|
+
script.visible_to_runner_only = true
|
|
826
|
+
}
|
|
827
|
+
}}
|
|
828
|
+
options={{
|
|
829
|
+
right: 'Make runs invisible to others'
|
|
830
|
+
}}
|
|
831
|
+
/>
|
|
832
|
+
</div>
|
|
833
|
+
</Section>
|
|
804
834
|
{#if !isCloudHosted()}
|
|
805
835
|
<Section label="Custom env variables">
|
|
806
836
|
<svelte:fragment slot="header">
|
|
@@ -8,11 +8,8 @@ import { createHash, editorConfig, langToExt, updateOptions } from '../editorUti
|
|
|
8
8
|
import { editor as meditor, KeyCode, KeyMod, Uri as mUri, languages } from 'monaco-editor';
|
|
9
9
|
import 'monaco-editor/esm/vs/basic-languages/sql/sql.contribution';
|
|
10
10
|
import 'monaco-editor/esm/vs/basic-languages/yaml/yaml.contribution';
|
|
11
|
-
import 'monaco-editor/esm/vs/basic-languages/typescript/typescript.contribution';
|
|
12
11
|
import 'monaco-editor/esm/vs/basic-languages/javascript/javascript.contribution';
|
|
13
|
-
import 'monaco-editor/esm/vs/basic-languages/graphql/graphql.contribution';
|
|
14
12
|
import 'monaco-editor/esm/vs/language/json/monaco.contribution';
|
|
15
|
-
import 'monaco-editor/esm/vs/language/typescript/monaco.contribution';
|
|
16
13
|
import 'monaco-editor/esm/vs/basic-languages/css/css.contribution';
|
|
17
14
|
import 'monaco-editor/esm/vs/language/css/monaco.contribution';
|
|
18
15
|
import { allClasses } from './apps/editor/componentsPanel/cssUtils';
|
|
@@ -276,6 +273,7 @@ function loadExtraLib() {
|
|
|
276
273
|
filePath: 'windmill.d.ts'
|
|
277
274
|
});
|
|
278
275
|
}
|
|
276
|
+
console.log(libs);
|
|
279
277
|
languages.typescript.javascriptDefaults.setExtraLibs(libs);
|
|
280
278
|
}
|
|
281
279
|
}
|
|
@@ -2,11 +2,8 @@ import { SvelteComponent } from "svelte";
|
|
|
2
2
|
import { editor as meditor } from 'monaco-editor';
|
|
3
3
|
import 'monaco-editor/esm/vs/basic-languages/sql/sql.contribution';
|
|
4
4
|
import 'monaco-editor/esm/vs/basic-languages/yaml/yaml.contribution';
|
|
5
|
-
import 'monaco-editor/esm/vs/basic-languages/typescript/typescript.contribution';
|
|
6
5
|
import 'monaco-editor/esm/vs/basic-languages/javascript/javascript.contribution';
|
|
7
|
-
import 'monaco-editor/esm/vs/basic-languages/graphql/graphql.contribution';
|
|
8
6
|
import 'monaco-editor/esm/vs/language/json/monaco.contribution';
|
|
9
|
-
import 'monaco-editor/esm/vs/language/typescript/monaco.contribution';
|
|
10
7
|
import 'monaco-editor/esm/vs/basic-languages/css/css.contribution';
|
|
11
8
|
import 'monaco-editor/esm/vs/language/css/monaco.contribution';
|
|
12
9
|
declare const __propDef: {
|
|
@@ -5,7 +5,7 @@ import Path from './Path.svelte';
|
|
|
5
5
|
import { sendUserToast } from '../toast';
|
|
6
6
|
import { Highlight } from 'svelte-highlight';
|
|
7
7
|
import { json } from 'svelte-highlight/languages';
|
|
8
|
-
import autosize from '
|
|
8
|
+
import autosize from '../autosize';
|
|
9
9
|
import { ResourceService, VariableService } from '../gen';
|
|
10
10
|
import { oauthStore, workspaceStore } from '../stores';
|
|
11
11
|
import Password from './Password.svelte';
|
|
@@ -146,7 +146,7 @@ async function save() {
|
|
|
146
146
|
<Password required bind:password />
|
|
147
147
|
|
|
148
148
|
<h3 class="mt-6 mb-2">Description</h3>
|
|
149
|
-
<textarea
|
|
149
|
+
<textarea autocomplete="off" use:autosize bind:value={description} />
|
|
150
150
|
|
|
151
151
|
<div class="mt-12" />
|
|
152
152
|
<p class="my-1 text-sm text-secondary"
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
<script>import
|
|
1
|
+
<script>import DropdownV2 from './DropdownV2.svelte';
|
|
2
|
+
import Cell from './table/Cell.svelte';
|
|
2
3
|
import DataTable from './table/DataTable.svelte';
|
|
3
4
|
import Head from './table/Head.svelte';
|
|
4
5
|
export let headers;
|
|
5
6
|
export let data; // Object containing the data
|
|
6
7
|
export let keys;
|
|
7
8
|
export let size = 'md';
|
|
9
|
+
export let getRowActions = undefined;
|
|
8
10
|
</script>
|
|
9
11
|
|
|
10
12
|
<div class="mt-2 w-full">
|
|
@@ -16,12 +18,16 @@ export let size = 'md';
|
|
|
16
18
|
<Cell first={i == 0} last={i == headers.length - 1} head class="max-w-96">{header}</Cell
|
|
17
19
|
>
|
|
18
20
|
{/each}
|
|
21
|
+
{#if getRowActions !== undefined}
|
|
22
|
+
<Cell head last />
|
|
23
|
+
{/if}
|
|
19
24
|
{/if}
|
|
20
25
|
</tr>
|
|
21
26
|
</Head>
|
|
22
27
|
<tbody class="divide-y">
|
|
23
28
|
{#if data && keys && data.length > 0}
|
|
24
29
|
{#each data as row}
|
|
30
|
+
{@const rowActions = getRowActions?.(row)}
|
|
25
31
|
<tr>
|
|
26
32
|
{#each keys as key, i}
|
|
27
33
|
<Cell
|
|
@@ -32,6 +38,11 @@ export let size = 'md';
|
|
|
32
38
|
{row[key] ?? ''}
|
|
33
39
|
</Cell>
|
|
34
40
|
{/each}
|
|
41
|
+
{#if rowActions && rowActions.length > 0}
|
|
42
|
+
<Cell last shouldStopPropagation>
|
|
43
|
+
<DropdownV2 items={rowActions} />
|
|
44
|
+
</Cell>
|
|
45
|
+
{/if}
|
|
35
46
|
</tr>
|
|
36
47
|
{/each}
|
|
37
48
|
{:else}
|
|
@@ -4,8 +4,10 @@ import Button from './common/button/Button.svelte';
|
|
|
4
4
|
import { sendUserToast } from '../toast';
|
|
5
5
|
import { workspaceStore } from '../stores';
|
|
6
6
|
import { tryEvery } from '../utils';
|
|
7
|
+
export let workspaceOverride = undefined;
|
|
7
8
|
export let resourceType;
|
|
8
9
|
export let args = {};
|
|
10
|
+
export let buttonTextOverride = undefined;
|
|
9
11
|
const scripts = {
|
|
10
12
|
postgresql: {
|
|
11
13
|
code: `SELECT 1`,
|
|
@@ -69,6 +71,29 @@ export async function main(s3: S3) {
|
|
|
69
71
|
return testResult;
|
|
70
72
|
}
|
|
71
73
|
}
|
|
74
|
+
},
|
|
75
|
+
s3_bucket: {
|
|
76
|
+
code: `
|
|
77
|
+
|
|
78
|
+
const process = require('process');
|
|
79
|
+
|
|
80
|
+
export async function main(bucket: any) {
|
|
81
|
+
const req = await fetch(process.env.BASE_URL + '/api/settings/test_object_storage_config', {
|
|
82
|
+
method: 'POST',
|
|
83
|
+
headers: {
|
|
84
|
+
'Content-Type': 'application/json',
|
|
85
|
+
Authorization: 'Bearer ' + process.env.WM_TOKEN,
|
|
86
|
+
},
|
|
87
|
+
body: JSON.stringify(bucket),
|
|
88
|
+
});
|
|
89
|
+
if (!req.ok) {
|
|
90
|
+
throw new Error(await req.text());
|
|
91
|
+
}
|
|
92
|
+
return await req.text();
|
|
93
|
+
}
|
|
94
|
+
`,
|
|
95
|
+
lang: 'bun',
|
|
96
|
+
argName: 'bucket'
|
|
72
97
|
}
|
|
73
98
|
};
|
|
74
99
|
let loading = false;
|
|
@@ -78,7 +103,7 @@ async function testConnection() {
|
|
|
78
103
|
loading = true;
|
|
79
104
|
const resourceScript = scripts[resourceType];
|
|
80
105
|
const job = await JobService.runScriptPreview({
|
|
81
|
-
workspace: $workspaceStore,
|
|
106
|
+
workspace: workspaceOverride ?? $workspaceStore,
|
|
82
107
|
requestBody: {
|
|
83
108
|
path: `testConnection: ${resourceType}`,
|
|
84
109
|
language: resourceScript.lang,
|
|
@@ -91,7 +116,7 @@ async function testConnection() {
|
|
|
91
116
|
tryEvery({
|
|
92
117
|
tryCode: async () => {
|
|
93
118
|
let testResult = await JobService.getCompletedJob({
|
|
94
|
-
workspace: $workspaceStore,
|
|
119
|
+
workspace: workspaceOverride ?? $workspaceStore,
|
|
95
120
|
id: job
|
|
96
121
|
});
|
|
97
122
|
if (resourceScript.additionalCheck) {
|
|
@@ -107,7 +132,7 @@ async function testConnection() {
|
|
|
107
132
|
sendUserToast('Connection did not resolve after 5s or job did not start. Do you have native workers or a worker group listening to the proper tag available?', true);
|
|
108
133
|
try {
|
|
109
134
|
await JobService.cancelQueuedJob({
|
|
110
|
-
workspace: $workspaceStore,
|
|
135
|
+
workspace: workspaceOverride ?? $workspaceStore,
|
|
111
136
|
id: job,
|
|
112
137
|
requestBody: {
|
|
113
138
|
reason: 'Connection did not resolve after 5s. Do you have native workers or a worker group listening to the proper tag available?'
|
|
@@ -138,6 +163,6 @@ async function testConnection() {
|
|
|
138
163
|
{:else}
|
|
139
164
|
<Database class="mr-2 !h-4 !w-4" />
|
|
140
165
|
{/if}
|
|
141
|
-
Test connection
|
|
166
|
+
{buttonTextOverride ?? 'Test connection'}
|
|
142
167
|
</Button>
|
|
143
168
|
{/if}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { SvelteComponent } from "svelte";
|
|
2
2
|
declare const __propDef: {
|
|
3
3
|
props: {
|
|
4
|
+
workspaceOverride?: string | undefined;
|
|
4
5
|
resourceType: string | undefined;
|
|
5
6
|
args?: Record<string, any> | any;
|
|
7
|
+
buttonTextOverride?: string | undefined;
|
|
6
8
|
};
|
|
7
9
|
events: {
|
|
8
10
|
[evt: string]: CustomEvent<any>;
|
|
@@ -9,10 +9,12 @@ export let workspaceOverride = undefined;
|
|
|
9
9
|
export let notfound = false;
|
|
10
10
|
export let jobUpdateLastFetch = undefined;
|
|
11
11
|
export let toastError = false;
|
|
12
|
+
export let lazyLogs = false;
|
|
12
13
|
const dispatch = createEventDispatcher();
|
|
13
14
|
$: workspace = workspaceOverride ?? $workspaceStore;
|
|
14
15
|
let syncIteration = 0;
|
|
15
16
|
let errorIteration = 0;
|
|
17
|
+
let logOffset = 0;
|
|
16
18
|
let ITERATIONS_BEFORE_SLOW_REFRESH = 10;
|
|
17
19
|
let ITERATIONS_BEFORE_SUPER_SLOW_REFRESH = 100;
|
|
18
20
|
let lastStartedAt = Date.now();
|
|
@@ -64,6 +66,17 @@ export async function runFlowByPath(path, args) {
|
|
|
64
66
|
requestBody: args
|
|
65
67
|
}));
|
|
66
68
|
}
|
|
69
|
+
export async function getLogs() {
|
|
70
|
+
if (job) {
|
|
71
|
+
const getUpdate = await JobService.getJobUpdates({
|
|
72
|
+
workspace: workspace,
|
|
73
|
+
id: job.id,
|
|
74
|
+
running: `running` in job && job.running,
|
|
75
|
+
logOffset: job.logs?.length ?? 0
|
|
76
|
+
});
|
|
77
|
+
job.logs = (job.logs ?? '').concat(getUpdate.new_logs ?? '');
|
|
78
|
+
}
|
|
79
|
+
}
|
|
67
80
|
export async function runPreview(path, code, lang, args, tag, lock) {
|
|
68
81
|
return abstractRun(() => JobService.runScriptPreview({
|
|
69
82
|
workspace: $workspaceStore,
|
|
@@ -101,6 +114,7 @@ export async function clearCurrentJob() {
|
|
|
101
114
|
}
|
|
102
115
|
}
|
|
103
116
|
export async function watchJob(testId) {
|
|
117
|
+
logOffset = 0;
|
|
104
118
|
syncIteration = 0;
|
|
105
119
|
errorIteration = 0;
|
|
106
120
|
currentId = testId;
|
|
@@ -121,8 +135,11 @@ async function loadTestJob(id) {
|
|
|
121
135
|
workspace: workspace,
|
|
122
136
|
id,
|
|
123
137
|
running: job.running,
|
|
124
|
-
logOffset: job.logs?.length ? job.logs?.length + 1 : 0
|
|
138
|
+
logOffset: logOffset == 0 ? (job.logs?.length ? job.logs?.length + 1 : 0) : logOffset
|
|
125
139
|
});
|
|
140
|
+
if (previewJobUpdates.log_offset) {
|
|
141
|
+
logOffset = previewJobUpdates.log_offset ?? 0;
|
|
142
|
+
}
|
|
126
143
|
if (previewJobUpdates.new_logs) {
|
|
127
144
|
job.logs = (job?.logs ?? '').concat(previewJobUpdates.new_logs);
|
|
128
145
|
}
|
|
@@ -137,7 +154,7 @@ async function loadTestJob(id) {
|
|
|
137
154
|
}
|
|
138
155
|
}
|
|
139
156
|
else {
|
|
140
|
-
job = await JobService.getJob({ workspace: workspace, id });
|
|
157
|
+
job = await JobService.getJob({ workspace: workspace, id, noLogs: lazyLogs });
|
|
141
158
|
}
|
|
142
159
|
jobUpdateLastFetch = new Date();
|
|
143
160
|
if (job?.type === 'CompletedJob') {
|
|
@@ -9,9 +9,11 @@ declare const __propDef: {
|
|
|
9
9
|
notfound?: boolean | undefined;
|
|
10
10
|
jobUpdateLastFetch?: Date | undefined;
|
|
11
11
|
toastError?: boolean | undefined;
|
|
12
|
+
lazyLogs?: boolean | undefined;
|
|
12
13
|
abstractRun?: ((fn: () => Promise<string>) => Promise<string>) | undefined;
|
|
13
14
|
runScriptByPath?: ((path: string | undefined, args: Record<string, any>) => Promise<string>) | undefined;
|
|
14
15
|
runFlowByPath?: ((path: string | undefined, args: Record<string, any>) => Promise<string>) | undefined;
|
|
16
|
+
getLogs?: (() => Promise<void>) | undefined;
|
|
15
17
|
runPreview?: ((path: string | undefined, code: string, lang: SupportedLanguage, args: Record<string, any>, tag: string | undefined, lock?: string) => Promise<string>) | undefined;
|
|
16
18
|
cancelJob?: (() => Promise<void>) | undefined;
|
|
17
19
|
clearCurrentJob?: (() => Promise<void>) | undefined;
|
|
@@ -48,6 +50,7 @@ export default class TestJobLoader extends SvelteComponent<TestJobLoaderProps, T
|
|
|
48
50
|
get abstractRun(): (fn: () => Promise<string>) => Promise<string>;
|
|
49
51
|
get runScriptByPath(): (path: string | undefined, args: Record<string, any>) => Promise<string>;
|
|
50
52
|
get runFlowByPath(): (path: string | undefined, args: Record<string, any>) => Promise<string>;
|
|
53
|
+
get getLogs(): () => Promise<void>;
|
|
51
54
|
get runPreview(): (path: string | undefined, code: string, lang: import("../gen").Script.language, args: Record<string, any>, tag: string | undefined, lock?: string | undefined) => Promise<string>;
|
|
52
55
|
get cancelJob(): () => Promise<void>;
|
|
53
56
|
get clearCurrentJob(): () => Promise<void>;
|
|
@@ -13,16 +13,18 @@ import Version from './Version.svelte';
|
|
|
13
13
|
import { Clipboard, Plus } from 'lucide-svelte';
|
|
14
14
|
import DarkModeToggle from './sidebar/DarkModeToggle.svelte';
|
|
15
15
|
import Toggle from './Toggle.svelte';
|
|
16
|
+
import { createEventDispatcher } from 'svelte';
|
|
16
17
|
export let scopes = undefined;
|
|
18
|
+
export let newTokenLabel = undefined;
|
|
19
|
+
export let newToken = undefined;
|
|
17
20
|
let newPassword;
|
|
18
21
|
let passwordError;
|
|
19
22
|
let tokens;
|
|
20
|
-
let newToken;
|
|
21
|
-
let newTokenLabel;
|
|
22
23
|
let newTokenExpiration;
|
|
23
24
|
let displayCreateToken = scopes != undefined;
|
|
24
25
|
let login_type = 'none';
|
|
25
26
|
let drawer;
|
|
27
|
+
const dispatch = createEventDispatcher();
|
|
26
28
|
export function openDrawer() {
|
|
27
29
|
loadLoginType();
|
|
28
30
|
listTokens();
|
|
@@ -65,6 +67,7 @@ async function createToken() {
|
|
|
65
67
|
newToken = await UserService.createToken({
|
|
66
68
|
requestBody: { label: newTokenLabel, expiration: date?.toISOString(), scopes }
|
|
67
69
|
});
|
|
70
|
+
dispatch('tokenCreated', newToken);
|
|
68
71
|
listTokens();
|
|
69
72
|
displayCreateToken = false;
|
|
70
73
|
}
|
|
@@ -2,10 +2,14 @@ import { SvelteComponent } from "svelte";
|
|
|
2
2
|
declare const __propDef: {
|
|
3
3
|
props: {
|
|
4
4
|
scopes?: string[] | undefined;
|
|
5
|
+
newTokenLabel?: string | undefined;
|
|
6
|
+
newToken?: string | undefined;
|
|
5
7
|
openDrawer?: (() => void) | undefined;
|
|
6
8
|
closeDrawer?: (() => void) | undefined;
|
|
7
9
|
};
|
|
8
10
|
events: {
|
|
11
|
+
tokenCreated: CustomEvent<any>;
|
|
12
|
+
} & {
|
|
9
13
|
[evt: string]: CustomEvent<any>;
|
|
10
14
|
};
|
|
11
15
|
slots: {};
|
|
@@ -7,7 +7,6 @@ import { Button } from './common';
|
|
|
7
7
|
import Drawer from './common/drawer/Drawer.svelte';
|
|
8
8
|
import DrawerContent from './common/drawer/DrawerContent.svelte';
|
|
9
9
|
import Alert from './common/alert/Alert.svelte';
|
|
10
|
-
import autosize from 'svelte-autosize';
|
|
11
10
|
import Toggle from './Toggle.svelte';
|
|
12
11
|
import SimpleEditor from './SimpleEditor.svelte';
|
|
13
12
|
import { sendUserToast } from '../toast';
|
|
@@ -16,6 +15,7 @@ import ToggleButtonGroup from './common/toggleButton-v2/ToggleButtonGroup.svelte
|
|
|
16
15
|
import ToggleButton from './common/toggleButton-v2/ToggleButton.svelte';
|
|
17
16
|
import Section from './Section.svelte';
|
|
18
17
|
import { Save } from 'lucide-svelte';
|
|
18
|
+
import autosize from '../autosize';
|
|
19
19
|
const dispatch = createEventDispatcher();
|
|
20
20
|
let path = '';
|
|
21
21
|
let variable = {
|
|
@@ -138,6 +138,7 @@ let editor = undefined;
|
|
|
138
138
|
<Toggle
|
|
139
139
|
on:change={() => edit && loadVariable(initialPath)}
|
|
140
140
|
bind:checked={variable.is_secret}
|
|
141
|
+
disabled={edit && $userStore?.operator}
|
|
141
142
|
options={{ right: 'Secret' }}
|
|
142
143
|
/>
|
|
143
144
|
{#if variable.is_secret}
|
|
@@ -174,7 +175,6 @@ let editor = undefined;
|
|
|
174
175
|
<textarea
|
|
175
176
|
disabled={!can_write}
|
|
176
177
|
rows="4"
|
|
177
|
-
type="text"
|
|
178
178
|
use:autosize
|
|
179
179
|
bind:value={variable.value}
|
|
180
180
|
placeholder="Update variable value"
|
|
@@ -206,7 +206,6 @@ let editor = undefined;
|
|
|
206
206
|
<Section label="Description">
|
|
207
207
|
<textarea
|
|
208
208
|
rows="4"
|
|
209
|
-
type="text"
|
|
210
209
|
use:autosize
|
|
211
210
|
bind:value={variable.description}
|
|
212
211
|
placeholder="Used for X"
|
|
@@ -750,7 +750,16 @@ let createdTags = [];
|
|
|
750
750
|
</Button>
|
|
751
751
|
{/if}
|
|
752
752
|
|
|
753
|
-
<Button
|
|
753
|
+
<Button
|
|
754
|
+
color="light"
|
|
755
|
+
size="xs"
|
|
756
|
+
on:click={() => {
|
|
757
|
+
loadNConfig()
|
|
758
|
+
|
|
759
|
+
openClean = true
|
|
760
|
+
}}
|
|
761
|
+
btnClasses="text-red-400"
|
|
762
|
+
>
|
|
754
763
|
clean cache
|
|
755
764
|
</Button>
|
|
756
765
|
{:else if config}
|
|
@@ -39,15 +39,18 @@ onMount(async () => {
|
|
|
39
39
|
//@ts-ignore
|
|
40
40
|
await import(
|
|
41
41
|
/* @vite-ignore */
|
|
42
|
+
/* webpackIgnore: true */
|
|
42
43
|
`https://unpkg.com/react@${reactVersion}/umd/react.production.min.js`);
|
|
43
44
|
//@ts-ignore
|
|
44
45
|
await import(
|
|
45
46
|
/* @vite-ignore */
|
|
47
|
+
/* webpackIgnore: true */
|
|
46
48
|
`https://unpkg.com/react-dom@${reactVersion}/umd/react-dom.production.min.js`);
|
|
47
49
|
}
|
|
48
50
|
//@ts-ignore
|
|
49
51
|
await import(
|
|
50
52
|
/* @vite-ignore */
|
|
53
|
+
/* webpackIgnore: true */
|
|
51
54
|
`/api/w/${workspace ?? 'NO_W'}/resources_u/custom_component/${customComponent.name}`);
|
|
52
55
|
loaded = true;
|
|
53
56
|
try {
|