windmill-components 1.687.0 → 1.695.1
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/ArgInput.svelte +2 -0
- package/package/components/AutoscalingConfigEditor.svelte +18 -4
- package/package/components/CompareWorkspaces.svelte +206 -157
- package/package/components/DatatableSchemaDiff.svelte +2 -2
- package/package/components/Dev.svelte +401 -85
- package/package/components/EditableSchemaForm.svelte +4 -0
- package/package/components/ErrorOrRecoveryHandler.svelte +2 -2
- package/package/components/FlowPreviewContent.svelte +32 -30
- package/package/components/FlowRestartButton.svelte +143 -61
- package/package/components/FlowRestartButton.svelte.d.ts +37 -0
- package/package/components/FlowStatusViewer.svelte +15 -1
- package/package/components/FlowStatusViewer.svelte.d.ts +10 -2
- package/package/components/FlowStatusViewerInner.svelte +1 -2
- package/package/components/FlowStatusViewerInner.svelte.d.ts +6 -2
- package/package/components/ForkConflictModal.svelte +57 -0
- package/package/components/ForkConflictModal.svelte.d.ts +3 -0
- package/package/components/GitRepoViewer.svelte +251 -97
- package/package/components/InputTransformSchemaForm.svelte +1 -1
- package/package/components/InstanceSettings.svelte +36 -16
- package/package/components/Login.svelte +113 -28
- package/package/components/Login.svelte.d.ts +1 -0
- package/package/components/Path.svelte +7 -1
- package/package/components/Path.svelte.d.ts +1 -1
- package/package/components/RunsPage.svelte +2 -1
- package/package/components/S3FilePickerInner.svelte +89 -89
- package/package/components/ScriptEditor.svelte +18 -5
- package/package/components/ShareModal.svelte.d.ts +1 -1
- package/package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +3 -0
- package/package/components/apps/components/helpers/executeRunnable.js +2 -1
- package/package/components/apps/editor/AppReportsDrawerInner.svelte +1 -1
- package/package/components/apps/editor/appPolicy.js +2 -1
- package/package/components/apps/editor/commonAppUtils.d.ts +3 -0
- package/package/components/apps/editor/inlineScriptsPanel/CacheTtlPopup.svelte +1 -1
- package/package/components/apps/editor/inlineScriptsPanel/InlineScriptEditor.svelte +7 -0
- package/package/components/apps/editor/inlineScriptsPanel/TagPopup.svelte +49 -0
- package/package/components/apps/editor/inlineScriptsPanel/TagPopup.svelte.d.ts +9 -0
- package/package/components/apps/inputType.d.ts +1 -0
- package/package/components/apps/sharedTypes.d.ts +1 -0
- package/package/components/auditLogs/AuditLogsFilters.svelte +8 -3
- package/package/components/common/fileUpload/S3ArgInput.svelte +12 -10
- package/package/components/common/fileUpload/S3ArgInput.svelte.d.ts +2 -0
- package/package/components/copilot/chat/AIChatDisplay.svelte +5 -36
- package/package/components/copilot/chat/AIChatInput.svelte +56 -47
- package/package/components/copilot/chat/AIChatManager.svelte.js +48 -46
- package/package/components/copilot/chat/ContextElementBadge.svelte +6 -4
- package/package/components/copilot/chat/app/core.d.ts +12 -20
- package/package/components/copilot/chat/app/core.js +103 -160
- package/package/components/copilot/chat/app/core.test.js +234 -9
- package/package/components/copilot/chat/context.js +44 -0
- package/package/components/copilot/chat/flow/FlowAIChat.svelte +5 -3
- package/package/components/copilot/chat/flow/core.d.ts +2 -1
- package/package/components/copilot/chat/flow/core.js +48 -21
- package/package/components/copilot/chat/flow/helperUtils.d.ts +5 -2
- package/package/components/copilot/chat/flow/helperUtils.js +33 -1
- package/package/components/copilot/chat/flow/helperUtils.test.js +116 -1
- package/package/components/copilot/chat/flow/openFlow.json +1 -1
- package/package/components/copilot/chat/flow/openFlowZod.gen.js +24 -0
- package/package/components/copilot/chat/script/core.js +3 -0
- package/package/components/copilot/chat/shared.d.ts +6 -0
- package/package/components/copilot/chat/shared.js +22 -1
- package/package/components/copilot/chat/shared.test.d.ts +1 -0
- package/package/components/copilot/chat/shared.test.js +412 -0
- package/package/components/copilot/chat/workspaceTools.d.ts +7 -0
- package/package/components/copilot/chat/workspaceTools.js +239 -0
- package/package/components/copilot/chat/workspaceToolsZod.gen.d.ts +1295 -0
- package/package/components/copilot/chat/workspaceToolsZod.gen.js +424 -0
- package/package/components/copilot/lib.js +3 -1
- package/package/components/copilot/lib.test.d.ts +1 -0
- package/package/components/copilot/lib.test.js +19 -0
- package/package/components/copilot/modelConfig.d.ts +3 -0
- package/package/components/copilot/modelConfig.js +10 -0
- package/package/components/flows/FlowProgressBar.svelte +5 -2
- package/package/components/flows/content/FlowModuleComponent.svelte +636 -599
- package/package/components/flows/conversations/FlowChatManager.svelte.js +21 -10
- package/package/components/flows/flowStateUtils.svelte.js +5 -1
- package/package/components/flows/map/FlowModuleSchemaMap.svelte +3 -2
- package/package/components/flows/map/FlowModuleSchemaMap.svelte.d.ts +1 -0
- package/package/components/git_sync/GitSyncContext.svelte.js +0 -2
- package/package/components/graph/FlowGraphV2.svelte +7 -3
- package/package/components/graph/FlowGraphV2.svelte.d.ts +1 -0
- package/package/components/graph/renderers/triggers/TriggersBadge.svelte +3 -0
- package/package/components/home/deploy_ui.js +1 -1
- package/package/components/icons/AzureIcon.svelte +12 -25
- package/package/components/icons/AzureIcon.svelte.d.ts +3 -2
- package/package/components/instanceSettings.js +24 -0
- package/package/components/mcp/McpScopeSelector.svelte +119 -9
- package/package/components/mcp/McpScopeSelector.svelte.d.ts +1 -0
- package/package/components/offboarding-utils.js +2 -0
- package/package/components/progressBar/ProgressBar.svelte +9 -5
- package/package/components/progressBar/ProgressBar.svelte.d.ts +1 -0
- package/package/components/raw_apps/DeleteAfterUsePopup.svelte +52 -0
- package/package/components/raw_apps/DeleteAfterUsePopup.svelte.d.ts +9 -0
- package/package/components/raw_apps/RawAppBackgroundRunner.svelte +5 -1
- package/package/components/raw_apps/RawAppEditor.svelte +159 -102
- package/package/components/raw_apps/RawAppInlineScriptEditor.svelte +9 -3
- package/package/components/raw_apps/RawAppInlineScriptEditor.svelte.d.ts +2 -1
- package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte +1 -0
- package/package/components/raw_apps/RawAppInlineScriptRunnable.svelte.d.ts +1 -0
- package/package/components/raw_apps/RawAppInputsSpecEditor.svelte +48 -5
- package/package/components/raw_apps/RawAppSharedUiDrawer.svelte +129 -0
- package/package/components/raw_apps/RawAppSharedUiDrawer.svelte.d.ts +5 -0
- package/package/components/raw_apps/RawAppSidebar.svelte +12 -0
- package/package/components/raw_apps/dataTableRefUtils.d.ts +7 -0
- package/package/components/raw_apps/dataTableRefUtils.js +34 -0
- package/package/components/raw_apps/dataTableRefUtils.test.d.ts +1 -0
- package/package/components/raw_apps/dataTableRefUtils.test.js +29 -0
- package/package/components/raw_apps/rawAppPolicy.d.ts +1 -0
- package/package/components/raw_apps/rawAppPolicy.js +17 -2
- package/package/components/resources/resourceTypesFilter.d.ts +19 -0
- package/package/components/resources/resourceTypesFilter.js +21 -0
- package/package/components/restartFromStepPath.d.ts +39 -0
- package/package/components/restartFromStepPath.js +89 -0
- package/package/components/runs/JobDetailFieldConfig.d.ts +1 -0
- package/package/components/runs/JobDetailFieldConfig.js +57 -10
- package/package/components/runs/JobDetailHeader.svelte +24 -3
- package/package/components/runs/runsFilter.d.ts +1 -1
- package/package/components/schema/FlowPropertyEditor.svelte +30 -1
- package/package/components/schema/FlowPropertyEditor.svelte.d.ts +5 -2
- package/package/components/search/GlobalSearchModal.svelte +8 -1
- package/package/components/select/Select.svelte +1 -1
- package/package/components/settings/CreateToken.svelte +48 -77
- package/package/components/settings/EditTokenScopesModal.svelte +57 -0
- package/package/components/settings/EditTokenScopesModal.svelte.d.ts +10 -0
- package/package/components/settings/ScopesPicker.svelte +43 -0
- package/package/components/settings/ScopesPicker.svelte.d.ts +11 -0
- package/package/components/settings/TokensTable.svelte +51 -15
- package/package/components/sidebar/OperatorMenu.svelte +6 -0
- package/package/components/sidebar/SidebarContent.svelte +11 -1
- package/package/components/triggers/AddTriggersButton.svelte +6 -0
- package/package/components/triggers/CaptureWrapper.svelte +19 -1
- package/package/components/triggers/TriggerEditorToolbar.svelte.d.ts +1 -1
- package/package/components/triggers/TriggerModeToggle.svelte +36 -7
- package/package/components/triggers/TriggerModeToggle.svelte.d.ts +1 -1
- package/package/components/triggers/TriggerSuspendedJobsModal.svelte.d.ts +1 -1
- package/package/components/triggers/TriggersEditor.svelte +5 -1
- package/package/components/triggers/TriggersWrapper.svelte +10 -0
- package/package/components/triggers/azure/AzureCapture.svelte +41 -0
- package/package/components/triggers/azure/AzureCapture.svelte.d.ts +44 -0
- package/package/components/triggers/azure/AzureTriggerEditor.svelte +20 -0
- package/package/components/triggers/azure/AzureTriggerEditor.svelte.d.ts +9 -0
- package/package/components/triggers/azure/AzureTriggerEditorConfigSection.svelte +301 -0
- package/package/components/triggers/azure/AzureTriggerEditorConfigSection.svelte.d.ts +16 -0
- package/package/components/triggers/azure/AzureTriggerEditorInner.svelte +422 -0
- package/package/components/triggers/azure/AzureTriggerEditorInner.svelte.d.ts +25 -0
- package/package/components/triggers/azure/AzureTriggerPanel.svelte +55 -0
- package/package/components/triggers/azure/AzureTriggerPanel.svelte.d.ts +10 -0
- package/{dist/sharedUtils/components/triggers/kafka → package/components/triggers/azure}/utils.d.ts +1 -1
- package/package/components/triggers/azure/utils.js +56 -0
- package/package/components/triggers/email/EmailTriggerEditorInner.svelte +2 -0
- package/package/components/triggers/gcp/GcpTriggerEditorInner.svelte +9 -3
- package/package/components/triggers/http/RouteEditorInner.svelte +2 -0
- package/package/components/triggers/kafka/KafkaTriggerEditorInner.svelte +9 -3
- package/package/components/triggers/mqtt/MqttTriggerEditorInner.svelte +9 -3
- package/package/components/triggers/nats/NatsTriggerEditorInner.svelte +9 -3
- package/package/components/triggers/postgres/PostgresTriggerEditorInner.svelte +9 -3
- package/package/components/triggers/schedules/ScheduleEditorInner.svelte +9 -3
- package/package/components/triggers/sqs/SqsTriggerEditorInner.svelte +9 -3
- package/package/components/triggers/triggers.svelte.d.ts +1 -0
- package/package/components/triggers/triggers.svelte.js +23 -1
- package/package/components/triggers/utils.js +20 -0
- package/package/components/triggers/websocket/WebsocketTriggerEditorInner.svelte +9 -3
- package/package/components/triggers.d.ts +1 -1
- package/package/components/useNestedRestartState.svelte.d.ts +56 -0
- package/package/components/useNestedRestartState.svelte.js +320 -0
- package/package/components/workspaceSettings/SharedUiSettings.svelte +175 -0
- package/package/components/workspaceSettings/SharedUiSettings.svelte.d.ts +3 -0
- package/package/gen/core/OpenAPI.js +1 -1
- package/package/gen/schemas.gen.d.ts +294 -24
- package/package/gen/schemas.gen.js +297 -25
- package/package/gen/services.gen.d.ts +247 -4
- package/package/gen/services.gen.js +498 -7
- package/package/gen/types.gen.d.ts +990 -37
- package/package/hubPaths.json +2 -5
- package/package/infer.d.ts +1 -1
- package/package/infer.js +37 -51
- package/package/mcpEndpointTools.js +60 -4
- package/package/script_helpers.js +17 -0
- package/package/stores.d.ts +7 -0
- package/package/stores.js +6 -1
- package/package/system_prompts/index.d.ts +1 -0
- package/package/system_prompts/index.js +8 -0
- package/package/system_prompts/prompts.d.ts +16 -13
- package/package/system_prompts/prompts.js +653 -43
- package/package/templates/ci_test_bun.ts.template +8 -0
- package/package/templates/ci_test_python.py.template +8 -0
- package/package/utils/forkConflict.d.ts +26 -0
- package/package/utils/forkConflict.js +56 -0
- package/package/utils_deployable.d.ts +164 -121
- package/package/utils_deployable.js +61 -11
- package/package/utils_workspace_deploy.js +3 -1
- package/package.json +29 -5
- package/dist/sharedUtils/assets/tokens/colorTokensConfig.d.ts +0 -2
- package/dist/sharedUtils/base.d.ts +0 -1
- package/dist/sharedUtils/cloud.d.ts +0 -1
- package/dist/sharedUtils/common.d.ts +0 -111
- package/dist/sharedUtils/components/apps/components/display/dbtable/queries/count.d.ts +0 -5
- package/dist/sharedUtils/components/apps/components/display/dbtable/queries/delete.d.ts +0 -5
- package/dist/sharedUtils/components/apps/components/display/dbtable/queries/insert.d.ts +0 -5
- package/dist/sharedUtils/components/apps/components/display/dbtable/queries/select.d.ts +0 -13
- package/dist/sharedUtils/components/apps/components/display/dbtable/queries/update.d.ts +0 -11
- package/dist/sharedUtils/components/apps/components/display/dbtable/utils.d.ts +0 -95
- package/dist/sharedUtils/components/apps/editor/appPolicy.d.ts +0 -6
- package/dist/sharedUtils/components/apps/editor/appUtilsCore.d.ts +0 -7
- package/dist/sharedUtils/components/apps/editor/appUtilsS3.d.ts +0 -33
- package/dist/sharedUtils/components/apps/editor/commonAppUtils.d.ts +0 -10
- package/dist/sharedUtils/components/apps/editor/component/components.d.ts +0 -5371
- package/dist/sharedUtils/components/apps/editor/component/default-codes.d.ts +0 -3
- package/dist/sharedUtils/components/apps/editor/component/index.d.ts +0 -3
- package/dist/sharedUtils/components/apps/editor/component/sets.d.ts +0 -7
- package/dist/sharedUtils/components/apps/editor/componentsPanel/componentDefaultProps.d.ts +0 -3
- package/dist/sharedUtils/components/apps/gridUtils.d.ts +0 -14
- package/dist/sharedUtils/components/apps/inputType.d.ts +0 -178
- package/dist/sharedUtils/components/apps/rx.d.ts +0 -29
- package/dist/sharedUtils/components/apps/sharedTypes.d.ts +0 -21
- package/dist/sharedUtils/components/apps/types.d.ts +0 -274
- package/dist/sharedUtils/components/assets/lib.d.ts +0 -25
- package/dist/sharedUtils/components/common/alert/model.d.ts +0 -2
- package/dist/sharedUtils/components/common/badge/model.d.ts +0 -8
- package/dist/sharedUtils/components/common/button/model.d.ts +0 -45
- package/dist/sharedUtils/components/common/fileInput/model.d.ts +0 -1
- package/dist/sharedUtils/components/common/index.d.ts +0 -24
- package/dist/sharedUtils/components/common/skeleton/model.d.ts +0 -21
- package/dist/sharedUtils/components/dbTypes.d.ts +0 -14
- package/dist/sharedUtils/components/diff_drawer.d.ts +0 -26
- package/dist/sharedUtils/components/ducklake.d.ts +0 -1
- package/dist/sharedUtils/components/flows/scheduleUtils.d.ts +0 -7
- package/dist/sharedUtils/components/icons/index.d.ts +0 -101
- package/dist/sharedUtils/components/random_positive_adjetive.d.ts +0 -1
- package/dist/sharedUtils/components/raw_apps/rawAppPolicy.d.ts +0 -10
- package/dist/sharedUtils/components/raw_apps/utils.d.ts +0 -15
- package/dist/sharedUtils/components/triggers/email/utils.d.ts +0 -4
- package/dist/sharedUtils/components/triggers/gcp/utils.d.ts +0 -2
- package/dist/sharedUtils/components/triggers/http/utils.d.ts +0 -11
- package/dist/sharedUtils/components/triggers/mqtt/utils.d.ts +0 -2
- package/dist/sharedUtils/components/triggers/nats/utils.d.ts +0 -2
- package/dist/sharedUtils/components/triggers/postgres/utils.d.ts +0 -8
- package/dist/sharedUtils/components/triggers/sqs/utils.d.ts +0 -2
- package/dist/sharedUtils/components/triggers/triggers.svelte.d.ts +0 -32
- package/dist/sharedUtils/components/triggers/utils.d.ts +0 -80
- package/dist/sharedUtils/components/triggers/websocket/utils.d.ts +0 -2
- package/dist/sharedUtils/components/triggers.d.ts +0 -20
- package/dist/sharedUtils/gen/core/ApiError.d.ts +0 -10
- package/dist/sharedUtils/gen/core/ApiRequestOptions.d.ts +0 -13
- package/dist/sharedUtils/gen/core/ApiResult.d.ts +0 -7
- package/dist/sharedUtils/gen/core/CancelablePromise.d.ts +0 -26
- package/dist/sharedUtils/gen/core/OpenAPI.d.ts +0 -27
- package/dist/sharedUtils/gen/core/request.d.ts +0 -29
- package/dist/sharedUtils/gen/index.d.ts +0 -6
- package/dist/sharedUtils/gen/schemas.gen.d.ts +0 -7036
- package/dist/sharedUtils/gen/services.gen.d.ts +0 -6047
- package/dist/sharedUtils/gen/types.gen.d.ts +0 -21881
- package/dist/sharedUtils/history.svelte.d.ts +0 -9
- package/dist/sharedUtils/hub.d.ts +0 -49
- package/dist/sharedUtils/jsr.json +0 -6
- package/dist/sharedUtils/lib.d.ts +0 -5
- package/dist/sharedUtils/lib.es.js +0 -1588
- package/dist/sharedUtils/package.json +0 -12
- package/dist/sharedUtils/schema.d.ts +0 -3
- package/dist/sharedUtils/stores.d.ts +0 -97
- package/dist/sharedUtils/svelte5Utils.svelte.d.ts +0 -80
- package/dist/sharedUtils/toast.d.ts +0 -8
- package/dist/sharedUtils/utils.d.ts +0 -265
- package/package/components/copilot/chat/flow/openFlowZod.js +0 -24
- /package/package/components/copilot/chat/flow/{openFlowZod.d.ts → openFlowZod.gen.d.ts} +0 -0
|
@@ -1,10 +1,18 @@
|
|
|
1
1
|
// test: script/u/user/script_to_test
|
|
2
2
|
//
|
|
3
|
+
// Wildcards: `*` matches one path segment, `**` matches any depth.
|
|
4
|
+
// // test: script/u/user/*
|
|
5
|
+
// // test: flow/u/team/**
|
|
6
|
+
//
|
|
3
7
|
// To test multiple items, list them on separate lines:
|
|
4
8
|
// // test:
|
|
5
9
|
// // script/u/user/script_a
|
|
6
10
|
// // script/u/user/script_b
|
|
7
11
|
// // flow/u/user/my_flow
|
|
12
|
+
//
|
|
13
|
+
// The triggering item is exposed as process.env.WM_TESTED_RUNNABLE
|
|
14
|
+
// (e.g. "script/u/user/script_to_test"), useful for branching inside a
|
|
15
|
+
// single test script that covers multiple targets.
|
|
8
16
|
import * as wmill from "windmill-client";
|
|
9
17
|
|
|
10
18
|
export async function main() {
|
|
@@ -1,10 +1,18 @@
|
|
|
1
1
|
# test: script/u/user/script_to_test
|
|
2
2
|
#
|
|
3
|
+
# Wildcards: `*` matches one path segment, `**` matches any depth.
|
|
4
|
+
# # test: script/u/user/*
|
|
5
|
+
# # test: flow/u/team/**
|
|
6
|
+
#
|
|
3
7
|
# To test multiple items, list them on separate lines:
|
|
4
8
|
# # test:
|
|
5
9
|
# # script/u/user/script_a
|
|
6
10
|
# # script/u/user/script_b
|
|
7
11
|
# # flow/u/user/my_flow
|
|
12
|
+
#
|
|
13
|
+
# The triggering item is exposed as os.environ["WM_TESTED_RUNNABLE"]
|
|
14
|
+
# (e.g. "script/u/user/script_to_test"), useful for branching inside a
|
|
15
|
+
# single test script that covers multiple targets.
|
|
8
16
|
import wmill
|
|
9
17
|
|
|
10
18
|
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The backend rejects "enable" requests on triggers/schedules in a fork when
|
|
3
|
+
* the parent workspace has the same path enabled. The error body is shaped as
|
|
4
|
+
* `fork-conflict:<kind>:<parent_workspace_id>`
|
|
5
|
+
* so the UI can show a tailored confirm-to-proceed dialog and re-issue the
|
|
6
|
+
* call with `force: true` if the user agrees.
|
|
7
|
+
*/
|
|
8
|
+
export interface ForkConflict {
|
|
9
|
+
kind: string;
|
|
10
|
+
parentWorkspaceId: string;
|
|
11
|
+
}
|
|
12
|
+
export declare function detectForkConflict(e: unknown): ForkConflict | null;
|
|
13
|
+
/**
|
|
14
|
+
* Catches a fork-conflict error from `fn(false)`, shows the confirmation
|
|
15
|
+
* dialog, and retries with `fn(true)` when the user accepts. Re-throws every
|
|
16
|
+
* other error.
|
|
17
|
+
*
|
|
18
|
+
* Returns `true` when the call committed (no conflict, or user confirmed and
|
|
19
|
+
* retry succeeded) and `false` when the user dismissed the modal. Callers
|
|
20
|
+
* should bail on `false` to skip success toasts and revert any optimistic UI
|
|
21
|
+
* state.
|
|
22
|
+
*
|
|
23
|
+
* `kindLabel` is shown to the user — pass a friendly name like "kafka trigger"
|
|
24
|
+
* or "schedule" so the dialog reads naturally.
|
|
25
|
+
*/
|
|
26
|
+
export declare function withForkConflictRetry(fn: (force: boolean) => Promise<unknown>, kindLabel: string): Promise<boolean>;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { forkConflictModal } from '../stores';
|
|
2
|
+
export function detectForkConflict(e) {
|
|
3
|
+
const body = e?.body;
|
|
4
|
+
const raw = typeof body === 'string'
|
|
5
|
+
? body
|
|
6
|
+
: (body?.error?.message ?? body?.message ?? e?.message ?? '');
|
|
7
|
+
const m = String(raw).match(/fork-conflict:([^:]+):(.+)/);
|
|
8
|
+
if (!m)
|
|
9
|
+
return null;
|
|
10
|
+
return { kind: m[1], parentWorkspaceId: m[2].trim() };
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Opens the global ForkConflictModal and awaits the user's choice. Resolves
|
|
14
|
+
* to true when the user clicks "Enable anyway", false when they cancel or
|
|
15
|
+
* dismiss. If a previous modal is still pending (e.g. user clicked toggles
|
|
16
|
+
* on two rows in quick succession), resolve the older promise to false so
|
|
17
|
+
* the prior caller doesn't hang.
|
|
18
|
+
*/
|
|
19
|
+
function askForkConflictConfirm(kind, kindLabel, parentWorkspaceId) {
|
|
20
|
+
return new Promise((resolve) => {
|
|
21
|
+
const previous = forkConflictModal.val;
|
|
22
|
+
previous?.resolve(false);
|
|
23
|
+
forkConflictModal.val = { kind, kindLabel, parentWorkspaceId, resolve };
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Catches a fork-conflict error from `fn(false)`, shows the confirmation
|
|
28
|
+
* dialog, and retries with `fn(true)` when the user accepts. Re-throws every
|
|
29
|
+
* other error.
|
|
30
|
+
*
|
|
31
|
+
* Returns `true` when the call committed (no conflict, or user confirmed and
|
|
32
|
+
* retry succeeded) and `false` when the user dismissed the modal. Callers
|
|
33
|
+
* should bail on `false` to skip success toasts and revert any optimistic UI
|
|
34
|
+
* state.
|
|
35
|
+
*
|
|
36
|
+
* `kindLabel` is shown to the user — pass a friendly name like "kafka trigger"
|
|
37
|
+
* or "schedule" so the dialog reads naturally.
|
|
38
|
+
*/
|
|
39
|
+
export async function withForkConflictRetry(fn, kindLabel) {
|
|
40
|
+
try {
|
|
41
|
+
await fn(false);
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
catch (e) {
|
|
45
|
+
const conflict = detectForkConflict(e);
|
|
46
|
+
if (!conflict)
|
|
47
|
+
throw e;
|
|
48
|
+
const proceed = await askForkConflictConfirm(conflict.kind, kindLabel, conflict.parentWorkspaceId);
|
|
49
|
+
// User explicitly dismissed the modal — treat as a silent no-op so the
|
|
50
|
+
// caller's catch block doesn't pop a redundant error toast.
|
|
51
|
+
if (!proceed)
|
|
52
|
+
return false;
|
|
53
|
+
await fn(true);
|
|
54
|
+
return true;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { GcpTriggerService, HttpTriggerService, KafkaTriggerService, MqttTriggerService, NatsTriggerService, PostgresTriggerService, ScheduleService, SqsTriggerService, WebsocketTriggerService, type GcpTriggerData, type WorkspaceDeployUISettings } from './gen';
|
|
1
|
+
import { AzureTriggerService, EmailTriggerService, GcpTriggerService, HttpTriggerService, KafkaTriggerService, MqttTriggerService, NatsTriggerService, PostgresTriggerService, ScheduleService, SqsTriggerService, WebsocketTriggerService, type GcpTriggerData, type WorkspaceDeployUISettings } from './gen';
|
|
2
2
|
import type { TriggerKind } from './components/triggers';
|
|
3
3
|
type DeployUIType = 'script' | 'flow' | 'app' | 'resource' | 'variable' | 'secret' | 'trigger';
|
|
4
4
|
export type Kind = 'script' | 'resource' | 'schedule' | 'variable' | 'flow' | 'app' | 'raw_app' | 'resource_type' | 'folder' | 'trigger';
|
|
@@ -22,26 +22,25 @@ export declare function getTriggersDeployData(kind: TriggerKind, path: string, w
|
|
|
22
22
|
permissioned_as: string | undefined;
|
|
23
23
|
preserve_permissioned_as: boolean;
|
|
24
24
|
path: string;
|
|
25
|
-
|
|
25
|
+
workspace_id: string;
|
|
26
|
+
error?: string | undefined;
|
|
26
27
|
extra_perms: {
|
|
27
28
|
[key: string]: (boolean);
|
|
28
29
|
};
|
|
29
|
-
workspace_id: string;
|
|
30
30
|
edited_by: string;
|
|
31
31
|
edited_at: string;
|
|
32
|
+
script_path: string;
|
|
32
33
|
is_flow: boolean;
|
|
33
|
-
mode: import("./gen").TriggerMode;
|
|
34
|
-
labels?: Array<(string)>;
|
|
35
34
|
queue_url: string;
|
|
36
|
-
aws_auth_resource_type: import("./gen").AwsAuthResourceType;
|
|
37
35
|
aws_resource_path: string;
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
36
|
+
aws_auth_resource_type: import("./gen").AwsAuthResourceType;
|
|
37
|
+
labels?: Array<(string)> | undefined;
|
|
38
|
+
retry?: import("./gen").Retry | undefined;
|
|
39
|
+
error_handler_path?: string | undefined;
|
|
40
|
+
error_handler_args?: import("./gen").ScriptArgs | undefined;
|
|
41
|
+
message_attributes?: (Array<(string)> | null) | undefined;
|
|
42
|
+
server_id?: string | undefined;
|
|
43
|
+
last_server_ping?: string | undefined;
|
|
45
44
|
};
|
|
46
45
|
createFn: typeof SqsTriggerService.createSqsTrigger;
|
|
47
46
|
updateFn: typeof SqsTriggerService.updateSqsTrigger;
|
|
@@ -50,32 +49,31 @@ export declare function getTriggersDeployData(kind: TriggerKind, path: string, w
|
|
|
50
49
|
permissioned_as: string | undefined;
|
|
51
50
|
preserve_permissioned_as: boolean;
|
|
52
51
|
path: string;
|
|
53
|
-
|
|
52
|
+
workspace_id: string;
|
|
53
|
+
error?: string | undefined;
|
|
54
54
|
extra_perms: {
|
|
55
55
|
[key: string]: (boolean);
|
|
56
56
|
};
|
|
57
|
-
workspace_id: string;
|
|
58
57
|
edited_by: string;
|
|
59
58
|
edited_at: string;
|
|
59
|
+
script_path: string;
|
|
60
60
|
is_flow: boolean;
|
|
61
|
-
mode: import("./gen").TriggerMode;
|
|
62
|
-
labels?: Array<(string)>;
|
|
63
|
-
kafka_resource_path: string;
|
|
64
|
-
group_id: string;
|
|
65
|
-
topics: Array<(string)>;
|
|
66
61
|
filters: Array<{
|
|
67
62
|
key: string;
|
|
68
63
|
value: unknown;
|
|
69
64
|
}>;
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
65
|
+
kafka_resource_path: string;
|
|
66
|
+
group_id: string;
|
|
67
|
+
topics: Array<(string)>;
|
|
68
|
+
labels?: Array<(string)> | undefined;
|
|
69
|
+
retry?: import("./gen").Retry | undefined;
|
|
70
|
+
error_handler_path?: string | undefined;
|
|
71
|
+
error_handler_args?: import("./gen").ScriptArgs | undefined;
|
|
72
|
+
filter_logic?: "and" | "or" | undefined;
|
|
73
|
+
auto_offset_reset?: "latest" | "earliest" | undefined;
|
|
74
|
+
auto_commit?: boolean | undefined;
|
|
75
|
+
server_id?: string | undefined;
|
|
76
|
+
last_server_ping?: string | undefined;
|
|
79
77
|
};
|
|
80
78
|
createFn: typeof KafkaTriggerService.createKafkaTrigger;
|
|
81
79
|
updateFn: typeof KafkaTriggerService.updateKafkaTrigger;
|
|
@@ -84,28 +82,27 @@ export declare function getTriggersDeployData(kind: TriggerKind, path: string, w
|
|
|
84
82
|
permissioned_as: string | undefined;
|
|
85
83
|
preserve_permissioned_as: boolean;
|
|
86
84
|
path: string;
|
|
87
|
-
|
|
85
|
+
client_id?: string | null | undefined;
|
|
86
|
+
workspace_id: string;
|
|
87
|
+
error?: string | undefined;
|
|
88
88
|
extra_perms: {
|
|
89
89
|
[key: string]: (boolean);
|
|
90
90
|
};
|
|
91
|
-
workspace_id: string;
|
|
92
91
|
edited_by: string;
|
|
93
92
|
edited_at: string;
|
|
93
|
+
script_path: string;
|
|
94
94
|
is_flow: boolean;
|
|
95
|
-
mode: import("./gen").TriggerMode;
|
|
96
|
-
labels?: Array<(string)>;
|
|
97
|
-
mqtt_resource_path: string;
|
|
98
95
|
subscribe_topics: Array<import("./gen").MqttSubscribeTopic>;
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
96
|
+
mqtt_resource_path: string;
|
|
97
|
+
labels?: Array<(string)> | undefined;
|
|
98
|
+
retry?: import("./gen").Retry | undefined;
|
|
99
|
+
error_handler_path?: string | undefined;
|
|
100
|
+
error_handler_args?: import("./gen").ScriptArgs | undefined;
|
|
101
|
+
client_version?: (import("./gen").MqttClientVersion | null) | undefined;
|
|
102
|
+
v3_config?: (import("./gen").MqttV3Config | null) | undefined;
|
|
103
|
+
v5_config?: (import("./gen").MqttV5Config | null) | undefined;
|
|
104
|
+
server_id?: string | undefined;
|
|
105
|
+
last_server_ping?: string | undefined;
|
|
109
106
|
};
|
|
110
107
|
createFn: typeof MqttTriggerService.createMqttTrigger;
|
|
111
108
|
updateFn: typeof MqttTriggerService.updateMqttTrigger;
|
|
@@ -114,27 +111,26 @@ export declare function getTriggersDeployData(kind: TriggerKind, path: string, w
|
|
|
114
111
|
permissioned_as: string | undefined;
|
|
115
112
|
preserve_permissioned_as: boolean;
|
|
116
113
|
path: string;
|
|
117
|
-
|
|
114
|
+
workspace_id: string;
|
|
115
|
+
error?: string | undefined;
|
|
118
116
|
extra_perms: {
|
|
119
117
|
[key: string]: (boolean);
|
|
120
118
|
};
|
|
121
|
-
workspace_id: string;
|
|
122
119
|
edited_by: string;
|
|
123
120
|
edited_at: string;
|
|
121
|
+
script_path: string;
|
|
124
122
|
is_flow: boolean;
|
|
125
|
-
mode: import("./gen").TriggerMode;
|
|
126
|
-
labels?: Array<(string)>;
|
|
127
123
|
nats_resource_path: string;
|
|
128
124
|
use_jetstream: boolean;
|
|
129
|
-
stream_name?: string | null;
|
|
130
|
-
consumer_name?: string | null;
|
|
131
125
|
subjects: Array<(string)>;
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
126
|
+
labels?: Array<(string)> | undefined;
|
|
127
|
+
retry?: import("./gen").Retry | undefined;
|
|
128
|
+
error_handler_path?: string | undefined;
|
|
129
|
+
error_handler_args?: import("./gen").ScriptArgs | undefined;
|
|
130
|
+
stream_name?: string | null | undefined;
|
|
131
|
+
consumer_name?: string | null | undefined;
|
|
132
|
+
server_id?: string | undefined;
|
|
133
|
+
last_server_ping?: string | undefined;
|
|
138
134
|
};
|
|
139
135
|
createFn: typeof NatsTriggerService.createNatsTrigger;
|
|
140
136
|
updateFn: typeof NatsTriggerService.updateNatsTrigger;
|
|
@@ -147,25 +143,24 @@ export declare function getTriggersDeployData(kind: TriggerKind, path: string, w
|
|
|
147
143
|
permissioned_as: string | undefined;
|
|
148
144
|
preserve_permissioned_as: boolean;
|
|
149
145
|
path: string;
|
|
150
|
-
|
|
146
|
+
workspace_id: string;
|
|
147
|
+
error?: string | undefined;
|
|
151
148
|
extra_perms: {
|
|
152
149
|
[key: string]: (boolean);
|
|
153
150
|
};
|
|
154
|
-
workspace_id: string;
|
|
155
151
|
edited_by: string;
|
|
156
152
|
edited_at: string;
|
|
153
|
+
script_path: string;
|
|
157
154
|
is_flow: boolean;
|
|
158
|
-
mode: import("./gen").TriggerMode;
|
|
159
|
-
labels?: Array<(string)>;
|
|
160
155
|
postgres_resource_path: string;
|
|
161
|
-
publication_name: string;
|
|
162
|
-
server_id?: string;
|
|
163
156
|
replication_slot_name: string;
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
157
|
+
publication_name: string;
|
|
158
|
+
labels?: Array<(string)> | undefined;
|
|
159
|
+
retry?: import("./gen").Retry | undefined;
|
|
160
|
+
error_handler_path?: string | undefined;
|
|
161
|
+
error_handler_args?: import("./gen").ScriptArgs | undefined;
|
|
162
|
+
server_id?: string | undefined;
|
|
163
|
+
last_server_ping?: string | undefined;
|
|
169
164
|
};
|
|
170
165
|
createFn: typeof PostgresTriggerService.createPostgresTrigger;
|
|
171
166
|
updateFn: typeof PostgresTriggerService.updatePostgresTrigger;
|
|
@@ -174,33 +169,32 @@ export declare function getTriggersDeployData(kind: TriggerKind, path: string, w
|
|
|
174
169
|
permissioned_as: string | undefined;
|
|
175
170
|
preserve_permissioned_as: boolean;
|
|
176
171
|
path: string;
|
|
177
|
-
|
|
172
|
+
workspace_id: string;
|
|
173
|
+
error?: string | undefined;
|
|
178
174
|
extra_perms: {
|
|
179
175
|
[key: string]: (boolean);
|
|
180
176
|
};
|
|
181
|
-
workspace_id: string;
|
|
182
177
|
edited_by: string;
|
|
183
178
|
edited_at: string;
|
|
179
|
+
script_path: string;
|
|
184
180
|
is_flow: boolean;
|
|
185
|
-
mode: import("./gen").TriggerMode;
|
|
186
|
-
labels?: Array<(string)>;
|
|
187
181
|
url: string;
|
|
188
|
-
server_id?: string;
|
|
189
|
-
last_server_ping?: string;
|
|
190
|
-
error?: string;
|
|
191
182
|
filters: Array<{
|
|
192
183
|
key: string;
|
|
193
184
|
value: unknown;
|
|
194
185
|
}>;
|
|
195
|
-
filter_logic?: "and" | "or";
|
|
196
|
-
initial_messages?: Array<import("./gen").WebsocketTriggerInitialMessage> | null;
|
|
197
|
-
url_runnable_args?: import("./gen").ScriptArgs | null;
|
|
198
186
|
can_return_message: boolean;
|
|
199
187
|
can_return_error_result: boolean;
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
188
|
+
labels?: Array<(string)> | undefined;
|
|
189
|
+
retry?: import("./gen").Retry | undefined;
|
|
190
|
+
error_handler_path?: string | undefined;
|
|
191
|
+
error_handler_args?: import("./gen").ScriptArgs | undefined;
|
|
192
|
+
filter_logic?: "and" | "or" | undefined;
|
|
193
|
+
initial_messages?: (Array<import("./gen").WebsocketTriggerInitialMessage> | null) | undefined;
|
|
194
|
+
url_runnable_args?: (import("./gen").ScriptArgs | null) | undefined;
|
|
195
|
+
heartbeat?: (import("./gen").WebsocketHeartbeat | null) | undefined;
|
|
196
|
+
server_id?: string | undefined;
|
|
197
|
+
last_server_ping?: string | undefined;
|
|
204
198
|
};
|
|
205
199
|
createFn: typeof WebsocketTriggerService.createWebsocketTrigger;
|
|
206
200
|
updateFn: typeof WebsocketTriggerService.updateWebsocketTrigger;
|
|
@@ -208,36 +202,35 @@ export declare function getTriggersDeployData(kind: TriggerKind, path: string, w
|
|
|
208
202
|
data: {
|
|
209
203
|
permissioned_as: string | undefined;
|
|
210
204
|
preserve_permissioned_as: boolean;
|
|
205
|
+
summary?: string | null | undefined;
|
|
211
206
|
path: string;
|
|
212
|
-
|
|
207
|
+
workspace_id: string;
|
|
208
|
+
description?: string | null | undefined;
|
|
213
209
|
extra_perms: {
|
|
214
210
|
[key: string]: (boolean);
|
|
215
211
|
};
|
|
216
|
-
workspace_id: string;
|
|
217
212
|
edited_by: string;
|
|
218
213
|
edited_at: string;
|
|
214
|
+
script_path: string;
|
|
219
215
|
is_flow: boolean;
|
|
220
|
-
mode: import("./gen").TriggerMode;
|
|
221
|
-
labels?: Array<(string)>;
|
|
222
216
|
route_path: string;
|
|
223
|
-
static_asset_config?: {
|
|
224
|
-
s3: string;
|
|
225
|
-
storage?: string;
|
|
226
|
-
filename?: string;
|
|
227
|
-
} | null;
|
|
228
|
-
http_method: import("./gen").HttpMethod;
|
|
229
|
-
authentication_resource_path?: string | null;
|
|
230
|
-
summary?: string | null;
|
|
231
|
-
description?: string | null;
|
|
232
217
|
request_type: import("./gen").HttpRequestType;
|
|
233
218
|
authentication_method: import("./gen").AuthenticationMethod;
|
|
219
|
+
http_method: import("./gen").HttpMethod;
|
|
234
220
|
is_static_website: boolean;
|
|
235
221
|
workspaced_route: boolean;
|
|
236
222
|
wrap_body: boolean;
|
|
237
223
|
raw_string: boolean;
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
224
|
+
labels?: Array<(string)> | undefined;
|
|
225
|
+
retry?: import("./gen").Retry | undefined;
|
|
226
|
+
static_asset_config?: {
|
|
227
|
+
s3: string;
|
|
228
|
+
storage?: string;
|
|
229
|
+
filename?: string;
|
|
230
|
+
} | null | undefined;
|
|
231
|
+
authentication_resource_path?: string | null | undefined;
|
|
232
|
+
error_handler_path?: string | undefined;
|
|
233
|
+
error_handler_args?: import("./gen").ScriptArgs | undefined;
|
|
241
234
|
};
|
|
242
235
|
createFn: typeof HttpTriggerService.createHttpTrigger;
|
|
243
236
|
updateFn: typeof HttpTriggerService.updateHttpTrigger;
|
|
@@ -246,38 +239,88 @@ export declare function getTriggersDeployData(kind: TriggerKind, path: string, w
|
|
|
246
239
|
permissioned_as: string | undefined;
|
|
247
240
|
preserve_permissioned_as: boolean;
|
|
248
241
|
path: string;
|
|
242
|
+
workspace_id: string;
|
|
243
|
+
error?: string | undefined;
|
|
244
|
+
extra_perms: {
|
|
245
|
+
[key: string]: (boolean);
|
|
246
|
+
};
|
|
249
247
|
edited_by: string;
|
|
250
248
|
edited_at: string;
|
|
251
|
-
schedule: string;
|
|
252
|
-
timezone: string;
|
|
253
|
-
enabled: boolean;
|
|
254
249
|
script_path: string;
|
|
255
250
|
is_flow: boolean;
|
|
256
|
-
|
|
251
|
+
azure_mode: import("./gen").AzureMode;
|
|
252
|
+
scope_resource_id: string;
|
|
253
|
+
subscription_name: string;
|
|
254
|
+
azure_resource_path: string;
|
|
255
|
+
topic_name?: string | null | undefined;
|
|
256
|
+
labels?: Array<(string)> | undefined;
|
|
257
|
+
retry?: import("./gen").Retry | undefined;
|
|
258
|
+
error_handler_path?: string | undefined;
|
|
259
|
+
error_handler_args?: import("./gen").ScriptArgs | undefined;
|
|
260
|
+
event_type_filters?: (Array<(string)> | null) | undefined;
|
|
261
|
+
server_id?: string | undefined;
|
|
262
|
+
last_server_ping?: string | undefined;
|
|
263
|
+
};
|
|
264
|
+
createFn: typeof AzureTriggerService.createAzureTrigger;
|
|
265
|
+
updateFn: typeof AzureTriggerService.updateAzureTrigger;
|
|
266
|
+
} | {
|
|
267
|
+
data: {
|
|
268
|
+
permissioned_as: string | undefined;
|
|
269
|
+
preserve_permissioned_as: boolean;
|
|
270
|
+
path: string;
|
|
271
|
+
workspace_id: string;
|
|
272
|
+
extra_perms: {
|
|
273
|
+
[key: string]: (boolean);
|
|
274
|
+
};
|
|
275
|
+
edited_by: string;
|
|
276
|
+
edited_at: string;
|
|
277
|
+
script_path: string;
|
|
278
|
+
is_flow: boolean;
|
|
279
|
+
local_part: string;
|
|
280
|
+
labels?: Array<(string)> | undefined;
|
|
281
|
+
retry?: import("./gen").Retry | undefined;
|
|
282
|
+
error_handler_path?: string | undefined;
|
|
283
|
+
error_handler_args?: import("./gen").ScriptArgs | undefined;
|
|
284
|
+
workspaced_local_part?: boolean | undefined;
|
|
285
|
+
};
|
|
286
|
+
createFn: typeof EmailTriggerService.createEmailTrigger;
|
|
287
|
+
updateFn: typeof EmailTriggerService.updateEmailTrigger;
|
|
288
|
+
} | {
|
|
289
|
+
data: {
|
|
290
|
+
permissioned_as: string | undefined;
|
|
291
|
+
preserve_permissioned_as: boolean;
|
|
292
|
+
summary?: string | null | undefined;
|
|
293
|
+
path: string;
|
|
294
|
+
error?: string | null | undefined;
|
|
295
|
+
description?: string | null | undefined;
|
|
296
|
+
schedule: string;
|
|
257
297
|
extra_perms: {
|
|
258
298
|
[key: string]: (boolean);
|
|
259
299
|
};
|
|
300
|
+
args?: (import("./gen").ScriptArgs | null) | undefined;
|
|
260
301
|
email: string;
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
302
|
+
tag?: string | null | undefined;
|
|
303
|
+
edited_by: string;
|
|
304
|
+
edited_at: string;
|
|
305
|
+
script_path: string;
|
|
306
|
+
timezone: string;
|
|
307
|
+
is_flow: boolean;
|
|
308
|
+
labels?: Array<(string)> | undefined;
|
|
309
|
+
on_failure?: string | null | undefined;
|
|
310
|
+
on_failure_times?: number | null | undefined;
|
|
311
|
+
on_failure_exact?: boolean | null | undefined;
|
|
312
|
+
on_failure_extra_args?: (import("./gen").ScriptArgs | null) | undefined;
|
|
313
|
+
on_recovery?: string | null | undefined;
|
|
314
|
+
on_recovery_times?: number | null | undefined;
|
|
315
|
+
on_recovery_extra_args?: (import("./gen").ScriptArgs | null) | undefined;
|
|
316
|
+
on_success?: string | null | undefined;
|
|
317
|
+
on_success_extra_args?: (import("./gen").ScriptArgs | null) | undefined;
|
|
318
|
+
ws_error_handler_muted?: boolean | undefined;
|
|
319
|
+
retry?: (import("./gen").Retry | null) | undefined;
|
|
320
|
+
no_flow_overlap?: boolean | undefined;
|
|
321
|
+
paused_until?: string | null | undefined;
|
|
322
|
+
cron_version?: string | null | undefined;
|
|
323
|
+
dynamic_skip?: string | null | undefined;
|
|
281
324
|
};
|
|
282
325
|
createFn: typeof ScheduleService.createSchedule;
|
|
283
326
|
updateFn: typeof ScheduleService.updateSchedule;
|