@drodil/backstage-plugin-catalog-backend-module-qeta 3.37.0 → 3.38.0
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/dist/module.cjs.js
CHANGED
|
@@ -14,11 +14,18 @@ const catalogModuleQeta = backendPluginApi.createBackendModule({
|
|
|
14
14
|
cache: backendPluginApi.coreServices.cache,
|
|
15
15
|
auth: backendPluginApi.coreServices.auth,
|
|
16
16
|
logger: backendPluginApi.coreServices.logger,
|
|
17
|
-
discovery: backendPluginApi.coreServices.discovery
|
|
17
|
+
discovery: backendPluginApi.coreServices.discovery,
|
|
18
|
+
lifecycle: backendPluginApi.coreServices.rootLifecycle
|
|
18
19
|
},
|
|
19
|
-
async init({ builder, cache, auth, logger, discovery }) {
|
|
20
|
+
async init({ builder, cache, auth, logger, discovery, lifecycle }) {
|
|
20
21
|
builder.addProcessor(
|
|
21
|
-
new CatalogEntityLinkProcessor.CatalogEntityLinkProcessor(
|
|
22
|
+
new CatalogEntityLinkProcessor.CatalogEntityLinkProcessor(
|
|
23
|
+
auth,
|
|
24
|
+
cache,
|
|
25
|
+
logger,
|
|
26
|
+
discovery,
|
|
27
|
+
lifecycle
|
|
28
|
+
)
|
|
22
29
|
);
|
|
23
30
|
}
|
|
24
31
|
});
|
package/dist/module.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.cjs.js","sources":["../src/module.ts"],"sourcesContent":["import {\n coreServices,\n createBackendModule,\n} from '@backstage/backend-plugin-api';\nimport { catalogProcessingExtensionPoint } from '@backstage/plugin-catalog-node/alpha';\nimport { CatalogEntityLinkProcessor } from './processors/CatalogEntityLinkProcessor.ts';\n\nexport const catalogModuleQeta = createBackendModule({\n pluginId: 'catalog',\n moduleId: 'qeta',\n register(reg) {\n reg.registerInit({\n deps: {\n builder: catalogProcessingExtensionPoint,\n cache: coreServices.cache,\n auth: coreServices.auth,\n logger: coreServices.logger,\n discovery: coreServices.discovery,\n },\n async init({ builder, cache, auth, logger, discovery }) {\n builder.addProcessor(\n new CatalogEntityLinkProcessor(auth
|
|
1
|
+
{"version":3,"file":"module.cjs.js","sources":["../src/module.ts"],"sourcesContent":["import {\n coreServices,\n createBackendModule,\n} from '@backstage/backend-plugin-api';\nimport { catalogProcessingExtensionPoint } from '@backstage/plugin-catalog-node/alpha';\nimport { CatalogEntityLinkProcessor } from './processors/CatalogEntityLinkProcessor.ts';\n\nexport const catalogModuleQeta = createBackendModule({\n pluginId: 'catalog',\n moduleId: 'qeta',\n register(reg) {\n reg.registerInit({\n deps: {\n builder: catalogProcessingExtensionPoint,\n cache: coreServices.cache,\n auth: coreServices.auth,\n logger: coreServices.logger,\n discovery: coreServices.discovery,\n lifecycle: coreServices.rootLifecycle,\n },\n async init({ builder, cache, auth, logger, discovery, lifecycle }) {\n builder.addProcessor(\n new CatalogEntityLinkProcessor(\n auth,\n cache,\n logger,\n discovery,\n lifecycle,\n ),\n );\n },\n });\n },\n});\n"],"names":["createBackendModule","catalogProcessingExtensionPoint","coreServices","CatalogEntityLinkProcessor"],"mappings":";;;;;;AAOO,MAAM,oBAAoBA,oCAAoB,CAAA;AAAA,EACnD,QAAU,EAAA,SAAA;AAAA,EACV,QAAU,EAAA,MAAA;AAAA,EACV,SAAS,GAAK,EAAA;AACZ,IAAA,GAAA,CAAI,YAAa,CAAA;AAAA,MACf,IAAM,EAAA;AAAA,QACJ,OAAS,EAAAC,qCAAA;AAAA,QACT,OAAOC,6BAAa,CAAA,KAAA;AAAA,QACpB,MAAMA,6BAAa,CAAA,IAAA;AAAA,QACnB,QAAQA,6BAAa,CAAA,MAAA;AAAA,QACrB,WAAWA,6BAAa,CAAA,SAAA;AAAA,QACxB,WAAWA,6BAAa,CAAA;AAAA,OAC1B;AAAA,MACA,MAAM,KAAK,EAAE,OAAA,EAAS,OAAO,IAAM,EAAA,MAAA,EAAQ,SAAW,EAAA,SAAA,EAAa,EAAA;AACjE,QAAQ,OAAA,CAAA,YAAA;AAAA,UACN,IAAIC,qDAAA;AAAA,YACF,IAAA;AAAA,YACA,KAAA;AAAA,YACA,MAAA;AAAA,YACA,SAAA;AAAA,YACA;AAAA;AACF,SACF;AAAA;AACF,KACD,CAAA;AAAA;AAEL,CAAC;;;;"}
|
|
@@ -4,11 +4,14 @@ var catalogModel = require('@backstage/catalog-model');
|
|
|
4
4
|
var backstagePluginQetaCommon = require('@drodil/backstage-plugin-qeta-common');
|
|
5
5
|
|
|
6
6
|
class CatalogEntityLinkProcessor {
|
|
7
|
-
constructor(auth, cache, logger, discovery) {
|
|
7
|
+
constructor(auth, cache, logger, discovery, lifecycle) {
|
|
8
8
|
this.auth = auth;
|
|
9
9
|
this.cache = cache;
|
|
10
10
|
this.logger = logger;
|
|
11
11
|
this.client = new backstagePluginQetaCommon.QetaClient({ discoveryApi: discovery });
|
|
12
|
+
lifecycle.addStartupHook(() => {
|
|
13
|
+
void this.getEntityLinks();
|
|
14
|
+
});
|
|
12
15
|
}
|
|
13
16
|
client;
|
|
14
17
|
getProcessorName() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CatalogEntityLinkProcessor.cjs.js","sources":["../../src/processors/CatalogEntityLinkProcessor.ts"],"sourcesContent":["import { CatalogProcessor } from '@backstage/plugin-catalog-node';\nimport { Entity, stringifyEntityRef } from '@backstage/catalog-model';\nimport {\n AuthService,\n CacheService,\n DiscoveryService,\n LoggerService,\n} from '@backstage/backend-plugin-api';\nimport {\n EntityLinks,\n QetaApi,\n QetaClient,\n} from '@drodil/backstage-plugin-qeta-common';\n\nexport class CatalogEntityLinkProcessor implements CatalogProcessor {\n private readonly client: QetaApi;\n\n constructor(\n private readonly auth: AuthService,\n private readonly cache: CacheService,\n private readonly logger: LoggerService,\n discovery: DiscoveryService,\n ) {\n this.client = new QetaClient({ discoveryApi: discovery });\n }\n\n getProcessorName(): string {\n return 'CatalogEntityLinkProcessor';\n }\n\n async postProcessEntity(entity: Entity): Promise<Entity> {\n const entityRef = stringifyEntityRef(entity);\n const entityLinks = await this.getEntityLinks();\n const links = entityLinks\n .filter(link => link.entityRef === entityRef)\n .map(link => link.links)\n .flat();\n if (!links || links.length === 0) {\n return entity;\n }\n\n const existingLinks = entity.metadata.links ?? [];\n const uniqueLinks = [...existingLinks].filter(link => link.type !== 'qeta');\n for (const link of links) {\n if (!existingLinks.find(l => l.url === link.url)) {\n uniqueLinks.push(link);\n }\n }\n\n this.logger.debug(\n `Adding total of ${uniqueLinks.length}, new ${\n uniqueLinks.length - existingLinks.length\n } links to entity ${entityRef}`,\n );\n\n return {\n ...entity,\n metadata: {\n ...entity.metadata,\n links: uniqueLinks,\n },\n };\n }\n\n private async getEntityLinks(): Promise<EntityLinks[]> {\n const cached = await this.cache.get<string>('qeta-entity-links');\n if (cached) {\n try {\n return JSON.parse(cached);\n } catch (e) {\n this.logger.warn(`Failed to parse cached entity links: ${e}`);\n }\n }\n\n this.logger.debug(`Fetching entity links from Qeta`);\n const credentials = await this.auth.getOwnServiceCredentials();\n const { token } = await this.auth.getPluginRequestToken({\n onBehalfOf: credentials,\n targetPluginId: 'qeta',\n });\n const links = await this.client.getEntityLinks({ token });\n await this.cache.set('qeta-entity-links', JSON.stringify(links), {\n ttl: 60 * 60, // cache for 1 hour\n });\n return links;\n }\n}\n"],"names":["QetaClient","stringifyEntityRef"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"CatalogEntityLinkProcessor.cjs.js","sources":["../../src/processors/CatalogEntityLinkProcessor.ts"],"sourcesContent":["import { CatalogProcessor } from '@backstage/plugin-catalog-node';\nimport { Entity, stringifyEntityRef } from '@backstage/catalog-model';\nimport {\n AuthService,\n CacheService,\n DiscoveryService,\n LifecycleService,\n LoggerService,\n} from '@backstage/backend-plugin-api';\nimport {\n EntityLinks,\n QetaApi,\n QetaClient,\n} from '@drodil/backstage-plugin-qeta-common';\n\nexport class CatalogEntityLinkProcessor implements CatalogProcessor {\n private readonly client: QetaApi;\n\n constructor(\n private readonly auth: AuthService,\n private readonly cache: CacheService,\n private readonly logger: LoggerService,\n discovery: DiscoveryService,\n lifecycle: LifecycleService,\n ) {\n this.client = new QetaClient({ discoveryApi: discovery });\n lifecycle.addStartupHook(() => {\n void this.getEntityLinks(); // warm up the cache on startup\n });\n }\n\n getProcessorName(): string {\n return 'CatalogEntityLinkProcessor';\n }\n\n async postProcessEntity(entity: Entity): Promise<Entity> {\n const entityRef = stringifyEntityRef(entity);\n const entityLinks = await this.getEntityLinks();\n const links = entityLinks\n .filter(link => link.entityRef === entityRef)\n .map(link => link.links)\n .flat();\n if (!links || links.length === 0) {\n return entity;\n }\n\n const existingLinks = entity.metadata.links ?? [];\n const uniqueLinks = [...existingLinks].filter(link => link.type !== 'qeta');\n for (const link of links) {\n if (!existingLinks.find(l => l.url === link.url)) {\n uniqueLinks.push(link);\n }\n }\n\n this.logger.debug(\n `Adding total of ${uniqueLinks.length}, new ${\n uniqueLinks.length - existingLinks.length\n } links to entity ${entityRef}`,\n );\n\n return {\n ...entity,\n metadata: {\n ...entity.metadata,\n links: uniqueLinks,\n },\n };\n }\n\n private async getEntityLinks(): Promise<EntityLinks[]> {\n const cached = await this.cache.get<string>('qeta-entity-links');\n if (cached) {\n try {\n return JSON.parse(cached);\n } catch (e) {\n this.logger.warn(`Failed to parse cached entity links: ${e}`);\n }\n }\n\n this.logger.debug(`Fetching entity links from Qeta`);\n const credentials = await this.auth.getOwnServiceCredentials();\n const { token } = await this.auth.getPluginRequestToken({\n onBehalfOf: credentials,\n targetPluginId: 'qeta',\n });\n const links = await this.client.getEntityLinks({ token });\n await this.cache.set('qeta-entity-links', JSON.stringify(links), {\n ttl: 60 * 60, // cache for 1 hour\n });\n return links;\n }\n}\n"],"names":["QetaClient","stringifyEntityRef"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@drodil/backstage-plugin-catalog-backend-module-qeta",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.38.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "The qeta backend module for the catalog plugin.",
|
|
6
6
|
"keywords": [
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
"@backstage/backend-plugin-api": "^1.4.3",
|
|
48
48
|
"@backstage/catalog-model": "^1.7.5",
|
|
49
49
|
"@backstage/plugin-catalog-node": "^1.19.0",
|
|
50
|
-
"@drodil/backstage-plugin-qeta-common": "^3.
|
|
50
|
+
"@drodil/backstage-plugin-qeta-common": "^3.38.0"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
|
53
53
|
"@backstage/backend-test-utils": "^1.9.0",
|