windmill-components 1.504.6 → 1.511.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/ata/index.js +1 -1
- package/package/components/AppConnectInner.svelte +184 -29
- package/package/components/ArgInput.svelte +33 -103
- package/package/components/AuthSettings.svelte +45 -1
- package/package/components/Dev.svelte +31 -24
- package/package/components/DisplayResult.svelte +53 -26
- package/package/components/DisplayResult.svelte.d.ts +1 -1
- package/package/components/DynSelect.svelte +3 -3
- package/package/components/Editor.svelte +115 -88
- package/package/components/Editor.svelte.d.ts +30 -55
- package/package/components/EditorBar.svelte +2 -2
- package/package/components/ErrorOrRecoveryHandler.svelte +73 -67
- package/package/components/ErrorOrRecoveryHandler.svelte.d.ts +8 -24
- package/package/components/FlowBuilder.svelte +11 -2
- package/package/components/FlowJobResult.svelte +12 -17
- package/package/components/FlowJobResult.svelte.d.ts +5 -18
- package/package/components/FlowPreviewContent.svelte +13 -10
- package/package/components/FlowPreviewContent.svelte.d.ts +1 -1
- package/package/components/FlowPreviewResult.svelte +14 -6
- package/package/components/FlowStatusViewer.svelte +11 -24
- package/package/components/FlowStatusViewer.svelte.d.ts +19 -18
- package/package/components/FlowStatusViewerInner.svelte +110 -131
- package/package/components/FlowStatusViewerInner.svelte.d.ts +20 -18
- package/package/components/GitDiffPreview.svelte +55 -0
- package/package/components/GitDiffPreview.svelte.d.ts +13 -0
- package/package/components/HistoricInputs.svelte +2 -2
- package/package/components/HttpAgentWorkerDrawer.svelte +1 -1
- package/package/components/InitGitRepoPopover.svelte +410 -0
- package/package/components/InitGitRepoPopover.svelte.d.ts +13 -0
- package/package/components/InstanceSetting.svelte +21 -9
- package/package/components/InstanceSettings.svelte +16 -3
- package/package/components/JobLoader.svelte +567 -0
- package/package/components/JobLoader.svelte.d.ts +53 -0
- package/package/components/JobLogs.svelte +6 -4
- package/package/components/JobLogs.svelte.d.ts +5 -18
- package/package/components/JsonEditor.svelte +11 -11
- package/package/components/JsonEditor.svelte.d.ts +14 -56
- package/package/components/Label.svelte +6 -11
- package/package/components/Label.svelte.d.ts +14 -39
- package/package/components/LightweightResourcePicker.svelte +18 -39
- package/package/components/LightweightResourcePicker.svelte.d.ts +6 -22
- package/package/components/LogViewer.svelte +35 -41
- package/package/components/LogViewer.svelte.d.ts +6 -20
- package/package/components/ModulePreviewResultViewer.svelte +3 -1
- package/package/components/ModulePreviewResultViewer.svelte.d.ts +1 -0
- package/package/components/ModuleTest.svelte +16 -11
- package/package/components/NumberTypeNarrowing.svelte +13 -16
- package/package/components/NumberTypeNarrowing.svelte.d.ts +4 -18
- package/package/components/PullGitRepoPopover.svelte +355 -0
- package/package/components/PullGitRepoPopover.svelte.d.ts +18 -0
- package/package/components/ResourceTypePicker.svelte +20 -17
- package/package/components/ResourceTypePicker.svelte.d.ts +7 -6
- package/package/components/S3FilePicker.svelte +5 -3
- package/package/components/SavedInputs.svelte +2 -2
- package/package/components/ScriptBuilder.svelte +4 -3
- package/package/components/ScriptEditor.svelte +34 -31
- package/package/components/ScriptEditor.svelte.d.ts +3 -3
- package/package/components/Section.svelte +7 -20
- package/package/components/Section.svelte.d.ts +20 -47
- package/package/components/ServiceLogsInner.svelte +2 -1
- package/package/components/ServiceLogsInner.svelte.d.ts +1 -0
- package/package/components/SimpleEditor.svelte +4 -4
- package/package/components/SimpleEditor.svelte.d.ts +1 -0
- package/package/components/SqlRepl.svelte +0 -1
- package/package/components/Subsection.svelte +10 -12
- package/package/components/Subsection.svelte.d.ts +15 -39
- package/package/components/UserSettings.svelte +1 -1
- package/package/components/WorkerGroup.svelte +260 -165
- package/package/components/WorkerGroup.svelte.d.ts +2 -0
- package/package/components/WorkerTagPicker.svelte +3 -3
- package/package/components/WorkerTagSelect.svelte +33 -4
- package/package/components/apps/components/buttons/AppButton.svelte +7 -1
- package/package/components/apps/components/buttons/AppButton.svelte.d.ts +1 -0
- package/package/components/apps/components/display/AppCustomComponent.svelte +1 -1
- package/package/components/apps/components/display/AppDisplayComponentByJobId.svelte +16 -11
- package/package/components/apps/components/display/AppJobIdLogComponent.svelte +13 -10
- package/package/components/apps/components/display/AppMenu.svelte +5 -0
- package/package/components/apps/components/display/dbtable/AppDbExplorer.svelte +3 -3
- package/package/components/apps/components/display/dbtable/DeleteRow.svelte +3 -3
- package/package/components/apps/components/display/dbtable/InsertRowRunnable.svelte +3 -3
- package/package/components/apps/components/display/dbtable/UpdateCell.svelte +3 -3
- package/package/components/apps/components/display/table/AppAggridInfiniteTable.svelte +3 -3
- package/package/components/apps/components/helpers/RunnableComponent.svelte +65 -54
- package/package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +5 -5
- package/package/components/apps/components/inputs/AppUserResource.svelte +26 -8
- package/package/components/apps/editor/AppEditorHeader.svelte +11 -5
- package/package/components/apps/editor/AppJobsDrawer.svelte +5 -5
- package/package/components/apps/editor/RunnableJobPanel.svelte +4 -4
- package/package/components/apps/editor/component/components.d.ts +12 -0
- package/package/components/apps/editor/component/components.js +19 -7
- package/package/components/assets/AssetButtons.svelte +38 -0
- package/package/components/assets/AssetButtons.svelte.d.ts +15 -0
- package/package/components/assets/AssetsDropdownButton.svelte +60 -72
- package/package/components/assets/AssetsDropdownButton.svelte.d.ts +3 -4
- package/package/components/assets/AssetsUsageDrawer.svelte +10 -10
- package/package/components/assets/JobAssetsViewer.svelte +79 -0
- package/package/components/assets/JobAssetsViewer.svelte.d.ts +7 -0
- package/package/components/assets/README_DEV.md +0 -0
- package/package/components/assets/lib.d.ts +9 -1
- package/package/components/assets/lib.js +48 -7
- package/package/components/common/fileUpload/FileUpload.svelte +126 -84
- package/package/components/common/fileUpload/FileUpload.svelte.d.ts +13 -3
- package/package/components/common/fileUpload/S3ArgInput.svelte +111 -0
- package/package/components/common/fileUpload/S3ArgInput.svelte.d.ts +21 -0
- package/package/components/common/table/ScriptRow.svelte +3 -1
- package/package/components/copilot/AIFormSettings.svelte +3 -4
- package/package/components/copilot/AIFormSettings.svelte.d.ts +5 -19
- package/package/components/copilot/autocomplete/Autocompletor.d.ts +3 -1
- package/package/components/copilot/autocomplete/Autocompletor.js +269 -35
- package/package/components/copilot/autocomplete/request.d.ts +3 -0
- package/package/components/copilot/autocomplete/request.js +15 -7
- package/package/components/copilot/chat/AIChatDisplay.svelte +8 -0
- package/package/components/copilot/chat/AIChatManager.svelte.js +13 -8
- package/package/components/copilot/chat/flow/ModuleAcceptReject.svelte +5 -5
- package/package/components/copilot/chat/flow/core.d.ts +1 -1
- package/package/components/copilot/chat/flow/core.js +2 -38
- package/package/components/copilot/chat/navigator/apiTools.d.ts +8 -0
- package/package/components/copilot/chat/navigator/apiTools.js +95 -15
- package/package/components/copilot/chat/navigator/core.d.ts +1 -1
- package/package/components/copilot/chat/navigator/core.js +2 -1
- package/package/components/copilot/chat/script/core.d.ts +11 -2
- package/package/components/copilot/chat/script/core.js +165 -23
- package/package/components/copilot/chat/shared.d.ts +10 -0
- package/package/components/copilot/chat/shared.js +56 -0
- package/package/components/copilot/lib.d.ts +1 -0
- package/package/components/copilot/lib.js +30 -9
- package/package/components/custom_ui.d.ts +1 -0
- package/package/components/flows/FlowAssetsHandler.svelte +133 -0
- package/package/components/flows/FlowAssetsHandler.svelte.d.ts +14 -0
- package/package/components/flows/content/FlowModuleCache.svelte +4 -4
- package/package/components/flows/content/FlowModuleCache.svelte.d.ts +4 -18
- package/package/components/flows/content/FlowModuleComponent.svelte +16 -19
- package/package/components/flows/content/FlowModuleDeleteAfterUse.svelte +3 -4
- package/package/components/flows/content/FlowModuleDeleteAfterUse.svelte.d.ts +4 -18
- package/package/components/flows/content/FlowModuleSleep.svelte +6 -7
- package/package/components/flows/content/FlowModuleSleep.svelte.d.ts +4 -18
- package/package/components/flows/content/FlowModuleSuspend.svelte +19 -17
- package/package/components/flows/content/FlowModuleSuspend.svelte.d.ts +4 -18
- package/package/components/flows/content/FlowModuleTimeout.svelte +4 -4
- package/package/components/flows/content/FlowModuleTimeout.svelte.d.ts +4 -18
- package/package/components/flows/flowStore.d.ts +1 -1
- package/package/components/flows/map/FlowModuleSchemaItem.svelte +1 -0
- package/package/components/flows/propPicker/OutputPicker.svelte +9 -4
- package/package/components/flows/scheduleUtils.js +1 -1
- package/package/components/flows/types.d.ts +2 -1
- package/package/components/graph/FlowGraphV2.svelte +8 -104
- package/package/components/graph/FlowGraphV2.svelte.d.ts +0 -2
- package/package/components/graph/graphBuilder.svelte.d.ts +6 -3
- package/package/components/graph/graphBuilder.svelte.js +35 -9
- package/package/components/graph/renderers/edges/BaseEdge.svelte +2 -5
- package/package/components/graph/renderers/edges/BaseEdge.svelte.d.ts +1 -0
- package/package/components/graph/renderers/nodes/AssetNode.svelte +23 -20
- package/package/components/graph/renderers/nodes/AssetNode.svelte.d.ts +5 -10
- package/package/components/graph/renderers/nodes/AssetsOverflowedNode.svelte +1 -1
- package/package/components/graph/util.js +1 -1
- package/package/components/home/ItemsList.svelte +2 -0
- package/package/components/icons/AssetGenericIcon.svelte +0 -3
- package/package/components/jobs/JobPreview.svelte +10 -6
- package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte +13 -12
- package/package/components/runs/BatchReRunOptionsPane.svelte +5 -1
- package/package/components/runs/JobPreview.svelte +26 -16
- package/package/components/runs/{JobLoader.svelte.d.ts → JobsLoader.svelte.d.ts} +3 -3
- package/package/components/runs/NoWorkerWithTagWarning.svelte +2 -2
- package/package/components/runs/NoWorkerWithTagWarning.svelte.d.ts +1 -0
- package/package/components/runs/RunsFilter.svelte.d.ts +1 -1
- package/package/components/scriptEditor/LogPanel.svelte +3 -2
- package/package/components/script_builder.d.ts +2 -2
- package/package/components/settings/CreateToken.svelte +76 -41
- package/package/components/settings/CreateToken.svelte.d.ts +1 -1
- package/package/components/settings/ScopeSelector.svelte +613 -0
- package/package/components/settings/ScopeSelector.svelte.d.ts +8 -0
- package/package/components/settings/TokenDisplay.svelte +103 -0
- package/package/components/settings/TokenDisplay.svelte.d.ts +10 -0
- package/package/components/settings/TokensTable.svelte +70 -349
- package/package/components/sidebar/CriticalAlertModal.svelte +3 -0
- package/package/components/triggers/DeleteTriggerButton.svelte +1 -1
- package/package/components/triggers/TriggerEditorToolbar.svelte +3 -3
- package/package/components/triggers/TriggerRetriesAndErrorHandler.svelte +55 -0
- package/package/components/triggers/TriggerRetriesAndErrorHandler.svelte.d.ts +13 -0
- package/package/components/triggers/TriggersEditor.svelte +45 -3
- package/package/components/triggers/TriggersWrapper.svelte +2 -2
- package/package/components/triggers/gcp/GcpTriggerEditorInner.svelte +47 -6
- package/package/components/triggers/gcp/utils.js +9 -1
- package/package/components/triggers/http/OpenAPISpecGenerator.svelte +3 -2
- package/package/components/triggers/http/RouteEditorConfigSection.svelte +26 -23
- package/package/components/triggers/http/RouteEditorConfigSection.svelte.d.ts +5 -19
- package/package/components/triggers/http/RouteEditorInner.svelte +219 -175
- package/package/components/triggers/http/RouteEditorInner.svelte.d.ts +6 -2
- package/package/components/triggers/http/utils.js +9 -3
- package/package/components/triggers/kafka/KafkaTriggerEditorInner.svelte +47 -6
- package/package/components/triggers/kafka/utils.js +9 -1
- package/package/components/triggers/mqtt/MqttEditorConfigSection.svelte +4 -132
- package/package/components/triggers/mqtt/MqttEditorConfigSection.svelte.d.ts +2 -5
- package/package/components/triggers/mqtt/MqttTriggerEditorInner.svelte +182 -13
- package/package/components/triggers/mqtt/utils.js +9 -1
- package/package/components/triggers/nats/NatsTriggerEditorInner.svelte +47 -6
- package/package/components/triggers/nats/utils.js +9 -1
- package/package/components/triggers/postgres/PostgresTriggerEditorInner.svelte +41 -2
- package/package/components/triggers/postgres/utils.js +9 -1
- package/package/components/triggers/schedules/ScheduleEditorInner.svelte +38 -92
- package/package/components/triggers/sqs/SqsTriggerEditorInner.svelte +47 -6
- package/package/components/triggers/sqs/utils.js +9 -1
- package/package/components/triggers/utils.js +12 -0
- package/package/components/triggers/websocket/WebsocketTriggerEditorInner.svelte +47 -6
- package/package/components/triggers/websocket/utils.js +11 -1
- package/package/components/workspaceSettings/AISettings.svelte +0 -2
- package/package/components/workspaceSettings/FilterList.svelte +56 -0
- package/package/components/workspaceSettings/FilterList.svelte.d.ts +8 -0
- package/package/components/workspaceSettings/GitSyncFilterSettings.svelte +785 -0
- package/package/components/workspaceSettings/GitSyncFilterSettings.svelte.d.ts +18 -0
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +305 -23
- package/package/gen/schemas.gen.js +305 -23
- package/package/gen/services.gen.d.ts +33 -1
- package/package/gen/services.gen.js +66 -2
- package/package/gen/types.gen.d.ts +216 -11
- package/package/history.svelte.js +0 -2
- package/package/hub.d.ts +1 -0
- package/package/hubPaths.json +5 -2
- package/package/infer.js +16 -10
- package/package/svelte5Utils.svelte.d.ts +1 -0
- package/package/svelte5Utils.svelte.js +25 -18
- package/package/toast.js +10 -0
- package/package/utils.d.ts +3 -2
- package/package/utils.js +20 -5
- package/package.json +11 -11
- package/package/components/ResultJobLoader.svelte +0 -219
- package/package/components/ResultJobLoader.svelte.d.ts +0 -52
- package/package/components/TestJobLoader.svelte +0 -274
- package/package/components/TestJobLoader.svelte.d.ts +0 -43
- package/package/components/icons/AssetVarIcon.svelte +0 -31
- package/package/components/icons/AssetVarIcon.svelte.d.ts +0 -9
- /package/package/components/runs/{JobLoader.svelte → JobsLoader.svelte} +0 -0
package/package/toast.js
CHANGED
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
import Toast from './components/Toast.svelte';
|
|
2
2
|
import { toast } from '@zerodevx/svelte-toast';
|
|
3
3
|
export function sendUserToast(message, error = false, actions = [], errorMessage = undefined, duration = 5000) {
|
|
4
|
+
if (globalThis.windmillToast) {
|
|
5
|
+
globalThis.windmillToast({
|
|
6
|
+
message,
|
|
7
|
+
error,
|
|
8
|
+
actions,
|
|
9
|
+
errorMessage,
|
|
10
|
+
duration
|
|
11
|
+
});
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
4
14
|
toast.push({
|
|
5
15
|
component: {
|
|
6
16
|
// https://github.com/zerodevx/svelte-toast/issues/115
|
package/package/utils.d.ts
CHANGED
|
@@ -32,12 +32,11 @@ export declare namespace OpenApi {
|
|
|
32
32
|
export declare function isJobCancelable(j: Job): boolean;
|
|
33
33
|
export declare function isJobReRunnable(j: Job): boolean;
|
|
34
34
|
export declare const WORKER_NAME_PREFIX = "wk";
|
|
35
|
-
export declare const AGENT_WORKER_NAME_PREFIX = "ag";
|
|
36
|
-
export declare function isAgentWorkerShell(workerName: string): boolean;
|
|
37
35
|
export declare function isJobSelectable(selectionType: RunsSelectionMode): (j: Job) => boolean;
|
|
38
36
|
export declare function validateUsername(username: string): string;
|
|
39
37
|
export declare function parseQueryParams(url: string | undefined): Record<string, string>;
|
|
40
38
|
export declare function displayDateOnly(dateString: string | Date | undefined): string;
|
|
39
|
+
export declare function retrieveCommonWorkerPrefix(workerName: string): string;
|
|
41
40
|
export declare function subtractDaysFromDateString(dateString: string | undefined, days: number): string | undefined;
|
|
42
41
|
export declare function displayDate(dateString: string | Date | undefined, displaySecond?: boolean, displayDate?: boolean): string;
|
|
43
42
|
export declare function displayTime(dateString: string | Date | undefined): string;
|
|
@@ -209,3 +208,5 @@ export declare function parseS3Object(s3Object: S3Object): {
|
|
|
209
208
|
};
|
|
210
209
|
export declare function formatS3Object(s3Object: S3Object): S3Uri;
|
|
211
210
|
export declare function isS3Uri(uri: string): uri is S3Uri;
|
|
211
|
+
export declare function uniqueBy<T>(array: T[], key: (t: T) => any): T[];
|
|
212
|
+
export declare function pruneNullishArrayWithSet<T>(array: (T | null | undefined)[]): T[];
|
package/package/utils.js
CHANGED
|
@@ -75,11 +75,6 @@ export function isJobReRunnable(j) {
|
|
|
75
75
|
return (j.job_kind === 'script' || j.job_kind === 'flow') && j.parent_job === undefined;
|
|
76
76
|
}
|
|
77
77
|
export const WORKER_NAME_PREFIX = 'wk';
|
|
78
|
-
export const AGENT_WORKER_NAME_PREFIX = 'ag';
|
|
79
|
-
const SSH_AGENT_WORKER_SUFFIX = '/ssh';
|
|
80
|
-
export function isAgentWorkerShell(workerName) {
|
|
81
|
-
return (workerName.startsWith(AGENT_WORKER_NAME_PREFIX) && workerName.endsWith(SSH_AGENT_WORKER_SUFFIX));
|
|
82
|
-
}
|
|
83
78
|
export function isJobSelectable(selectionType) {
|
|
84
79
|
const f = {
|
|
85
80
|
cancel: isJobCancelable,
|
|
@@ -122,6 +117,10 @@ export function displayDateOnly(dateString) {
|
|
|
122
117
|
});
|
|
123
118
|
}
|
|
124
119
|
}
|
|
120
|
+
export function retrieveCommonWorkerPrefix(workerName) {
|
|
121
|
+
const lastDashIndex = workerName.lastIndexOf('-');
|
|
122
|
+
return workerName.substring(0, lastDashIndex);
|
|
123
|
+
}
|
|
125
124
|
export function subtractDaysFromDateString(dateString, days) {
|
|
126
125
|
if (dateString == undefined) {
|
|
127
126
|
return undefined;
|
|
@@ -1224,3 +1223,19 @@ export function isS3Uri(uri) {
|
|
|
1224
1223
|
const match = uri.match(/^s3:\/\/([^/]*)\/(.*)$/);
|
|
1225
1224
|
return !!match && match.length === 3;
|
|
1226
1225
|
}
|
|
1226
|
+
export function uniqueBy(array, key) {
|
|
1227
|
+
const seen = new Set();
|
|
1228
|
+
return array.filter((item) => {
|
|
1229
|
+
const value = key(item);
|
|
1230
|
+
if (seen.has(value)) {
|
|
1231
|
+
return false;
|
|
1232
|
+
}
|
|
1233
|
+
else {
|
|
1234
|
+
seen.add(value);
|
|
1235
|
+
return true;
|
|
1236
|
+
}
|
|
1237
|
+
});
|
|
1238
|
+
}
|
|
1239
|
+
export function pruneNullishArrayWithSet(array) {
|
|
1240
|
+
return array.filter((item) => item !== null && item !== undefined);
|
|
1241
|
+
}
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "windmill-components",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.511.0",
|
|
4
4
|
"scripts": {
|
|
5
5
|
"dev": "vite dev",
|
|
6
6
|
"build": "vite build",
|
|
7
7
|
"preview": "vite preview",
|
|
8
|
-
"postinstall": "
|
|
8
|
+
"postinstall": "node -e \"if (require('fs').existsSync('./scripts/untar_ui_builder.js')) { require('child_process').execSync('node ./scripts/untar_ui_builder.js && node ./scripts/patch_files.js', {stdio: 'inherit'}) }\"",
|
|
9
9
|
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --threshold warning",
|
|
10
10
|
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
|
|
11
11
|
"lint": "prettier --ignore-path .gitignore --check --plugin-search-dir=. . && eslint --ignore-path .gitignore .",
|
|
@@ -146,10 +146,10 @@
|
|
|
146
146
|
"windmill-parser-wasm-java": "^1.478.1",
|
|
147
147
|
"windmill-parser-wasm-nu": "^1.474.1",
|
|
148
148
|
"windmill-parser-wasm-php": "^1.429.0",
|
|
149
|
-
"windmill-parser-wasm-py": "^1.
|
|
150
|
-
"windmill-parser-wasm-regex": "^1.
|
|
149
|
+
"windmill-parser-wasm-py": "^1.510.0",
|
|
150
|
+
"windmill-parser-wasm-regex": "^1.510.0",
|
|
151
151
|
"windmill-parser-wasm-rust": "^1.429.0",
|
|
152
|
-
"windmill-parser-wasm-ts": "^1.
|
|
152
|
+
"windmill-parser-wasm-ts": "^1.510.0",
|
|
153
153
|
"windmill-parser-wasm-yaml": "^1.429.0",
|
|
154
154
|
"windmill-sql-datatype-parser-wasm": "^1.318.0",
|
|
155
155
|
"xterm": "^5.3.0",
|
|
@@ -180,10 +180,10 @@
|
|
|
180
180
|
"types": "./package/components/scriptBuilder.d.ts",
|
|
181
181
|
"default": "./package/components/scriptBuilder.js"
|
|
182
182
|
},
|
|
183
|
-
"./components/
|
|
184
|
-
"types": "./package/components/
|
|
185
|
-
"svelte": "./package/components/
|
|
186
|
-
"default": "./package/components/
|
|
183
|
+
"./components/JobLoader.svelte": {
|
|
184
|
+
"types": "./package/components/JobLoader.svelte.d.ts",
|
|
185
|
+
"svelte": "./package/components/JobLoader.svelte",
|
|
186
|
+
"default": "./package/components/JobLoader.svelte"
|
|
187
187
|
},
|
|
188
188
|
"./components/common/kbd/Kbd.svelte": {
|
|
189
189
|
"types": "./package/components/common/kbd/Kbd.svelte.d.ts",
|
|
@@ -404,8 +404,8 @@
|
|
|
404
404
|
"components/IconedResourceType.svelte": [
|
|
405
405
|
"./package/components/IconedResourceType.svelte.d.ts"
|
|
406
406
|
],
|
|
407
|
-
"components/
|
|
408
|
-
"./package/components/
|
|
407
|
+
"components/JobLoader.svelte": [
|
|
408
|
+
"./package/components/JobLoader.svelte.d.ts"
|
|
409
409
|
],
|
|
410
410
|
"components/SchemaForm.svelte": [
|
|
411
411
|
"./package/components/SchemaForm.svelte.d.ts"
|
|
@@ -1,219 +0,0 @@
|
|
|
1
|
-
<script lang="ts">import { JobService } from '../gen';
|
|
2
|
-
import { workspaceStore } from '../stores';
|
|
3
|
-
import { onDestroy, tick, untrack } from 'svelte';
|
|
4
|
-
import { createEventDispatcher } from 'svelte';
|
|
5
|
-
let { isLoading = $bindable(false), job = $bindable(undefined), workspaceOverride = undefined, notfound = $bindable(false), isEditor = false, allowConcurentRequests = false } = $props();
|
|
6
|
-
const dispatch = createEventDispatcher();
|
|
7
|
-
let workspace = $derived(workspaceOverride ?? $workspaceStore);
|
|
8
|
-
let syncIteration = 0;
|
|
9
|
-
let errorIteration = 0;
|
|
10
|
-
let ITERATIONS_BEFORE_SLOW_REFRESH = 10;
|
|
11
|
-
let ITERATIONS_BEFORE_SUPER_SLOW_REFRESH = 100;
|
|
12
|
-
let lastStartedAt = Date.now();
|
|
13
|
-
let currentId = $state(undefined);
|
|
14
|
-
$effect(() => {
|
|
15
|
-
let newIsLoading = currentId !== undefined;
|
|
16
|
-
untrack(() => {
|
|
17
|
-
if (isLoading !== newIsLoading) {
|
|
18
|
-
isLoading = newIsLoading;
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
});
|
|
22
|
-
let running = false;
|
|
23
|
-
let lastCallbacks = undefined;
|
|
24
|
-
let finished = [];
|
|
25
|
-
export async function abstractRun(fn, callbacks) {
|
|
26
|
-
try {
|
|
27
|
-
running = false;
|
|
28
|
-
isLoading = true;
|
|
29
|
-
clearCurrentJob();
|
|
30
|
-
const startedAt = Date.now();
|
|
31
|
-
const testId = await fn();
|
|
32
|
-
lastCallbacks = callbacks;
|
|
33
|
-
if (lastStartedAt < startedAt || allowConcurentRequests) {
|
|
34
|
-
lastStartedAt = startedAt;
|
|
35
|
-
if (testId) {
|
|
36
|
-
dispatch('started', testId);
|
|
37
|
-
try {
|
|
38
|
-
await watchJob(testId, callbacks);
|
|
39
|
-
}
|
|
40
|
-
catch (e) {
|
|
41
|
-
callbacks?.cancel();
|
|
42
|
-
dispatch('cancel', testId);
|
|
43
|
-
if (currentId === testId) {
|
|
44
|
-
currentId = undefined;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
return testId;
|
|
50
|
-
}
|
|
51
|
-
catch (err) {
|
|
52
|
-
callbacks?.error(err);
|
|
53
|
-
// if error happens on submitting the job, reset UI state so the user can try again
|
|
54
|
-
isLoading = false;
|
|
55
|
-
currentId = undefined;
|
|
56
|
-
job = undefined;
|
|
57
|
-
throw err;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
export async function runScriptByPath(path, args, callbacks) {
|
|
61
|
-
return abstractRun(() => JobService.runScriptByPath({
|
|
62
|
-
workspace: workspace,
|
|
63
|
-
path: path,
|
|
64
|
-
requestBody: args,
|
|
65
|
-
skipPreprocessor: true
|
|
66
|
-
}), callbacks);
|
|
67
|
-
}
|
|
68
|
-
export async function runScriptByHash(hash, args, callbacks) {
|
|
69
|
-
return abstractRun(() => JobService.runScriptByHash({
|
|
70
|
-
workspace: workspace,
|
|
71
|
-
hash: hash,
|
|
72
|
-
requestBody: args,
|
|
73
|
-
skipPreprocessor: true
|
|
74
|
-
}), callbacks);
|
|
75
|
-
}
|
|
76
|
-
export async function runFlowByPath(path, args, callbacks) {
|
|
77
|
-
return abstractRun(() => JobService.runFlowByPath({
|
|
78
|
-
workspace: workspace,
|
|
79
|
-
path: path ?? '',
|
|
80
|
-
requestBody: args,
|
|
81
|
-
skipPreprocessor: true
|
|
82
|
-
}), callbacks);
|
|
83
|
-
}
|
|
84
|
-
export async function runPreview(path, code, lang, args, tag, callbacks) {
|
|
85
|
-
return abstractRun(() => JobService.runScriptPreview({
|
|
86
|
-
workspace: workspace,
|
|
87
|
-
requestBody: {
|
|
88
|
-
path,
|
|
89
|
-
content: code,
|
|
90
|
-
args,
|
|
91
|
-
language: lang,
|
|
92
|
-
tag
|
|
93
|
-
}
|
|
94
|
-
}), callbacks);
|
|
95
|
-
}
|
|
96
|
-
export async function cancelJob() {
|
|
97
|
-
const id = currentId;
|
|
98
|
-
if (id) {
|
|
99
|
-
lastCallbacks?.cancel();
|
|
100
|
-
lastCallbacks = undefined;
|
|
101
|
-
dispatch('cancel', id);
|
|
102
|
-
currentId = undefined;
|
|
103
|
-
try {
|
|
104
|
-
await JobService.cancelQueuedJob({
|
|
105
|
-
workspace: workspace ?? '',
|
|
106
|
-
id,
|
|
107
|
-
requestBody: {}
|
|
108
|
-
});
|
|
109
|
-
}
|
|
110
|
-
catch (err) {
|
|
111
|
-
console.error(err);
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
export async function clearCurrentJob() {
|
|
116
|
-
if (currentId && !allowConcurentRequests) {
|
|
117
|
-
lastCallbacks?.cancel();
|
|
118
|
-
dispatch('cancel', currentId);
|
|
119
|
-
lastCallbacks = undefined;
|
|
120
|
-
job = undefined;
|
|
121
|
-
await cancelJob();
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
export async function watchJob(testId, callbacks) {
|
|
125
|
-
syncIteration = 0;
|
|
126
|
-
errorIteration = 0;
|
|
127
|
-
currentId = testId;
|
|
128
|
-
job = undefined;
|
|
129
|
-
const isCompleted = await loadTestJob(testId, callbacks);
|
|
130
|
-
if (!isCompleted) {
|
|
131
|
-
setTimeout(() => {
|
|
132
|
-
syncer(testId, callbacks);
|
|
133
|
-
}, 50);
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
async function loadTestJob(id, callbacks) {
|
|
137
|
-
let isCompleted = false;
|
|
138
|
-
if (currentId === id || allowConcurentRequests) {
|
|
139
|
-
try {
|
|
140
|
-
let maybe_job = await JobService.getCompletedJobResultMaybe({
|
|
141
|
-
workspace: workspace ?? '',
|
|
142
|
-
id,
|
|
143
|
-
getStarted: isEditor
|
|
144
|
-
});
|
|
145
|
-
if (maybe_job.started && !running) {
|
|
146
|
-
running = true;
|
|
147
|
-
dispatch('running', id);
|
|
148
|
-
}
|
|
149
|
-
if (maybe_job.completed) {
|
|
150
|
-
isCompleted = true;
|
|
151
|
-
if (currentId === id || allowConcurentRequests) {
|
|
152
|
-
job = { ...maybe_job, id };
|
|
153
|
-
await tick();
|
|
154
|
-
if (!job?.success && typeof job?.result == 'object' && 'error' in (job?.result ?? {})) {
|
|
155
|
-
callbacks?.error(job.result.error);
|
|
156
|
-
dispatch('doneError', {
|
|
157
|
-
id,
|
|
158
|
-
error: job.result.error
|
|
159
|
-
});
|
|
160
|
-
}
|
|
161
|
-
else {
|
|
162
|
-
callbacks?.done(job.result);
|
|
163
|
-
dispatch('done', job);
|
|
164
|
-
}
|
|
165
|
-
finished.push(id);
|
|
166
|
-
if (!allowConcurentRequests) {
|
|
167
|
-
currentId = undefined;
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
else {
|
|
171
|
-
callbacks?.cancel();
|
|
172
|
-
dispatch('cancel', id);
|
|
173
|
-
}
|
|
174
|
-
}
|
|
175
|
-
notfound = false;
|
|
176
|
-
}
|
|
177
|
-
catch (err) {
|
|
178
|
-
errorIteration += 1;
|
|
179
|
-
if (errorIteration == 5) {
|
|
180
|
-
notfound = true;
|
|
181
|
-
await clearCurrentJob();
|
|
182
|
-
dispatch('doneError', err);
|
|
183
|
-
}
|
|
184
|
-
console.warn(err);
|
|
185
|
-
}
|
|
186
|
-
return isCompleted;
|
|
187
|
-
}
|
|
188
|
-
else {
|
|
189
|
-
callbacks?.cancel();
|
|
190
|
-
dispatch('cancel', id);
|
|
191
|
-
return true;
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
async function syncer(id, callbacks) {
|
|
195
|
-
if ((currentId != id && !allowConcurentRequests) || finished.includes(id)) {
|
|
196
|
-
callbacks?.cancel();
|
|
197
|
-
dispatch('cancel', id);
|
|
198
|
-
return;
|
|
199
|
-
}
|
|
200
|
-
syncIteration++;
|
|
201
|
-
let r = await loadTestJob(id, callbacks);
|
|
202
|
-
if (r) {
|
|
203
|
-
return;
|
|
204
|
-
}
|
|
205
|
-
let nextIteration = 50;
|
|
206
|
-
if (syncIteration > ITERATIONS_BEFORE_SLOW_REFRESH) {
|
|
207
|
-
nextIteration = 500;
|
|
208
|
-
}
|
|
209
|
-
else if (syncIteration > ITERATIONS_BEFORE_SUPER_SLOW_REFRESH) {
|
|
210
|
-
nextIteration = 2000;
|
|
211
|
-
}
|
|
212
|
-
setTimeout(() => {
|
|
213
|
-
syncer(id, callbacks);
|
|
214
|
-
}, nextIteration);
|
|
215
|
-
}
|
|
216
|
-
onDestroy(async () => {
|
|
217
|
-
currentId = undefined;
|
|
218
|
-
});
|
|
219
|
-
</script>
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import type { SupportedLanguage } from '../common';
|
|
2
|
-
interface Props {
|
|
3
|
-
isLoading?: boolean;
|
|
4
|
-
job?: {
|
|
5
|
-
completed: boolean;
|
|
6
|
-
result: any;
|
|
7
|
-
id: string;
|
|
8
|
-
success?: boolean;
|
|
9
|
-
} | undefined;
|
|
10
|
-
workspaceOverride?: string | undefined;
|
|
11
|
-
notfound?: boolean;
|
|
12
|
-
isEditor?: boolean;
|
|
13
|
-
allowConcurentRequests?: boolean;
|
|
14
|
-
}
|
|
15
|
-
type Callbacks = {
|
|
16
|
-
done: (x: any) => void;
|
|
17
|
-
cancel: () => void;
|
|
18
|
-
error: (err: Error) => void;
|
|
19
|
-
};
|
|
20
|
-
interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
|
|
21
|
-
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
22
|
-
$$bindings?: Bindings;
|
|
23
|
-
} & Exports;
|
|
24
|
-
(internal: unknown, props: Props & {
|
|
25
|
-
$$events?: Events;
|
|
26
|
-
$$slots?: Slots;
|
|
27
|
-
}): Exports & {
|
|
28
|
-
$set?: any;
|
|
29
|
-
$on?: any;
|
|
30
|
-
};
|
|
31
|
-
z_$$bindings?: Bindings;
|
|
32
|
-
}
|
|
33
|
-
declare const ResultJobLoader: $$__sveltets_2_IsomorphicComponent<Props, {
|
|
34
|
-
started: CustomEvent<any>;
|
|
35
|
-
cancel: CustomEvent<any>;
|
|
36
|
-
running: CustomEvent<any>;
|
|
37
|
-
doneError: CustomEvent<any>;
|
|
38
|
-
done: CustomEvent<any>;
|
|
39
|
-
} & {
|
|
40
|
-
[evt: string]: CustomEvent<any>;
|
|
41
|
-
}, {}, {
|
|
42
|
-
abstractRun: (fn: () => Promise<string>, callbacks?: Callbacks) => Promise<string>;
|
|
43
|
-
runScriptByPath: (path: string, args: Record<string, any>, callbacks?: Callbacks) => Promise<string>;
|
|
44
|
-
runScriptByHash: (hash: string, args: Record<string, any>, callbacks?: Callbacks) => Promise<string>;
|
|
45
|
-
runFlowByPath: (path: string | undefined, args: Record<string, any>, callbacks?: Callbacks) => Promise<string>;
|
|
46
|
-
runPreview: (path: string | undefined, code: string, lang: SupportedLanguage, args: Record<string, any>, tag: string | undefined, callbacks?: Callbacks) => Promise<string>;
|
|
47
|
-
cancelJob: () => Promise<void>;
|
|
48
|
-
clearCurrentJob: () => Promise<void>;
|
|
49
|
-
watchJob: (testId: string, callbacks?: Callbacks) => Promise<void>;
|
|
50
|
-
}, "job" | "isLoading" | "notfound">;
|
|
51
|
-
type ResultJobLoader = InstanceType<typeof ResultJobLoader>;
|
|
52
|
-
export default ResultJobLoader;
|
|
@@ -1,274 +0,0 @@
|
|
|
1
|
-
<script lang="ts">import { JobService } from '../gen';
|
|
2
|
-
import { workspaceStore } from '../stores';
|
|
3
|
-
import { onDestroy, tick, untrack } from 'svelte';
|
|
4
|
-
import { createEventDispatcher } from 'svelte';
|
|
5
|
-
import { sendUserToast } from '../toast';
|
|
6
|
-
import { isScriptPreview } from '../utils';
|
|
7
|
-
let { isLoading = $bindable(false), job = $bindable(undefined), workspaceOverride = undefined, notfound = $bindable(false), jobUpdateLastFetch = $bindable(undefined), toastError = false, lazyLogs = false, scriptProgress = $bindable(undefined), children } = $props();
|
|
8
|
-
/// Last time asked for job progress
|
|
9
|
-
let lastTimeCheckedProgress = undefined;
|
|
10
|
-
/// Will try to poll progress every 5s and if once progress returned was not undefined, will be ignored
|
|
11
|
-
/// and getProgressRate will be used instead
|
|
12
|
-
const getProgressRetryRate = 5000;
|
|
13
|
-
/// How often loader poll progress
|
|
14
|
-
const getProgressRate = 1000;
|
|
15
|
-
const dispatch = createEventDispatcher();
|
|
16
|
-
let workspace = $derived(workspaceOverride ?? $workspaceStore);
|
|
17
|
-
let syncIteration = 0;
|
|
18
|
-
let errorIteration = 0;
|
|
19
|
-
let logOffset = 0;
|
|
20
|
-
let ITERATIONS_BEFORE_SLOW_REFRESH = 10;
|
|
21
|
-
let ITERATIONS_BEFORE_SUPER_SLOW_REFRESH = 100;
|
|
22
|
-
let lastStartedAt = Date.now();
|
|
23
|
-
let currentId = $state(undefined);
|
|
24
|
-
$effect(() => {
|
|
25
|
-
let newIsLoading = currentId !== undefined;
|
|
26
|
-
untrack(() => {
|
|
27
|
-
if (isLoading !== newIsLoading) {
|
|
28
|
-
isLoading = newIsLoading;
|
|
29
|
-
}
|
|
30
|
-
});
|
|
31
|
-
});
|
|
32
|
-
export async function abstractRun(fn) {
|
|
33
|
-
try {
|
|
34
|
-
isLoading = true;
|
|
35
|
-
clearCurrentJob();
|
|
36
|
-
const startedAt = Date.now();
|
|
37
|
-
const testId = await fn();
|
|
38
|
-
if (lastStartedAt < startedAt) {
|
|
39
|
-
lastStartedAt = startedAt;
|
|
40
|
-
if (testId) {
|
|
41
|
-
try {
|
|
42
|
-
await watchJob(testId);
|
|
43
|
-
}
|
|
44
|
-
catch {
|
|
45
|
-
if (currentId === testId) {
|
|
46
|
-
currentId = undefined;
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
return testId;
|
|
52
|
-
}
|
|
53
|
-
catch (err) {
|
|
54
|
-
if (toastError) {
|
|
55
|
-
sendUserToast(err.body, true);
|
|
56
|
-
}
|
|
57
|
-
// if error happens on submitting the job, reset UI state so the user can try again
|
|
58
|
-
isLoading = false;
|
|
59
|
-
currentId = undefined;
|
|
60
|
-
job = undefined;
|
|
61
|
-
throw err;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
export async function runScriptByPath(path, args) {
|
|
65
|
-
return abstractRun(() => JobService.runScriptByPath({
|
|
66
|
-
workspace: $workspaceStore,
|
|
67
|
-
path: path ?? '',
|
|
68
|
-
requestBody: args,
|
|
69
|
-
skipPreprocessor: true
|
|
70
|
-
}));
|
|
71
|
-
}
|
|
72
|
-
export async function runFlowByPath(path, args) {
|
|
73
|
-
return abstractRun(() => JobService.runFlowByPath({
|
|
74
|
-
workspace: $workspaceStore,
|
|
75
|
-
path: path ?? '',
|
|
76
|
-
requestBody: args,
|
|
77
|
-
skipPreprocessor: true
|
|
78
|
-
}));
|
|
79
|
-
}
|
|
80
|
-
export async function getLogs() {
|
|
81
|
-
if (job) {
|
|
82
|
-
const getUpdate = await JobService.getJobUpdates({
|
|
83
|
-
workspace: workspace,
|
|
84
|
-
id: job.id,
|
|
85
|
-
running: `running` in job && job.running,
|
|
86
|
-
logOffset: job.logs?.length ?? 0
|
|
87
|
-
});
|
|
88
|
-
if ((job?.logs ?? '').length == 0) {
|
|
89
|
-
job.logs = getUpdate.new_logs ?? '';
|
|
90
|
-
logOffset = getUpdate.log_offset ?? 0;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
export async function runPreview(path, code, lang, args, tag, lock, hash) {
|
|
95
|
-
// Reset in case we rerun job without reloading
|
|
96
|
-
scriptProgress = undefined;
|
|
97
|
-
lastTimeCheckedProgress = undefined;
|
|
98
|
-
return abstractRun(() => JobService.runScriptPreview({
|
|
99
|
-
workspace: $workspaceStore,
|
|
100
|
-
requestBody: {
|
|
101
|
-
path,
|
|
102
|
-
content: code,
|
|
103
|
-
args,
|
|
104
|
-
language: lang,
|
|
105
|
-
tag,
|
|
106
|
-
lock,
|
|
107
|
-
script_hash: hash
|
|
108
|
-
}
|
|
109
|
-
}));
|
|
110
|
-
}
|
|
111
|
-
export async function cancelJob() {
|
|
112
|
-
const id = currentId;
|
|
113
|
-
if (id) {
|
|
114
|
-
dispatch('cancel', id);
|
|
115
|
-
currentId = undefined;
|
|
116
|
-
try {
|
|
117
|
-
await JobService.cancelQueuedJob({
|
|
118
|
-
workspace: $workspaceStore ?? '',
|
|
119
|
-
id,
|
|
120
|
-
requestBody: {}
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
catch (err) {
|
|
124
|
-
console.error(err);
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
export async function clearCurrentJob() {
|
|
129
|
-
if (currentId) {
|
|
130
|
-
job = undefined;
|
|
131
|
-
await cancelJob();
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
export async function watchJob(testId) {
|
|
135
|
-
logOffset = 0;
|
|
136
|
-
syncIteration = 0;
|
|
137
|
-
errorIteration = 0;
|
|
138
|
-
currentId = testId;
|
|
139
|
-
job = undefined;
|
|
140
|
-
const isCompleted = await loadTestJob(testId);
|
|
141
|
-
if (!isCompleted) {
|
|
142
|
-
setTimeout(() => {
|
|
143
|
-
syncer(testId);
|
|
144
|
-
}, 50);
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
async function loadTestJob(id) {
|
|
148
|
-
let isCompleted = false;
|
|
149
|
-
if (currentId === id) {
|
|
150
|
-
try {
|
|
151
|
-
if (job && `running` in job) {
|
|
152
|
-
let getProgress = undefined;
|
|
153
|
-
// We only pull individual job progress this way
|
|
154
|
-
// Flow's progress we are getting from FlowStatusModule of flow job
|
|
155
|
-
if (job.job_kind == 'script' || isScriptPreview(job.job_kind)) {
|
|
156
|
-
// First time, before running job, lastTimeCheckedProgress is always undefined
|
|
157
|
-
if (lastTimeCheckedProgress) {
|
|
158
|
-
const lastTimeCheckedMs = Date.now() - lastTimeCheckedProgress;
|
|
159
|
-
// Ask for progress if the last time we asked is >5s OR the progress was once not undefined
|
|
160
|
-
if (lastTimeCheckedMs > getProgressRetryRate ||
|
|
161
|
-
(scriptProgress != undefined && lastTimeCheckedMs > getProgressRate)) {
|
|
162
|
-
lastTimeCheckedProgress = Date.now();
|
|
163
|
-
getProgress = true;
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
else {
|
|
167
|
-
// Make it think we asked for progress, but in reality we didnt. First 5s we want to wait without putting extra work on db
|
|
168
|
-
// 99.99% of the jobs won't have progress be set so we have to do a balance between having low-latency for jobs that use it and job that don't
|
|
169
|
-
// we would usually not care to have progress the first 5s and jobs that are less than 5s
|
|
170
|
-
lastTimeCheckedProgress = Date.now();
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
const offset = logOffset == 0 ? (job.logs?.length ? job.logs?.length + 1 : 0) : logOffset;
|
|
174
|
-
let previewJobUpdates = await JobService.getJobUpdates({
|
|
175
|
-
workspace: workspace,
|
|
176
|
-
id,
|
|
177
|
-
running: job.running,
|
|
178
|
-
logOffset: offset,
|
|
179
|
-
getProgress: getProgress
|
|
180
|
-
});
|
|
181
|
-
// Clamp number between two values with the following line:
|
|
182
|
-
const clamp = (num, min, max) => Math.min(Math.max(num, min), max);
|
|
183
|
-
if (previewJobUpdates.progress) {
|
|
184
|
-
// Progress cannot go back and cannot be set to 100
|
|
185
|
-
scriptProgress = clamp(previewJobUpdates.progress, scriptProgress ?? 0, 99);
|
|
186
|
-
}
|
|
187
|
-
if (previewJobUpdates.new_logs) {
|
|
188
|
-
if (offset == 0) {
|
|
189
|
-
job.logs = previewJobUpdates.new_logs ?? '';
|
|
190
|
-
}
|
|
191
|
-
else {
|
|
192
|
-
job.logs = (job?.logs ?? '').concat(previewJobUpdates.new_logs);
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
if (previewJobUpdates.log_offset) {
|
|
196
|
-
logOffset = previewJobUpdates.log_offset ?? 0;
|
|
197
|
-
}
|
|
198
|
-
if (previewJobUpdates.flow_status) {
|
|
199
|
-
job.flow_status = previewJobUpdates.flow_status;
|
|
200
|
-
}
|
|
201
|
-
if (previewJobUpdates.mem_peak && job) {
|
|
202
|
-
job.mem_peak = previewJobUpdates.mem_peak;
|
|
203
|
-
}
|
|
204
|
-
if ((previewJobUpdates.running ?? false) || (previewJobUpdates.completed ?? false)) {
|
|
205
|
-
job = await JobService.getJob({ workspace: workspace, id });
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
else {
|
|
209
|
-
job = await JobService.getJob({ workspace: workspace, id, noLogs: lazyLogs });
|
|
210
|
-
}
|
|
211
|
-
jobUpdateLastFetch = new Date();
|
|
212
|
-
if (job?.type === 'CompletedJob') {
|
|
213
|
-
//only CompletedJob has success property
|
|
214
|
-
isCompleted = true;
|
|
215
|
-
if (currentId === id) {
|
|
216
|
-
await tick();
|
|
217
|
-
dispatch('done', job);
|
|
218
|
-
currentId = undefined;
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
notfound = false;
|
|
222
|
-
}
|
|
223
|
-
catch (err) {
|
|
224
|
-
errorIteration += 1;
|
|
225
|
-
if (errorIteration == 5) {
|
|
226
|
-
notfound = true;
|
|
227
|
-
job = undefined;
|
|
228
|
-
}
|
|
229
|
-
console.warn(err);
|
|
230
|
-
}
|
|
231
|
-
return isCompleted;
|
|
232
|
-
}
|
|
233
|
-
else {
|
|
234
|
-
return true;
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
async function syncer(id) {
|
|
238
|
-
if (currentId != id) {
|
|
239
|
-
dispatch('cancel', id);
|
|
240
|
-
return;
|
|
241
|
-
}
|
|
242
|
-
syncIteration++;
|
|
243
|
-
if (await loadTestJob(id)) {
|
|
244
|
-
return;
|
|
245
|
-
}
|
|
246
|
-
let nextIteration = 50;
|
|
247
|
-
if (syncIteration > ITERATIONS_BEFORE_SLOW_REFRESH) {
|
|
248
|
-
nextIteration = 500;
|
|
249
|
-
}
|
|
250
|
-
else if (syncIteration > ITERATIONS_BEFORE_SUPER_SLOW_REFRESH) {
|
|
251
|
-
nextIteration = 2000;
|
|
252
|
-
}
|
|
253
|
-
setTimeout(() => syncer(id), nextIteration);
|
|
254
|
-
}
|
|
255
|
-
onDestroy(async () => {
|
|
256
|
-
currentId = undefined;
|
|
257
|
-
});
|
|
258
|
-
</script>
|
|
259
|
-
|
|
260
|
-
{@render children?.({
|
|
261
|
-
job,
|
|
262
|
-
isLoading,
|
|
263
|
-
workspaceOverride,
|
|
264
|
-
notfound,
|
|
265
|
-
abstractRun,
|
|
266
|
-
runScriptByPath,
|
|
267
|
-
runFlowByPath,
|
|
268
|
-
runPreview,
|
|
269
|
-
cancelJob,
|
|
270
|
-
clearCurrentJob,
|
|
271
|
-
watchJob,
|
|
272
|
-
loadTestJob,
|
|
273
|
-
syncer
|
|
274
|
-
})}
|