@backstage/backend-app-api 0.7.1-next.0 → 0.7.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,26 +1,10 @@
1
1
  # @backstage/backend-app-api
2
2
 
3
- ## 0.7.1-next.0
3
+ ## 0.7.1
4
4
 
5
5
  ### Patch Changes
6
6
 
7
- - 4cd5ff0: Add ability to configure the Node.js HTTP Server when configuring the root HTTP Router service
8
- - e8199b1: Move the JWKS registration outside of the lifecycle middleware
9
- - dc8c5dd: The default `TokenManager` implementation no longer requires keys to be configured in production, but it will throw an errors when generating or authenticating tokens. The default `AuthService` implementation will now also provide additional context if such an error is throw when falling back to using the `TokenManager` service to generate tokens for outgoing requests.
10
- - 025641b: Redact `meta` fields too with the logger
11
- - 5863e02: Internal refactor to only create one external token handler
12
- - Updated dependencies
13
- - @backstage/plugin-auth-node@0.4.13-next.0
14
- - @backstage/backend-common@0.21.8-next.0
15
- - @backstage/backend-plugin-api@0.6.18-next.0
16
- - @backstage/backend-tasks@0.5.23-next.0
17
- - @backstage/cli-common@0.1.13
18
- - @backstage/cli-node@0.2.5
19
- - @backstage/config@1.2.0
20
- - @backstage/config-loader@1.8.0
21
- - @backstage/errors@1.2.4
22
- - @backstage/types@1.1.1
23
- - @backstage/plugin-permission-node@0.7.29-next.0
7
+ - 3554ebe: Move the JWKS registration outside of the lifecycle middleware
24
8
 
25
9
  ## 0.7.0
26
10
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@backstage/backend-app-api",
3
- "version": "0.7.1-next.0",
3
+ "version": "0.7.1",
4
4
  "main": "../dist/alpha.cjs.js",
5
5
  "types": "../dist/alpha.d.ts"
6
6
  }
package/dist/index.cjs.js CHANGED
@@ -26,10 +26,10 @@ var backendCommon = require('@backstage/backend-common');
26
26
  var jose = require('jose');
27
27
  var uuid = require('uuid');
28
28
  var pluginAuthNode = require('@backstage/plugin-auth-node');
29
- var types = require('@backstage/types');
30
29
  var backendAppApi = require('@backstage/backend-app-api');
31
30
  var cookie = require('cookie');
32
31
  var Router = require('express-promise-router');
32
+ var types = require('@backstage/types');
33
33
  var pathToRegexp = require('path-to-regexp');
34
34
  var pluginPermissionNode = require('@backstage/plugin-permission-node');
35
35
  var express = require('express');
@@ -618,7 +618,7 @@ var __accessCheck$e = (obj, member, msg) => {
618
618
  };
619
619
  var __privateGet$c = (obj, member, getter) => {
620
620
  __accessCheck$e(obj, member, "read from private field");
621
- return member.get(obj);
621
+ return getter ? getter.call(obj) : member.get(obj);
622
622
  };
