@axis-backstage/plugin-readme-backend 0.16.2 → 0.16.4
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
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.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 { 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,
|
|
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;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
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,
|
|
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":"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"}
|
package/package.json
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@axis-backstage/plugin-readme-backend",
|
|
3
|
-
"version": "0.16.
|
|
3
|
+
"version": "0.16.4",
|
|
4
4
|
"main": "dist/index.cjs.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
7
|
"publishConfig": {
|
|
8
8
|
"access": "public",
|
|
9
9
|
"main": "dist/index.cjs.js",
|
|
10
|
-
"types": "dist/index.d.ts"
|
|
10
|
+
"types": "dist/index.d.ts",
|
|
11
|
+
"directory": "_release/package"
|
|
11
12
|
},
|
|
12
13
|
"backstage": {
|
|
13
14
|
"role": "backend-plugin",
|
|
@@ -30,21 +31,22 @@
|
|
|
30
31
|
"postpack": "backstage-cli package postpack"
|
|
31
32
|
},
|
|
32
33
|
"dependencies": {
|
|
33
|
-
"@backstage/backend-plugin-api": "^1.
|
|
34
|
-
"@backstage/catalog-
|
|
35
|
-
"@backstage/
|
|
36
|
-
"@backstage/
|
|
37
|
-
"@backstage/
|
|
38
|
-
"@backstage/
|
|
34
|
+
"@backstage/backend-plugin-api": "^1.9.2",
|
|
35
|
+
"@backstage/catalog-client": "^1.16.0",
|
|
36
|
+
"@backstage/catalog-model": "^1.9.0",
|
|
37
|
+
"@backstage/config": "^1.3.8",
|
|
38
|
+
"@backstage/errors": "^1.3.1",
|
|
39
|
+
"@backstage/integration": "^2.0.3",
|
|
40
|
+
"@backstage/plugin-catalog-node": "^2.2.2",
|
|
39
41
|
"@backstage/types": "^1.2.2",
|
|
40
42
|
"@types/express": "*",
|
|
41
43
|
"express": "^4.17.1",
|
|
42
44
|
"express-promise-router": "^4.1.0"
|
|
43
45
|
},
|
|
44
46
|
"devDependencies": {
|
|
45
|
-
"@backstage/backend-defaults": "^0.
|
|
46
|
-
"@backstage/backend-test-utils": "^1.
|
|
47
|
-
"@backstage/cli": "^0.
|
|
47
|
+
"@backstage/backend-defaults": "^0.17.4",
|
|
48
|
+
"@backstage/backend-test-utils": "^1.11.4",
|
|
49
|
+
"@backstage/cli": "^0.36.3",
|
|
48
50
|
"@types/supertest": "^2.0.12",
|
|
49
51
|
"msw": "^2.7.3",
|
|
50
52
|
"supertest": "^6.2.4"
|
|
@@ -60,5 +62,6 @@
|
|
|
60
62
|
"package.json"
|
|
61
63
|
]
|
|
62
64
|
}
|
|
63
|
-
}
|
|
65
|
+
},
|
|
66
|
+
"directory": "_release/package"
|
|
64
67
|
}
|