windmill-components 1.511.1 → 1.522.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/components/AppConnectInner.svelte.d.ts +1 -1
- package/package/components/ArgInput.svelte +42 -14
- package/package/components/ArgInput.svelte.d.ts +2 -10
- package/package/components/AssignableTagsInner.svelte +5 -0
- package/package/components/AuthSettings.svelte +4 -2
- package/package/components/AuthSettings.svelte.d.ts +1 -0
- package/package/components/DBManagerDrawer.svelte +154 -151
- package/package/components/DBManagerDrawer.svelte.d.ts +2 -2
- package/package/components/DBTable.svelte +3 -3
- package/package/components/DBTable.svelte.d.ts +1 -0
- package/package/components/DBTableEditor.svelte +7 -7
- package/package/components/DBTableEditor.svelte.d.ts +1 -1
- package/package/components/DeployWorkspace.svelte +1 -1
- package/package/components/DisplayResult.svelte +34 -8
- package/package/components/DisplayResult.svelte.d.ts +4 -1
- package/package/components/DynSelect.svelte +58 -34
- package/package/components/DynSelect.svelte.d.ts +3 -11
- package/package/components/EditableSchemaForm.svelte +126 -6
- package/package/components/EditableSchemaForm.svelte.d.ts +5 -1
- package/package/components/Editor.svelte +1 -1
- package/package/components/EditorBar.svelte +82 -4
- package/package/components/ErrorOrRecoveryHandler.svelte +76 -8
- package/package/components/ErrorOrRecoveryHandler.svelte.d.ts +2 -1
- package/package/components/ExploreAssetButton.svelte +14 -4
- package/package/components/ExploreAssetButton.svelte.d.ts +1 -0
- package/package/components/FlowJobResult.svelte +3 -3
- package/package/components/FlowJobResult.svelte.d.ts +1 -0
- package/package/components/FlowPreviewContent.svelte +9 -1
- package/package/components/FlowPreviewResult.svelte +4 -1
- package/package/components/FlowPreviewResult.svelte.d.ts +1 -0
- package/package/components/FlowStatusViewerInner.svelte +21 -3
- package/package/components/FlowStatusViewerInner.svelte.d.ts +7 -1
- package/package/components/FolderEditor.svelte +1 -1
- package/package/components/GitDiffPreview.svelte +14 -18
- package/package/components/GitDiffPreview.svelte.d.ts +2 -8
- package/package/components/GitHubAppIntegration.svelte +3 -1
- package/package/components/IdEditorInput.svelte +25 -22
- package/package/components/IdEditorInput.svelte.d.ts +11 -23
- package/package/components/InstanceSetting.svelte +7 -2
- package/package/components/InstanceSettings.svelte +1 -0
- package/package/components/JobLoader.svelte +48 -5
- package/package/components/JobLoader.svelte.d.ts +7 -2
- package/package/components/Login.svelte +8 -2
- package/package/components/MemoryFootprintViewer.svelte +1 -1
- package/package/components/ModulePreviewResultViewer.svelte +2 -2
- package/package/components/MoveDrawer.svelte.d.ts +2 -2
- package/package/components/NextcloudSetting.svelte +84 -0
- package/package/components/NextcloudSetting.svelte.d.ts +7 -0
- package/package/components/ObjectResourceInput.svelte +3 -2
- package/package/components/ObjectResourceInput.svelte.d.ts +1 -0
- package/package/components/ParqetCsvTableRenderer.svelte +1 -1
- package/package/components/ResourceEditor.svelte +1 -1
- package/package/components/ResourcePicker.svelte +8 -1
- package/package/components/ResourcePicker.svelte.d.ts +1 -0
- package/package/components/ResultStreamDisplay.svelte +5 -0
- package/package/components/ResultStreamDisplay.svelte.d.ts +5 -0
- package/package/components/RunForm.svelte +9 -1
- package/package/components/SchemaForm.svelte +2 -2
- package/package/components/SchemaForm.svelte.d.ts +2 -10
- package/package/components/ScriptBuilder.svelte +13 -8
- package/package/components/ScriptBuilder.svelte.d.ts +1 -1
- package/package/components/ScriptEditor.svelte.d.ts +1 -1
- package/package/components/ScriptWrapper.svelte +1 -1
- package/package/components/ShareModal.svelte.d.ts +1 -1
- package/package/components/SimpleAgTable.svelte +2 -0
- package/package/components/SimpleAgTable.svelte.d.ts +2 -0
- package/package/components/SqlRepl.svelte +21 -7
- package/package/components/SqlRepl.svelte.d.ts +2 -2
- package/package/components/StringTypeNarrowing.svelte.d.ts +1 -1
- package/package/components/WorkerTagSelect.svelte +70 -1
- package/package/components/apps/components/display/AppDisplayComponent.svelte +13 -1
- package/package/components/apps/components/display/AppText.svelte +2 -2
- package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +8 -1
- package/package/components/apps/components/display/dbtable/InsertRow.svelte +5 -4
- package/package/components/apps/components/display/dbtable/queries/count.js +11 -1
- package/package/components/apps/components/display/dbtable/queries/createTable.d.ts +1 -1
- package/package/components/apps/components/display/dbtable/queries/createTable.js +3 -3
- package/package/components/apps/components/display/dbtable/queries/delete.js +7 -0
- package/package/components/apps/components/display/dbtable/queries/insert.js +2 -0
- package/package/components/apps/components/display/dbtable/queries/select.js +14 -0
- package/package/components/apps/components/display/dbtable/queries/update.js +7 -0
- package/package/components/apps/components/display/dbtable/utils.d.ts +6 -5
- package/package/components/apps/components/display/dbtable/utils.js +52 -28
- package/package/components/apps/components/display/table/AppAggridExplorerTable.svelte +1 -1
- package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte +1 -0
- package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte.d.ts +1 -0
- package/package/components/apps/components/display/table/AppAggridTable.svelte +5 -4
- package/package/components/apps/components/display/table/AppAggridTable.svelte.d.ts +1 -0
- package/package/components/apps/components/display/table/utils.js +7 -4
- package/package/components/apps/components/helpers/HiddenComponent.svelte +2 -2
- package/package/components/apps/components/helpers/RunnableComponent.svelte +4 -1
- package/package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +2 -1
- package/package/components/apps/components/inputs/AppS3FileInput.svelte +2 -2
- package/package/components/apps/components/layout/AppDecisionTree.svelte +1 -1
- package/package/components/apps/components/layout/AppStepper.svelte +1 -1
- package/package/components/apps/components/layout/AppTabs.svelte +1 -1
- package/package/components/apps/editor/AppEditorHeader.svelte +13 -2
- package/package/components/apps/editor/GridViewer.svelte +1 -0
- package/package/components/apps/editor/RunnableJobPanelInner.svelte +2 -1
- package/package/components/apps/editor/contextPanel/components/IdEditor.svelte +7 -7
- package/package/components/apps/editor/contextPanel/components/IdEditor.svelte.d.ts +7 -19
- package/package/components/apps/editor/contextPanel/components/OutputHeader.svelte +8 -12
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte.d.ts +1 -1
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditorDrawer.svelte.d.ts +1 -1
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte.d.ts +1 -1
- package/package/components/apps/editor/settingsPanel/DecisionTreeGraphEditor.svelte +3 -3
- package/package/components/apps/editor/settingsPanel/decisionTree/DecisionTreePreview.svelte +1 -3
- package/package/components/assets/AssetsDropdownButton.svelte +1 -1
- package/package/components/assets/JobAssetsViewer.svelte +2 -2
- package/package/components/assets/lib.js +4 -0
- package/package/components/auditLogs/AuditLogsFilters.svelte +7 -9
- package/package/components/common/button/Button.svelte +4 -3
- package/package/components/common/button/Button.svelte.d.ts +1 -0
- package/package/components/common/confirmationModal/ConfirmationModal.svelte +6 -5
- package/package/components/common/confirmationModal/ConfirmationModal.svelte.d.ts +6 -11
- package/package/components/common/confirmationModal/asyncConfirmationModal.svelte.d.ts +26 -0
- package/package/components/common/confirmationModal/asyncConfirmationModal.svelte.js +50 -0
- package/package/components/common/modal/Modal.svelte +2 -5
- package/package/components/common/tabs/TabsV2.svelte +2 -1
- package/package/components/common/tabs/TabsV2.svelte.d.ts +1 -0
- package/package/components/copilot/chat/AIChatManager.svelte.js +61 -7
- package/package/components/copilot/chat/ContextTextarea.svelte +1 -1
- package/package/components/copilot/chat/script/core.js +28 -29
- package/package/components/copilot/chat/shared.d.ts +1 -1
- package/package/components/copilot/chat/shared.js +8 -2
- package/package/components/custom_ui.d.ts +2 -0
- package/package/components/dbOps.d.ts +20 -8
- package/package/components/dbOps.js +85 -40
- package/package/components/details/DetailPageHeader.svelte +0 -2
- package/package/components/flows/content/FlowInput.svelte +5 -0
- package/package/components/flows/content/FlowModuleScript.svelte +0 -1
- package/package/components/flows/idUtils.js +2 -1
- package/package/components/flows/map/FlowModuleSchemaItem.svelte +3 -3
- package/package/components/flows/map/FlowModuleSchemaMap.svelte +5 -0
- package/package/components/flows/map/InsertModuleButton.svelte +4 -1
- package/package/components/flows/propPicker/OutputBadge.svelte +5 -1
- package/package/components/flows/propPicker/OutputPickerInner.svelte +9 -5
- package/package/components/flows/propPicker/OutputPickerInner.svelte.d.ts +6 -2
- package/package/components/flows/propPicker/StepHistory.svelte +4 -1
- package/package/components/git_sync/DetectionFlow.svelte +202 -0
- package/package/components/git_sync/DetectionFlow.svelte.d.ts +6 -0
- package/package/components/git_sync/GitSyncContext.svelte.d.ts +82 -0
- package/package/components/git_sync/GitSyncContext.svelte.js +461 -0
- package/package/components/git_sync/GitSyncModalManager.svelte +99 -0
- package/package/components/git_sync/GitSyncModalManager.svelte.d.ts +18 -0
- package/package/components/git_sync/GitSyncRepositoryCard.svelte +339 -0
- package/package/components/git_sync/GitSyncRepositoryCard.svelte.d.ts +6 -0
- package/package/components/git_sync/GitSyncRepositoryList.svelte +17 -0
- package/package/components/git_sync/GitSyncRepositoryList.svelte.d.ts +18 -0
- package/package/components/git_sync/GitSyncSection.svelte +89 -0
- package/package/components/git_sync/GitSyncSection.svelte.d.ts +3 -0
- package/package/components/git_sync/GitSyncSuccessModal.svelte +58 -0
- package/package/components/git_sync/GitSyncSuccessModal.svelte.d.ts +7 -0
- package/package/components/git_sync/PullWorkspaceModal.svelte +575 -0
- package/package/components/git_sync/PullWorkspaceModal.svelte.d.ts +15 -0
- package/package/components/git_sync/PushWorkspaceModal.svelte +320 -0
- package/package/components/git_sync/PushWorkspaceModal.svelte.d.ts +12 -0
- package/package/components/graph/FlowGraphV2.svelte +5 -1
- package/package/components/graph/graphBuilder.svelte.js +1 -1
- package/package/components/graph/renderers/nodes/AssetNode.svelte +4 -4
- package/package/components/icons/AssetDucklakeIcon.svelte +28 -0
- package/package/components/icons/AssetDucklakeIcon.svelte.d.ts +9 -0
- package/package/components/icons/AssetGenericIcon.svelte +3 -0
- package/package/components/icons/DucklakeIcon.svelte +18 -0
- package/package/components/icons/DucklakeIcon.svelte.d.ts +6 -0
- package/package/components/instanceSettings.js +11 -3
- package/package/components/runs/JobPreview.svelte +2 -2
- package/package/components/runs/NoWorkerWithTagWarning.svelte +3 -3
- package/package/components/runs/RunsFilter.svelte.d.ts +1 -1
- package/package/components/schema/FlowPropertyEditor.svelte +3 -2
- package/package/components/schema/FlowPropertyEditor.svelte.d.ts +1 -1
- package/package/components/schema/PropertyEditor.svelte +0 -2
- package/package/components/schema/PropertyEditor.svelte.d.ts +1 -1
- package/package/components/schema/SchemaFormDND.svelte +2 -1
- package/package/components/schema/SchemaFormDND.svelte.d.ts +2 -0
- package/package/components/scriptEditor/LogPanel.svelte +5 -3
- package/package/components/scriptEditor/LogPanel.svelte.d.ts +5 -1
- package/package/components/select/Select.svelte +7 -4
- package/package/components/select/Select.svelte.d.ts +5 -0
- package/package/components/select/SelectDropdown.svelte +2 -1
- package/package/components/select/SelectDropdown.svelte.d.ts +3 -0
- package/package/components/sidebar/changelogs.js +5 -0
- package/package/components/table/AutoDataTable.svelte +6 -4
- package/package/components/table/AutoDataTable.svelte.d.ts +1 -0
- package/package/components/table/DataTable.svelte +12 -10
- package/package/components/table/DataTable.svelte.d.ts +1 -0
- package/package/components/triggers/TriggerRetriesAndErrorHandler.svelte.d.ts +2 -2
- package/package/components/triggers/gcp/GcpTriggerEditorConfigSection.svelte +1 -1
- package/package/components/triggers/gcp/GcpTriggerEditorConfigSection.svelte.d.ts +2 -1
- package/package/components/triggers/gcp/GcpTriggerEditorInner.svelte +50 -11
- package/package/components/triggers/gcp/utils.js +1 -0
- package/package/components/triggers/http/utils.js +1 -1
- package/package/components/triggers/kafka/utils.js +1 -1
- package/package/components/triggers/mqtt/utils.js +1 -1
- package/package/components/triggers/nats/utils.js +1 -1
- package/package/components/triggers/postgres/utils.js +1 -1
- package/package/components/triggers/sqs/utils.js +1 -1
- package/package/components/triggers/utils.js +2 -1
- package/package/components/triggers/webhook/WebhooksConfigSection.svelte +24 -26
- package/package/components/triggers/webhook/WebhooksPanel.svelte +1 -15
- package/package/components/triggers/websocket/utils.js +1 -1
- package/package/components/workspaceSettings/AISettings.svelte +52 -36
- package/package/components/workspaceSettings/DucklakeSettings.svelte +321 -0
- package/package/components/workspaceSettings/DucklakeSettings.svelte.d.ts +23 -0
- package/package/components/workspaceSettings/GitSyncFilterSettings.svelte +122 -499
- package/package/components/workspaceSettings/GitSyncFilterSettings.svelte.d.ts +8 -10
- package/package/consts.js +2 -1
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +7 -6
- package/package/gen/schemas.gen.js +7 -6
- package/package/gen/services.gen.d.ts +19 -1
- package/package/gen/services.gen.js +38 -0
- package/package/gen/types.gen.d.ts +78 -3
- package/package/git-sync.d.ts +36 -0
- package/package/git-sync.js +1 -0
- package/package/hub.d.ts +1 -0
- package/package/hubPaths.json +5 -2
- package/package/infer.js +3 -2
- package/package/script_helpers.d.ts +2 -2
- package/package/script_helpers.js +29 -11
- package/package/services/JobManager.d.ts +28 -0
- package/package/services/JobManager.js +114 -0
- package/package/stores.d.ts +1 -1
- package/package/utils.d.ts +18 -1
- package/package/utils.js +55 -2
- package/package.json +5 -4
- package/package/components/InitGitRepoPopover.svelte +0 -410
- package/package/components/InitGitRepoPopover.svelte.d.ts +0 -13
- package/package/components/PullGitRepoPopover.svelte +0 -355
- package/package/components/PullGitRepoPopover.svelte.d.ts +0 -18
- package/package/inferArgSig.d.ts +0 -42
- package/package/inferArgSig.js +0 -198
|
@@ -1,30 +1,18 @@
|
|
|
1
|
-
interface
|
|
2
|
-
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
3
|
-
$$bindings?: Bindings;
|
|
4
|
-
} & Exports;
|
|
5
|
-
(internal: unknown, props: Props & {
|
|
6
|
-
$$events?: Events;
|
|
7
|
-
$$slots?: Slots;
|
|
8
|
-
}): Exports & {
|
|
9
|
-
$set?: any;
|
|
10
|
-
$on?: any;
|
|
11
|
-
};
|
|
12
|
-
z_$$bindings?: Bindings;
|
|
13
|
-
}
|
|
14
|
-
declare const IdEditorInput: $$__sveltets_2_IsomorphicComponent<{
|
|
1
|
+
interface Props {
|
|
15
2
|
initialId: string;
|
|
16
3
|
reservedIds?: string[];
|
|
4
|
+
reservedPrefixes?: string[];
|
|
17
5
|
label?: string;
|
|
18
|
-
value?:
|
|
6
|
+
value?: any;
|
|
19
7
|
buttonText?: string;
|
|
20
8
|
btnClasses?: string;
|
|
21
9
|
acceptUnderScores?: boolean;
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
type IdEditorInput =
|
|
10
|
+
onSave: ({ oldId, newId }: {
|
|
11
|
+
oldId: string;
|
|
12
|
+
newId: string;
|
|
13
|
+
}) => void;
|
|
14
|
+
onClose?: () => void;
|
|
15
|
+
}
|
|
16
|
+
declare const IdEditorInput: import("svelte").Component<Props, {}, "value">;
|
|
17
|
+
type IdEditorInput = ReturnType<typeof IdEditorInput>;
|
|
30
18
|
export default IdEditorInput;
|
|
@@ -44,6 +44,11 @@ let to = $state('');
|
|
|
44
44
|
async function reloadKeyrenewalAttemptInfo() {
|
|
45
45
|
latestKeyRenewalAttempt = await SettingService.getLatestKeyRenewalAttempt();
|
|
46
46
|
}
|
|
47
|
+
async function reloadLicenseKey() {
|
|
48
|
+
$values['license_key'] = await SettingService.getGlobal({
|
|
49
|
+
key: 'license_key'
|
|
50
|
+
});
|
|
51
|
+
}
|
|
47
52
|
if (setting.key == 'license_key') {
|
|
48
53
|
reloadKeyrenewalAttemptInfo();
|
|
49
54
|
}
|
|
@@ -54,13 +59,13 @@ export async function renewLicenseKey() {
|
|
|
54
59
|
licenseKey: $values['license_key'] || undefined
|
|
55
60
|
});
|
|
56
61
|
sendUserToast('Key renewal successful');
|
|
57
|
-
|
|
62
|
+
reloadLicenseKey();
|
|
58
63
|
}
|
|
59
64
|
catch (err) {
|
|
60
|
-
latestKeyRenewalAttempt = await SettingService.getLatestKeyRenewalAttempt();
|
|
61
65
|
throw err;
|
|
62
66
|
}
|
|
63
67
|
finally {
|
|
68
|
+
reloadKeyrenewalAttemptInfo();
|
|
64
69
|
renewing = false;
|
|
65
70
|
}
|
|
66
71
|
}
|
|
@@ -3,7 +3,7 @@ import { workspaceStore } from '../stores';
|
|
|
3
3
|
import { onDestroy, tick, untrack } from 'svelte';
|
|
4
4
|
import { sendUserToast } from '../toast';
|
|
5
5
|
import { isScriptPreview } from '../utils';
|
|
6
|
-
let { isLoading = $bindable(false), job = $bindable(undefined), noCode = false, allowConcurentRequests = false, workspaceOverride = undefined, notfound = $bindable(false), jobUpdateLastFetch = $bindable(undefined), toastError = false,
|
|
6
|
+
let { isLoading = $bindable(false), job = $bindable(undefined), noCode = false, allowConcurentRequests = false, workspaceOverride = undefined, notfound = $bindable(false), jobUpdateLastFetch = $bindable(undefined), toastError = false, onlyResult = false, scriptProgress = $bindable(undefined), noLogs = false, children } = $props();
|
|
7
7
|
/// Last time asked for job progress
|
|
8
8
|
let lastTimeCheckedProgress = undefined;
|
|
9
9
|
/// Will try to poll progress every 5s and if once progress returned was not undefined, will be ignored
|
|
@@ -15,6 +15,7 @@ let workspace = $derived(workspaceOverride ?? $workspaceStore);
|
|
|
15
15
|
let syncIteration = 0;
|
|
16
16
|
let errorIteration = 0;
|
|
17
17
|
let logOffset = 0;
|
|
18
|
+
let resultStreamOffset = 0;
|
|
18
19
|
let lastCallbacks = undefined;
|
|
19
20
|
let finished = [];
|
|
20
21
|
let ITERATIONS_BEFORE_SLOW_REFRESH = 10;
|
|
@@ -104,6 +105,9 @@ function refreshLogOffset() {
|
|
|
104
105
|
if (logOffset == 0) {
|
|
105
106
|
logOffset = job?.logs?.length ? job.logs?.length + 1 : 0;
|
|
106
107
|
}
|
|
108
|
+
if (resultStreamOffset == 0) {
|
|
109
|
+
resultStreamOffset = job?.result_stream?.length ? job.result_stream?.length + 1 : 0;
|
|
110
|
+
}
|
|
107
111
|
}
|
|
108
112
|
export async function getLogs() {
|
|
109
113
|
if (job) {
|
|
@@ -176,6 +180,7 @@ function supportsSSE() {
|
|
|
176
180
|
let startedWatchingJob = undefined;
|
|
177
181
|
export async function watchJob(testId, callbacks) {
|
|
178
182
|
logOffset = 0;
|
|
183
|
+
resultStreamOffset = 0;
|
|
179
184
|
syncIteration = 0;
|
|
180
185
|
errorIteration = 0;
|
|
181
186
|
currentId = testId;
|
|
@@ -237,9 +242,24 @@ function updateJobFromProgress(previewJobUpdates, job, callbacks) {
|
|
|
237
242
|
job.logs = (job?.logs ?? '').concat(previewJobUpdates.new_logs);
|
|
238
243
|
}
|
|
239
244
|
}
|
|
245
|
+
if (previewJobUpdates.new_result_stream) {
|
|
246
|
+
if (!job.result_stream) {
|
|
247
|
+
job.result_stream = previewJobUpdates.new_result_stream;
|
|
248
|
+
}
|
|
249
|
+
else {
|
|
250
|
+
job.result_stream = job.result_stream.concat(previewJobUpdates.new_result_stream);
|
|
251
|
+
}
|
|
252
|
+
callbacks?.resultStreamUpdate?.({
|
|
253
|
+
id: job.id,
|
|
254
|
+
result_stream: job.result_stream
|
|
255
|
+
});
|
|
256
|
+
}
|
|
240
257
|
if (previewJobUpdates.log_offset) {
|
|
241
258
|
logOffset = previewJobUpdates.log_offset ?? 0;
|
|
242
259
|
}
|
|
260
|
+
if (previewJobUpdates.stream_offset) {
|
|
261
|
+
resultStreamOffset = previewJobUpdates.stream_offset ?? 0;
|
|
262
|
+
}
|
|
243
263
|
if (previewJobUpdates.flow_status) {
|
|
244
264
|
job.flow_status = previewJobUpdates.flow_status;
|
|
245
265
|
}
|
|
@@ -252,9 +272,10 @@ function updateJobFromProgress(previewJobUpdates, job, callbacks) {
|
|
|
252
272
|
if (job &&
|
|
253
273
|
(previewJobUpdates.running ||
|
|
254
274
|
previewJobUpdates.progress ||
|
|
255
|
-
previewJobUpdates.
|
|
275
|
+
previewJobUpdates.log_offset ||
|
|
256
276
|
previewJobUpdates.flow_status ||
|
|
257
|
-
previewJobUpdates.mem_peak
|
|
277
|
+
previewJobUpdates.mem_peak ||
|
|
278
|
+
previewJobUpdates.stream_offset)) {
|
|
258
279
|
callbacks?.change?.(job);
|
|
259
280
|
}
|
|
260
281
|
}
|
|
@@ -288,7 +309,7 @@ async function loadTestJob(id, callbacks) {
|
|
|
288
309
|
job = await JobService.getJob({
|
|
289
310
|
workspace: workspace,
|
|
290
311
|
id,
|
|
291
|
-
noLogs:
|
|
312
|
+
noLogs: onlyResult || noLogs,
|
|
292
313
|
noCode
|
|
293
314
|
});
|
|
294
315
|
}
|
|
@@ -364,6 +385,7 @@ function isCurrentJob(id) {
|
|
|
364
385
|
}
|
|
365
386
|
async function loadTestJobWithSSE(id, attempt, callbacks) {
|
|
366
387
|
let isCompleted = false;
|
|
388
|
+
let resultOnlyResultStream = '';
|
|
367
389
|
if (isCurrentJob(id)) {
|
|
368
390
|
try {
|
|
369
391
|
// First load the job to get initial state
|
|
@@ -371,10 +393,16 @@ async function loadTestJobWithSSE(id, attempt, callbacks) {
|
|
|
371
393
|
job = await JobService.getJob({
|
|
372
394
|
workspace: workspace,
|
|
373
395
|
id,
|
|
374
|
-
noLogs:
|
|
396
|
+
noLogs: noLogs,
|
|
375
397
|
noCode
|
|
376
398
|
});
|
|
377
399
|
}
|
|
400
|
+
if (!onlyResult) {
|
|
401
|
+
callbacks?.resultStreamUpdate?.({
|
|
402
|
+
id,
|
|
403
|
+
result_stream: undefined
|
|
404
|
+
});
|
|
405
|
+
}
|
|
378
406
|
// If job is already completed, don't start SSE
|
|
379
407
|
if (job?.type === 'CompletedJob') {
|
|
380
408
|
isCompleted = true;
|
|
@@ -411,6 +439,12 @@ async function loadTestJobWithSSE(id, attempt, callbacks) {
|
|
|
411
439
|
if (startedWatchingJob && startedWatchingJob > Date.now() - 5000) {
|
|
412
440
|
params.set('fast', 'true');
|
|
413
441
|
}
|
|
442
|
+
if (noLogs) {
|
|
443
|
+
params.set('no_logs', 'true');
|
|
444
|
+
}
|
|
445
|
+
if (resultStreamOffset) {
|
|
446
|
+
params.set('stream_offset', resultStreamOffset.toString());
|
|
447
|
+
}
|
|
414
448
|
const sseUrl = `/api/w/${workspace}/jobs_u/getupdate_sse/${id}?${params.toString()}`;
|
|
415
449
|
currentEventSource = new EventSource(sseUrl);
|
|
416
450
|
setNoPingTimeout(id, attempt, callbacks);
|
|
@@ -452,6 +486,14 @@ async function loadTestJobWithSSE(id, attempt, callbacks) {
|
|
|
452
486
|
else if (onlyResult && callbacks?.running && previewJobUpdates.running) {
|
|
453
487
|
callbacks?.running?.({ id });
|
|
454
488
|
}
|
|
489
|
+
if (onlyResult && previewJobUpdates.new_result_stream) {
|
|
490
|
+
resultOnlyResultStream = resultOnlyResultStream.concat(previewJobUpdates.new_result_stream);
|
|
491
|
+
// console.log('resultOnlyResultStream', resultOnlyResultStream)
|
|
492
|
+
callbacks?.resultStreamUpdate?.({
|
|
493
|
+
id,
|
|
494
|
+
result_stream: resultOnlyResultStream
|
|
495
|
+
});
|
|
496
|
+
}
|
|
455
497
|
// Check if job is completed
|
|
456
498
|
if (previewJobUpdates.completed) {
|
|
457
499
|
currentEventSource?.close();
|
|
@@ -468,6 +510,7 @@ async function loadTestJobWithSSE(id, attempt, callbacks) {
|
|
|
468
510
|
else {
|
|
469
511
|
const njob = previewJobUpdates.job;
|
|
470
512
|
njob.logs = job?.logs ?? '';
|
|
513
|
+
njob.result_stream = job?.result_stream ?? '';
|
|
471
514
|
job = njob;
|
|
472
515
|
onJobCompleted(id, job, callbacks);
|
|
473
516
|
}
|
|
@@ -22,10 +22,16 @@ export type Callbacks = {
|
|
|
22
22
|
running?: ({ id }: {
|
|
23
23
|
id: string;
|
|
24
24
|
}) => void;
|
|
25
|
+
resultStreamUpdate?: ({ id, result_stream }: {
|
|
26
|
+
id: string;
|
|
27
|
+
result_stream?: string;
|
|
28
|
+
}) => void;
|
|
25
29
|
};
|
|
26
30
|
interface Props {
|
|
27
31
|
isLoading?: boolean;
|
|
28
|
-
job?: Job
|
|
32
|
+
job?: (Job & {
|
|
33
|
+
result_stream?: string;
|
|
34
|
+
}) | undefined;
|
|
29
35
|
noCode?: boolean;
|
|
30
36
|
noLogs?: boolean;
|
|
31
37
|
workspaceOverride?: string | undefined;
|
|
@@ -33,7 +39,6 @@ interface Props {
|
|
|
33
39
|
allowConcurentRequests?: boolean;
|
|
34
40
|
jobUpdateLastFetch?: Date | undefined;
|
|
35
41
|
toastError?: boolean;
|
|
36
|
-
lazyLogs?: boolean;
|
|
37
42
|
onlyResult?: boolean;
|
|
38
43
|
scriptProgress?: number | undefined;
|
|
39
44
|
children?: import('svelte').Snippet<[any]>;
|
|
@@ -5,9 +5,10 @@ import Google from './icons/brands/Google.svelte';
|
|
|
5
5
|
import Microsoft from './icons/brands/Microsoft.svelte';
|
|
6
6
|
import Okta from './icons/brands/Okta.svelte';
|
|
7
7
|
import Auth0 from './icons/brands/Auth0.svelte';
|
|
8
|
+
import NextcloudIcon from './icons/NextcloudIcon.svelte';
|
|
8
9
|
import { OauthService, UserService, WorkspaceService } from '../gen';
|
|
9
10
|
import { usersWorkspaceStore, workspaceStore, userStore } from '../stores';
|
|
10
|
-
import { classNames, emptyString, parseQueryParams } from '../utils';
|
|
11
|
+
import { classNames, emptyString, escapeHtml, parseQueryParams } from '../utils';
|
|
11
12
|
import { base } from '../base';
|
|
12
13
|
import { getUserExt } from '../user';
|
|
13
14
|
import { sendUserToast } from '../toast';
|
|
@@ -47,6 +48,11 @@ const providers = [
|
|
|
47
48
|
type: 'auth0',
|
|
48
49
|
name: 'Auth0',
|
|
49
50
|
icon: Auth0
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
type: 'nextcloud',
|
|
54
|
+
name: 'Nextcloud',
|
|
55
|
+
icon: NextcloudIcon
|
|
50
56
|
}
|
|
51
57
|
];
|
|
52
58
|
const providersType = providers.map((p) => p.type);
|
|
@@ -227,7 +233,7 @@ function storeRedirect(provider) {
|
|
|
227
233
|
}
|
|
228
234
|
}
|
|
229
235
|
$effect(() => {
|
|
230
|
-
error && sendUserToast(error, true);
|
|
236
|
+
error && sendUserToast(escapeHtml(error), true);
|
|
231
237
|
});
|
|
232
238
|
</script>
|
|
233
239
|
|
|
@@ -49,7 +49,7 @@ $: jobUpdateLastFetch && loadMetricsData();
|
|
|
49
49
|
|
|
50
50
|
<div class="relative max-h-100">
|
|
51
51
|
{#if !$enterpriseLicense}
|
|
52
|
-
<Alert type="
|
|
52
|
+
<Alert type="warning" title="Enterprise Edition only feature">
|
|
53
53
|
Job metrics are only available on Windmill Enterprise Edition.
|
|
54
54
|
</Alert>
|
|
55
55
|
{:else if (jobMemoryStats?.length ?? 0) === 0}
|
|
@@ -15,7 +15,7 @@ const logJob = $derived(testJob ?? selectedJob);
|
|
|
15
15
|
</script>
|
|
16
16
|
|
|
17
17
|
<Splitpanes horizontal>
|
|
18
|
-
<Pane size={
|
|
18
|
+
<Pane size={65} minSize={10} class="text-sm text-tertiary">
|
|
19
19
|
{#if scriptProgress}
|
|
20
20
|
<JobProgressBar
|
|
21
21
|
job={testJob}
|
|
@@ -50,7 +50,7 @@ const logJob = $derived(testJob ?? selectedJob);
|
|
|
50
50
|
{/snippet}
|
|
51
51
|
</OutputPickerInner>
|
|
52
52
|
</Pane>
|
|
53
|
-
<Pane size={
|
|
53
|
+
<Pane size={35} minSize={10}>
|
|
54
54
|
{#if (mod.mock?.enabled && preview != 'job') || preview == 'mock'}
|
|
55
55
|
<LogViewer
|
|
56
56
|
small
|
|
@@ -12,13 +12,13 @@ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> =
|
|
|
12
12
|
z_$$bindings?: Bindings;
|
|
13
13
|
}
|
|
14
14
|
declare const MoveDrawer: $$__sveltets_2_IsomorphicComponent<{
|
|
15
|
-
openDrawer?: (initialPath_l: string, summary_l: string | undefined, kind_l: "resource" | "script" | "flow" | "
|
|
15
|
+
openDrawer?: (initialPath_l: string, summary_l: string | undefined, kind_l: "resource" | "script" | "flow" | "app" | "variable" | "schedule" | "raw_app") => Promise<void>;
|
|
16
16
|
}, {
|
|
17
17
|
update: CustomEvent<any>;
|
|
18
18
|
} & {
|
|
19
19
|
[evt: string]: CustomEvent<any>;
|
|
20
20
|
}, {}, {
|
|
21
|
-
openDrawer: (initialPath_l: string, summary_l: string | undefined, kind_l: "resource" | "script" | "flow" | "
|
|
21
|
+
openDrawer: (initialPath_l: string, summary_l: string | undefined, kind_l: "resource" | "script" | "flow" | "app" | "variable" | "schedule" | "raw_app") => Promise<void>;
|
|
22
22
|
}, string>;
|
|
23
23
|
type MoveDrawer = InstanceType<typeof MoveDrawer>;
|
|
24
24
|
export default MoveDrawer;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
<script lang="ts">import CollapseLink from './CollapseLink.svelte';
|
|
2
|
+
import IconedResourceType from './IconedResourceType.svelte';
|
|
3
|
+
import Toggle from './Toggle.svelte';
|
|
4
|
+
import Tooltip from './Tooltip.svelte';
|
|
5
|
+
let { value = $bindable(), baseUrl } = $props();
|
|
6
|
+
function changeDomain(domain) {
|
|
7
|
+
if (value && domain) {
|
|
8
|
+
// Remove http:// or https:// if user included it
|
|
9
|
+
const cleanDomain = domain.replace(/^https?:\/\//, '');
|
|
10
|
+
let baseUrl = `https://${cleanDomain}`;
|
|
11
|
+
value = {
|
|
12
|
+
...value,
|
|
13
|
+
login_config: {
|
|
14
|
+
auth_url: `${baseUrl}/apps/oauth2/authorize`,
|
|
15
|
+
token_url: `${baseUrl}/apps/oauth2/api/v1/token`,
|
|
16
|
+
userinfo_url: `${baseUrl}/ocs/v2.php/cloud/user?format=json`,
|
|
17
|
+
scopes: []
|
|
18
|
+
},
|
|
19
|
+
connect_config: {
|
|
20
|
+
auth_url: `${baseUrl}/apps/oauth2/authorize`,
|
|
21
|
+
token_url: `${baseUrl}/apps/oauth2/api/v1/token`,
|
|
22
|
+
scopes: []
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
let enabled = $derived(value != undefined);
|
|
28
|
+
$effect(() => {
|
|
29
|
+
changeDomain(value?.['domain']);
|
|
30
|
+
});
|
|
31
|
+
</script>
|
|
32
|
+
|
|
33
|
+
<div class="flex flex-col gap-1">
|
|
34
|
+
<!-- svelte-ignore a11y_label_has_associated_control -->
|
|
35
|
+
<label class="text-sm font-medium text-primary flex gap-4 items-center"
|
|
36
|
+
><div class="w-[120px]"><IconedResourceType name="nextcloud" after={true} /></div><Toggle
|
|
37
|
+
checked={enabled}
|
|
38
|
+
on:change={(e) => {
|
|
39
|
+
if (e.detail) {
|
|
40
|
+
value = { id: '', secret: '', domain: '' }
|
|
41
|
+
} else {
|
|
42
|
+
value = undefined
|
|
43
|
+
}
|
|
44
|
+
}}
|
|
45
|
+
/></label
|
|
46
|
+
>
|
|
47
|
+
{#if enabled}
|
|
48
|
+
<div class="p-2 rounded border">
|
|
49
|
+
<label class="block pb-2">
|
|
50
|
+
<span class="text-primary font-semibold text-sm">Nextcloud Instance Domain</span>
|
|
51
|
+
<input type="text" placeholder="example.nextcloud.com" bind:value={value['domain']} />
|
|
52
|
+
</label>
|
|
53
|
+
<label class="block pb-2">
|
|
54
|
+
<span class="text-primary font-semibold text-sm">Custom Name</span>
|
|
55
|
+
<input type="text" placeholder="Custom Name" bind:value={value['display_name']} />
|
|
56
|
+
</label>
|
|
57
|
+
<label class="block pb-2">
|
|
58
|
+
<span class="text-primary font-semibold text-sm"
|
|
59
|
+
>Client Id <Tooltip
|
|
60
|
+
>Client ID from your Nextcloud OAuth2 app configuration</Tooltip
|
|
61
|
+
></span
|
|
62
|
+
>
|
|
63
|
+
<input type="text" placeholder="Client Id" bind:value={value['id']} />
|
|
64
|
+
</label>
|
|
65
|
+
<label class="block pb-2">
|
|
66
|
+
<span class="text-primary font-semibold text-sm"
|
|
67
|
+
>Client Secret <Tooltip
|
|
68
|
+
>Client Secret from your Nextcloud OAuth2 app configuration</Tooltip
|
|
69
|
+
></span
|
|
70
|
+
>
|
|
71
|
+
<input type="text" placeholder="Client Secret" bind:value={value['secret']} />
|
|
72
|
+
</label>
|
|
73
|
+
<CollapseLink text="Instructions">
|
|
74
|
+
<div class="text-sm text-secondary border p-2">
|
|
75
|
+
1. Go to your Nextcloud instance as an administrator<br />
|
|
76
|
+
2. Navigate to <strong>Administration settings → Security → OAuth 2.0 clients</strong><br />
|
|
77
|
+
3. Click "Add client" to create a new OAuth2 application<br />
|
|
78
|
+
4. Set the redirect URI to your Windmill instance's <code>{baseUrl || 'BASE_URL'}/user/login_callback/nextcloud</code><br />
|
|
79
|
+
5. Copy the Client ID and Client Secret to the fields above<br />
|
|
80
|
+
</div>
|
|
81
|
+
</CollapseLink>
|
|
82
|
+
</div>
|
|
83
|
+
{/if}
|
|
84
|
+
</div>
|
|
@@ -4,7 +4,7 @@ import S3ObjectPicker from './S3ObjectPicker.svelte';
|
|
|
4
4
|
function isString(value) {
|
|
5
5
|
return typeof value === 'string' || value instanceof String;
|
|
6
6
|
}
|
|
7
|
-
let { format, value = $bindable(), disablePortal = false, showSchemaExplorer = false, selectFirst = false, defaultValue, editor = $bindable(undefined), onClear = undefined } = $props();
|
|
7
|
+
let { format, value = $bindable(), disablePortal = false, showSchemaExplorer = false, selectFirst = false, defaultValue, editor = $bindable(undefined), disabled = false, onClear = undefined } = $props();
|
|
8
8
|
function isResource() {
|
|
9
9
|
return isString(value) && value.length >= '$res:'.length;
|
|
10
10
|
}
|
|
@@ -21,6 +21,7 @@ function valueToPath() {
|
|
|
21
21
|
<S3ObjectPicker bind:value />
|
|
22
22
|
{:else if value == undefined || typeof value === 'string'}
|
|
23
23
|
<ResourcePicker
|
|
24
|
+
{disabled}
|
|
24
25
|
{selectFirst}
|
|
25
26
|
{disablePortal}
|
|
26
27
|
{onClear}
|
|
@@ -44,7 +45,7 @@ function valueToPath() {
|
|
|
44
45
|
{#await import('./JsonEditor.svelte')}
|
|
45
46
|
<Loader2 class="animate-spin" />
|
|
46
47
|
{:then Module}
|
|
47
|
-
<Module.default bind:editor code={JSON.stringify(value, null, 2)} bind:value />
|
|
48
|
+
<Module.default {disabled} bind:editor code={JSON.stringify(value, null, 2)} bind:value />
|
|
48
49
|
{/await}
|
|
49
50
|
{/if}
|
|
50
51
|
</div>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<script lang="ts">import {
|
|
1
|
+
<script lang="ts">import { createGrid } from 'ag-grid-community';
|
|
2
2
|
import 'ag-grid-community/styles/ag-grid.css';
|
|
3
3
|
import 'ag-grid-community/styles/ag-theme-alpine.css';
|
|
4
4
|
import { twMerge } from 'tailwind-merge';
|
|
@@ -225,7 +225,7 @@ run(() => {
|
|
|
225
225
|
{:else}
|
|
226
226
|
<TestConnection resourceType={resourceToEdit?.resource_type} {args} />
|
|
227
227
|
{/if}
|
|
228
|
-
{#if resource_type === 'git_repository' && $workspaceStore && $userStore?.is_admin}
|
|
228
|
+
{#if resource_type === 'git_repository' && $workspaceStore && ($userStore?.is_admin || $userStore?.is_super_admin)}
|
|
229
229
|
<GitHubAppIntegration
|
|
230
230
|
resourceType={resource_type}
|
|
231
231
|
{args}
|
|
@@ -9,7 +9,7 @@ import { sendUserToast } from '../toast';
|
|
|
9
9
|
import Select from './select/Select.svelte';
|
|
10
10
|
import DbManagerDrawer from './DBManagerDrawer.svelte';
|
|
11
11
|
import ExploreAssetButton, { assetCanBeExplored } from './ExploreAssetButton.svelte';
|
|
12
|
-
let { initialValue = $bindable(undefined), value = $bindable(undefined), valueType = $bindable(undefined), resourceType = undefined, disabled = false, disablePortal = false, showSchemaExplorer = false, selectFirst = false, expressOAuthSetup = false, defaultValues = undefined, placeholder = undefined, onClear = undefined } = $props();
|
|
12
|
+
let { initialValue = $bindable(undefined), value = $bindable(undefined), valueType = $bindable(undefined), resourceType = undefined, disabled = false, disablePortal = false, showSchemaExplorer = false, selectFirst = false, expressOAuthSetup = false, defaultValues = undefined, placeholder = undefined, onClear = undefined, excludedValues = undefined } = $props();
|
|
13
13
|
if (initialValue && value == undefined) {
|
|
14
14
|
console.log('initialValue', initialValue);
|
|
15
15
|
value = initialValue;
|
|
@@ -62,6 +62,7 @@ async function loadResources(resourceType) {
|
|
|
62
62
|
const nc = resources
|
|
63
63
|
.flat()
|
|
64
64
|
.filter((x) => x.resource_type != 'state' && x.resource_type != 'cache')
|
|
65
|
+
.filter((x) => !excludedValues || !excludedValues.includes(x.path))
|
|
65
66
|
.map((x) => ({
|
|
66
67
|
value: x.path,
|
|
67
68
|
label: x.path,
|
|
@@ -95,6 +96,12 @@ $effect(() => {
|
|
|
95
96
|
});
|
|
96
97
|
untrack(() => loadResources(resourceType));
|
|
97
98
|
});
|
|
99
|
+
$effect(() => {
|
|
100
|
+
excludedValues;
|
|
101
|
+
if ($workspaceStore && resourceType && !disabled) {
|
|
102
|
+
untrack(() => loadResources(resourceType));
|
|
103
|
+
}
|
|
104
|
+
});
|
|
98
105
|
let appConnect = $state();
|
|
99
106
|
let resourceEditor = $state();
|
|
100
107
|
let dbManagerDrawer = $state();
|
|
@@ -11,6 +11,7 @@ interface Props {
|
|
|
11
11
|
defaultValues?: Record<string, any> | undefined;
|
|
12
12
|
placeholder?: string | undefined;
|
|
13
13
|
onClear?: () => void;
|
|
14
|
+
excludedValues?: string[];
|
|
14
15
|
}
|
|
15
16
|
declare const ResourcePicker: import("svelte").Component<Props, {
|
|
16
17
|
askNewResource: () => Promise<void>;
|
|
@@ -12,6 +12,7 @@ import JsonInputs from './JsonInputs.svelte';
|
|
|
12
12
|
import { triggerableByAI } from '../actions/triggerableByAI.svelte';
|
|
13
13
|
import InputSelectedBadge from './schema/InputSelectedBadge.svelte';
|
|
14
14
|
import { untrack } from 'svelte';
|
|
15
|
+
import {} from '../gen';
|
|
15
16
|
let reloadArgs = $state(0);
|
|
16
17
|
let jsonEditor = $state(undefined);
|
|
17
18
|
let schemaHeight = $state(0);
|
|
@@ -190,7 +191,14 @@ $effect(() => {
|
|
|
190
191
|
type: 'hash',
|
|
191
192
|
hash: runnable.hash
|
|
192
193
|
}
|
|
193
|
-
:
|
|
194
|
+
: runnable.schema?.['x-windmill-dyn-select-code'] &&
|
|
195
|
+
runnable.schema?.['x-windmill-dyn-select-lang']
|
|
196
|
+
? {
|
|
197
|
+
type: 'inline',
|
|
198
|
+
code: runnable.schema['x-windmill-dyn-select-code'] as string,
|
|
199
|
+
lang: runnable.schema['x-windmill-dyn-select-lang'] as ScriptLang
|
|
200
|
+
}
|
|
201
|
+
: undefined}
|
|
194
202
|
prettifyHeader
|
|
195
203
|
{noVariablePicker}
|
|
196
204
|
{autofocus}
|
|
@@ -203,7 +203,7 @@ const actions_render = $derived(actions);
|
|
|
203
203
|
title={formerProperty?.title}
|
|
204
204
|
placeholder={formerProperty?.placeholder}
|
|
205
205
|
orderEditable={dndConfig != undefined}
|
|
206
|
-
otherArgs={args}
|
|
206
|
+
otherArgs={{ ...args, [argName]: undefined }}
|
|
207
207
|
{helperScript}
|
|
208
208
|
{lightHeader}
|
|
209
209
|
hideNested={typeof diff[argName].diff === 'object'}
|
|
@@ -276,7 +276,7 @@ const actions_render = $derived(actions);
|
|
|
276
276
|
title={schema.properties[argName].title}
|
|
277
277
|
placeholder={schema.properties[argName].placeholder}
|
|
278
278
|
orderEditable={dndConfig != undefined}
|
|
279
|
-
otherArgs={args}
|
|
279
|
+
otherArgs={{ ...args, [argName]: undefined }}
|
|
280
280
|
{helperScript}
|
|
281
281
|
{lightHeader}
|
|
282
282
|
diffStatus={diff[argName] ?? undefined}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Schema } from '../common';
|
|
2
|
-
import { type
|
|
2
|
+
import { type DynamicSelect } from '../utils';
|
|
3
3
|
import { type Options as DndOptions } from '@windmill-labs/svelte-dnd-action';
|
|
4
4
|
import type { SchemaDiff } from './schema/schemaUtils.svelte';
|
|
5
5
|
import type { ComponentCustomCSS } from './apps/types';
|
|
@@ -30,15 +30,7 @@ interface Props {
|
|
|
30
30
|
id: string;
|
|
31
31
|
value: string;
|
|
32
32
|
}[] | undefined;
|
|
33
|
-
helperScript?:
|
|
34
|
-
type: 'inline';
|
|
35
|
-
path?: string;
|
|
36
|
-
lang: Script['language'];
|
|
37
|
-
code: string;
|
|
38
|
-
} | {
|
|
39
|
-
type: 'hash';
|
|
40
|
-
hash: string;
|
|
41
|
-
} | undefined;
|
|
33
|
+
helperScript?: DynamicSelect.HelperScript;
|
|
42
34
|
lightHeader?: boolean;
|
|
43
35
|
diff?: Record<string, SchemaDiff>;
|
|
44
36
|
nestedParent?: {
|
|
@@ -5,7 +5,7 @@ import { inferArgs } from '../infer';
|
|
|
5
5
|
import { initialCode } from '../script_helpers';
|
|
6
6
|
import AIFormSettings from './copilot/AIFormSettings.svelte';
|
|
7
7
|
import { defaultScripts, enterpriseLicense, usedTriggerKinds, userStore, workerTags, workspaceStore } from '../stores';
|
|
8
|
-
import { cleanValueProperties, emptySchema, emptyString, encodeState, generateRandomString, orderedJsonStringify, replaceFalseWithUndefined } from '../utils';
|
|
8
|
+
import { cleanValueProperties, emptySchema, emptyString, encodeState, generateRandomString, orderedJsonStringify, readFieldsRecursively, replaceFalseWithUndefined } from '../utils';
|
|
9
9
|
import Path from './Path.svelte';
|
|
10
10
|
import ScriptEditor from './ScriptEditor.svelte';
|
|
11
11
|
import { Alert, Badge, Button, Drawer, SecondsInput, Tab, TabContent, Tabs } from './common';
|
|
@@ -41,7 +41,7 @@ import { deployTriggers, filterDraftTriggers, handleSelectTriggerFromKind } from
|
|
|
41
41
|
import DraftTriggersConfirmationModal from './common/confirmationModal/DraftTriggersConfirmationModal.svelte';
|
|
42
42
|
import { Triggers } from './triggers/triggers.svelte';
|
|
43
43
|
import WorkerTagSelect from './WorkerTagSelect.svelte';
|
|
44
|
-
let { script, fullyLoaded = true, initialPath = $bindable(''), template = $bindable('script'), initialArgs = {}, lockedLanguage = false, showMeta = false, neverShowMeta = false, diffDrawer = undefined, savedScript = $bindable(undefined), searchParams = new URLSearchParams(), disableHistoryChange = false, replaceStateFn = (url) => window.history.replaceState(null, '', url), customUi = {}, savedPrimarySchedule = undefined, functionExports = undefined, children, onDeploy, onDeployError, onSaveInitial, onSeeDetails, onSaveDraftError, onSaveDraft, disableAi } = $props();
|
|
44
|
+
let { script = $bindable(), fullyLoaded = true, initialPath = $bindable(''), template = $bindable('script'), initialArgs = {}, lockedLanguage = false, showMeta = false, neverShowMeta = false, diffDrawer = undefined, savedScript = $bindable(undefined), searchParams = new URLSearchParams(), disableHistoryChange = false, replaceStateFn = (url) => window.history.replaceState(null, '', url), customUi = {}, savedPrimarySchedule = undefined, functionExports = undefined, children, onDeploy, onDeployError, onSaveInitial, onSeeDetails, onSaveDraftError, onSaveDraft, disableAi } = $props();
|
|
45
45
|
export function getInitialAndModifiedValues() {
|
|
46
46
|
return {
|
|
47
47
|
savedValue: savedScript,
|
|
@@ -186,12 +186,16 @@ const scriptKindOptions = [
|
|
|
186
186
|
let pathError = $state('');
|
|
187
187
|
let loadingSave = $state(false);
|
|
188
188
|
let loadingDraft = $state(false);
|
|
189
|
+
let timeout2 = undefined;
|
|
189
190
|
function encodeScriptState(script) {
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
191
|
+
untrack(() => timeout2 && clearTimeout(timeout2));
|
|
192
|
+
timeout2 = setTimeout(() => {
|
|
193
|
+
replaceStateFn('#' +
|
|
194
|
+
encodeState({
|
|
195
|
+
...script,
|
|
196
|
+
draft_triggers: structuredClone(triggersState.getDraftTriggersSnapshot())
|
|
197
|
+
}));
|
|
198
|
+
}, 500);
|
|
195
199
|
}
|
|
196
200
|
let timeout = undefined;
|
|
197
201
|
function saveSessionDraft() {
|
|
@@ -715,7 +719,8 @@ $effect(() => {
|
|
|
715
719
|
});
|
|
716
720
|
});
|
|
717
721
|
$effect(() => {
|
|
718
|
-
|
|
722
|
+
readFieldsRecursively(script);
|
|
723
|
+
!disableHistoryChange && encodeScriptState(script);
|
|
719
724
|
});
|
|
720
725
|
loadWorkerTags();
|
|
721
726
|
async function loadWorkerTags() {
|
|
@@ -7,6 +7,6 @@ declare const ScriptBuilder: import("svelte").Component<ScriptBuilderProps, {
|
|
|
7
7
|
setPrimarySchedule: (schedule: ScheduleTrigger | undefined | false) => void;
|
|
8
8
|
setDraftTriggers: (triggers: Trigger[] | undefined) => void;
|
|
9
9
|
setCode: (code: string) => void;
|
|
10
|
-
}, "template" | "initialPath" | "savedScript">;
|
|
10
|
+
}, "script" | "template" | "initialPath" | "savedScript">;
|
|
11
11
|
type ScriptBuilder = ReturnType<typeof ScriptBuilder>;
|
|
12
12
|
export default ScriptBuilder;
|