@backstage/plugin-scaffolder-backend 1.22.0-next.2 → 1.22.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/CHANGELOG.md CHANGED
@@ -1,5 +1,59 @@
1
1
  # @backstage/plugin-scaffolder-backend
2
2
 
3
+ ## 1.22.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies
8
+ - @backstage/plugin-catalog-node@1.9.0
9
+ - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.12
10
+
11
+ ## 1.22.0
12
+
13
+ ### Minor Changes
14
+
15
+ - e9663a9: Move away from using `ctx.logStream`
16
+ - aa543c9: Migrate plugin to use the new auth services, add an optional service discovery to the router options and change the permissions type to be `PermissionsService`.
17
+ - e9663a9: Enable the redaction of secrets using the redacting logger and the secrets from the `TaskSpec`
18
+ - c6b132e: Introducing checkpoints for scaffolder task action idempotency
19
+
20
+ ### Patch Changes
21
+
22
+ - 984abfa: Fixing the lost of the initial state after a task recovery.
23
+ - 703ebc9: Fix support for unauthenticated requests to create scaffolder tasks
24
+ - f44589d: Introduced `createMockActionContext` to unify the way of creating scaffolder mock context.
25
+
26
+ It will help to maintain tests in a long run during structural changes of action context.
27
+
28
+ - 0fb419b: Updated dependency `uuid` to `^9.0.0`.
29
+ Updated dependency `@types/uuid` to `^9.0.0`.
30
+ - bbd1fe1: Made "checkpoint" on scaffolder action context non-optional
31
+ - Updated dependencies
32
+ - @backstage/plugin-scaffolder-node@0.4.0
33
+ - @backstage/plugin-scaffolder-backend-module-azure@0.1.6
34
+ - @backstage/plugin-scaffolder-backend-module-bitbucket-cloud@0.1.4
35
+ - @backstage/plugin-scaffolder-backend-module-bitbucket-server@0.1.4
36
+ - @backstage/plugin-scaffolder-backend-module-bitbucket@0.2.4
37
+ - @backstage/backend-common@0.21.4
38
+ - @backstage/integration@1.9.1
39
+ - @backstage/plugin-auth-node@0.4.9
40
+ - @backstage/config@1.2.0
41
+ - @backstage/errors@1.2.4
42
+ - @backstage/backend-plugin-api@0.6.14
43
+ - @backstage/plugin-scaffolder-backend-module-gerrit@0.1.6
44
+ - @backstage/plugin-scaffolder-backend-module-github@0.2.4
45
+ - @backstage/plugin-scaffolder-backend-module-gitlab@0.3.0
46
+ - @backstage/plugin-scaffolder-backend-module-gitea@0.1.4
47
+ - @backstage/plugin-permission-common@0.7.13
48
+ - @backstage/plugin-catalog-node@1.8.0
49
+ - @backstage/catalog-client@1.6.1
50
+ - @backstage/backend-tasks@0.5.19
51
+ - @backstage/plugin-permission-node@0.7.25
52
+ - @backstage/plugin-catalog-backend-module-scaffolder-entity-model@0.1.11
53
+ - @backstage/catalog-model@1.4.5
54
+ - @backstage/types@1.1.1
55
+ - @backstage/plugin-scaffolder-common@1.5.1
56
+
3
57
  ## 1.22.0-next.2
4
58
 
5
59
  ### Minor Changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@backstage/plugin-scaffolder-backend",
3
- "version": "1.22.0-next.2",
3
+ "version": "1.22.1",
4
4
  "main": "../dist/alpha.cjs.js",
5
5
  "types": "../dist/alpha.d.ts"
6
6
  }
package/dist/alpha.cjs.js CHANGED
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var alpha = require('@backstage/plugin-scaffolder-common/alpha');
6
6
  var pluginPermissionNode = require('@backstage/plugin-permission-node');
