diff --git a/.changeset/legal-eagles-jog.md b/.changeset/legal-eagles-jog.md new file mode 100644 index 0000000000..5b520af91f --- /dev/null +++ b/.changeset/legal-eagles-jog.md @@ -0,0 +1,18 @@ +--- +'@backstage/plugin-scaffolder-backend-module-confluence-to-markdown': patch +'@backstage/plugin-scaffolder-backend-module-bitbucket-server': patch +'@backstage/plugin-scaffolder-backend-module-bitbucket-cloud': patch +'@backstage/plugin-scaffolder-backend-module-notifications': patch +'@backstage/plugin-scaffolder-backend-module-cookiecutter': patch +'@backstage/plugin-scaffolder-backend-module-bitbucket': patch +'@backstage/plugin-scaffolder-backend-module-gerrit': patch +'@backstage/plugin-scaffolder-backend-module-github': patch +'@backstage/plugin-scaffolder-backend-module-gitlab': patch +'@backstage/plugin-scaffolder-backend-module-sentry': patch +'@backstage/plugin-scaffolder-backend-module-yeoman': patch +'@backstage/plugin-scaffolder-backend-module-azure': patch +'@backstage/plugin-scaffolder-backend-module-gitea': patch +'@backstage/plugin-scaffolder-backend-module-rails': patch +--- + +Updating import for the `scaffolderActionsExtensionPoint` to be the main export diff --git a/.changeset/ready-poems-change.md b/.changeset/ready-poems-change.md new file mode 100644 index 0000000000..fc95ddb99a --- /dev/null +++ b/.changeset/ready-poems-change.md @@ -0,0 +1,9 @@ +--- +'@backstage/plugin-scaffolder-node': minor +--- + +**BREAKING** - Marking optional fields as required in the `TaskBroker`, these can be fixed with a no-op `() => void` if you don't want to implement the functions. + +- `cancel`, `recoverTasks` and `retry` are the required methods on the `TaskBroker` interface. + +**NOTE**: If you're affected by this breaking change, please reach out to us in an issue as we're thinking about completely removing the `TaskBroker` extension point soon and would like to hear your use cases for the upcoming re-architecture of the `scaffolder-backend` plugin. diff --git a/.changeset/red-times-bet.md b/.changeset/red-times-bet.md new file mode 100644 index 0000000000..29e89fb07f --- /dev/null +++ b/.changeset/red-times-bet.md @@ -0,0 +1,13 @@ +--- +'@backstage/plugin-scaffolder-node': patch +--- + +**BREAKING ALPHA**: We've moved the `scaffolderActionsExtensionPoint` from `/alpha` to the main export. + +```tsx +// before +import { scaffolderActionsExtensionPoint } from '@backstage/plugin-scaffolder-node/alpha'; + +// after +import { scaffolderActionsExtensionPoint } from '@backstage/plugin-scaffolder-node'; +``` diff --git a/.changeset/solid-bikes-leave.md b/.changeset/solid-bikes-leave.md new file mode 100644 index 0000000000..6f1bfe0b2f --- /dev/null +++ b/.changeset/solid-bikes-leave.md @@ -0,0 +1,9 @@ +--- +'@backstage/plugin-scaffolder-node': patch +--- + +**DEPRECATION**: We're going to be working on refactoring a lot of the internals of the Scaffolder backend plugin, and with that comes a lot of deprecations and removals for public types that are making these things hard. + +If you're using these types, please reach out to us either on Discord or a GitHub issue with your use cases. + +- `SerializedTask`, `SerializedTaskEvent`, `TaskBroker`, `TaskContext`, `TaskBrokerDispatchOptions`, `TaskBrokerDispatchResult`, `TaskCompletionState`, `TaskEventType`, `TaskFilter`, `TaskFilters`, `TaskStatus` are the types that have now been marked as deprecated, and will be removed in a future release. diff --git a/.changeset/wet-spiders-wait.md b/.changeset/wet-spiders-wait.md new file mode 100644 index 0000000000..aaffc92013 --- /dev/null +++ b/.changeset/wet-spiders-wait.md @@ -0,0 +1,7 @@ +--- +'@backstage/plugin-scaffolder-backend': major +--- + +**BREAKING** - Removing the deprecated types and interfaces, there's no replacement for these types, and hopefully not currently used as they offer no value with the plugin being on the new backend system and no way to consume them. + +Affected types: `CreateWorkerOptions`, `CurrentClaimedTask`, `DatabaseTaskStore`, `DatabaseTaskStoreOptions`, `TaskManager`, `TaskStore`, `TaskStoreCreateTaskOptions`, `TaskStoreCreateTaskResult`, `TaskStoreEmitOptions`, `TaskStoreListEventsOptions`, `TaskStoreRecoverTaskOptions`, `TaskStoreShutDownTaskOptions`, `TaskWorker` and `TemplateActionRegistry`. diff --git a/plugins/scaffolder-backend-module-azure/src/module.ts b/plugins/scaffolder-backend-module-azure/src/module.ts index 40ca3f0978..937d806932 100644 --- a/plugins/scaffolder-backend-module-azure/src/module.ts +++ b/plugins/scaffolder-backend-module-azure/src/module.ts @@ -18,7 +18,7 @@ import { coreServices, } from '@backstage/backend-plugin-api'; import { ScmIntegrations } from '@backstage/integration'; -import { scaffolderActionsExtensionPoint } from '@backstage/plugin-scaffolder-node/alpha'; +import { scaffolderActionsExtensionPoint } from '@backstage/plugin-scaffolder-node'; import { createPublishAzureAction } from './actions'; /** diff --git a/plugins/scaffolder-backend-module-bitbucket-cloud/src/module.ts b/plugins/scaffolder-backend-module-bitbucket-cloud/src/module.ts index 4001c064da..04ac3b7a56 100644 --- a/plugins/scaffolder-backend-module-bitbucket-cloud/src/module.ts +++ b/plugins/scaffolder-backend-module-bitbucket-cloud/src/module.ts @@ -17,10 +17,7 @@ import { coreServices, createBackendModule, } from '@backstage/backend-plugin-api'; -import { - scaffolderActionsExtensionPoint, - scaffolderAutocompleteExtensionPoint, -} from '@backstage/plugin-scaffolder-node/alpha'; +import { scaffolderAutocompleteExtensionPoint } from '@backstage/plugin-scaffolder-node/alpha'; import { createBitbucketCloudBranchRestrictionAction } from './actions/bitbucketCloudBranchRestriction'; import { createBitbucketPipelinesRunAction, @@ -29,6 +26,7 @@ import { } from './actions'; import { ScmIntegrations } from '@backstage/integration'; import { handleAutocompleteRequest } from './autocomplete/autocomplete'; +import { scaffolderActionsExtensionPoint } from '@backstage/plugin-scaffolder-node'; /** * @public diff --git a/plugins/scaffolder-backend-module-bitbucket-server/src/module.ts b/plugins/scaffolder-backend-module-bitbucket-server/src/module.ts index d3d457cb1f..21159759d4 100644 --- a/plugins/scaffolder-backend-module-bitbucket-server/src/module.ts +++ b/plugins/scaffolder-backend-module-bitbucket-server/src/module.ts @@ -17,7 +17,7 @@ import { coreServices, createBackendModule, } from '@backstage/backend-plugin-api'; -import { scaffolderActionsExtensionPoint } from '@backstage/plugin-scaffolder-node/alpha'; +import { scaffolderActionsExtensionPoint } from '@backstage/plugin-scaffolder-node'; import { createPublishBitbucketServerAction, createPublishBitbucketServerPullRequestAction, diff --git a/plugins/scaffolder-backend-module-bitbucket/src/module.ts b/plugins/scaffolder-backend-module-bitbucket/src/module.ts index db27d0b7b9..884c8be004 100644 --- a/plugins/scaffolder-backend-module-bitbucket/src/module.ts +++ b/plugins/scaffolder-backend-module-bitbucket/src/module.ts @@ -17,7 +17,7 @@ import { coreServices, createBackendModule, } from '@backstage/backend-plugin-api'; -import { scaffolderActionsExtensionPoint } from '@backstage/plugin-scaffolder-node/alpha'; +import { scaffolderActionsExtensionPoint } from '@backstage/plugin-scaffolder-node'; import { createBitbucketPipelinesRunAction, createPublishBitbucketCloudAction, diff --git a/plugins/scaffolder-backend-module-confluence-to-markdown/src/module.ts b/plugins/scaffolder-backend-module-confluence-to-markdown/src/module.ts index 402f56c951..3b18ef8294 100644 --- a/plugins/scaffolder-backend-module-confluence-to-markdown/src/module.ts +++ b/plugins/scaffolder-backend-module-confluence-to-markdown/src/module.ts @@ -17,7 +17,7 @@ import { createBackendModule, coreServices, } from '@backstage/backend-plugin-api'; -import { scaffolderActionsExtensionPoint } from '@backstage/plugin-scaffolder-node/alpha'; +import { scaffolderActionsExtensionPoint } from '@backstage/plugin-scaffolder-node'; import { createConfluenceToMarkdownAction } from './actions'; import { ScmIntegrations } from '@backstage/integration'; diff --git a/plugins/scaffolder-backend-module-cookiecutter/src/module.ts b/plugins/scaffolder-backend-module-cookiecutter/src/module.ts index df1b201518..3caa9259f2 100644 --- a/plugins/scaffolder-backend-module-cookiecutter/src/module.ts +++ b/plugins/scaffolder-backend-module-cookiecutter/src/module.ts @@ -17,7 +17,7 @@ import { coreServices, createBackendModule, } from '@backstage/backend-plugin-api'; -import { scaffolderActionsExtensionPoint } from '@backstage/plugin-scaffolder-node/alpha'; +import { scaffolderActionsExtensionPoint } from '@backstage/plugin-scaffolder-node'; import { createFetchCookiecutterAction } from './actions'; import { ScmIntegrations } from '@backstage/integration'; diff --git a/plugins/scaffolder-backend-module-gerrit/src/module.ts b/plugins/scaffolder-backend-module-gerrit/src/module.ts index 32607431f3..f0bbed9649 100644 --- a/plugins/scaffolder-backend-module-gerrit/src/module.ts +++ b/plugins/scaffolder-backend-module-gerrit/src/module.ts @@ -17,7 +17,7 @@ import { coreServices, createBackendModule, } from '@backstage/backend-plugin-api'; -import { scaffolderActionsExtensionPoint } from '@backstage/plugin-scaffolder-node/alpha'; +import { scaffolderActionsExtensionPoint } from '@backstage/plugin-scaffolder-node'; import { createPublishGerritAction, createPublishGerritReviewAction, diff --git a/plugins/scaffolder-backend-module-gitea/src/module.ts b/plugins/scaffolder-backend-module-gitea/src/module.ts index 658f240471..b087e1637e 100644 --- a/plugins/scaffolder-backend-module-gitea/src/module.ts +++ b/plugins/scaffolder-backend-module-gitea/src/module.ts @@ -17,7 +17,7 @@ import { createBackendModule, coreServices, } from '@backstage/backend-plugin-api'; -import { scaffolderActionsExtensionPoint } from '@backstage/plugin-scaffolder-node/alpha'; +import { scaffolderActionsExtensionPoint } from '@backstage/plugin-scaffolder-node'; import { createPublishGiteaAction } from './actions'; import { ScmIntegrations } from '@backstage/integration'; diff --git a/plugins/scaffolder-backend-module-github/src/module.ts b/plugins/scaffolder-backend-module-github/src/module.ts index 67bda58fc4..964bc018ae 100644 --- a/plugins/scaffolder-backend-module-github/src/module.ts +++ b/plugins/scaffolder-backend-module-github/src/module.ts @@ -17,10 +17,7 @@ import { coreServices, createBackendModule, } from '@backstage/backend-plugin-api'; -import { - scaffolderActionsExtensionPoint, - scaffolderAutocompleteExtensionPoint, -} from '@backstage/plugin-scaffolder-node/alpha'; +import { scaffolderAutocompleteExtensionPoint } from '@backstage/plugin-scaffolder-node/alpha'; import { createGithubActionsDispatchAction, createGithubAutolinksAction, @@ -42,6 +39,7 @@ import { } from '@backstage/integration'; import { createHandleAutocompleteRequest } from './autocomplete/autocomplete'; import { catalogServiceRef } from '@backstage/plugin-catalog-node'; +import { scaffolderActionsExtensionPoint } from '@backstage/plugin-scaffolder-node'; /** * @public diff --git a/plugins/scaffolder-backend-module-gitlab/src/module.ts b/plugins/scaffolder-backend-module-gitlab/src/module.ts index 7dbfddfc1b..3c04f57077 100644 --- a/plugins/scaffolder-backend-module-gitlab/src/module.ts +++ b/plugins/scaffolder-backend-module-gitlab/src/module.ts @@ -18,10 +18,7 @@ import { createBackendModule, } from '@backstage/backend-plugin-api'; import { ScmIntegrations } from '@backstage/integration'; -import { - scaffolderActionsExtensionPoint, - scaffolderAutocompleteExtensionPoint, -} from '@backstage/plugin-scaffolder-node/alpha'; +import { scaffolderAutocompleteExtensionPoint } from '@backstage/plugin-scaffolder-node/alpha'; import { createGitlabGroupEnsureExistsAction, createGitlabIssueAction, @@ -36,6 +33,7 @@ import { } from './actions'; import { createGitlabProjectMigrateAction } from './actions/gitlabProjectMigrate'; import { createHandleAutocompleteRequest } from './autocomplete/autocomplete'; +import { scaffolderActionsExtensionPoint } from '@backstage/plugin-scaffolder-node'; /** * @public diff --git a/plugins/scaffolder-backend-module-notifications/src/module.ts b/plugins/scaffolder-backend-module-notifications/src/module.ts index e8b6823e99..4639175229 100644 --- a/plugins/scaffolder-backend-module-notifications/src/module.ts +++ b/plugins/scaffolder-backend-module-notifications/src/module.ts @@ -15,7 +15,7 @@ */ import { createBackendModule } from '@backstage/backend-plugin-api'; import { notificationService } from '@backstage/plugin-notifications-node'; -import { scaffolderActionsExtensionPoint } from '@backstage/plugin-scaffolder-node/alpha'; +import { scaffolderActionsExtensionPoint } from '@backstage/plugin-scaffolder-node'; import { createSendNotificationAction } from './actions'; /** diff --git a/plugins/scaffolder-backend-module-rails/src/module.ts b/plugins/scaffolder-backend-module-rails/src/module.ts index ec70610cd3..eb14c47977 100644 --- a/plugins/scaffolder-backend-module-rails/src/module.ts +++ b/plugins/scaffolder-backend-module-rails/src/module.ts @@ -17,7 +17,7 @@ import { coreServices, createBackendModule, } from '@backstage/backend-plugin-api'; -import { scaffolderActionsExtensionPoint } from '@backstage/plugin-scaffolder-node/alpha'; +import { scaffolderActionsExtensionPoint } from '@backstage/plugin-scaffolder-node'; import { createFetchRailsAction } from './actions'; import { ScmIntegrations } from '@backstage/integration'; diff --git a/plugins/scaffolder-backend-module-sentry/src/module.ts b/plugins/scaffolder-backend-module-sentry/src/module.ts index dcde344262..2b343edbc7 100644 --- a/plugins/scaffolder-backend-module-sentry/src/module.ts +++ b/plugins/scaffolder-backend-module-sentry/src/module.ts @@ -17,7 +17,7 @@ import { coreServices, createBackendModule, } from '@backstage/backend-plugin-api'; -import { scaffolderActionsExtensionPoint } from '@backstage/plugin-scaffolder-node/alpha'; +import { scaffolderActionsExtensionPoint } from '@backstage/plugin-scaffolder-node'; import { createSentryCreateProjectAction } from './actions/createProject'; /** diff --git a/plugins/scaffolder-backend-module-yeoman/src/module.ts b/plugins/scaffolder-backend-module-yeoman/src/module.ts index 1fdbda28a3..0564d69369 100644 --- a/plugins/scaffolder-backend-module-yeoman/src/module.ts +++ b/plugins/scaffolder-backend-module-yeoman/src/module.ts @@ -14,7 +14,7 @@ * limitations under the License. */ import { createBackendModule } from '@backstage/backend-plugin-api'; -import { scaffolderActionsExtensionPoint } from '@backstage/plugin-scaffolder-node/alpha'; +import { scaffolderActionsExtensionPoint } from '@backstage/plugin-scaffolder-node'; import { createRunYeomanAction } from './actions'; /** diff --git a/plugins/scaffolder-backend/report.api.md b/plugins/scaffolder-backend/report.api.md index 918718e495..8f9249cc5e 100644 --- a/plugins/scaffolder-backend/report.api.md +++ b/plugins/scaffolder-backend/report.api.md @@ -3,45 +3,21 @@ > Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/). ```ts -import { AuditorService } from '@backstage/backend-plugin-api'; -import { AuthService } from '@backstage/backend-plugin-api'; import { BackendFeature } from '@backstage/backend-plugin-api'; -import { BackstageCredentials } from '@backstage/backend-plugin-api'; import { CatalogService } from '@backstage/plugin-catalog-node'; -import { Config } from '@backstage/config'; -import { DatabaseService } from '@backstage/backend-plugin-api'; import { Duration } from 'luxon'; -import { EventsService } from '@backstage/plugin-events-node'; import { HumanDuration } from '@backstage/types'; -import { JsonObject } from '@backstage/types'; -import { Knex } from 'knex'; -import { LoggerService } from '@backstage/backend-plugin-api'; -import { PermissionCriteria } from '@backstage/plugin-permission-common'; -import { PermissionEvaluator } from '@backstage/plugin-permission-common'; import { PermissionRule } from '@backstage/plugin-permission-node'; import { PermissionRuleParams } from '@backstage/plugin-permission-common'; import { RESOURCE_TYPE_SCAFFOLDER_ACTION } from '@backstage/plugin-scaffolder-common/alpha'; import { RESOURCE_TYPE_SCAFFOLDER_TEMPLATE } from '@backstage/plugin-scaffolder-common/alpha'; import { ScmIntegrations } from '@backstage/integration'; -import { SerializedTask } from '@backstage/plugin-scaffolder-node'; -import { SerializedTaskEvent } from '@backstage/plugin-scaffolder-node'; -import { TaskBroker } from '@backstage/plugin-scaffolder-node'; -import { TaskCompletionState } from '@backstage/plugin-scaffolder-node'; -import { TaskContext } from '@backstage/plugin-scaffolder-node'; -import { TaskFilters } from '@backstage/plugin-scaffolder-node'; -import { TaskRecovery } from '@backstage/plugin-scaffolder-common'; -import { TaskSecrets } from '@backstage/plugin-scaffolder-node'; -import { TaskSpec } from '@backstage/plugin-scaffolder-common'; -import { TaskSpecV1beta3 } from '@backstage/plugin-scaffolder-common'; -import { TaskStatus } from '@backstage/plugin-scaffolder-node'; import { TemplateAction } from '@backstage/plugin-scaffolder-node'; import { TemplateEntityStepV1beta3 } from '@backstage/plugin-scaffolder-common'; import { TemplateFilter } from '@backstage/plugin-scaffolder-node'; import { TemplateGlobal } from '@backstage/plugin-scaffolder-node'; import { TemplateParametersV1beta3 } from '@backstage/plugin-scaffolder-common'; -import { UpdateTaskCheckpointOptions } from '@backstage/plugin-scaffolder-node/alpha'; import { UrlReaderService } from '@backstage/backend-plugin-api'; -import { WorkspaceProvider } from '@backstage/plugin-scaffolder-node/alpha'; // @public (undocumented) export type ActionPermissionRuleInput< @@ -267,359 +243,10 @@ export function createWaitAction(options?: { 'v2' >; -// @public @deprecated -export type CreateWorkerOptions = { - taskBroker: TaskBroker; - actionRegistry: TemplateActionRegistry; - integrations: ScmIntegrations; - workingDirectory: string; - logger: LoggerService; - auditor?: AuditorService; - config?: Config; - additionalTemplateFilters?: Record; - concurrentTasksLimit?: number; - additionalTemplateGlobals?: Record; - permissions?: PermissionEvaluator; - gracefulShutdown?: boolean; -}; - -// @public -export interface CurrentClaimedTask { - createdBy?: string; - secrets?: TaskSecrets; - spec: TaskSpec; - state?: JsonObject; - taskId: string; - workspace?: Promise; -} - -// @public @deprecated -export class DatabaseTaskStore implements TaskStore { - // (undocumented) - cancelTask( - options: TaskStoreEmitOptions< - { - message: string; - } & JsonObject - >, - ): Promise; - // (undocumented) - claimTask(): Promise; - // (undocumented) - cleanWorkspace({ taskId }: { taskId: string }): Promise; - // (undocumented) - completeTask(options: { - taskId: string; - status: TaskStatus; - eventBody: JsonObject; - }): Promise; - // (undocumented) - static create(options: DatabaseTaskStoreOptions): Promise; - // (undocumented) - createTask( - options: TaskStoreCreateTaskOptions, - ): Promise; - // (undocumented) - emitLogEvent( - options: TaskStoreEmitOptions< - { - message: string; - } & JsonObject - >, - ): Promise; - // (undocumented) - getTask(taskId: string): Promise; - // (undocumented) - getTaskState({ taskId }: { taskId: string }): Promise< - | { - state: JsonObject; - } - | undefined - >; - // (undocumented) - heartbeatTask(taskId: string): Promise; - // (undocumented) - list(options: { - createdBy?: string; - status?: TaskStatus; - filters?: { - createdBy?: string | string[]; - status?: TaskStatus | TaskStatus[]; - }; - pagination?: { - limit?: number; - offset?: number; - }; - order?: { - order: 'asc' | 'desc'; - field: string; - }[]; - permissionFilters?: PermissionCriteria; - }): Promise<{ - tasks: SerializedTask[]; - totalTasks?: number; - }>; - // (undocumented) - listEvents(options: TaskStoreListEventsOptions): Promise<{ - events: SerializedTaskEvent[]; - }>; - // (undocumented) - listStaleTasks(options: { timeoutS: number }): Promise<{ - tasks: { - taskId: string; - recovery?: TaskRecovery; - }[]; - }>; - // (undocumented) - recoverTasks(options: TaskStoreRecoverTaskOptions): Promise<{ - ids: string[]; - }>; - // (undocumented) - rehydrateWorkspace(options: { - taskId: string; - targetPath: string; - }): Promise; - // (undocumented) - retryTask?(options: { secrets?: TaskSecrets; taskId: string }): Promise; - // (undocumented) - saveTaskState(options: { taskId: string; state?: JsonObject }): Promise; - // (undocumented) - serializeWorkspace(options: { path: string; taskId: string }): Promise; - // (undocumented) - shutdownTask(options: TaskStoreShutDownTaskOptions): Promise; -} - -// @public @deprecated -export type DatabaseTaskStoreOptions = { - database: DatabaseService | Knex; - events?: EventsService; -}; - // @public const scaffolderPlugin: BackendFeature; export default scaffolderPlugin; -// @public @deprecated -export class TaskManager implements TaskContext { - // (undocumented) - get cancelSignal(): AbortSignal; - // (undocumented) - cleanWorkspace?(): Promise; - // (undocumented) - complete(result: TaskCompletionState, metadata?: JsonObject): Promise; - // (undocumented) - static create( - task: CurrentClaimedTask, - storage: TaskStore, - abortSignal: AbortSignal, - logger: LoggerService, - auth?: AuthService, - config?: Config, - additionalWorkspaceProviders?: Record, - ): TaskManager; - // (undocumented) - get createdBy(): string | undefined; - // (undocumented) - get done(): boolean; - // (undocumented) - emitLog(message: string, logMetadata?: JsonObject): Promise; - // (undocumented) - getInitiatorCredentials(): Promise; - // (undocumented) - getTaskState?(): Promise< - | { - state?: JsonObject; - } - | undefined - >; - // (undocumented) - getWorkspaceName(): Promise; - // (undocumented) - rehydrateWorkspace?(options: { - taskId: string; - targetPath: string; - }): Promise; - // (undocumented) - get secrets(): TaskSecrets | undefined; - // (undocumented) - serializeWorkspace?(options: { path: string }): Promise; - // (undocumented) - get spec(): TaskSpecV1beta3; - // (undocumented) - get taskId(): string; - // (undocumented) - updateCheckpoint?(options: UpdateTaskCheckpointOptions): Promise; -} - -// @public @deprecated -export interface TaskStore { - // (undocumented) - cancelTask?(options: TaskStoreEmitOptions): Promise; - // (undocumented) - claimTask(): Promise; - // (undocumented) - cleanWorkspace?({ taskId }: { taskId: string }): Promise; - // (undocumented) - completeTask(options: { - taskId: string; - status: TaskStatus; - eventBody: JsonObject; - }): Promise; - // (undocumented) - createTask( - options: TaskStoreCreateTaskOptions, - ): Promise; - // (undocumented) - emitLogEvent(options: TaskStoreEmitOptions): Promise; - // (undocumented) - getTask(taskId: string): Promise; - // (undocumented) - getTaskState?({ taskId }: { taskId: string }): Promise< - | { - state: JsonObject; - } - | undefined - >; - // (undocumented) - heartbeatTask(taskId: string): Promise; - // (undocumented) - list?(options: { - filters?: { - createdBy?: string | string[]; - status?: TaskStatus | TaskStatus[]; - }; - pagination?: { - limit?: number; - offset?: number; - }; - permissionFilters?: PermissionCriteria; - order?: { - order: 'asc' | 'desc'; - field: string; - }[]; - }): Promise<{ - tasks: SerializedTask[]; - totalTasks?: number; - }>; - // @deprecated (undocumented) - list?(options: { - createdBy?: string; - status?: TaskStatus; - filters?: { - createdBy?: string | string[]; - status?: TaskStatus | TaskStatus[]; - }; - pagination?: { - limit?: number; - offset?: number; - }; - order?: { - order: 'asc' | 'desc'; - field: string; - }[]; - }): Promise<{ - tasks: SerializedTask[]; - totalTasks?: number; - }>; - // (undocumented) - listEvents(options: TaskStoreListEventsOptions): Promise<{ - events: SerializedTaskEvent[]; - }>; - // (undocumented) - listStaleTasks(options: { timeoutS: number }): Promise<{ - tasks: { - taskId: string; - }[]; - }>; - // (undocumented) - recoverTasks?(options: TaskStoreRecoverTaskOptions): Promise<{ - ids: string[]; - }>; - // (undocumented) - rehydrateWorkspace?(options: { - taskId: string; - targetPath: string; - }): Promise; - // (undocumented) - retryTask?(options: { secrets?: TaskSecrets; taskId: string }): Promise; - // (undocumented) - saveTaskState?(options: { - taskId: string; - state?: JsonObject; - }): Promise; - // (undocumented) - serializeWorkspace?({ - path, - taskId, - }: { - path: string; - taskId: string; - }): Promise; - // (undocumented) - shutdownTask?(options: TaskStoreShutDownTaskOptions): Promise; -} - -// @public @deprecated -export type TaskStoreCreateTaskOptions = { - spec: TaskSpec; - createdBy?: string; - secrets?: TaskSecrets; -}; - -// @public @deprecated -export type TaskStoreCreateTaskResult = { - taskId: string; -}; - -// @public @deprecated -export type TaskStoreEmitOptions = { - taskId: string; - body: TBody; -}; - -// @public @deprecated -export type TaskStoreListEventsOptions = { - isTaskRecoverable?: boolean; - taskId: string; - after?: number | undefined; -}; - -// @public @deprecated -export type TaskStoreRecoverTaskOptions = { - timeout: HumanDuration; -}; - -// @public @deprecated -export type TaskStoreShutDownTaskOptions = { - taskId: string; -}; - -// @public @deprecated -export class TaskWorker { - // (undocumented) - static create(options: CreateWorkerOptions): Promise; - // (undocumented) - protected onReadyToClaimTask(): Promise; - // (undocumented) - recoverTasks(): Promise; - // (undocumented) - runOneTask(task: TaskContext): Promise; - // (undocumented) - start(): void; - // (undocumented) - stop(): Promise; -} - -// @public @deprecated -export class TemplateActionRegistry { - // (undocumented) - get(actionId: string): TemplateAction; - // (undocumented) - list(): TemplateAction[]; - // (undocumented) - register(action: TemplateAction): void; -} - // @public (undocumented) export type TemplatePermissionRuleInput< TParams extends PermissionRuleParams = PermissionRuleParams, diff --git a/plugins/scaffolder-backend/src/ScaffolderPlugin.ts b/plugins/scaffolder-backend/src/ScaffolderPlugin.ts index a00da9e524..39bab85c7e 100644 --- a/plugins/scaffolder-backend/src/ScaffolderPlugin.ts +++ b/plugins/scaffolder-backend/src/ScaffolderPlugin.ts @@ -21,7 +21,11 @@ import { import { ScmIntegrations } from '@backstage/integration'; import { catalogServiceRef } from '@backstage/plugin-catalog-node'; import { eventsServiceRef } from '@backstage/plugin-events-node'; -import { TaskBroker, TemplateAction } from '@backstage/plugin-scaffolder-node'; +import { + scaffolderActionsExtensionPoint, + TaskBroker, + TemplateAction, +} from '@backstage/plugin-scaffolder-node'; import { AutocompleteHandler, CreatedTemplateFilter, @@ -29,7 +33,6 @@ import { createTemplateFilter, createTemplateGlobalFunction, createTemplateGlobalValue, - scaffolderActionsExtensionPoint, scaffolderAutocompleteExtensionPoint, scaffolderTaskBrokerExtensionPoint, scaffolderTemplatingExtensionPoint, diff --git a/plugins/scaffolder-backend/src/index.ts b/plugins/scaffolder-backend/src/index.ts index 4273ed8197..d911d51536 100644 --- a/plugins/scaffolder-backend/src/index.ts +++ b/plugins/scaffolder-backend/src/index.ts @@ -21,7 +21,9 @@ */ export { scaffolderPlugin as default } from './ScaffolderPlugin'; -export * from './scaffolder'; + +export * from './scaffolder/actions/builtin'; + export { type TemplatePermissionRuleInput, type ActionPermissionRuleInput, diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/TemplateActionRegistry.ts b/plugins/scaffolder-backend/src/scaffolder/actions/TemplateActionRegistry.ts index c819d4c21f..d6d7685a21 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/TemplateActionRegistry.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/TemplateActionRegistry.ts @@ -16,10 +16,9 @@ import { ConflictError, NotFoundError } from '@backstage/errors'; import { TemplateAction } from '@backstage/plugin-scaffolder-node'; + /** * Registry of all registered template actions. - * @public - * @deprecated this type is deprecated, and there will be a new way to create Workers in the next major version. */ export class TemplateActionRegistry { private readonly actions = new Map(); diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts index fdcaa8613e..22ce3e83b7 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/DatabaseTaskStore.ts @@ -85,8 +85,6 @@ export type RawDbTaskEventRow = { /** * DatabaseTaskStore - * @deprecated this type is deprecated, and there will be a new way to create Workers in the next major version. - * @public */ export type DatabaseTaskStoreOptions = { database: DatabaseService | Knex; @@ -118,8 +116,6 @@ const parseSqlDateToIsoString = (input: T): T | string => { /** * DatabaseTaskStore - * @deprecated this type is deprecated, and there will be a new way to create Workers in the next major version. - * @public */ export class DatabaseTaskStore implements TaskStore { private readonly db: Knex; @@ -723,7 +719,7 @@ export class DatabaseTaskStore implements TaskStore { }); } - async retryTask?(options: { + async retryTask(options: { secrets?: TaskSecrets; taskId: string; }): Promise { diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.ts index d069a6bc1c..bcae93fb4d 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.ts @@ -33,7 +33,7 @@ import { SecureTemplater, SecureTemplateRenderer, } from '../../lib/templating/SecureTemplater'; -import { TemplateActionRegistry } from '../actions'; +import { TemplateActionRegistry } from '../actions/TemplateActionRegistry'; import { generateExampleOutput, isTruthy } from './helper'; import { TaskTrackType, WorkflowResponse, WorkflowRunner } from './types'; diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts index 5b4d568144..2c2c176770 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts @@ -50,8 +50,6 @@ type TaskState = { }; /** * TaskManager - * @deprecated this type is deprecated, and there will be a new way to create Workers in the next major version. - * @public */ export class TaskManager implements TaskContext { private isDone = false; @@ -488,7 +486,7 @@ export class StorageTaskBroker implements TaskBroker { }); } - async retry?(options: { + async retry(options: { secrets?: TaskSecrets; taskId: string; }): Promise { diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.ts index 9abe5f3ba6..adfdf0b553 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.ts @@ -25,7 +25,7 @@ import { TemplateGlobal, } from '@backstage/plugin-scaffolder-node'; import PQueue from 'p-queue'; -import { TemplateActionRegistry } from '../actions'; +import { TemplateActionRegistry } from '../actions/TemplateActionRegistry'; import { NunjucksWorkflowRunner } from './NunjucksWorkflowRunner'; import { WorkflowRunner } from './types'; import { setTimeout } from 'timers/promises'; @@ -36,8 +36,6 @@ const DEFAULT_TASK_PARAMETER_MAX_LENGTH = 256; /** * TaskWorkerOptions - * @deprecated this type is deprecated, and there will be a new way to create Workers in the next major version. - * @public */ export type TaskWorkerOptions = { taskBroker: TaskBroker; @@ -54,8 +52,6 @@ export type TaskWorkerOptions = { /** * CreateWorkerOptions - * @deprecated this type is deprecated, and there will be a new way to create Workers in the next major version. - * @public */ export type CreateWorkerOptions = { taskBroker: TaskBroker; @@ -86,8 +82,6 @@ export type CreateWorkerOptions = { /** * TaskWorker - * @deprecated this type is deprecated, and there will be a new way to create Workers in the next major version. - * @public */ export class TaskWorker { private taskQueue: PQueue; diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts index 62ffb171ff..874e32b838 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/types.ts @@ -30,8 +30,6 @@ import { PermissionCriteria } from '@backstage/plugin-permission-common'; /** * TaskStoreEmitOptions * - * @public - * @deprecated this type is deprecated, and there will be a new way to create Workers in the next major version. */ export type TaskStoreEmitOptions = { taskId: string; @@ -41,8 +39,6 @@ export type TaskStoreEmitOptions = { /** * TaskStoreListEventsOptions * - * @public - * @deprecated this type is deprecated, and there will be a new way to create Workers in the next major version. */ export type TaskStoreListEventsOptions = { isTaskRecoverable?: boolean; @@ -53,8 +49,6 @@ export type TaskStoreListEventsOptions = { /** * TaskStoreShutDownTaskOptions * - * @public - * @deprecated this type is deprecated, and there will be a new way to create Workers in the next major version. */ export type TaskStoreShutDownTaskOptions = { taskId: string; @@ -62,8 +56,6 @@ export type TaskStoreShutDownTaskOptions = { /** * The options passed to {@link TaskStore.createTask} - * @public - * @deprecated this type is deprecated, and there will be a new way to create Workers in the next major version. */ export type TaskStoreCreateTaskOptions = { spec: TaskSpec; @@ -73,8 +65,6 @@ export type TaskStoreCreateTaskOptions = { /** * The options passed to {@link TaskStore.recoverTasks} - * @public - * @deprecated this type is deprecated, and there will be a new way to create Workers in the next major version. */ export type TaskStoreRecoverTaskOptions = { timeout: HumanDuration; @@ -82,8 +72,6 @@ export type TaskStoreRecoverTaskOptions = { /** * The response from {@link TaskStore.createTask} - * @public - * @deprecated this type is deprecated, and there will be a new way to create Workers in the next major version. */ export type TaskStoreCreateTaskResult = { taskId: string; @@ -92,19 +80,17 @@ export type TaskStoreCreateTaskResult = { /** * TaskStore * - * @public - * @deprecated this type is deprecated, and there will be a new way to create Workers in the next major version. */ export interface TaskStore { - cancelTask?(options: TaskStoreEmitOptions): Promise; + cancelTask(options: TaskStoreEmitOptions): Promise; createTask( options: TaskStoreCreateTaskOptions, ): Promise; - retryTask?(options: { secrets?: TaskSecrets; taskId: string }): Promise; + retryTask(options: { secrets?: TaskSecrets; taskId: string }): Promise; - recoverTasks?( + recoverTasks( options: TaskStoreRecoverTaskOptions, ): Promise<{ ids: string[] }>; @@ -137,51 +123,31 @@ export interface TaskStore { order?: { order: 'asc' | 'desc'; field: string }[]; }): Promise<{ tasks: SerializedTask[]; totalTasks?: number }>; - /** - * @deprecated Make sure to pass `createdBy` and `status` in the `filters` parameter instead - */ - list?(options: { - createdBy?: string; - status?: TaskStatus; - filters?: { - createdBy?: string | string[]; - status?: TaskStatus | TaskStatus[]; - }; - pagination?: { - limit?: number; - offset?: number; - }; - order?: { order: 'asc' | 'desc'; field: string }[]; - }): Promise<{ tasks: SerializedTask[]; totalTasks?: number }>; - emitLogEvent(options: TaskStoreEmitOptions): Promise; - getTaskState?({ taskId }: { taskId: string }): Promise< + getTaskState({ taskId }: { taskId: string }): Promise< | { state: JsonObject; } | undefined >; - saveTaskState?(options: { - taskId: string; - state?: JsonObject; - }): Promise; + saveTaskState(options: { taskId: string; state?: JsonObject }): Promise; listEvents( options: TaskStoreListEventsOptions, ): Promise<{ events: SerializedTaskEvent[] }>; - shutdownTask?(options: TaskStoreShutDownTaskOptions): Promise; + shutdownTask(options: TaskStoreShutDownTaskOptions): Promise; rehydrateWorkspace?(options: { taskId: string; targetPath: string; }): Promise; - cleanWorkspace?({ taskId }: { taskId: string }): Promise; + cleanWorkspace({ taskId }: { taskId: string }): Promise; - serializeWorkspace?({ + serializeWorkspace({ path, taskId, }: { diff --git a/plugins/scaffolder-node/report-alpha.api.md b/plugins/scaffolder-node/report-alpha.api.md index 09541fbc56..e1d49f571a 100644 --- a/plugins/scaffolder-node/report-alpha.api.md +++ b/plugins/scaffolder-node/report-alpha.api.md @@ -6,7 +6,6 @@ import { ExtensionPoint } from '@backstage/backend-plugin-api'; import { JsonValue } from '@backstage/types'; import { TaskBroker } from '@backstage/plugin-scaffolder-node'; -import { TemplateAction } from '@backstage/plugin-scaffolder-node'; import { TemplateFilter as TemplateFilter_2 } from '@backstage/plugin-scaffolder-node'; import { TemplateGlobal as TemplateGlobal_2 } from '@backstage/plugin-scaffolder-node'; import { z } from 'zod'; @@ -123,15 +122,6 @@ export const restoreWorkspace: (opts: { buffer?: Buffer; }) => Promise; -// @alpha -export interface ScaffolderActionsExtensionPoint { - // (undocumented) - addActions(...actions: TemplateAction[]): void; -} - -// @alpha -export const scaffolderActionsExtensionPoint: ExtensionPoint; - // @alpha export interface ScaffolderAutocompleteExtensionPoint { // (undocumented) @@ -147,13 +137,13 @@ export interface ScaffolderAutocompleteExtensionPoint { // @alpha export const scaffolderAutocompleteExtensionPoint: ExtensionPoint; -// @alpha +// @alpha @deprecated export interface ScaffolderTaskBrokerExtensionPoint { // (undocumented) setTaskBroker(taskBroker: TaskBroker): void; } -// @alpha +// @alpha @deprecated export const scaffolderTaskBrokerExtensionPoint: ExtensionPoint; // @alpha diff --git a/plugins/scaffolder-node/report.api.md b/plugins/scaffolder-node/report.api.md index c97344867a..7f70c9d786 100644 --- a/plugins/scaffolder-node/report.api.md +++ b/plugins/scaffolder-node/report.api.md @@ -6,6 +6,7 @@ import { BackstageCredentials } from '@backstage/backend-plugin-api'; import { CheckpointContext } from '@backstage/plugin-scaffolder-node/alpha'; import { Expand } from '@backstage/types'; +import { ExtensionPoint } from '@backstage/backend-plugin-api'; import { JsonObject } from '@backstage/types'; import { JsonValue } from '@backstage/types'; import { LoggerService } from '@backstage/backend-plugin-api'; @@ -306,6 +307,15 @@ export const parseRepoUrl: ( project?: string; }; +// @public +export interface ScaffolderActionsExtensionPoint { + // (undocumented) + addActions(...actions: TemplateAction[]): void; +} + +// @public +export const scaffolderActionsExtensionPoint: ExtensionPoint; + // @public (undocumented) export interface SerializedFile { // (undocumented) @@ -327,7 +337,7 @@ export function serializeDirectoryContents( }, ): Promise; -// @public +// @public @deprecated export type SerializedTask = { id: string; spec: TaskSpec; @@ -339,7 +349,7 @@ export type SerializedTask = { state?: JsonObject; }; -// @public +// @public @deprecated export type SerializedTaskEvent = { id: number; isTaskRecoverable?: boolean; @@ -353,10 +363,10 @@ export type SerializedTaskEvent = { createdAt: string; }; -// @public +// @public @deprecated export interface TaskBroker { // (undocumented) - cancel?(taskId: string): Promise; + cancel(taskId: string): Promise; // (undocumented) claim(): Promise; // (undocumented) @@ -370,7 +380,7 @@ export interface TaskBroker { // (undocumented) get(taskId: string): Promise; // (undocumented) - list?(options?: { + list(options?: { filters?: { createdBy?: string | string[]; status?: TaskStatus | TaskStatus[]; @@ -388,35 +398,30 @@ export interface TaskBroker { tasks: SerializedTask[]; totalTasks?: number; }>; - // @deprecated (undocumented) - list?(options: { createdBy?: string; status?: TaskStatus }): Promise<{ - tasks: SerializedTask[]; - totalTasks?: number; - }>; // (undocumented) - recoverTasks?(): Promise; + recoverTasks(): Promise; // (undocumented) - retry?(options: { secrets?: TaskSecrets; taskId: string }): Promise; + retry(options: { secrets?: TaskSecrets; taskId: string }): Promise; // (undocumented) vacuumTasks(options: { timeoutS: number }): Promise; } -// @public +// @public @deprecated export type TaskBrokerDispatchOptions = { spec: TaskSpec; secrets?: TaskSecrets; createdBy?: string; }; -// @public +// @public @deprecated export type TaskBrokerDispatchResult = { taskId: string; }; -// @public +// @public @deprecated export type TaskCompletionState = 'failed' | 'completed'; -// @public +// @public @deprecated export interface TaskContext { // (undocumented) cancelSignal: AbortSignal; @@ -460,16 +465,16 @@ export interface TaskContext { updateCheckpoint?(options: UpdateTaskCheckpointOptions): Promise; } -// @public +// @public @deprecated export type TaskEventType = 'completion' | 'log' | 'cancelled' | 'recovered'; -// @public +// @public @deprecated export type TaskFilter = { key: string; values?: string[]; }; -// @public +// @public @deprecated export type TaskFilters = | { anyOf: TaskFilter[]; @@ -487,7 +492,7 @@ export type TaskSecrets = Record & { backstageToken?: string; }; -// @public +// @public @deprecated export type TaskStatus = | 'cancelled' | 'completed' diff --git a/plugins/scaffolder-node/src/alpha/index.ts b/plugins/scaffolder-node/src/alpha/index.ts index 30f95f116a..9d0b9efafd 100644 --- a/plugins/scaffolder-node/src/alpha/index.ts +++ b/plugins/scaffolder-node/src/alpha/index.ts @@ -17,7 +17,6 @@ import { createExtensionPoint } from '@backstage/backend-plugin-api'; import { TaskBroker, - TemplateAction, TemplateFilter, TemplateGlobal, } from '@backstage/plugin-scaffolder-node'; @@ -30,29 +29,11 @@ export * from './globals'; export * from './types'; export * from './checkpoints'; -/** - * Extension point for managing scaffolder actions. - * - * @alpha - */ -export interface ScaffolderActionsExtensionPoint { - addActions(...actions: TemplateAction[]): void; -} - -/** - * Extension point for managing scaffolder actions. - * - * @alpha - */ -export const scaffolderActionsExtensionPoint = - createExtensionPoint({ - id: 'scaffolder.actions', - }); - /** * Extension point for replacing the scaffolder task broker. * * @alpha + * @deprecated this extension point is planned to be removed, please reach out to us in an issue if you're using this extension point and your use cases. */ export interface ScaffolderTaskBrokerExtensionPoint { setTaskBroker(taskBroker: TaskBroker): void; @@ -62,6 +43,7 @@ export interface ScaffolderTaskBrokerExtensionPoint { * Extension point for replacing the scaffolder task broker. * * @alpha + * @deprecated this extension point is planned to be removed, please reach out to us in an issue if you're using this extension point and your use cases. */ export const scaffolderTaskBrokerExtensionPoint = createExtensionPoint({ diff --git a/plugins/scaffolder-node/src/extensions.ts b/plugins/scaffolder-node/src/extensions.ts new file mode 100644 index 0000000000..94b366fceb --- /dev/null +++ b/plugins/scaffolder-node/src/extensions.ts @@ -0,0 +1,36 @@ +/* + * Copyright 2025 The Backstage Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import { createExtensionPoint } from '@backstage/backend-plugin-api'; +import { TemplateAction } from './actions'; + +/** + * Extension point for managing scaffolder actions. + * + * @public + */ +export interface ScaffolderActionsExtensionPoint { + addActions(...actions: TemplateAction[]): void; +} + +/** + * Extension point for managing scaffolder actions. + * + * @public + */ +export const scaffolderActionsExtensionPoint = + createExtensionPoint({ + id: 'scaffolder.actions', + }); diff --git a/plugins/scaffolder-node/src/index.ts b/plugins/scaffolder-node/src/index.ts index 5d49ee874c..a9aa77ba4e 100644 --- a/plugins/scaffolder-node/src/index.ts +++ b/plugins/scaffolder-node/src/index.ts @@ -24,3 +24,4 @@ export * from './actions'; export * from './tasks'; export * from './files'; export * from './types'; +export * from './extensions'; diff --git a/plugins/scaffolder-node/src/tasks/types.ts b/plugins/scaffolder-node/src/tasks/types.ts index aaac468fce..d6e4bb2dd9 100644 --- a/plugins/scaffolder-node/src/tasks/types.ts +++ b/plugins/scaffolder-node/src/tasks/types.ts @@ -33,6 +33,8 @@ export type TaskSecrets = Record & { * The status of each step of the Task * * @public + * @deprecated this type is planned to be removed. + * Please reach out to us in an issue if you're using this type and your use cases. */ export type TaskStatus = | 'cancelled' @@ -46,6 +48,8 @@ export type TaskStatus = * The state of a completed task. * * @public + * @deprecated this interface is planned to be removed. + * Please reach out to us in an issue if you're using this interface and your use cases. */ export type TaskCompletionState = 'failed' | 'completed'; @@ -53,6 +57,8 @@ export type TaskCompletionState = 'failed' | 'completed'; * SerializedTask * * @public + * @deprecated this type is planned to be removed. + * Please reach out to us in an issue if you're using this type and your use cases. */ export type SerializedTask = { id: string; @@ -69,6 +75,8 @@ export type SerializedTask = { * TaskEventType * * @public + * @deprecated this type is planned to be removed. + * Please reach out to us in an issue if you're using this type and your use cases. */ export type TaskEventType = 'completion' | 'log' | 'cancelled' | 'recovered'; @@ -76,6 +84,8 @@ export type TaskEventType = 'completion' | 'log' | 'cancelled' | 'recovered'; * SerializedTaskEvent * * @public + * @deprecated this type is planned to be removed. + * Please reach out to us in an issue if you're using this type and your use cases. */ export type SerializedTaskEvent = { id: number; @@ -94,6 +104,8 @@ export type SerializedTaskEvent = { * The result of {@link TaskBroker.dispatch} * * @public + * @deprecated this interface is planned to be removed. + * Please reach out to us in an issue if you're using this interface and your use cases. */ export type TaskBrokerDispatchResult = { taskId: string; @@ -104,6 +116,8 @@ export type TaskBrokerDispatchResult = { * Currently a spec and optional secrets * * @public + * @deprecated this interface is planned to be removed. + * Please reach out to us in an issue if you're using this interface and your use cases. */ export type TaskBrokerDispatchOptions = { spec: TaskSpec; @@ -114,6 +128,8 @@ export type TaskBrokerDispatchOptions = { /** * TaskFilter * @public + * @deprecated this type is planned to be removed. + * Please reach out to us in an issue if you're using this type and your use cases. */ export type TaskFilter = { key: string; @@ -123,6 +139,8 @@ export type TaskFilter = { /** * TaskFilters * @public + * @deprecated this type is planned to be removed. + * Please reach out to us in an issue if you're using this type and your use cases. */ export type TaskFilters = | { anyOf: TaskFilter[] } @@ -131,9 +149,12 @@ export type TaskFilters = | TaskFilter; /** - * Task + * TaskContext * * @public + * + * @deprecated this interface is planned to be removed. + * Please reach out to us in an issue if you're using this interface and your use cases. */ export interface TaskContext { taskId?: string; @@ -175,15 +196,17 @@ export interface TaskContext { * TaskBroker * * @public + * @deprecated this interface is planned to be removed. + * Please reach out to us in an issue if you're using this interface and your use cases. */ export interface TaskBroker { - cancel?(taskId: string): Promise; + cancel(taskId: string): Promise; - retry?(options: { secrets?: TaskSecrets; taskId: string }): Promise; + retry(options: { secrets?: TaskSecrets; taskId: string }): Promise; claim(): Promise; - recoverTasks?(): Promise; + recoverTasks(): Promise; dispatch( options: TaskBrokerDispatchOptions, @@ -198,7 +221,7 @@ export interface TaskBroker { get(taskId: string): Promise; - list?(options?: { + list(options?: { filters?: { createdBy?: string | string[]; status?: TaskStatus | TaskStatus[]; @@ -210,12 +233,4 @@ export interface TaskBroker { order?: { order: 'asc' | 'desc'; field: string }[]; permissionFilters?: PermissionCriteria; }): Promise<{ tasks: SerializedTask[]; totalTasks?: number }>; - - /** - * @deprecated Make sure to pass `createdBy` and `status` in the `filters` parameter instead - */ - list?(options: { - createdBy?: string; - status?: TaskStatus; - }): Promise<{ tasks: SerializedTask[]; totalTasks?: number }>; }