@axis-backstage/plugin-statuspage-backend 0.9.0 → 0.10.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,41 @@
1
1
  # @axis-backstage/plugin-statuspage-backend
2
2
 
3
+ ## 0.10.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 199bd49: Fix critical security vulnerabilities by upgrading Backstage dependencies:
8
+
9
+ **Security Fixes:**
10
+
11
+ - Fixed CVE-2025-8101 (High Severity) in linkifyjs/linkify-react by upgrading @backstage/core-components from ^0.18.4 to ^0.18.6
12
+ - Fixed CVE-2026-24046 (High Severity) - UNIX Symbolic Link Following in @backstage/backend-plugin-api by upgrading from ^1.6.0 to ^1.6.2
13
+ - Fixed CVE-2026-24047 (High Severity) - Symlink Attack in @backstage/backend-defaults by upgrading from ^0.14.0 to ^0.15.1
14
+ - Fixed SNYK-JS-QS-14724253 (High Severity) - Allocation of Resources Without Limits or Throttling in qs by adding resolution to ^6.14.1
15
+
16
+ **Additional Package Upgrades:**
17
+ Upgraded packages to versions that depend on patched Backstage core packages:
18
+
19
+ - @backstage/plugin-mcp-actions-backend: ^0.1.6 → ^0.1.8
20
+ - @backstage/plugin-search-backend: ^2.0.9 → ^2.0.11
21
+ - @backstage/plugin-techdocs-backend: ^2.1.3 → ^2.1.4
22
+ - @backstage/backend-test-utils: ^1.10.2 → ^1.10.4 (in jira-dashboard-backend and readme-backend)
23
+
24
+ **Code Improvements:**
25
+
26
+ - Removed redundant @backstage/backend-defaults imports from production code paths in backend plugins (jira-dashboard-backend, readme-backend, statuspage-backend)
27
+
28
+ ## 0.10.0
29
+
30
+ ### Minor Changes
31
+
32
+ - 7d98ad2: Bumped to backstage 1.46.2
33
+
34
+ ### Patch Changes
35
+
36
+ - Updated dependencies [7d98ad2]
37
+ - @axis-backstage/plugin-statuspage-common@0.9.0
38
+
3
39
  ## 0.9.0
4
40
 
5
41
  ### Minor Changes
@@ -1,6 +1,5 @@
1
1
  'use strict';
2
2
 
3
- var rootHttpRouter = require('@backstage/backend-defaults/rootHttpRouter');
4
3
  var express = require('express');
5
4
  var Router = require('express-promise-router');
6
5
  var api = require('./api.cjs.js');
@@ -48,8 +47,6 @@ async function createRouter(options) {
48
47
  const name = request.params.name;
49
48
  response.json({ url: api.getLink(name, statuspageConfig) || "" });
50
49
  });
51
- const middleware = rootHttpRouter.MiddlewareFactory.create({ logger, config: rootConfig });
52
- router.use(middleware.error());
53
50
  return router;
54
51
  }
55
52
 
