diff --git a/.changeset/five-hornets-wash.md b/.changeset/five-hornets-wash.md new file mode 100644 index 0000000000..c29debb518 --- /dev/null +++ b/.changeset/five-hornets-wash.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend': patch +--- + +Fix some deprecations and misplaced `await` usage. diff --git a/plugins/scaffolder-backend/api-report.md b/plugins/scaffolder-backend/api-report.md index 467887dfc5..81e5ffb9f9 100644 --- a/plugins/scaffolder-backend/api-report.md +++ b/plugins/scaffolder-backend/api-report.md @@ -78,9 +78,9 @@ export const createBuiltinActions: ( // @public export interface CreateBuiltInActionsOptions { - additionalTemplateFilters?: Record; + additionalTemplateFilters?: Record; // (undocumented) - additionalTemplateGlobals?: Record; + additionalTemplateGlobals?: Record; catalogClient: CatalogApi; config: Config; integrations: ScmIntegrations; @@ -169,8 +169,8 @@ export function createFetchPlainFileAction(options: { export function createFetchTemplateAction(options: { reader: UrlReader; integrations: ScmIntegrations; - additionalTemplateFilters?: Record; - additionalTemplateGlobals?: Record; + additionalTemplateFilters?: Record; + additionalTemplateGlobals?: Record; }): TemplateAction_2< { url: string; @@ -343,14 +343,14 @@ export function createWaitAction(options?: { // @public export type CreateWorkerOptions = { - taskBroker: TaskBroker; + taskBroker: TaskBroker_2; actionRegistry: TemplateActionRegistry; integrations: ScmIntegrations; workingDirectory: string; logger: Logger; - additionalTemplateFilters?: Record; + additionalTemplateFilters?: Record; concurrentTasksLimit?: number; - additionalTemplateGlobals?: Record; + additionalTemplateGlobals?: Record; permissions?: PermissionEvaluator; }; @@ -500,11 +500,11 @@ export type TaskContext = TaskContext_2; export type TaskEventType = TaskEventType_2; // @public -export class TaskManager implements TaskContext { +export class TaskManager implements TaskContext_2 { // (undocumented) get cancelSignal(): AbortSignal; // (undocumented) - complete(result: TaskCompletionState, metadata?: JsonObject): Promise; + complete(result: TaskCompletionState_2, metadata?: JsonObject): Promise; // (undocumented) static create( task: CurrentClaimedTask, @@ -619,7 +619,7 @@ export class TaskWorker { // (undocumented) recoverTasks(): Promise; // (undocumented) - runOneTask(task: TaskContext): Promise; + runOneTask(task: TaskContext_2): Promise; // (undocumented) start(): void; // (undocumented) diff --git a/plugins/scaffolder-backend/src/lib/templating/filters.ts b/plugins/scaffolder-backend/src/lib/templating/filters.ts index 21b43a6164..a8101a64d4 100644 --- a/plugins/scaffolder-backend/src/lib/templating/filters.ts +++ b/plugins/scaffolder-backend/src/lib/templating/filters.ts @@ -16,8 +16,10 @@ import { parseEntityRef } from '@backstage/catalog-model'; import { ScmIntegrations } from '@backstage/integration'; import type { JsonObject, JsonValue } from '@backstage/types'; -import { TemplateFilter } from '..'; -import { parseRepoUrl } from '@backstage/plugin-scaffolder-node'; +import { + parseRepoUrl, + TemplateFilter, +} from '@backstage/plugin-scaffolder-node'; import get from 'lodash/get'; export const createDefaultFilters = ({ diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/createBuiltinActions.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/createBuiltinActions.ts index 4a8bdec951..f9c15597a8 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/createBuiltinActions.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/createBuiltinActions.ts @@ -22,14 +22,17 @@ import { GithubCredentialsProvider, ScmIntegrations, } from '@backstage/integration'; -import { TemplateAction } from '@backstage/plugin-scaffolder-node'; +import { + TemplateAction, + TemplateFilter, + TemplateGlobal, +} from '@backstage/plugin-scaffolder-node'; import { createCatalogRegisterAction, createCatalogWriteAction, createFetchCatalogEntityAction, } from './catalog'; -import { TemplateFilter, TemplateGlobal } from '../../../lib'; import { createDebugLogAction, createWaitAction } from './debug'; import { createFetchPlainAction, diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.ts index 63a595ef80..b39582e18b 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/fetch/template.ts @@ -21,15 +21,13 @@ import { ScmIntegrations } from '@backstage/integration'; import { createTemplateAction, fetchContents, + TemplateFilter, + TemplateGlobal, } from '@backstage/plugin-scaffolder-node'; import globby from 'globby'; import fs from 'fs-extra'; import { isBinaryFile } from 'isbinaryfile'; -import { - TemplateFilter, - SecureTemplater, - TemplateGlobal, -} from '../../../../lib/templating/SecureTemplater'; +import { SecureTemplater } from '../../../../lib/templating/SecureTemplater'; import { createDefaultFilters } from '../../../../lib/templating/filters'; import { examples } from './template.examples'; diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts index 3085bb8687..cf29d43e19 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.test.ts @@ -19,12 +19,12 @@ import { NunjucksWorkflowRunner } from './NunjucksWorkflowRunner'; import { TemplateActionRegistry } from '../actions'; import { ScmIntegrations } from '@backstage/integration'; import { ConfigReader } from '@backstage/config'; -import { TaskContext } from './types'; import { TaskSpec } from '@backstage/plugin-scaffolder-common'; import { createTemplateAction, TaskSecrets, TemplateAction, + TaskContext, } from '@backstage/plugin-scaffolder-node'; import { UserEntity } from '@backstage/catalog-model'; import { z } from 'zod'; diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.ts index ce1ad71c33..f86cf9019e 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/NunjucksWorkflowRunner.ts @@ -15,12 +15,7 @@ */ import { ScmIntegrations } from '@backstage/integration'; -import { - TaskContext, - TaskTrackType, - WorkflowResponse, - WorkflowRunner, -} from './types'; +import { TaskTrackType, WorkflowResponse, WorkflowRunner } from './types'; import * as winston from 'winston'; import fs from 'fs-extra'; import path from 'path'; @@ -32,10 +27,8 @@ import { generateExampleOutput, isTruthy } from './helper'; import { validate as validateJsonSchema } from 'jsonschema'; import { TemplateActionRegistry } from '../actions'; import { - TemplateFilter, SecureTemplater, SecureTemplateRenderer, - TemplateGlobal, } from '../../lib/templating/SecureTemplater'; import { TaskSpec, @@ -43,7 +36,12 @@ import { TaskStep, } from '@backstage/plugin-scaffolder-common'; -import { TemplateAction } from '@backstage/plugin-scaffolder-node'; +import { + TemplateAction, + TemplateFilter, + TemplateGlobal, + TaskContext, +} from '@backstage/plugin-scaffolder-node'; import { createConditionAuthorizer } from '@backstage/plugin-permission-node'; import { UserEntity } from '@backstage/catalog-model'; import { createCounterMetric, createHistogramMetric } from '../../util/metrics'; @@ -226,7 +224,7 @@ export class NunjucksWorkflowRunner implements WorkflowRunner { try { if (step.if) { - const ifResult = await this.render(step.if, context, renderTemplate); + const ifResult = this.render(step.if, context, renderTemplate); if (!isTruthy(ifResult)) { await stepTrack.skipFalsy(); return; diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.test.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.test.ts index a79624456a..3d2fb28538 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.test.ts @@ -17,10 +17,12 @@ import { getVoidLogger, DatabaseManager } from '@backstage/backend-common'; import { ConfigReader } from '@backstage/config'; import { TaskSpec } from '@backstage/plugin-scaffolder-common'; -import { TaskSecrets } from '@backstage/plugin-scaffolder-node'; +import { + TaskSecrets, + SerializedTaskEvent, +} from '@backstage/plugin-scaffolder-node'; import { DatabaseTaskStore } from './DatabaseTaskStore'; import { StorageTaskBroker, TaskManager } from './StorageTaskBroker'; -import { SerializedTaskEvent } from './types'; async function createStore(): Promise { const manager = DatabaseManager.fromConfig( @@ -81,12 +83,12 @@ describe('StorageTaskBroker', () => { const taskA = await broker.claim(); const taskB = await broker.claim(); const taskC = await broker.claim(); - await expect(taskA).toEqual(expect.any(TaskManager as any)); - await expect(taskB).toEqual(expect.any(TaskManager as any)); - await expect(taskC).toEqual(expect.any(TaskManager as any)); - await expect(taskA.spec.steps[0].id).toBe('a'); - await expect(taskB.spec.steps[0].id).toBe('b'); - await expect(taskC.spec.steps[0].id).toBe('c'); + expect(taskA).toEqual(expect.any(TaskManager as any)); + expect(taskB).toEqual(expect.any(TaskManager as any)); + expect(taskC).toEqual(expect.any(TaskManager as any)); + expect(taskA.spec.steps[0].id).toBe('a'); + expect(taskB.spec.steps[0].id).toBe('b'); + expect(taskC.spec.steps[0].id).toBe('c'); }); it('should store secrets', async () => { diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts index 8b49f492e8..1e557512cb 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/StorageTaskBroker.ts @@ -16,19 +16,19 @@ import { Config } from '@backstage/config'; import { TaskSpec } from '@backstage/plugin-scaffolder-common'; -import { TaskSecrets } from '@backstage/plugin-scaffolder-node'; -import { JsonObject, Observable } from '@backstage/types'; -import { Logger } from 'winston'; -import ObservableImpl from 'zen-observable'; import { + TaskSecrets, SerializedTask, SerializedTaskEvent, TaskBroker, TaskBrokerDispatchOptions, TaskCompletionState, TaskContext, - TaskStore, -} from './types'; +} from '@backstage/plugin-scaffolder-node'; +import { JsonObject, Observable } from '@backstage/types'; +import { Logger } from 'winston'; +import ObservableImpl from 'zen-observable'; +import { TaskStore } from './types'; import { readDuration } from './helper'; /** diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.test.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.test.ts index e886b31369..70308c420c 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.test.ts @@ -27,8 +27,8 @@ import { SerializedTaskEvent, TaskBroker, TaskContext, - WorkflowRunner, -} from './types'; +} from '@backstage/plugin-scaffolder-node'; +import { WorkflowRunner } from './types'; import ObservableImpl from 'zen-observable'; import waitForExpect from 'wait-for-expect'; @@ -257,7 +257,7 @@ describe('Cancellable TaskWorker', () => { }, }); - await taskWorker.start(); + taskWorker.start(); await taskBroker.cancel(taskId); await waitForExpect(() => { diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.ts index cd7dc06a91..0f0ee2ad68 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/TaskWorker.ts @@ -14,14 +14,19 @@ * limitations under the License. */ -import { TaskContext, TaskBroker, WorkflowRunner } from './types'; +import { WorkflowRunner } from './types'; +import { + TaskContext, + TaskBroker, + TemplateFilter, + TemplateGlobal, +} from '@backstage/plugin-scaffolder-node'; import PQueue from 'p-queue'; import { NunjucksWorkflowRunner } from './NunjucksWorkflowRunner'; import { Logger } from 'winston'; import { TemplateActionRegistry } from '../actions'; import { ScmIntegrations } from '@backstage/integration'; import { assertError, stringifyError } from '@backstage/errors'; -import { TemplateFilter, TemplateGlobal } from '../../lib'; import { PermissionEvaluator } from '@backstage/plugin-permission-common'; /** diff --git a/plugins/scaffolder-backend/src/scaffolder/tasks/taskRecoveryHelper.test.ts b/plugins/scaffolder-backend/src/scaffolder/tasks/taskRecoveryHelper.test.ts index 8224feab8e..42cd617269 100644 --- a/plugins/scaffolder-backend/src/scaffolder/tasks/taskRecoveryHelper.test.ts +++ b/plugins/scaffolder-backend/src/scaffolder/tasks/taskRecoveryHelper.test.ts @@ -15,7 +15,7 @@ */ import { trimEventsTillLastRecovery } from './taskRecoveryHelper'; -import { SerializedTaskEvent } from './types'; +import { SerializedTaskEvent } from '@backstage/plugin-scaffolder-node'; const toLogEvent = (stepId: string) => ({