7
- var router = require('./cjs/router-52d79583.cjs.js');
7
+ var router = require('./cjs/router-B0mT63g8.cjs.js');
8
8
  var backendPluginApi = require('@backstage/backend-plugin-api');
9
9
  var backendCommon = require('@backstage/backend-common');
10
10
  var integration = require('@backstage/integration');
@@ -174,7 +174,7 @@ const scaffolderPlugin = backendPluginApi.createBackendPlugin({
174
174
 
175
175
  exports.createScaffolderActionConditionalDecision = createScaffolderActionConditionalDecision;
176
176
  exports.createScaffolderTemplateConditionalDecision = createScaffolderTemplateConditionalDecision;
177
- exports["default"] = scaffolderPlugin;
177
+ exports.default = scaffolderPlugin;
178
178
  exports.scaffolderActionConditions = scaffolderActionConditions;
179
179
  exports.scaffolderTemplateConditions = scaffolderTemplateConditions;
180
180
  //# sourceMappingURL=alpha.cjs.js.map
@@ -41,10 +41,10 @@ var pluginPermissionCommon = require('@backstage/plugin-permission-common');
41
41
  var url = require('url');
42
42
  var os = require('os');
43
43
 
44
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
44
+ function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
45
45
 
46
- function _interopNamespace(e) {
47
- if (e && e.__esModule) return e;
46
+ function _interopNamespaceCompat(e) {
47
+ if (e && typeof e === 'object' && 'default' in e) return e;
48
48
  var n = Object.create(null);
49
49
  if (e) {
50
50
  Object.keys(e).forEach(function (k) {
@@ -57,28 +57,27 @@ function _interopNamespace(e) {
57
57
  }
58
58
  });
59
59
  }
60
- n["default"] = e;
60
+ n.default = e;
61
61
  return Object.freeze(n);
62
62
  }
63
63
 
64
- var express__default = /*#__PURE__*/_interopDefaultLegacy(express);
65
- var Router__default = /*#__PURE__*/_interopDefaultLegacy(Router);
66
- var yaml__default = /*#__PURE__*/_interopDefaultLegacy(yaml);
67
- var yaml__namespace = /*#__PURE__*/_interopNamespace(yaml);
68
- var fs__default = /*#__PURE__*/_interopDefaultLegacy(fs);
69
- var path__default = /*#__PURE__*/_interopDefaultLegacy(path);
70
- var globby__default = /*#__PURE__*/_interopDefaultLegacy(globby);
71
- var get__default = /*#__PURE__*/_interopDefaultLegacy(get);
72
- var ObservableImpl__default = /*#__PURE__*/_interopDefaultLegacy(ObservableImpl);
73
- var PQueue__default = /*#__PURE__*/_interopDefaultLegacy(PQueue);
74
- var winston__namespace = /*#__PURE__*/_interopNamespace(winston);
75
- var nunjucks__default = /*#__PURE__*/_interopDefaultLegacy(nunjucks);
76
- var os__default = /*#__PURE__*/_interopDefaultLegacy(os);
64
+ var express__default = /*#__PURE__*/_interopDefaultCompat(express);
65
+ var Router__default = /*#__PURE__*/_interopDefaultCompat(Router);
66
+ var yaml__namespace = /*#__PURE__*/_interopNamespaceCompat(yaml);
67
+ var fs__default = /*#__PURE__*/_interopDefaultCompat(fs);
68
+ var path__default = /*#__PURE__*/_interopDefaultCompat(path);
69
+ var globby__default = /*#__PURE__*/_interopDefaultCompat(globby);
70
+ var get__default = /*#__PURE__*/_interopDefaultCompat(get);
71
+ var ObservableImpl__default = /*#__PURE__*/_interopDefaultCompat(ObservableImpl);
72
+ var PQueue__default = /*#__PURE__*/_interopDefaultCompat(PQueue);
73
+ var winston__namespace = /*#__PURE__*/_interopNamespaceCompat(winston);
74
+ var nunjucks__default = /*#__PURE__*/_interopDefaultCompat(nunjucks);
75
+ var os__default = /*#__PURE__*/_interopDefaultCompat(os);
77
76
 
78
77
  const examples$9 = [
79
78
  {
80
79
  description: "Register with the catalog",
81
- example: yaml__default["default"].stringify({
80
+ example: yaml__namespace.default.stringify({
82
81
  steps: [
83
82
  {
84
83
  action: "catalog:register",
@@ -277,7 +276,7 @@ function createCatalogWriteAction() {
277
276
  ctx.logger.info(`Writing catalog-info.yaml`);
278
277
  const { filePath, entity } = ctx.input;
279
278
  const path = filePath != null ? filePath : "catalog-info.yaml";
280
- await fs__default["default"].writeFile(
279
+ await fs__default.default.writeFile(
281
280
  backendCommon.resolveSafeChildPath(ctx.workspacePath, path),
282
281
  yaml__namespace.stringify(entity)
283
282
  );
@@ -288,7 +287,7 @@ function createCatalogWriteAction() {
288
287
  const examples$7 = [
289
288
  {
290
289
  description: "Fetch entity by reference",
291
- example: yaml__default["default"].stringify({
290
+ example: yaml__namespace.default.stringify({
292
291
  steps: [
293
292
  {
294
293
  action: "catalog:fetch",
@@ -303,7 +302,7 @@ const examples$7 = [
303
302
  },
304
303
  {
305
304
  description: "Fetch multiple entities by reference",
306
- example: yaml__default["default"].stringify({
305
+ example: yaml__namespace.default.stringify({
307
306
  steps: [
308
307
  {
309
308
  action: "catalog:fetch",
@@ -406,7 +405,7 @@ function createFetchCatalogEntityAction(options) {
406
405
  const examples$6 = [
407
406
  {
408
407
  description: "Write a debug message",
409
- example: yaml__default["default"].stringify({
408
+ example: yaml__namespace.default.stringify({
410
409
  steps: [
411
410
  {
412
411
  action: "debug:log",
@@ -421,7 +420,7 @@ const examples$6 = [
421
420
  },
422
421
  {
423
422
  description: "List the workspace directory",
424
- example: yaml__default["default"].stringify({
423
+ example: yaml__namespace.default.stringify({
425
424
  steps: [
426
425
  {
427
426
  action: "debug:log",
@@ -491,7 +490,7 @@ async function recursiveReadDir(dir) {
491
490
  const examples$5 = [
492
491
  {
493
492
  description: "Waiting for 50 milliseconds",
494
- example: yaml__default["default"].stringify({
493
+ example: yaml__namespace.default.stringify({
495
494
  steps: [
496
495
  {
497
496
  action: "debug:wait",
@@ -506,7 +505,7 @@ const examples$5 = [
506
505
  },
507
506
  {
508
507
  description: "Waiting for 5 seconds",
509
- example: yaml__default["default"].stringify({
508
+ example: yaml__namespace.default.stringify({
510
509
  steps: [
511
510
  {
512
511
  action: "debug:wait",
@@ -521,7 +520,7 @@ const examples$5 = [
521
520
  },
522
521
  {
523
522
  description: "Waiting for 1 minutes",
524
- example: yaml__default["default"].stringify({
523
+ example: yaml__namespace.default.stringify({
525
524
  steps: [
526
525
  {
527
526
  action: "debug:wait",
@@ -599,7 +598,7 @@ function createWaitAction(options) {
599
598
  const examples$4 = [
600
599
  {
601
600
  description: "Downloads content and places it in the workspace.",
602
- example: yaml__default["default"].stringify({
601
+ example: yaml__namespace.default.stringify({
603
602
  steps: [
604
603
  {
605
604
  action: "fetch:plain",
@@ -614,7 +613,7 @@ const examples$4 = [
614
613
  },
615
614
  {
616
615
  description: "Optionally, if you would prefer the data to be downloaded to a subdirectory in the workspace you may specify the \u2018targetPath\u2019 input option.",
617
- example: yaml__default["default"].stringify({
616
+ example: yaml__namespace.default.stringify({
618
617
  steps: [
619
618
  {
620
619
  action: "fetch:plain",
@@ -681,7 +680,7 @@ function createFetchPlainAction(options) {
681
680
  const examples$3 = [
682
681
  {
683
682
  description: "Downloads a file and places it in the workspace.",
684
- example: yaml__default["default"].stringify({
683
+ example: yaml__namespace.default.stringify({
685
684
  steps: [
686
685
  {
687
686
  action: "fetch:plain:file",
@@ -840,7 +839,7 @@ class SecureTemplater {
840
839
  const isolate = new isolatedVm.Isolate({ memoryLimit: 128 });
841
840
  const context = await isolate.createContext();
842
841
  const contextGlobal = context.global;
843
- const nunjucksSource = await fs__default["default"].readFile(
842
+ const nunjucksSource = await fs__default.default.readFile(
844
843
  backendCommon.resolvePackagePath(
845
844
  "@backstage/plugin-scaffolder-backend",
846
845
  "assets/nunjucks.js.txt"
@@ -917,7 +916,7 @@ const createDefaultFilters = ({
917
916
  return {
918
917
  parseRepoUrl: (url) => pluginScaffolderNode.parseRepoUrl(url, integrations),
919
918
  parseEntityRef: (ref, context) => catalogModel.parseEntityRef(ref, context),
920
- pick: (obj, key) => get__default["default"](obj, key),
919
+ pick: (obj, key) => get__default.default(obj, key),
921
920
  projectSlug: (repoUrl) => {
922
921
  const { owner, repo } = pluginScaffolderNode.parseRepoUrl(repoUrl, integrations);
923
922
  return `${owner}/${repo}`;
@@ -928,7 +927,7 @@ const createDefaultFilters = ({
928
927
  const examples$2 = [
929
928
  {
930
929
  description: "Downloads a skeleton directory that lives alongside the template file and fill it out with values.",
931
- example: yaml__default["default"].stringify({
930
+ example: yaml__namespace.default.stringify({
932
931
  steps: [
933
932
  {
934
933
  action: "fetch:template",
@@ -1072,7 +1071,7 @@ function createFetchTemplateAction(options) {
1072
1071
  token: ctx.input.token
1073
1072
  });
1074
1073
  ctx.logger.info("Listing files and directories in template");
1075
- const allEntriesInTemplate = await globby__default["default"](`**/*`, {
1074
+ const allEntriesInTemplate = await globby__default.default(`**/*`, {
1076
1075
  cwd: templateDir,
1077
1076
  dot: true,
1078
1077
  onlyFiles: false,
@@ -1080,7 +1079,7 @@ function createFetchTemplateAction(options) {
1080
1079
  followSymbolicLinks: false
1081
1080
  });
1082
1081
  const nonTemplatedEntries = new Set(
1083
- await globby__default["default"](copyOnlyPatterns || [], {
1082
+ await globby__default.default(copyOnlyPatterns || [], {
1084
1083
  cwd: templateDir,
1085
1084
  dot: true,
1086
1085
  onlyFiles: false,
@@ -1129,7 +1128,7 @@ function createFetchTemplateAction(options) {
1129
1128
  continue;
1130
1129
  }
1131
1130
  const outputPath = backendCommon.resolveSafeChildPath(outputDir, localOutputPath);
1132
- if (fs__default["default"].existsSync(outputPath) && !ctx.input.replace) {
1131
+ if (fs__default.default.existsSync(outputPath) && !ctx.input.replace) {
1133
1132
  continue;
1134
1133
  }
1135
1134
  if (!renderContents && !extension) {
@@ -1141,22 +1140,22 @@ function createFetchTemplateAction(options) {
1141
1140
  ctx.logger.info(
1142
1141
  `Writing directory ${location} to template output path.`
1143
1142
  );
1144
- await fs__default["default"].ensureDir(outputPath);
1143
+ await fs__default.default.ensureDir(outputPath);
1145
1144
  } else {
1146
1145
  const inputFilePath = backendCommon.resolveSafeChildPath(templateDir, location);
1147
- const stats = await fs__default["default"].promises.lstat(inputFilePath);
1146
+ const stats = await fs__default.default.promises.lstat(inputFilePath);
1148
1147
  if (stats.isSymbolicLink() || await isbinaryfile.isBinaryFile(inputFilePath)) {
1149
1148
  ctx.logger.info(
1150
1149
  `Copying file binary or symbolic link at ${location}, to template output path.`
1151
1150
  );
1152
- await fs__default["default"].copy(inputFilePath, outputPath);
1151
+ await fs__default.default.copy(inputFilePath, outputPath);
1153
1152
  } else {
1154
- const statsObj = await fs__default["default"].stat(inputFilePath);
1153
+ const statsObj = await fs__default.default.stat(inputFilePath);
1155
1154
  ctx.logger.info(
1156
1155
  `Writing file ${location} to template output path with mode ${statsObj.mode}.`
1157
1156
  );
1158
- const inputFileContents = await fs__default["default"].readFile(inputFilePath, "utf-8");
1159
- await fs__default["default"].outputFile(
1157
+ const inputFileContents = await fs__default.default.readFile(inputFilePath, "utf-8");
1158
+ await fs__default.default.outputFile(
1160
1159
  outputPath,
1161
1160
  renderContents ? renderTemplate(inputFileContents, context) : inputFileContents,
1162
1161
  { mode: statsObj.mode }
@@ -1220,7 +1219,7 @@ const createFilesystemDeleteAction = () => {
1220
1219
  for (const file of ctx.input.files) {
1221
1220
  const filepath = backendCommon.resolveSafeChildPath(ctx.workspacePath, file);
1222
1221
  try {
1223
- await fs__default["default"].remove(filepath);
1222
+ await fs__default.default.remove(filepath);
1224
1223
  ctx.logger.info(`File ${filepath} deleted successfully`);
1225
1224
  } catch (err) {
1226
1225
  ctx.logger.error(`Failed to delete file ${filepath}:`, err);
@@ -1305,7 +1304,7 @@ const createFilesystemRenameAction = () => {
1305
1304
  );
1306
1305
  const destFilepath = backendCommon.resolveSafeChildPath(ctx.workspacePath, file.to);
1307
1306
  try {
1308
- await fs__default["default"].move(sourceFilepath, destFilepath, {
1307
+ await fs__default.default.move(sourceFilepath, destFilepath, {
1309
1308
  overwrite: (_b = file.overwrite) != null ? _b : false
1310
1309
  });
1311
1310
  ctx.logger.info(
@@ -1615,6 +1614,7 @@ class DatabaseTaskStore {
1615
1614
  try {
1616
1615
  const spec = JSON.parse(result.spec);
1617
1616
  const secrets = result.secrets ? JSON.parse(result.secrets) : void 0;
1617
+ const state = result.state ? JSON.parse(result.state).state : void 0;
1618
1618
  return {
1619
1619
  id: result.id,
1620
1620
  spec,
@@ -1622,7 +1622,8 @@ class DatabaseTaskStore {
1622
1622
  lastHeartbeatAt: parseSqlDateToIsoString(result.last_heartbeat_at),
1623
1623
  createdAt: parseSqlDateToIsoString(result.created_at),
1624
1624
  createdBy: (_a = result.created_by) != null ? _a : void 0,
1625
- secrets
1625
+ secrets,
1626
+ state
1626
1627
  };
1627
1628
  } catch (error) {
1628
1629
  throw new Error(`Failed to parse spec of task '${taskId}', ${error}`);
@@ -1659,6 +1660,15 @@ class DatabaseTaskStore {
1659
1660
  if (updateCount < 1) {
1660
1661
  return void 0;
1661
1662
  }
1663
+ const getState = () => {
1664
+ try {
1665
+ return task.state ? JSON.parse(task.state).state : void 0;
1666
+ } catch (error) {
1667
+ throw new Error(
1668
+ `Failed to parse state of the task '${task.id}', ${error}`
1669
+ );
1670
+ }
1671
+ };
1662
1672
  const secrets = this.parseTaskSecrets(task);
1663
1673
  return {
1664
1674
  id: task.id,
@@ -1667,7 +1677,8 @@ class DatabaseTaskStore {
1667
1677
  lastHeartbeatAt: task.last_heartbeat_at,
1668
1678
  createdAt: task.created_at,
1669
1679
  createdBy: (_a = task.created_by) != null ? _a : void 0,
1670
- secrets
1680
+ secrets,
1681
+ state: getState()
1671
1682
  };
1672
1683
  });
1673
1684
  }
@@ -1843,7 +1854,7 @@ class DatabaseTaskStore {
1843
1854
  taskIdsToRecover.push(...result.map((i) => i.id));
1844
1855
  for (const { id, spec } of result) {
1845
1856
  const taskSpec = JSON.parse(spec);
1846
- await this.db("task_events").insert({
1857
+ await tx("task_events").insert({
1847
1858
  task_id: id,
1848
1859
  event_type: "recovered",
1849
1860
  body: JSON.stringify({
@@ -2077,7 +2088,8 @@ class StorageTaskBroker {
2077
2088
  taskId: pendingTask.id,
2078
2089
  spec: pendingTask.spec,
2079
2090
  secrets: pendingTask.secrets,
2080
- createdBy: pendingTask.createdBy
2091
+ createdBy: pendingTask.createdBy,
2092
+ state: pendingTask.state
2081
2093
  },
2082
2094
  this.storage,
2083
2095
  abortController.signal,
@@ -2108,7 +2120,7 @@ class StorageTaskBroker {
2108
2120
  * {@inheritdoc TaskBroker.event$}
2109
2121
  */
2110
2122
  event$(options) {
2111
- return new ObservableImpl__default["default"]((observer) => {
2123
+ return new ObservableImpl__default.default((observer) => {
2112
2124
  const { taskId } = options;
2113
2125
  let after = options.after;
2114
2126
  let cancelled = false;
@@ -2456,7 +2468,7 @@ class NunjucksWorkflowRunner {
2456
2468
  }
2457
2469
  isSingleTemplateString(input) {
2458
2470
  var _a, _b;
2459
- const { parser, nodes } = nunjucks__default["default"];
2471
+ const { parser, nodes } = nunjucks__default.default;
2460
2472
  const parsed = parser.parse(
2461
2473
  input,
2462
2474
  {},
@@ -2647,7 +2659,7 @@ class NunjucksWorkflowRunner {
2647
2659
  }
2648
2660
  },
2649
2661
  createTemporaryDirectory: async () => {
2650
- const tmpDir = await fs__default["default"].mkdtemp(
2662
+ const tmpDir = await fs__default.default.mkdtemp(
2651
2663
  `${workspacePath}_step-${step.id}-`
2652
2664
  );
2653
2665
  tmpDirs.push(tmpDir);
@@ -2669,7 +2681,7 @@ class NunjucksWorkflowRunner {
2669
2681
  });
2670
2682
  }
2671
2683
  for (const tmpDir of tmpDirs) {
2672
- await fs__default["default"].remove(tmpDir);
2684
+ await fs__default.default.remove(tmpDir);
2673
2685
  }
2674
2686
  context.steps[step.id] = { output: stepOutput };
2675
2687
  if (task.cancelSignal.aborted) {
@@ -2688,7 +2700,7 @@ class NunjucksWorkflowRunner {
2688
2700
  "Wrong template version executed with the workflow engine"
2689
2701
  );
2690
2702
  }
2691
- const workspacePath = path__default["default"].join(
2703
+ const workspacePath = path__default.default.join(
2692
2704
  this.options.workingDirectory,
2693
2705
  await task.getWorkspaceName()
2694
2706
  );
@@ -2702,7 +2714,7 @@ class NunjucksWorkflowRunner {
2702
2714
  });
2703
2715
  try {
2704
2716
  const taskTrack = await this.tracker.taskStart(task);
2705
- await fs__default["default"].ensureDir(workspacePath);
2717
+ await fs__default.default.ensureDir(workspacePath);
2706
2718
  const context = {
2707
2719
  parameters: task.spec.parameters,
2708
2720
  steps: {},
@@ -2728,7 +2740,7 @@ class NunjucksWorkflowRunner {
2728
2740
  return { output };
2729
2741
  } finally {
2730
2742
  if (workspacePath) {
2731
- await fs__default["default"].remove(workspacePath);
2743
+ await fs__default.default.remove(workspacePath);
2732
2744
  }
2733
2745
  }
2734
2746
  }
@@ -2880,7 +2892,7 @@ class TaskWorker {
2880
2892
  __publicField(this, "stopWorkers");
2881
2893
  this.stopWorkers = false;
2882
2894
  this.logger = options.logger;
2883
- this.taskQueue = new PQueue__default["default"]({
2895
+ this.taskQueue = new PQueue__default.default({
2884
2896
  concurrency: options.concurrentTasksLimit
2885
2897
  });
2886
2898
  }
@@ -3064,18 +3076,18 @@ function createDryRunner(options) {
3064
3076
  output: result.output
3065
3077
  };
3066
3078
  } finally {
3067
- await fs__default["default"].remove(contentsPath);
3079
+ await fs__default.default.remove(contentsPath);
3068
3080
  }
3069
3081
  };
3070
3082
  }
3071
3083
 
3072
3084
  async function getWorkingDirectory(config, logger) {
3073
3085
  if (!config.has("backend.workingDirectory")) {
3074
- return os__default["default"].tmpdir();
3086
+ return os__default.default.tmpdir();
3075
3087
  }
3076
3088
  const workingDirectory = config.getString("backend.workingDirectory");
3077
3089
  try {
3078
- await fs__default["default"].access(workingDirectory, fs__default["default"].constants.F_OK | fs__default["default"].constants.W_OK);
3090
+ await fs__default.default.access(workingDirectory, fs__default.default.constants.F_OK | fs__default.default.constants.W_OK);
3079
3091
  logger.info(`using working directory: ${workingDirectory}`);
3080
3092
  } catch (err) {
3081
3093
  errors.assertError(err);
@@ -3178,8 +3190,8 @@ const readDuration = (config$1, key, defaultValue) => {
3178
3190
  };
3179
3191
  async function createRouter(options) {
3180
3192
  var _a;
3181
- const router = Router__default["default"]();
3182
- router.use(express__default["default"].json({ limit: "10MB" }));
3193
+ const router = Router__default.default();
3194
+ router.use(express__default.default.json({ limit: "10MB" }));
3183
3195
  const {
3184
3196
  logger: parentLogger,
3185
3197
  config,
@@ -3575,7 +3587,7 @@ data: ${JSON.stringify(event)}
3575
3587
  }))
3576
3588
  });
3577
3589
  });
3578
- const app = express__default["default"]();
3590
+ const app = express__default.default();
3579
3591
  app.set("logger", logger);
3580
3592
  app.use("/", router);
3581
3593
  async function authorizeTemplate(entityRef, token, credentials) {
@@ -3632,4 +3644,4 @@ exports.createRouter = createRouter;
3632
3644
  exports.createWaitAction = createWaitAction;
3633
3645
  exports.scaffolderActionRules = scaffolderActionRules;
3634
3646
  exports.scaffolderTemplateRules = scaffolderTemplateRules;
3635
- //# sourceMappingURL=router-52d79583.cjs.js.map
3647
+ //# sourceMappingURL=router-B0mT63g8.cjs.js.map