@backstage/plugin-scaffolder-backend 1.21.3 → 1.22.0-next.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/dist/index.cjs.js CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var router = require('./cjs/router-f392ade6.cjs.js');
5
+ var router = require('./cjs/router-1665319e.cjs.js');
6
6
  var github = require('@backstage/plugin-scaffolder-backend-module-github');
7
7
  var gitlab = require('@backstage/plugin-scaffolder-backend-module-gitlab');
8
8
  var azure = require('@backstage/plugin-scaffolder-backend-module-azure');
@@ -12,6 +12,7 @@ var bitbucketServer = require('@backstage/plugin-scaffolder-backend-module-bitbu
12
12
  var gerrit = require('@backstage/plugin-scaffolder-backend-module-gerrit');
13
13
  var pluginScaffolderNode = require('@backstage/plugin-scaffolder-node');
14
14
  var pluginCatalogBackendModuleScaffolderEntityModel = require('@backstage/plugin-catalog-backend-module-scaffolder-entity-model');
15
+ require('@backstage/backend-common');
15
16
  require('@backstage/catalog-model');
16
17
  require('@backstage/config');
17
18
  require('@backstage/errors');
@@ -24,7 +25,6 @@ require('jsonschema');
24
25
  require('zod');
25
26
  require('yaml');
26
27
  require('fs-extra');
27
- require('@backstage/backend-common');
28
28
  require('path');
29
29
  require('luxon');
30
30
  require('globby');
package/dist/index.d.ts CHANGED
@@ -1,10 +1,11 @@
1
1
  import * as _backstage_plugin_scaffolder_node from '@backstage/plugin-scaffolder-node';
2
2
  import { TemplateFilter as TemplateFilter$1, TemplateGlobal as TemplateGlobal$1, TemplateAction as TemplateAction$1, TaskStatus as TaskStatus$1, TaskCompletionState as TaskCompletionState$1, SerializedTask as SerializedTask$1, TaskEventType as TaskEventType$1, SerializedTaskEvent as SerializedTaskEvent$1, TaskBrokerDispatchResult as TaskBrokerDispatchResult$1, TaskBrokerDispatchOptions as TaskBrokerDispatchOptions$1, TaskContext as TaskContext$1, TaskBroker as TaskBroker$1, TaskSecrets as TaskSecrets$1, ActionContext as ActionContext$1, ExecuteShellCommandOptions, executeShellCommand as executeShellCommand$1, fetchContents as fetchContents$1 } from '@backstage/plugin-scaffolder-node';
3
3
  import * as _backstage_types from '@backstage/types';
4
- import { HumanDuration, JsonObject } from '@backstage/types';
4
+ import { HumanDuration, JsonObject, JsonValue } from '@backstage/types';
5
5
  import * as _backstage_integration from '@backstage/integration';
6
6
  import { ScmIntegrations } from '@backstage/integration';
7
7
  import { CatalogApi } from '@backstage/catalog-client';
8
+ import { AuthService, BackstageCredentials, LifecycleService, PermissionsService, HttpAuthService, DiscoveryService } from '@backstage/backend-plugin-api';
8
9
  import { UrlReader, PluginDatabaseManager } from '@backstage/backend-common';
9
10
  import { Config } from '@backstage/config';
10
11
  import { Duration } from 'luxon';
@@ -23,9 +24,8 @@ import { PermissionEvaluator, PermissionRuleParams } from '@backstage/plugin-per
23
24
  import { PluginTaskScheduler } from '@backstage/backend-tasks';
24
25
  import { RESOURCE_TYPE_SCAFFOLDER_TEMPLATE, RESOURCE_TYPE_SCAFFOLDER_ACTION } from '@backstage/plugin-scaffolder-common/alpha';
25
26
  import express from 'express';
26
- import { IdentityApi } from '@backstage/plugin-auth-node';
27
27
  import { PermissionRule } from '@backstage/plugin-permission-node';
28
- import { LifecycleService } from '@backstage/backend-plugin-api';
28
+ import { IdentityApi } from '@backstage/plugin-auth-node';
29
29
  import * as jsonschema from 'jsonschema';
30
30
  import * as zod from 'zod';
31
31
  import { ScaffolderEntitiesProcessor as ScaffolderEntitiesProcessor$1 } from '@backstage/plugin-catalog-backend-module-scaffolder-entity-model';
@@ -37,6 +37,7 @@ import { ScaffolderEntitiesProcessor as ScaffolderEntitiesProcessor$1 } from '@b
37
37
  declare function createCatalogRegisterAction(options: {
38
38
  catalogClient: CatalogApi;
39
39
  integrations: ScmIntegrations;
40
+ auth?: AuthService;
40
41
  }): _backstage_plugin_scaffolder_node.TemplateAction<{
41
42
  catalogInfoUrl: string;
42
43
  optional?: boolean | undefined;
@@ -62,6 +63,7 @@ declare function createCatalogWriteAction(): _backstage_plugin_scaffolder_node.T
62
63
  */
63
64
  declare function createFetchCatalogEntityAction(options: {
64
65
  catalogClient: CatalogApi;
66
+ auth?: AuthService;
65
67
  }): _backstage_plugin_scaffolder_node.TemplateAction<{
66
68
  entityRef?: string | undefined;
67
69
  entityRefs?: string[] | undefined;
@@ -90,6 +92,10 @@ interface CreateBuiltInActionsOptions {
90
92
  * The {@link @backstage/catalog-client#CatalogApi} that will be used in the default actions.
91
93
  */
92
94
  catalogClient: CatalogApi;
95
+ /**
96
+ * The {@link @backstage/backend-plugin-api#AuthService} that will be used in the default actions.
97
+ */
98
+ auth?: AuthService;
93
99
  /**
94
100
  * The {@link @backstage/config#Config} that will be used in the default actions.
95
101
  */
@@ -482,6 +488,15 @@ interface TaskStore {
482
488
  tasks: SerializedTask[];
483
489
  }>;
484
490
  emitLogEvent(options: TaskStoreEmitOptions): Promise<void>;
491
+ getTaskState?({ taskId }: {
492
+ taskId: string;
493
+ }): Promise<{
494
+ state: JsonObject;
495
+ } | undefined>;
496
+ saveTaskState?(options: {
497
+ taskId: string;
498
+ state?: JsonObject;
499
+ }): Promise<void>;
485
500
  listEvents(options: TaskStoreListEventsOptions): Promise<{
486
501
  events: SerializedTaskEvent[];
487
502
  }>;
@@ -535,6 +550,15 @@ declare class DatabaseTaskStore implements TaskStore {
535
550
  emitLogEvent(options: TaskStoreEmitOptions<{
536
551
  message: string;
537
552
  } & JsonObject>): Promise<void>;
553
+ getTaskState({ taskId }: {
554
+ taskId: string;
555
+ }): Promise<{
556
+ state: JsonObject;
557
+ } | undefined>;
558
+ saveTaskState(options: {
559
+ taskId: string;
560
+ state?: JsonObject;
561
+ }): Promise<void>;
538
562
  listEvents(options: TaskStoreListEventsOptions): Promise<{
539
563
  events: SerializedTaskEvent$1[];
540
564
  }>;
@@ -557,9 +581,10 @@ declare class TaskManager implements TaskContext$1 {
557
581
  private readonly storage;
558
582
  private readonly signal;
559
583
  private readonly logger;
584
+ private readonly auth?;
560
585
  private isDone;
561
586
  private heartbeatTimeoutId?;
562
- static create(task: CurrentClaimedTask, storage: TaskStore, abortSignal: AbortSignal, logger: Logger): TaskManager;
587
+ static create(task: CurrentClaimedTask, storage: TaskStore, abortSignal: AbortSignal, logger: Logger, auth?: AuthService): TaskManager;
563
588
  private constructor();
564
589
  get spec(): _backstage_plugin_scaffolder_common.TaskSpecV1beta3;
565
590
  get cancelSignal(): AbortSignal;
@@ -568,8 +593,21 @@ declare class TaskManager implements TaskContext$1 {
568
593
  getWorkspaceName(): Promise<string>;
569
594
  get done(): boolean;
570
595
  emitLog(message: string, logMetadata?: JsonObject): Promise<void>;
596
+ getTaskState?(): Promise<{
597
+ state?: JsonObject;
598
+ } | undefined>;
599
+ updateCheckpoint?(options: {
600
+ key: string;
601
+ status: 'success';
602
+ value: JsonValue;
603
+ } | {
604
+ key: string;
605
+ status: 'failed';
606
+ reason: string;
607
+ }): Promise<void>;
571
608
  complete(result: TaskCompletionState$1, metadata?: JsonObject): Promise<void>;
572
609
  private startTimeout;
610
+ getInitiatorCredentials(): Promise<BackstageCredentials>;
573
611
  }
574
612
  /**
575
613
  * Stores the state of the current claimed task passed to the TaskContext
@@ -589,6 +627,10 @@ interface CurrentClaimedTask {
589
627
  * The secrets that are stored with the task.
590
628
  */
591
629
  secrets?: TaskSecrets$1;
630
+ /**
631
+ * The state of checkpoints of the task.
632
+ */
633
+ state?: JsonObject;
592
634
  /**
593
635
  * The creator of the task.
594
636
  */
@@ -679,9 +721,12 @@ interface RouterOptions {
679
721
  taskBroker?: TaskBroker$1;
680
722
  additionalTemplateFilters?: Record<string, TemplateFilter$1>;
681
723
  additionalTemplateGlobals?: Record<string, TemplateGlobal$1>;
682
- permissions?: PermissionEvaluator;
724
+ permissions?: PermissionsService;
683
725
  permissionRules?: Array<TemplatePermissionRuleInput | ActionPermissionRuleInput>;
726
+ auth?: AuthService;
727
+ httpAuth?: HttpAuthService;
684
728
  identity?: IdentityApi;
729
+ discovery?: DiscoveryService;
685
730
  }
686
731
  /**
687
732
  * A method to create a router for the scaffolder backend plugin.
@@ -0,0 +1,35 @@
1
+ /*
2
+ * Copyright 2020 The Backstage Authors
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ // @ts-check
18
+
19
+ /**
20
+ * @param {import('knex').Knex} knex
21
+ */
22
+ exports.up = async function up(knex) {
23
+ await knex.schema.alterTable('tasks', table => {
24
+ table.text('state').nullable().comment('A state of the checkpoints');
25
+ });
26
+ };
27
+
28
+ /**
29
+ * @param {import('knex').Knex} knex
30
+ */
31
+ exports.down = async function down(knex) {
32
+ await knex.schema.alterTable('tasks', table => {
33
+ table.dropColumn('state');
34
+ });
35
+ };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@backstage/plugin-scaffolder-backend",
3
3
  "description": "The Backstage backend plugin that helps you create new things",
4
- "version": "1.21.3",
4
+ "version": "1.22.0-next.1",
5
5
  "main": "./dist/index.cjs.js",
6
6
  "types": "./dist/index.d.ts",
7
7
  "license": "Apache-2.0",
@@ -44,29 +44,29 @@
44
44
  "build:assets": "node scripts/build-nunjucks.js"
45
45
  },
46
46
  "dependencies": {
47
- "@backstage/backend-common": "^0.21.3",
48
- "@backstage/backend-plugin-api": "^0.6.13",
49
- "@backstage/backend-tasks": "^0.5.18",
50
- "@backstage/catalog-client": "^1.6.0",
51
- "@backstage/catalog-model": "^1.4.4",
52
- "@backstage/config": "^1.1.1",
53
- "@backstage/errors": "^1.2.3",
54
- "@backstage/integration": "^1.9.0",
55
- "@backstage/plugin-auth-node": "^0.4.8",
56
- "@backstage/plugin-catalog-backend-module-scaffolder-entity-model": "^0.1.10",
57
- "@backstage/plugin-catalog-node": "^1.7.3",
58
- "@backstage/plugin-permission-common": "^0.7.12",
59
- "@backstage/plugin-permission-node": "^0.7.24",
60
- "@backstage/plugin-scaffolder-backend-module-azure": "^0.1.5",
61
- "@backstage/plugin-scaffolder-backend-module-bitbucket": "^0.2.3",
62
- "@backstage/plugin-scaffolder-backend-module-bitbucket-cloud": "^0.1.3",
63
- "@backstage/plugin-scaffolder-backend-module-bitbucket-server": "^0.1.3",
64
- "@backstage/plugin-scaffolder-backend-module-gerrit": "^0.1.5",
65
- "@backstage/plugin-scaffolder-backend-module-gitea": "^0.1.3",
66
- "@backstage/plugin-scaffolder-backend-module-github": "^0.2.3",
67
- "@backstage/plugin-scaffolder-backend-module-gitlab": "^0.2.16",
68
- "@backstage/plugin-scaffolder-common": "^1.5.0",
69
- "@backstage/plugin-scaffolder-node": "^0.3.3",
47
+ "@backstage/backend-common": "^0.21.4-next.1",
48
+ "@backstage/backend-plugin-api": "^0.6.14-next.1",
49
+ "@backstage/backend-tasks": "^0.5.19-next.1",
50
+ "@backstage/catalog-client": "^1.6.1-next.0",
51
+ "@backstage/catalog-model": "^1.4.5-next.0",
52
+ "@backstage/config": "^1.2.0-next.1",
53
+ "@backstage/errors": "^1.2.4-next.0",
54
+ "@backstage/integration": "^1.9.1-next.1",
55
+ "@backstage/plugin-auth-node": "^0.4.9-next.1",
56
+ "@backstage/plugin-catalog-backend-module-scaffolder-entity-model": "^0.1.11-next.1",
57
+ "@backstage/plugin-catalog-node": "^1.8.0-next.1",
58
+ "@backstage/plugin-permission-common": "^0.7.13-next.1",
59
+ "@backstage/plugin-permission-node": "^0.7.25-next.1",
60
+ "@backstage/plugin-scaffolder-backend-module-azure": "^0.1.6-next.1",
61
+ "@backstage/plugin-scaffolder-backend-module-bitbucket": "^0.2.4-next.1",
62
+ "@backstage/plugin-scaffolder-backend-module-bitbucket-cloud": "^0.1.4-next.1",
63
+ "@backstage/plugin-scaffolder-backend-module-bitbucket-server": "^0.1.4-next.1",
64
+ "@backstage/plugin-scaffolder-backend-module-gerrit": "^0.1.6-next.1",
65
+ "@backstage/plugin-scaffolder-backend-module-gitea": "^0.1.4-next.1",
66
+ "@backstage/plugin-scaffolder-backend-module-github": "^0.2.4-next.1",
67
+ "@backstage/plugin-scaffolder-backend-module-gitlab": "^0.2.17-next.1",
68
+ "@backstage/plugin-scaffolder-common": "^1.5.1-next.1",
69
+ "@backstage/plugin-scaffolder-node": "^0.4.0-next.1",
70
70
  "@backstage/types": "^1.1.1",
71
71
  "@types/express": "^4.17.6",
72
72
  "@types/luxon": "^3.0.0",
@@ -84,15 +84,16 @@
84
84
  "p-limit": "^3.1.0",
85
85
  "p-queue": "^6.6.2",
86
86
  "prom-client": "^15.0.0",
87
- "uuid": "^8.2.0",
87
+ "uuid": "^9.0.0",
88
88
  "winston": "^3.2.1",
89
89
  "yaml": "^2.0.0",
90
90
  "zen-observable": "^0.10.0",
91
91
  "zod": "^3.22.4"
92
92
  },
93
93
  "devDependencies": {
94
- "@backstage/backend-test-utils": "^0.3.3",
95
- "@backstage/cli": "^0.25.2",
94
+ "@backstage/backend-test-utils": "^0.3.4-next.1",
95
+ "@backstage/cli": "^0.25.3-next.1",
96
+ "@backstage/plugin-scaffolder-node-test-utils": "^0.1.0-next.1",
96
97
  "@types/fs-extra": "^11.0.0",
97
98
  "@types/nunjucks": "^3.1.4",
98
99
  "@types/supertest": "^2.0.8",