623
623
  var __privateAdd$e = (obj, member, value) => {
624
624
  if (member.has(obj))
@@ -627,7 +627,7 @@ var __privateAdd$e = (obj, member, value) => {
627
627
  };
628
628
  var __privateSet$a = (obj, member, value, setter) => {
629
629
  __accessCheck$e(obj, member, "write to private field");
630
- member.set(obj, value);
630
+ setter ? setter.call(obj, value) : member.set(obj, value);
631
631
  return value;
632
632
  };
633
633
  var _config, _logger;
@@ -811,7 +811,7 @@ var __accessCheck$d = (obj, member, msg) => {
811
811
  };
812
812
  var __privateGet$b = (obj, member, getter) => {
813
813
  __accessCheck$d(obj, member, "read from private field");
814
- return member.get(obj);
814
+ return getter ? getter.call(obj) : member.get(obj);
815
815
  };
816
816
  var __privateAdd$d = (obj, member, value) => {
817
817
  if (member.has(obj))
@@ -820,7 +820,7 @@ var __privateAdd$d = (obj, member, value) => {
820
820
  };
821
821
  var __privateSet$9 = (obj, member, value, setter) => {
822
822
  __accessCheck$d(obj, member, "write to private field");
823
- member.set(obj, value);
823
+ setter ? setter.call(obj, value) : member.set(obj, value);
824
824
  return value;
825
825
  };
826
826
  var _winston, _addRedactions;
@@ -857,21 +857,16 @@ const _WinstonLogger = class _WinstonLogger {
857
857
  static redacter() {
858
858
  const redactionSet = /* @__PURE__ */ new Set();
859
859
  let redactionPattern = void 0;
860
- const replace = (obj) => {
861
- var _a;
862
- for (const key in obj) {
863
- if (obj.hasOwnProperty(key)) {
864
- if (typeof obj[key] === "object") {
865
- obj[key] = replace(obj[key]);
866
- } else if (typeof obj[key] === "string") {
867
- obj[key] = (_a = obj[key]) == null ? void 0 : _a.replace(redactionPattern, "[REDACTED]");
868
- }
869
- }
870
- }
871
- return obj;
872
- };
873
860
  return {
874
- format: winston.format(replace)(),
861
+ format: winston.format((info) => {
862
+ if (redactionPattern && typeof info.message === "string") {
863
+ info.message = info.message.replace(redactionPattern, "[REDACTED]");
864
+ }
865
+ if (redactionPattern && typeof info.stack === "string") {
866
+ info.stack = info.stack.replace(redactionPattern, "[REDACTED]");
867
+ }
868
+ return info;
869
+ })(),
875
870
  add(newRedactions) {
876
871
  let added = 0;
877
872
  for (const redactionToTrim of newRedactions) {
@@ -948,7 +943,7 @@ var __accessCheck$c = (obj, member, msg) => {
948
943
  };
949
944
  var __privateGet$a = (obj, member, getter) => {
950
945
  __accessCheck$c(obj, member, "read from private field");
951
- return member.get(obj);
946
+ return getter ? getter.call(obj) : member.get(obj);
952
947
  };
953
948
  var __privateAdd$c = (obj, member, value) => {
954
949
  if (member.has(obj))
@@ -957,7 +952,7 @@ var __privateAdd$c = (obj, member, value) => {
957
952
  };
958
953
  var __privateSet$8 = (obj, member, value, setter) => {
959
954
  __accessCheck$c(obj, member, "write to private field");
960
- member.set(obj, value);
955
+ setter ? setter.call(obj, value) : member.set(obj, value);
961
956
  return value;
962
957
  };
963
958
  var _hasStarted$1, _startupTasks$1, _hasShutdown, _shutdownTasks;
@@ -1042,7 +1037,7 @@ var __accessCheck$b = (obj, member, msg) => {
1042
1037
  };
1043
1038
  var __privateGet$9 = (obj, member, getter) => {
1044
1039
  __accessCheck$b(obj, member, "read from private field");
1045
- return member.get(obj);
1040
+ return getter ? getter.call(obj) : member.get(obj);
1046
1041
  };
1047
1042
  var __privateAdd$b = (obj, member, value) => {
1048
1043
  if (member.has(obj))
@@ -1051,7 +1046,7 @@ var __privateAdd$b = (obj, member, value) => {
1051
1046
  };
1052
1047
  var __privateSet$7 = (obj, member, value, setter) => {
1053
1048
  __accessCheck$b(obj, member, "write to private field");
1054
- member.set(obj, value);
1049
+ setter ? setter.call(obj, value) : member.set(obj, value);
1055
1050
  return value;
1056
1051
  };
1057
1052
  var _hasStarted, _startupTasks;
@@ -1122,7 +1117,7 @@ var __accessCheck$a = (obj, member, msg) => {
1122
1117
  };
1123
1118
  var __privateGet$8 = (obj, member, getter) => {
1124
1119
  __accessCheck$a(obj, member, "read from private field");
1125
- return member.get(obj);
1120
+ return getter ? getter.call(obj) : member.get(obj);
1126
1121
  };
1127
1122
  var __privateAdd$a = (obj, member, value) => {
1128
1123
  if (member.has(obj))
@@ -1131,7 +1126,7 @@ var __privateAdd$a = (obj, member, value) => {
1131
1126
  };
1132
1127
  var __privateSet$6 = (obj, member, value, setter) => {
1133
1128
  __accessCheck$a(obj, member, "write to private field");
1134
- member.set(obj, value);
1129
+ setter ? setter.call(obj, value) : member.set(obj, value);
1135
1130
  return value;
1136
1131
  };
1137
1132
  var __privateMethod$7 = (obj, member, method) => {
@@ -1331,7 +1326,7 @@ var __accessCheck$9 = (obj, member, msg) => {
1331
1326
  };
1332
1327
  var __privateGet$7 = (obj, member, getter) => {
1333
1328
  __accessCheck$9(obj, member, "read from private field");
1334
- return member.get(obj);
1329
+ return getter ? getter.call(obj) : member.get(obj);
1335
1330
  };
1336
1331
  var __privateAdd$9 = (obj, member, value) => {
1337
1332
  if (member.has(obj))
@@ -1340,7 +1335,7 @@ var __privateAdd$9 = (obj, member, value) => {
1340
1335
  };
1341
1336
  var __privateSet$5 = (obj, member, value, setter) => {
1342
1337
  __accessCheck$9(obj, member, "write to private field");
1343
- member.set(obj, value);
1338
+ setter ? setter.call(obj, value) : member.set(obj, value);
1344
1339
  return value;
1345
1340
  };
1346
1341
  var __privateMethod$6 = (obj, member, method) => {
@@ -1570,7 +1565,7 @@ var __accessCheck$8 = (obj, member, msg) => {
1570
1565
  };
1571
1566
  var __privateGet$6 = (obj, member, getter) => {
1572
1567
  __accessCheck$8(obj, member, "read from private field");
1573
- return member.get(obj);
1568
+ return getter ? getter.call(obj) : member.get(obj);
1574
1569
  };
1575
1570
  var __privateAdd$8 = (obj, member, value) => {
1576
1571
  if (member.has(obj))
@@ -1579,7 +1574,7 @@ var __privateAdd$8 = (obj, member, value) => {
1579
1574
  };
1580
1575
  var __privateSet$4 = (obj, member, value, setter) => {
1581
1576
  __accessCheck$8(obj, member, "write to private field");
1582
- member.set(obj, value);
1577
+ setter ? setter.call(obj, value) : member.set(obj, value);
1583
1578
  return value;
1584
1579
  };
1585
1580
  var __privateMethod$5 = (obj, member, method) => {
@@ -1870,7 +1865,7 @@ var __accessCheck$7 = (obj, member, msg) => {
1870
1865
  };
1871
1866
  var __privateGet$5 = (obj, member, getter) => {
1872
1867
  __accessCheck$7(obj, member, "read from private field");
1873
- return member.get(obj);
1868
+ return getter ? getter.call(obj) : member.get(obj);
1874
1869
  };
1875
1870
  var __privateAdd$7 = (obj, member, value) => {
1876
1871
  if (member.has(obj))
@@ -1879,7 +1874,7 @@ var __privateAdd$7 = (obj, member, value) => {
1879
1874
  };
1880
1875
  var __privateSet$3 = (obj, member, value, setter) => {
1881
1876
  __accessCheck$7(obj, member, "write to private field");
1882
- member.set(obj, value);
1877
+ setter ? setter.call(obj, value) : member.set(obj, value);
1883
1878
  return value;
1884
1879
  };
1885
1880
  var _initializer;
@@ -2147,12 +2142,7 @@ class DefaultAuthService {
2147
2142
  targetPluginId
2148
2143
  });
2149
2144
  }
2150
- return this.tokenManager.getToken().catch((error) => {
2151
- throw new errors.ForwardedError(
2152
- `Unable to generate legacy token for communication with the '${targetPluginId}' plugin. You will typically encounter this error when attempting to call a plugin that does not exist, or is deployed with an old version of Backstage`,
2153
- error
2154
- );
2155
- });
2145
+ return this.tokenManager.getToken();
2156
2146
  case "user": {
2157
2147
  const { token } = internalForward;
2158
2148
  if (!token) {
@@ -2210,7 +2200,7 @@ var __accessCheck$5 = (obj, member, msg) => {
2210
2200
  };
2211
2201
  var __privateGet$4 = (obj, member, getter) => {
2212
2202
  __accessCheck$5(obj, member, "read from private field");
2213
- return member.get(obj);
2203
+ return getter ? getter.call(obj) : member.get(obj);
2214
2204
  };
2215
2205
  var __privateAdd$5 = (obj, member, value) => {
2216
2206
  if (member.has(obj))
@@ -2219,7 +2209,7 @@ var __privateAdd$5 = (obj, member, value) => {
2219
2209
  };
2220
2210
  var __privateSet$2 = (obj, member, value, setter) => {
2221
2211
  __accessCheck$5(obj, member, "write to private field");
2222
- member.set(obj, value);
2212
+ setter ? setter.call(obj, value) : member.set(obj, value);
2223
2213
  return value;
2224
2214
  };
2225
2215
  var _keyStore, _keyStoreUpdated;
@@ -2297,7 +2287,7 @@ class PluginTokenHandler {
2297
2287
  options.logger,
2298
2288
  options.ownPluginId,
2299
2289
  options.publicKeyStore,
2300
- Math.round(types.durationToMilliseconds(options.keyDuration) / 1e3),
2290
+ options.keyDurationSeconds,
2301
2291
  (_a = options.algorithm) != null ? _a : "ES256",
2302
2292
  options.discovery
2303
2293
  );
@@ -2582,7 +2572,7 @@ var __accessCheck$3 = (obj, member, msg) => {
2582
2572
  };
2583
2573
  var __privateGet$3 = (obj, member, getter) => {
2584
2574
  __accessCheck$3(obj, member, "read from private field");
2585
- return member.get(obj);
2575
+ return getter ? getter.call(obj) : member.get(obj);
2586
2576
  };
2587
2577
  var __privateAdd$3 = (obj, member, value) => {
2588
2578
  if (member.has(obj))
@@ -2656,7 +2646,7 @@ var __accessCheck$2 = (obj, member, msg) => {
2656
2646
  };
2657
2647
  var __privateGet$2 = (obj, member, getter) => {
2658
2648
  __accessCheck$2(obj, member, "read from private field");
2659
- return member.get(obj);
2649
+ return getter ? getter.call(obj) : member.get(obj);
2660
2650
  };
2661
2651
  var __privateAdd$2 = (obj, member, value) => {
2662
2652
  if (member.has(obj))
@@ -2758,16 +2748,7 @@ const authServiceFactory = backendPluginApi.createServiceFactory({
2758
2748
  // new auth services in the new backend system.
2759
2749
  tokenManager: backendPluginApi.coreServices.tokenManager
2760
2750
  },
2761
- async createRootContext({ config, logger }) {
2762
- const externalTokens = ExternalTokenHandler.create({
2763
- config,
2764
- logger
2765
- });
2766
- return {
2767
- externalTokens
2768
- };
2769
- },
2770
- async factory({ config, discovery, plugin, tokenManager, logger, database }, { externalTokens }) {
2751
+ async factory({ config, discovery, plugin, tokenManager, logger, database }) {
2771
2752
  const disableDefaultAuthPolicy = Boolean(
2772
2753
  config.getOptionalBoolean(
2773
2754
  "backend.auth.dangerouslyDisableDefaultAuthPolicy"
@@ -2782,11 +2763,15 @@ const authServiceFactory = backendPluginApi.createServiceFactory({
2782
2763
  });
2783
2764
  const pluginTokens = PluginTokenHandler.create({
2784
2765
  ownPluginId: plugin.getId(),
2785
- keyDuration: { hours: 1 },
2766
+ keyDurationSeconds: 60 * 60,
2786
2767
  logger,
2787
2768
  publicKeyStore,
2788
2769
  discovery
2789
2770
  });
2771
+ const externalTokens = ExternalTokenHandler.create({
2772
+ config,
2773
+ logger
2774
+ });
2790
2775
  return new DefaultAuthService(
2791
2776
  userTokens,
2792
2777
  pluginTokens,
@@ -2950,7 +2935,7 @@ var __accessCheck$1 = (obj, member, msg) => {
2950
2935
  };
2951
2936
  var __privateGet$1 = (obj, member, getter) => {
2952
2937
  __accessCheck$1(obj, member, "read from private field");
2953
- return member.get(obj);
2938
+ return getter ? getter.call(obj) : member.get(obj);
2954
2939
  };
2955
2940
  var __privateAdd$1 = (obj, member, value) => {
2956
2941
  if (member.has(obj))
@@ -2959,7 +2944,7 @@ var __privateAdd$1 = (obj, member, value) => {
2959
2944
  };
2960
2945
  var __privateSet$1 = (obj, member, value, setter) => {
2961
2946
  __accessCheck$1(obj, member, "write to private field");
2962
- member.set(obj, value);
2947
+ setter ? setter.call(obj, value) : member.set(obj, value);
2963
2948
  return value;
2964
2949
  };
2965
2950
  var __privateMethod$1 = (obj, member, method) => {
@@ -3391,7 +3376,7 @@ var __accessCheck = (obj, member, msg) => {
3391
3376
  };
3392
3377
  var __privateGet = (obj, member, getter) => {
3393
3378
  __accessCheck(obj, member, "read from private field");
3394
- return member.get(obj);
3379
+ return getter ? getter.call(obj) : member.get(obj);
3395
3380
  };
3396
3381
  var __privateAdd = (obj, member, value) => {
3397
3382
  if (member.has(obj))
@@ -3400,7 +3385,7 @@ var __privateAdd = (obj, member, value) => {
3400
3385
  };
3401
3386
  var __privateSet = (obj, member, value, setter) => {
3402
3387
  __accessCheck(obj, member, "write to private field");
3403
- member.set(obj, value);
3388
+ setter ? setter.call(obj, value) : member.set(obj, value);
3404
3389
  return value;
3405
3390
  };
3406
3391
  var __privateMethod = (obj, member, method) => {
@@ -3482,8 +3467,15 @@ findConflictingPath_fn = function(newPath) {
3482
3467
  };
3483
3468
  let DefaultRootHttpRouter = _DefaultRootHttpRouter;
3484
3469
 
3485
- function defaultConfigure({ applyDefaults }) {
3486
- applyDefaults();
3470
+ function defaultConfigure(context) {
3471
+ const { app, routes, middleware } = context;
3472
+ app.use(middleware.helmet());
3473
+ app.use(middleware.cors());
3474
+ app.use(middleware.compression());
3475
+ app.use(middleware.logging());
3476
+ app.use(routes);
3477
+ app.use(middleware.notFound());
3478
+ app.use(middleware.error());
3487
3479
  }
3488
3480
  const rootHttpRouterServiceFactory = backendPluginApi.createServiceFactory(
3489
3481
  (options) => ({
@@ -3499,30 +3491,19 @@ const rootHttpRouterServiceFactory = backendPluginApi.createServiceFactory(
3499
3491
  const app = express__default.default();
3500
3492
  const router = DefaultRootHttpRouter.create({ indexPath });
3501
3493
  const middleware = MiddlewareFactory.create({ config, logger });
3502
- const routes = router.handler();
3503
- const server = await createHttpServer(
3504
- app,
3505
- readHttpServerOptions(config.getOptionalConfig("backend")),
3506
- { logger }
3507
- );
3508
3494
  configure({
3509
3495
  app,
3510
- server,
3511
- routes,
3496
+ routes: router.handler(),
3512
3497
  middleware,
3513
3498
  config,
3514
3499
  logger,
3515
- lifecycle,
3516
- applyDefaults() {
3517
- app.use(middleware.helmet());
3518
- app.use(middleware.cors());
3519
- app.use(middleware.compression());
3520
- app.use(middleware.logging());
3521
- app.use(routes);
3522
- app.use(middleware.notFound());
3523
- app.use(middleware.error());
3524
- }
3500
+ lifecycle
3525
3501
  });
3502
+ const server = await createHttpServer(
3503
+ app,
3504
+ readHttpServerOptions(config.getOptionalConfig("backend")),
3505
+ { logger }
3506
+ );
3526
3507
  lifecycle.addShutdownHook(() => server.stop());
3527
3508
  await server.start();
3528
3509
  return router;
@@ -3576,8 +3557,7 @@ const tokenManagerServiceFactory = backendPluginApi.createServiceFactory({
3576
3557
  },
3577
3558
  createRootContext({ config, logger }) {
3578
3559
  return backendCommon.ServerTokenManager.fromConfig(config, {
3579
- logger,
3580
- allowDisabledTokenManager: true
3560
+ logger
3581
3561
  });
3582
3562
  },
3583
3563
  async factory(_deps, tokenManager) {