@axis-backstage/plugin-readme-backend 0.16.1 → 0.16.3
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 +12 -0
- package/dist/lib.cjs.js.map +1 -1
- package/dist/plugin.cjs.js +4 -3
- package/dist/plugin.cjs.js.map +1 -1
- package/dist/service/config.cjs.js.map +1 -1
- package/dist/service/constants.cjs.js.map +1 -1
- package/dist/service/router.cjs.js +6 -10
- package/dist/service/router.cjs.js.map +1 -1
- package/package.json +11 -10
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @axis-backstage/plugin-readme-backend
|
|
2
2
|
|
|
3
|
+
## 0.16.3
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 36858a7: Bumped to backstage 1.50.2
|
|
8
|
+
|
|
9
|
+
## 0.16.2
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- 480d1a7: Replaced internally constructed `CatalogClient` with the injected `CatalogService` from `@backstage/plugin-catalog-node`. This removes the dependency on `@backstage/catalog-client` and `@backstage/backend-defaults`, improves testability, and fixes unawaited cache writes.
|
|
14
|
+
|
|
3
15
|
## 0.16.1
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
package/dist/lib.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lib.cjs.js","sources":["../src/lib.ts"],"sourcesContent":["const DETECT_SYMLINKS_REGEX = '^(w+|.|/|-)+$';\n\nexport const isSymLink = (content: string): boolean => {\n const lines = content.split('\\n');\n if (lines.length > 1) return false;\n const line = lines[0];\n if (line.includes(' ')) return false;\n\n const regex = RegExp(DETECT_SYMLINKS_REGEX);\n return regex.test(content);\n};\n"],"names":[],"mappings":";;AAAA,MAAM,
|
|
1
|
+
{"version":3,"file":"lib.cjs.js","sources":["../src/lib.ts"],"sourcesContent":["const DETECT_SYMLINKS_REGEX = '^(w+|.|/|-)+$';\n\nexport const isSymLink = (content: string): boolean => {\n const lines = content.split('\\n');\n if (lines.length > 1) return false;\n const line = lines[0];\n if (line.includes(' ')) return false;\n\n const regex = RegExp(DETECT_SYMLINKS_REGEX);\n return regex.test(content);\n};\n"],"names":[],"mappings":";;AAAA,MAAM,qBAAA,GAAwB,eAAA;AAEvB,MAAM,SAAA,GAAY,CAAC,OAAA,KAA6B;AACrD,EAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,KAAA,CAAM,IAAI,CAAA;AAChC,EAAA,IAAI,KAAA,CAAM,MAAA,GAAS,CAAA,EAAG,OAAO,KAAA;AAC7B,EAAA,MAAM,IAAA,GAAO,MAAM,CAAC,CAAA;AACpB,EAAA,IAAI,IAAA,CAAK,QAAA,CAAS,GAAG,CAAA,EAAG,OAAO,KAAA;AAE/B,EAAA,MAAM,KAAA,GAAQ,OAAO,qBAAqB,CAAA;AAC1C,EAAA,OAAO,KAAA,CAAM,KAAK,OAAO,CAAA;AAC3B;;;;"}
|
package/dist/plugin.cjs.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var backendPluginApi = require('@backstage/backend-plugin-api');
|
|
4
|
+
var pluginCatalogNode = require('@backstage/plugin-catalog-node');
|
|
4
5
|
var router = require('./service/router.cjs.js');
|
|
5
6
|
|
|
6
7
|
const readmePlugin = backendPluginApi.createBackendPlugin({
|
|
@@ -10,7 +11,7 @@ const readmePlugin = backendPluginApi.createBackendPlugin({
|
|
|
10
11
|
deps: {
|
|
11
12
|
auth: backendPluginApi.coreServices.auth,
|
|
12
13
|
config: backendPluginApi.coreServices.rootConfig,
|
|
13
|
-
|
|
14
|
+
catalogApi: pluginCatalogNode.catalogServiceRef,
|
|
14
15
|
httpRouter: backendPluginApi.coreServices.httpRouter,
|
|
15
16
|
logger: backendPluginApi.coreServices.logger,
|
|
16
17
|
reader: backendPluginApi.coreServices.urlReader,
|
|
@@ -19,9 +20,9 @@ const readmePlugin = backendPluginApi.createBackendPlugin({
|
|
|
19
20
|
async init({
|
|
20
21
|
auth,
|
|
21
22
|
logger,
|
|
23
|
+
catalogApi,
|
|
22
24
|
config,
|
|
23
25
|
reader,
|
|
24
|
-
discovery,
|
|
25
26
|
httpRouter,
|
|
26
27
|
cache
|
|
27
28
|
}) {
|
|
@@ -29,9 +30,9 @@ const readmePlugin = backendPluginApi.createBackendPlugin({
|
|
|
29
30
|
await router.createRouter({
|
|
30
31
|
auth,
|
|
31
32
|
logger,
|
|
33
|
+
catalogApi,
|
|
32
34
|
config,
|
|
33
35
|
reader,
|
|
34
|
-
discovery,
|
|
35
36
|
cache
|
|
36
37
|
})
|
|
37
38
|
);
|
package/dist/plugin.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.cjs.js","sources":["../src/plugin.ts"],"sourcesContent":["import {\n coreServices,\n createBackendPlugin,\n} from '@backstage/backend-plugin-api';\nimport { createRouter } from './service/router';\n\n/**\n * The Readme backend plugin.\n *\n * @public\n */\nexport const readmePlugin = createBackendPlugin({\n pluginId: 'readme',\n register(env) {\n env.registerInit({\n deps: {\n auth: coreServices.auth,\n config: coreServices.rootConfig,\n
|
|
1
|
+
{"version":3,"file":"plugin.cjs.js","sources":["../src/plugin.ts"],"sourcesContent":["import {\n coreServices,\n createBackendPlugin,\n} from '@backstage/backend-plugin-api';\nimport { catalogServiceRef } from '@backstage/plugin-catalog-node';\nimport { createRouter } from './service/router';\n\n/**\n * The Readme backend plugin.\n *\n * @public\n */\nexport const readmePlugin = createBackendPlugin({\n pluginId: 'readme',\n register(env) {\n env.registerInit({\n deps: {\n auth: coreServices.auth,\n config: coreServices.rootConfig,\n catalogApi: catalogServiceRef,\n httpRouter: coreServices.httpRouter,\n logger: coreServices.logger,\n reader: coreServices.urlReader,\n cache: coreServices.cache,\n },\n async init({\n auth,\n logger,\n catalogApi,\n config,\n reader,\n httpRouter,\n cache,\n }) {\n httpRouter.use(\n await createRouter({\n auth,\n logger,\n catalogApi,\n config,\n reader,\n cache,\n }),\n );\n },\n });\n },\n});\n"],"names":["createBackendPlugin","coreServices","catalogServiceRef","createRouter"],"mappings":";;;;;;AAYO,MAAM,eAAeA,oCAAA,CAAoB;AAAA,EAC9C,QAAA,EAAU,QAAA;AAAA,EACV,SAAS,GAAA,EAAK;AACZ,IAAA,GAAA,CAAI,YAAA,CAAa;AAAA,MACf,IAAA,EAAM;AAAA,QACJ,MAAMC,6BAAA,CAAa,IAAA;AAAA,QACnB,QAAQA,6BAAA,CAAa,UAAA;AAAA,QACrB,UAAA,EAAYC,mCAAA;AAAA,QACZ,YAAYD,6BAAA,CAAa,UAAA;AAAA,QACzB,QAAQA,6BAAA,CAAa,MAAA;AAAA,QACrB,QAAQA,6BAAA,CAAa,SAAA;AAAA,QACrB,OAAOA,6BAAA,CAAa;AAAA,OACtB;AAAA,MACA,MAAM,IAAA,CAAK;AAAA,QACT,IAAA;AAAA,QACA,MAAA;AAAA,QACA,UAAA;AAAA,QACA,MAAA;AAAA,QACA,MAAA;AAAA,QACA,UAAA;AAAA,QACA;AAAA,OACF,EAAG;AACD,QAAA,UAAA,CAAW,GAAA;AAAA,UACT,MAAME,mBAAA,CAAa;AAAA,YACjB,IAAA;AAAA,YACA,MAAA;AAAA,YACA,UAAA;AAAA,YACA,MAAA;AAAA,YACA,MAAA;AAAA,YACA;AAAA,WACD;AAAA,SACH;AAAA,MACF;AAAA,KACD,CAAA;AAAA,EACH;AACF,CAAC;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.cjs.js","sources":["../../src/service/config.ts"],"sourcesContent":["import { Config, readDurationFromConfig } from '@backstage/config';\nimport { durationToMilliseconds } from '@backstage/types';\n\nconst CACHE_CONFIG_KEY = 'readme.cacheTtl';\n\nexport const getCacheTtl = (config: Config): number =>\n config.has(CACHE_CONFIG_KEY)\n ? durationToMilliseconds(\n readDurationFromConfig(config, { key: CACHE_CONFIG_KEY }),\n )\n : 3_600_000;\n"],"names":["config","durationToMilliseconds","readDurationFromConfig"],"mappings":";;;;;AAGA,MAAM,
|
|
1
|
+
{"version":3,"file":"config.cjs.js","sources":["../../src/service/config.ts"],"sourcesContent":["import { Config, readDurationFromConfig } from '@backstage/config';\nimport { durationToMilliseconds } from '@backstage/types';\n\nconst CACHE_CONFIG_KEY = 'readme.cacheTtl';\n\nexport const getCacheTtl = (config: Config): number =>\n config.has(CACHE_CONFIG_KEY)\n ? durationToMilliseconds(\n readDurationFromConfig(config, { key: CACHE_CONFIG_KEY }),\n )\n : 3_600_000;\n"],"names":["config","durationToMilliseconds","readDurationFromConfig"],"mappings":";;;;;AAGA,MAAM,gBAAA,GAAmB,iBAAA;AAElB,MAAM,cAAc,CAACA,QAAA,KAC1BA,QAAA,CAAO,GAAA,CAAI,gBAAgB,CAAA,GACvBC,4BAAA;AAAA,EACEC,6BAAA,CAAuBF,QAAA,EAAQ,EAAE,GAAA,EAAK,kBAAkB;AAC1D,CAAA,GACA;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.cjs.js","sources":["../../src/service/constants.ts"],"sourcesContent":["import { RootConfigService } from '@backstage/backend-plugin-api';\nimport { FileType } from './types';\n\nconst CONFIG_PATH = 'readme.fileNames';\n\n// Cache placeholder for entities where no readme\nexport const NOT_FOUND_PLACEHOLDER = 'NOT_FOUND';\n\nconst DEFAULT_README_TYPES: FileType[] = [\n { name: 'README.md', type: 'text/markdown' },\n { name: 'README.MD', type: 'text/markdown' },\n { name: 'README', type: 'text/plain' },\n { name: 'README.rst', type: 'text/plain' },\n { name: 'README.txt', type: 'text/plain' },\n];\n\nexport function getReadmeTypes(config: RootConfigService): FileType[] {\n const readmeTypes = config.getOptionalStringArray(CONFIG_PATH);\n if (!readmeTypes) {\n return DEFAULT_README_TYPES;\n }\n return readmeTypes.map(name => {\n const type =\n name.endsWith('.md') || name.endsWith('.MD')\n ? 'text/markdown'\n : 'text/plain';\n return { name, type };\n });\n}\n"],"names":[],"mappings":";;AAGA,MAAM,
|
|
1
|
+
{"version":3,"file":"constants.cjs.js","sources":["../../src/service/constants.ts"],"sourcesContent":["import { RootConfigService } from '@backstage/backend-plugin-api';\nimport { FileType } from './types';\n\nconst CONFIG_PATH = 'readme.fileNames';\n\n// Cache placeholder for entities where no readme\nexport const NOT_FOUND_PLACEHOLDER = 'NOT_FOUND';\n\nconst DEFAULT_README_TYPES: FileType[] = [\n { name: 'README.md', type: 'text/markdown' },\n { name: 'README.MD', type: 'text/markdown' },\n { name: 'README', type: 'text/plain' },\n { name: 'README.rst', type: 'text/plain' },\n { name: 'README.txt', type: 'text/plain' },\n];\n\nexport function getReadmeTypes(config: RootConfigService): FileType[] {\n const readmeTypes = config.getOptionalStringArray(CONFIG_PATH);\n if (!readmeTypes) {\n return DEFAULT_README_TYPES;\n }\n return readmeTypes.map(name => {\n const type =\n name.endsWith('.md') || name.endsWith('.MD')\n ? 'text/markdown'\n : 'text/plain';\n return { name, type };\n });\n}\n"],"names":[],"mappings":";;AAGA,MAAM,WAAA,GAAc,kBAAA;AAGb,MAAM,qBAAA,GAAwB;AAErC,MAAM,oBAAA,GAAmC;AAAA,EACvC,EAAE,IAAA,EAAM,WAAA,EAAa,IAAA,EAAM,eAAA,EAAgB;AAAA,EAC3C,EAAE,IAAA,EAAM,WAAA,EAAa,IAAA,EAAM,eAAA,EAAgB;AAAA,EAC3C,EAAE,IAAA,EAAM,QAAA,EAAU,IAAA,EAAM,YAAA,EAAa;AAAA,EACrC,EAAE,IAAA,EAAM,YAAA,EAAc,IAAA,EAAM,YAAA,EAAa;AAAA,EACzC,EAAE,IAAA,EAAM,YAAA,EAAc,IAAA,EAAM,YAAA;AAC9B,CAAA;AAEO,SAAS,eAAe,MAAA,EAAuC;AACpE,EAAA,MAAM,WAAA,GAAc,MAAA,CAAO,sBAAA,CAAuB,WAAW,CAAA;AAC7D,EAAA,IAAI,CAAC,WAAA,EAAa;AAChB,IAAA,OAAO,oBAAA;AAAA,EACT;AACA,EAAA,OAAO,WAAA,CAAY,IAAI,CAAA,IAAA,KAAQ;AAC7B,IAAA,MAAM,IAAA,GACJ,KAAK,QAAA,CAAS,KAAK,KAAK,IAAA,CAAK,QAAA,CAAS,KAAK,CAAA,GACvC,eAAA,GACA,YAAA;AACN,IAAA,OAAO,EAAE,MAAM,IAAA,EAAK;AAAA,EACtB,CAAC,CAAA;AACH;;;;;"}
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
var integration = require('@backstage/integration');
|
|
4
4
|
var catalogModel = require('@backstage/catalog-model');
|
|
5
|
-
var catalogClient = require('@backstage/catalog-client');
|
|
6
5
|
var errors = require('@backstage/errors');
|
|
7
6
|
var express = require('express');
|
|
8
7
|
var Router = require('express-promise-router');
|
|
@@ -16,9 +15,9 @@ var express__default = /*#__PURE__*/_interopDefaultCompat(express);
|
|
|
16
15
|
var Router__default = /*#__PURE__*/_interopDefaultCompat(Router);
|
|
17
16
|
|
|
18
17
|
async function createRouter(options) {
|
|
19
|
-
const { auth, logger, config: config$1, reader,
|
|
20
|
-
const catalogClient$1 = new catalogClient.CatalogClient({ discoveryApi: discovery });
|
|
18
|
+
const { auth, logger, config: config$1, reader, catalogApi, cache } = options;
|
|
21
19
|
const cacheTtl = config.getCacheTtl(config$1);
|
|
20
|
+
const readmeTypes = constants.getReadmeTypes(config$1);
|
|
22
21
|
logger.info(`Initializing readme backend. Cache TTL: ${cacheTtl}ms`);
|
|
23
22
|
const integrations = integration.ScmIntegrations.fromConfig(config$1);
|
|
24
23
|
const router = Router__default.default();
|
|
@@ -39,11 +38,9 @@ async function createRouter(options) {
|
|
|
39
38
|
response.send(cacheDoc.content);
|
|
40
39
|
return;
|
|
41
40
|
}
|
|
42
|
-
const
|
|
43
|
-
|
|
44
|
-
targetPluginId: "catalog"
|
|
41
|
+
const entity = await catalogApi.getEntityByRef(entityRef, {
|
|
42
|
+
credentials: await auth.getOwnServiceCredentials()
|
|
45
43
|
});
|
|
46
|
-
const entity = await catalogClient$1.getEntityByRef(entityRef, { token });
|
|
47
44
|
if (!entity) {
|
|
48
45
|
logger.info(`No integration found for ${entityRef}`);
|
|
49
46
|
response.status(500).json({ error: `No integration found for ${entityRef}` });
|
|
@@ -61,7 +58,6 @@ async function createRouter(options) {
|
|
|
61
58
|
response.status(500).json({ error: `No integration found for ${source.target}` });
|
|
62
59
|
return;
|
|
63
60
|
}
|
|
64
|
-
const readmeTypes = constants.getReadmeTypes(config$1);
|
|
65
61
|
for (const fileType of readmeTypes) {
|
|
66
62
|
const url = integration.resolveUrl({
|
|
67
63
|
url: fileType.name,
|
|
@@ -81,7 +77,7 @@ async function createRouter(options) {
|
|
|
81
77
|
const symLinkUrlResponse = await reader.readUrl(symLinkUrl);
|
|
82
78
|
content = (await symLinkUrlResponse.buffer()).toString("utf-8");
|
|
83
79
|
}
|
|
84
|
-
cache.set(
|
|
80
|
+
await cache.set(
|
|
85
81
|
entityRef,
|
|
86
82
|
{
|
|
87
83
|
name: fileType.name,
|
|
@@ -107,7 +103,7 @@ async function createRouter(options) {
|
|
|
107
103
|
}
|
|
108
104
|
}
|
|
109
105
|
logger.info(`Readme not found for ${entityRef}`);
|
|
110
|
-
cache.set(
|
|
106
|
+
await cache.set(
|
|
111
107
|
entityRef,
|
|
112
108
|
{
|
|
113
109
|
name: constants.NOT_FOUND_PLACEHOLDER,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.cjs.js","sources":["../../src/service/router.ts"],"sourcesContent":["import {\n AuthService,\n CacheService,\n
|
|
1
|
+
{"version":3,"file":"router.cjs.js","sources":["../../src/service/router.ts"],"sourcesContent":["import {\n AuthService,\n CacheService,\n LoggerService,\n RootConfigService,\n UrlReaderService,\n} from '@backstage/backend-plugin-api';\nimport { CatalogService } from '@backstage/plugin-catalog-node';\nimport { ScmIntegrations } from '@backstage/integration';\nimport {\n getEntitySourceLocation,\n stringifyEntityRef,\n} from '@backstage/catalog-model';\nimport { isError, NotFoundError } from '@backstage/errors';\nimport express from 'express';\nimport Router from 'express-promise-router';\nimport { isSymLink } from '../lib';\nimport { getCacheTtl } from './config';\nimport { NOT_FOUND_PLACEHOLDER, getReadmeTypes } from './constants';\nimport { ReadmeFile } from './types';\n\n/**\n * Constructs a readme router.\n *\n */\ninterface RouterOptions {\n auth: AuthService;\n catalogApi: CatalogService;\n config: RootConfigService;\n logger: LoggerService;\n reader: UrlReaderService;\n cache: CacheService;\n}\n\n/**\n * Constructs a readme router.\n *\n */\nexport async function createRouter(\n options: RouterOptions,\n): Promise<express.Router> {\n const { auth, logger, config, reader, catalogApi, cache } = options;\n const cacheTtl = getCacheTtl(config);\n const readmeTypes = getReadmeTypes(config);\n\n logger.info(`Initializing readme backend. Cache TTL: ${cacheTtl}ms`);\n const integrations = ScmIntegrations.fromConfig(config);\n const router = Router();\n router.use(express.json());\n\n router.get('/health', (_, response) => {\n response.json({ status: 'ok' });\n });\n\n router.get('/:kind/:namespace/:name', async (request, response) => {\n const { kind, namespace, name } = request.params;\n const entityRef = stringifyEntityRef({ kind, namespace, name });\n const cacheDoc = (await cache.get(entityRef)) as ReadmeFile | undefined;\n\n if (cacheDoc && cacheDoc.name === NOT_FOUND_PLACEHOLDER) {\n throw new NotFoundError('Readme could not be found');\n }\n if (cacheDoc) {\n logger.info(`Loading README for ${entityRef} from cache.`);\n response.type(cacheDoc.type);\n response.send(cacheDoc.content);\n return;\n }\n const entity = await catalogApi.getEntityByRef(entityRef, {\n credentials: await auth.getOwnServiceCredentials(),\n });\n if (!entity) {\n logger.info(`No integration found for ${entityRef}`);\n response\n .status(500)\n .json({ error: `No integration found for ${entityRef}` });\n return;\n }\n const source = getEntitySourceLocation(entity);\n\n if (!source || source.type !== 'url') {\n const errorMessage = `Not valid location for ${source.target}`;\n logger.info(errorMessage);\n throw new NotFoundError(errorMessage);\n }\n const integration = integrations.byUrl(source.target);\n\n if (!integration) {\n logger.info(`No integration found for ${source.target}`);\n response\n .status(500)\n .json({ error: `No integration found for ${source.target}` });\n return;\n }\n\n for (const fileType of readmeTypes) {\n const url = integration.resolveUrl({\n url: fileType.name,\n base: source.target,\n });\n\n let content;\n\n try {\n logger.debug(`Trying README location: ${url} for ${entityRef} `);\n response.type(fileType.type);\n\n const urlResponse = await reader.readUrl(url);\n content = (await urlResponse.buffer()).toString('utf-8');\n\n if (isSymLink(content)) {\n const symLinkUrl = integration.resolveUrl({\n url: content,\n base: source.target,\n });\n const symLinkUrlResponse = await reader.readUrl(symLinkUrl);\n content = (await symLinkUrlResponse.buffer()).toString('utf-8');\n }\n\n await cache.set(\n entityRef,\n {\n name: fileType.name,\n type: fileType.type,\n content: content,\n },\n { ttl: cacheTtl },\n );\n logger.info(\n `Found README for ${entityRef}: ${url} type ${fileType.type}`,\n );\n response.send(content);\n return;\n } catch (error: unknown) {\n if (isError(error) && error.name === 'NotFoundError') {\n continue;\n } else {\n response.status(500).json({\n error: `Readme failure: ${error}`,\n });\n return;\n }\n }\n }\n logger.info(`Readme not found for ${entityRef}`);\n await cache.set(\n entityRef,\n {\n name: NOT_FOUND_PLACEHOLDER,\n type: '',\n content: '',\n },\n { ttl: cacheTtl },\n );\n throw new NotFoundError('Readme could not be found');\n });\n\n return router;\n}\n"],"names":["config","getCacheTtl","getReadmeTypes","ScmIntegrations","Router","express","stringifyEntityRef","NOT_FOUND_PLACEHOLDER","NotFoundError","getEntitySourceLocation","isSymLink","isError"],"mappings":";;;;;;;;;;;;;;;;AAsCA,eAAsB,aACpB,OAAA,EACyB;AACzB,EAAA,MAAM,EAAE,IAAA,EAAM,MAAA,UAAQA,UAAQ,MAAA,EAAQ,UAAA,EAAY,OAAM,GAAI,OAAA;AAC5D,EAAA,MAAM,QAAA,GAAWC,mBAAYD,QAAM,CAAA;AACnC,EAAA,MAAM,WAAA,GAAcE,yBAAeF,QAAM,CAAA;AAEzC,EAAA,MAAA,CAAO,IAAA,CAAK,CAAA,wCAAA,EAA2C,QAAQ,CAAA,EAAA,CAAI,CAAA;AACnE,EAAA,MAAM,YAAA,GAAeG,2BAAA,CAAgB,UAAA,CAAWH,QAAM,CAAA;AACtD,EAAA,MAAM,SAASI,uBAAA,EAAO;AACtB,EAAA,MAAA,CAAO,GAAA,CAAIC,wBAAA,CAAQ,IAAA,EAAM,CAAA;AAEzB,EAAA,MAAA,CAAO,GAAA,CAAI,SAAA,EAAW,CAAC,CAAA,EAAG,QAAA,KAAa;AACrC,IAAA,QAAA,CAAS,IAAA,CAAK,EAAE,MAAA,EAAQ,IAAA,EAAM,CAAA;AAAA,EAChC,CAAC,CAAA;AAED,EAAA,MAAA,CAAO,GAAA,CAAI,yBAAA,EAA2B,OAAO,OAAA,EAAS,QAAA,KAAa;AACjE,IAAA,MAAM,EAAE,IAAA,EAAM,SAAA,EAAW,IAAA,KAAS,OAAA,CAAQ,MAAA;AAC1C,IAAA,MAAM,YAAYC,+BAAA,CAAmB,EAAE,IAAA,EAAM,SAAA,EAAW,MAAM,CAAA;AAC9D,IAAA,MAAM,QAAA,GAAY,MAAM,KAAA,CAAM,GAAA,CAAI,SAAS,CAAA;AAE3C,IAAA,IAAI,QAAA,IAAY,QAAA,CAAS,IAAA,KAASC,+BAAA,EAAuB;AACvD,MAAA,MAAM,IAAIC,qBAAc,2BAA2B,CAAA;AAAA,IACrD;AACA,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,MAAA,CAAO,IAAA,CAAK,CAAA,mBAAA,EAAsB,SAAS,CAAA,YAAA,CAAc,CAAA;AACzD,MAAA,QAAA,CAAS,IAAA,CAAK,SAAS,IAAI,CAAA;AAC3B,MAAA,QAAA,CAAS,IAAA,CAAK,SAAS,OAAO,CAAA;AAC9B,MAAA;AAAA,IACF;AACA,IAAA,MAAM,MAAA,GAAS,MAAM,UAAA,CAAW,cAAA,CAAe,SAAA,EAAW;AAAA,MACxD,WAAA,EAAa,MAAM,IAAA,CAAK,wBAAA;AAAyB,KAClD,CAAA;AACD,IAAA,IAAI,CAAC,MAAA,EAAQ;AACX,MAAA,MAAA,CAAO,IAAA,CAAK,CAAA,yBAAA,EAA4B,SAAS,CAAA,CAAE,CAAA;AACnD,MAAA,QAAA,CACG,MAAA,CAAO,GAAG,CAAA,CACV,IAAA,CAAK,EAAE,KAAA,EAAO,CAAA,yBAAA,EAA4B,SAAS,CAAA,CAAA,EAAI,CAAA;AAC1D,MAAA;AAAA,IACF;AACA,IAAA,MAAM,MAAA,GAASC,qCAAwB,MAAM,CAAA;AAE7C,IAAA,IAAI,CAAC,MAAA,IAAU,MAAA,CAAO,IAAA,KAAS,KAAA,EAAO;AACpC,MAAA,MAAM,YAAA,GAAe,CAAA,uBAAA,EAA0B,MAAA,CAAO,MAAM,CAAA,CAAA;AAC5D,MAAA,MAAA,CAAO,KAAK,YAAY,CAAA;AACxB,MAAA,MAAM,IAAID,qBAAc,YAAY,CAAA;AAAA,IACtC;AACA,IAAA,MAAM,WAAA,GAAc,YAAA,CAAa,KAAA,CAAM,MAAA,CAAO,MAAM,CAAA;AAEpD,IAAA,IAAI,CAAC,WAAA,EAAa;AAChB,MAAA,MAAA,CAAO,IAAA,CAAK,CAAA,yBAAA,EAA4B,MAAA,CAAO,MAAM,CAAA,CAAE,CAAA;AACvD,MAAA,QAAA,CACG,MAAA,CAAO,GAAG,CAAA,CACV,IAAA,CAAK,EAAE,OAAO,CAAA,yBAAA,EAA4B,MAAA,CAAO,MAAM,CAAA,CAAA,EAAI,CAAA;AAC9D,MAAA;AAAA,IACF;AAEA,IAAA,KAAA,MAAW,YAAY,WAAA,EAAa;AAClC,MAAA,MAAM,GAAA,GAAM,YAAY,UAAA,CAAW;AAAA,QACjC,KAAK,QAAA,CAAS,IAAA;AAAA,QACd,MAAM,MAAA,CAAO;AAAA,OACd,CAAA;AAED,MAAA,IAAI,OAAA;AAEJ,MAAA,IAAI;AACF,QAAA,MAAA,CAAO,KAAA,CAAM,CAAA,wBAAA,EAA2B,GAAG,CAAA,KAAA,EAAQ,SAAS,CAAA,CAAA,CAAG,CAAA;AAC/D,QAAA,QAAA,CAAS,IAAA,CAAK,SAAS,IAAI,CAAA;AAE3B,QAAA,MAAM,WAAA,GAAc,MAAM,MAAA,CAAO,OAAA,CAAQ,GAAG,CAAA;AAC5C,QAAA,OAAA,GAAA,CAAW,MAAM,WAAA,CAAY,MAAA,EAAO,EAAG,SAAS,OAAO,CAAA;AAEvD,QAAA,IAAIE,aAAA,CAAU,OAAO,CAAA,EAAG;AACtB,UAAA,MAAM,UAAA,GAAa,YAAY,UAAA,CAAW;AAAA,YACxC,GAAA,EAAK,OAAA;AAAA,YACL,MAAM,MAAA,CAAO;AAAA,WACd,CAAA;AACD,UAAA,MAAM,kBAAA,GAAqB,MAAM,MAAA,CAAO,OAAA,CAAQ,UAAU,CAAA;AAC1D,UAAA,OAAA,GAAA,CAAW,MAAM,kBAAA,CAAmB,MAAA,EAAO,EAAG,SAAS,OAAO,CAAA;AAAA,QAChE;AAEA,QAAA,MAAM,KAAA,CAAM,GAAA;AAAA,UACV,SAAA;AAAA,UACA;AAAA,YACE,MAAM,QAAA,CAAS,IAAA;AAAA,YACf,MAAM,QAAA,CAAS,IAAA;AAAA,YACf;AAAA,WACF;AAAA,UACA,EAAE,KAAK,QAAA;AAAS,SAClB;AACA,QAAA,MAAA,CAAO,IAAA;AAAA,UACL,oBAAoB,SAAS,CAAA,EAAA,EAAK,GAAG,CAAA,MAAA,EAAS,SAAS,IAAI,CAAA;AAAA,SAC7D;AACA,QAAA,QAAA,CAAS,KAAK,OAAO,CAAA;AACrB,QAAA;AAAA,MACF,SAAS,KAAA,EAAgB;AACvB,QAAA,IAAIC,cAAA,CAAQ,KAAK,CAAA,IAAK,KAAA,CAAM,SAAS,eAAA,EAAiB;AACpD,UAAA;AAAA,QACF,CAAA,MAAO;AACL,UAAA,QAAA,CAAS,MAAA,CAAO,GAAG,CAAA,CAAE,IAAA,CAAK;AAAA,YACxB,KAAA,EAAO,mBAAmB,KAAK,CAAA;AAAA,WAChC,CAAA;AACD,UAAA;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,IAAA,MAAA,CAAO,IAAA,CAAK,CAAA,qBAAA,EAAwB,SAAS,CAAA,CAAE,CAAA;AAC/C,IAAA,MAAM,KAAA,CAAM,GAAA;AAAA,MACV,SAAA;AAAA,MACA;AAAA,QACE,IAAA,EAAMJ,+BAAA;AAAA,QACN,IAAA,EAAM,EAAA;AAAA,QACN,OAAA,EAAS;AAAA,OACX;AAAA,MACA,EAAE,KAAK,QAAA;AAAS,KAClB;AACA,IAAA,MAAM,IAAIC,qBAAc,2BAA2B,CAAA;AAAA,EACrD,CAAC,CAAA;AAED,EAAA,OAAO,MAAA;AACT;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@axis-backstage/plugin-readme-backend",
|
|
3
|
-
"version": "0.16.
|
|
3
|
+
"version": "0.16.3",
|
|
4
4
|
"main": "dist/index.cjs.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -31,21 +31,22 @@
|
|
|
31
31
|
"postpack": "backstage-cli package postpack"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@backstage/backend-plugin-api": "^1.
|
|
35
|
-
"@backstage/catalog-client": "^1.
|
|
36
|
-
"@backstage/catalog-model": "^1.
|
|
37
|
-
"@backstage/config": "^1.3.
|
|
38
|
-
"@backstage/errors": "^1.
|
|
39
|
-
"@backstage/integration": "^
|
|
34
|
+
"@backstage/backend-plugin-api": "^1.9.0",
|
|
35
|
+
"@backstage/catalog-client": "^1.15.0",
|
|
36
|
+
"@backstage/catalog-model": "^1.8.0",
|
|
37
|
+
"@backstage/config": "^1.3.7",
|
|
38
|
+
"@backstage/errors": "^1.3.0",
|
|
39
|
+
"@backstage/integration": "^2.0.1",
|
|
40
|
+
"@backstage/plugin-catalog-node": "^2.2.0",
|
|
40
41
|
"@backstage/types": "^1.2.2",
|
|
41
42
|
"@types/express": "*",
|
|
42
43
|
"express": "^4.17.1",
|
|
43
44
|
"express-promise-router": "^4.1.0"
|
|
44
45
|
},
|
|
45
46
|
"devDependencies": {
|
|
46
|
-
"@backstage/backend-defaults": "^0.
|
|
47
|
-
"@backstage/backend-test-utils": "^1.
|
|
48
|
-
"@backstage/cli": "^0.
|
|
47
|
+
"@backstage/backend-defaults": "^0.17.0",
|
|
48
|
+
"@backstage/backend-test-utils": "^1.11.2",
|
|
49
|
+
"@backstage/cli": "^0.36.1",
|
|
49
50
|
"@types/supertest": "^2.0.12",
|
|
50
51
|
"msw": "^2.7.3",
|
|
51
52
|
"supertest": "^6.2.4"
|