@@ -1 +1 @@
1
- {"version":3,"file":"router.cjs.js","sources":["../../src/service/router.ts"],"sourcesContent":["import { MiddlewareFactory } from '@backstage/backend-defaults/rootHttpRouter';\nimport {\n CacheService,\n LoggerService,\n RootConfigService,\n} from '@backstage/backend-plugin-api';\nimport express from 'express';\nimport Router from 'express-promise-router';\nimport { fetchComponentGroups, fetchComponents, getLink } from './api';\nimport { getStatuspageConfig } from '../config';\n\nexport interface RouterOptions {\n cache: CacheService;\n logger: LoggerService;\n rootConfig: RootConfigService;\n}\n\nconst COMPONENT_GROUPS_KEY = 'component-groups';\nconst COMPONENTS_KEY = 'components';\nconst CACHE_TTL = 1000 * 60 * 2;\n\nexport async function createRouter(\n options: RouterOptions,\n): Promise<express.Router> {\n const { cache, logger, rootConfig } = options;\n logger.info('Setting up router for statuspage-backend');\n const statuspageConfig = getStatuspageConfig(rootConfig);\n\n const router = Router();\n router.use(express.json());\n\n router.get('/fetch-components/:name', async (request, response) => {\n const name = request.params.name;\n let components = (await cache.get(`${COMPONENTS_KEY}-${name}`)) as any;\n if (!components) {\n components = await fetchComponents(name, statuspageConfig);\n await cache.set(`${COMPONENTS_KEY}-${name}`, components, {\n ttl: CACHE_TTL,\n });\n }\n response.json(components);\n });\n\n router.get('/fetch-component-groups/:name', async (request, response) => {\n const name = request.params.name;\n let componentGroups = (await cache.get(\n `${COMPONENT_GROUPS_KEY}-${name}`,\n )) as any;\n if (!componentGroups) {\n componentGroups = await fetchComponentGroups(name, statuspageConfig);\n await cache.set(`${COMPONENT_GROUPS_KEY}-${name}`, componentGroups, {\n ttl: CACHE_TTL,\n });\n }\n response.json(componentGroups);\n });\n\n router.get('/fetch-link/:name', (request, response) => {\n const name = request.params.name;\n response.json({ url: getLink(name, statuspageConfig) || '' });\n });\n\n const middleware = MiddlewareFactory.create({ logger, config: rootConfig });\n router.use(middleware.error());\n return router;\n}\n"],"names":["getStatuspageConfig","Router","express","fetchComponents","fetchComponentGroups","getLink","MiddlewareFactory"],"mappings":";;;;;;;;;;;;;AAiBA,MAAM,oBAAuB,GAAA,kBAAA;AAC7B,MAAM,cAAiB,GAAA,YAAA;AACvB,MAAM,SAAA,GAAY,MAAO,EAAK,GAAA,CAAA;AAE9B,eAAsB,aACpB,OACyB,EAAA;AACzB,EAAA,MAAM,EAAE,KAAA,EAAO,MAAQ,EAAA,UAAA,EAAe,GAAA,OAAA;AACtC,EAAA,MAAA,CAAO,KAAK,0CAA0C,CAAA;AACtD,EAAM,MAAA,gBAAA,GAAmBA,2BAAoB,UAAU,CAAA;AAEvD,EAAA,MAAM,SAASC,uBAAO,EAAA;AACtB,EAAO,MAAA,CAAA,GAAA,CAAIC,wBAAQ,CAAA,IAAA,EAAM,CAAA;AAEzB,EAAA,MAAA,CAAO,GAAI,CAAA,yBAAA,EAA2B,OAAO,OAAA,EAAS,QAAa,KAAA;AACjE,IAAM,MAAA,IAAA,GAAO,QAAQ,MAAO,CAAA,IAAA;AAC5B,IAAI,IAAA,UAAA,GAAc,MAAM,KAAM,CAAA,GAAA,CAAI,GAAG,cAAc,CAAA,CAAA,EAAI,IAAI,CAAE,CAAA,CAAA;AAC7D,IAAA,IAAI,CAAC,UAAY,EAAA;AACf,MAAa,UAAA,GAAA,MAAMC,mBAAgB,CAAA,IAAA,EAAM,gBAAgB,CAAA;AACzD,MAAA,MAAM,MAAM,GAAI,CAAA,CAAA,EAAG,cAAc,CAAI,CAAA,EAAA,IAAI,IAAI,UAAY,EAAA;AAAA,QACvD,GAAK,EAAA;AAAA,OACN,CAAA;AAAA;AAEH,IAAA,QAAA,CAAS,KAAK,UAAU,CAAA;AAAA,GACzB,CAAA;AAED,EAAA,MAAA,CAAO,GAAI,CAAA,+BAAA,EAAiC,OAAO,OAAA,EAAS,QAAa,KAAA;AACvE,IAAM,MAAA,IAAA,GAAO,QAAQ,MAAO,CAAA,IAAA;AAC5B,IAAI,IAAA,eAAA,GAAmB,MAAM,KAAM,CAAA,GAAA;AAAA,MACjC,CAAA,EAAG,oBAAoB,CAAA,CAAA,EAAI,IAAI,CAAA;AAAA,KACjC;AACA,IAAA,IAAI,CAAC,eAAiB,EAAA;AACpB,MAAkB,eAAA,GAAA,MAAMC,wBAAqB,CAAA,IAAA,EAAM,gBAAgB,CAAA;AACnE,MAAA,MAAM,MAAM,GAAI,CAAA,CAAA,EAAG,oBAAoB,CAAI,CAAA,EAAA,IAAI,IAAI,eAAiB,EAAA;AAAA,QAClE,GAAK,EAAA;AAAA,OACN,CAAA;AAAA;AAEH,IAAA,QAAA,CAAS,KAAK,eAAe,CAAA;AAAA,GAC9B,CAAA;AAED,EAAA,MAAA,CAAO,GAAI,CAAA,mBAAA,EAAqB,CAAC,OAAA,EAAS,QAAa,KAAA;AACrD,IAAM,MAAA,IAAA,GAAO,QAAQ,MAAO,CAAA,IAAA;AAC5B,IAAS,QAAA,CAAA,IAAA,CAAK,EAAE,GAAK,EAAAC,WAAA,CAAQ,MAAM,gBAAgB,CAAA,IAAK,IAAI,CAAA;AAAA,GAC7D,CAAA;AAED,EAAA,MAAM,aAAaC,gCAAkB,CAAA,MAAA,CAAO,EAAE,MAAQ,EAAA,MAAA,EAAQ,YAAY,CAAA;AAC1E,EAAO,MAAA,CAAA,GAAA,CAAI,UAAW,CAAA,KAAA,EAAO,CAAA;AAC7B,EAAO,OAAA,MAAA;AACT;;;;"}
1
+ {"version":3,"file":"router.cjs.js","sources":["../../src/service/router.ts"],"sourcesContent":["import {\n CacheService,\n LoggerService,\n RootConfigService,\n} from '@backstage/backend-plugin-api';\nimport express from 'express';\nimport Router from 'express-promise-router';\nimport { fetchComponentGroups, fetchComponents, getLink } from './api';\nimport { getStatuspageConfig } from '../config';\n\nexport interface RouterOptions {\n cache: CacheService;\n logger: LoggerService;\n rootConfig: RootConfigService;\n}\n\nconst COMPONENT_GROUPS_KEY = 'component-groups';\nconst COMPONENTS_KEY = 'components';\nconst CACHE_TTL = 1000 * 60 * 2;\n\nexport async function createRouter(\n options: RouterOptions,\n): Promise<express.Router> {\n const { cache, logger, rootConfig } = options;\n logger.info('Setting up router for statuspage-backend');\n const statuspageConfig = getStatuspageConfig(rootConfig);\n\n const router = Router();\n router.use(express.json());\n\n router.get('/fetch-components/:name', async (request, response) => {\n const name = request.params.name;\n let components = (await cache.get(`${COMPONENTS_KEY}-${name}`)) as any;\n if (!components) {\n components = await fetchComponents(name, statuspageConfig);\n await cache.set(`${COMPONENTS_KEY}-${name}`, components, {\n ttl: CACHE_TTL,\n });\n }\n response.json(components);\n });\n\n router.get('/fetch-component-groups/:name', async (request, response) => {\n const name = request.params.name;\n let componentGroups = (await cache.get(\n `${COMPONENT_GROUPS_KEY}-${name}`,\n )) as any;\n if (!componentGroups) {\n componentGroups = await fetchComponentGroups(name, statuspageConfig);\n await cache.set(`${COMPONENT_GROUPS_KEY}-${name}`, componentGroups, {\n ttl: CACHE_TTL,\n });\n }\n response.json(componentGroups);\n });\n\n router.get('/fetch-link/:name', (request, response) => {\n const name = request.params.name;\n response.json({ url: getLink(name, statuspageConfig) || '' });\n });\n\n return router;\n}\n"],"names":["getStatuspageConfig","Router","express","fetchComponents","fetchComponentGroups","getLink"],"mappings":";;;;;;;;;;;;AAgBA,MAAM,oBAAuB,GAAA,kBAAA;AAC7B,MAAM,cAAiB,GAAA,YAAA;AACvB,MAAM,SAAA,GAAY,MAAO,EAAK,GAAA,CAAA;AAE9B,eAAsB,aACpB,OACyB,EAAA;AACzB,EAAA,MAAM,EAAE,KAAA,EAAO,MAAQ,EAAA,UAAA,EAAe,GAAA,OAAA;AACtC,EAAA,MAAA,CAAO,KAAK,0CAA0C,CAAA;AACtD,EAAM,MAAA,gBAAA,GAAmBA,2BAAoB,UAAU,CAAA;AAEvD,EAAA,MAAM,SAASC,uBAAO,EAAA;AACtB,EAAO,MAAA,CAAA,GAAA,CAAIC,wBAAQ,CAAA,IAAA,EAAM,CAAA;AAEzB,EAAA,MAAA,CAAO,GAAI,CAAA,yBAAA,EAA2B,OAAO,OAAA,EAAS,QAAa,KAAA;AACjE,IAAM,MAAA,IAAA,GAAO,QAAQ,MAAO,CAAA,IAAA;AAC5B,IAAI,IAAA,UAAA,GAAc,MAAM,KAAM,CAAA,GAAA,CAAI,GAAG,cAAc,CAAA,CAAA,EAAI,IAAI,CAAE,CAAA,CAAA;AAC7D,IAAA,IAAI,CAAC,UAAY,EAAA;AACf,MAAa,UAAA,GAAA,MAAMC,mBAAgB,CAAA,IAAA,EAAM,gBAAgB,CAAA;AACzD,MAAA,MAAM,MAAM,GAAI,CAAA,CAAA,EAAG,cAAc,CAAI,CAAA,EAAA,IAAI,IAAI,UAAY,EAAA;AAAA,QACvD,GAAK,EAAA;AAAA,OACN,CAAA;AAAA;AAEH,IAAA,QAAA,CAAS,KAAK,UAAU,CAAA;AAAA,GACzB,CAAA;AAED,EAAA,MAAA,CAAO,GAAI,CAAA,+BAAA,EAAiC,OAAO,OAAA,EAAS,QAAa,KAAA;AACvE,IAAM,MAAA,IAAA,GAAO,QAAQ,MAAO,CAAA,IAAA;AAC5B,IAAI,IAAA,eAAA,GAAmB,MAAM,KAAM,CAAA,GAAA;AAAA,MACjC,CAAA,EAAG,oBAAoB,CAAA,CAAA,EAAI,IAAI,CAAA;AAAA,KACjC;AACA,IAAA,IAAI,CAAC,eAAiB,EAAA;AACpB,MAAkB,eAAA,GAAA,MAAMC,wBAAqB,CAAA,IAAA,EAAM,gBAAgB,CAAA;AACnE,MAAA,MAAM,MAAM,GAAI,CAAA,CAAA,EAAG,oBAAoB,CAAI,CAAA,EAAA,IAAI,IAAI,eAAiB,EAAA;AAAA,QAClE,GAAK,EAAA;AAAA,OACN,CAAA;AAAA;AAEH,IAAA,QAAA,CAAS,KAAK,eAAe,CAAA;AAAA,GAC9B,CAAA;AAED,EAAA,MAAA,CAAO,GAAI,CAAA,mBAAA,EAAqB,CAAC,OAAA,EAAS,QAAa,KAAA;AACrD,IAAM,MAAA,IAAA,GAAO,QAAQ,MAAO,CAAA,IAAA;AAC5B,IAAS,QAAA,CAAA,IAAA,CAAK,EAAE,GAAK,EAAAC,WAAA,CAAQ,MAAM,gBAAgB,CAAA,IAAK,IAAI,CAAA;AAAA,GAC7D,CAAA;AAED,EAAO,OAAA,MAAA;AACT;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@axis-backstage/plugin-statuspage-backend",
3
- "version": "0.9.0",
3
+ "version": "0.10.1",
4
4
  "main": "dist/index.cjs.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "license": "Apache-2.0",
@@ -32,17 +32,17 @@
32
32
  "postpack": "backstage-cli package postpack"
33
33
  },
34
34
  "dependencies": {
35
- "@axis-backstage/plugin-statuspage-common": "^0.8.0",
36
- "@backstage/backend-defaults": "^0.12.0",
37
- "@backstage/backend-plugin-api": "^1.4.2",
38
- "@backstage/config": "^1.3.3",
35
+ "@axis-backstage/plugin-statuspage-common": "^0.9.0",
36
+ "@backstage/backend-plugin-api": "^1.6.2",
37
+ "@backstage/config": "^1.3.6",
39
38
  "@types/express": "*",
40
39
  "cross-fetch": "^4.0.0",
41
40
  "express": "^4.17.1",
42
41
  "express-promise-router": "^4.1.0"
43
42
  },
44
43
  "devDependencies": {
45
- "@backstage/cli": "^0.34.1"
44
+ "@backstage/backend-defaults": "^0.15.1",
45
+ "@backstage/cli": "^0.35.1"
46
46
  },
47
47
  "files": [
48
48
  "dist",