@pagerduty/backstage-plugin-entity-processor 0.3.0-next.0 → 0.3.0-next.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/dist/index.cjs.js CHANGED
@@ -61,6 +61,70 @@ class PagerDutyClient {
61
61
  throw new Error(`Failed to retrieve mapping for ${type}:${namespace}/${name}: ${error}`);
62
62
  }
63
63
  }
64
+ async getServiceDependencies(serviceId) {
65
+ let response;
66
+ if (this.baseUrl === "") {
67
+ this.baseUrl = await this.discovery.getBaseUrl("pagerduty");
68
+ }
69
+ const options = {
70
+ method: "GET",
71
+ headers: {
72
+ "Content-Type": "application/json; charset=UTF-8",
73
+ Accept: "application/json, text/plain, */*"
74
+ }
75
+ };
76
+ const url = `${await this.discovery.getBaseUrl(
77
+ "pagerduty"
78
+ )}/dependencies/service/${serviceId}`;
79
+ try {
80
+ response = await fetch__default["default"](url, options);
81
+ const foundDependencies = await response.json();
82
+ switch (response.status) {
83
+ case 400:
84
+ throw new Error(await response.text());
85
+ case 404:
86
+ return [];
87
+ default:
88
+ this.logger.info(`Found mapping for ${serviceId}: ${JSON.stringify(foundDependencies.relationships)}`);
89
+ return foundDependencies.relationships;
90
+ }
91
+ } catch (error) {
92
+ this.logger.error(`Failed to retrieve mapping for ${serviceId}: ${error}`);
93
+ throw new Error(`Failed to retrieve mapping for ${serviceId}: ${error}`);
94
+ }
95
+ }
96
+ async getServiceIdAnnotationFromCatalog(entityRef) {
97
+ let response;
98
+ if (this.baseUrl === "") {
99
+ this.baseUrl = await this.discovery.getBaseUrl("pagerduty");
100
+ }
101
+ const options = {
102
+ method: "GET",
103
+ headers: {
104
+ "Content-Type": "application/json; charset=UTF-8",
105
+ Accept: "application/json, text/plain, */*"
106
+ }
107
+ };
108
+ const url = `${await this.discovery.getBaseUrl(
109
+ "pagerduty"
110
+ )}/catalog/entity/${entityRef}`;
111
+ try {
112
+ response = await fetch__default["default"](url, options);
113
+ const foundServiceId = await response.json();
114
+ switch (response.status) {
115
+ case 400:
116
+ throw new Error(await response.text());
117
+ case 404:
118
+ return "";
119
+ default:
120
+ this.logger.info(`Found serviceId for ${entityRef}: ${JSON.stringify(foundServiceId)}`);
121
+ return foundServiceId;
122
+ }
123
+ } catch (error) {
124
+ this.logger.error(`Failed to retrieve a PagerDuty service id for ${entityRef}: ${error}`);
125
+ throw new Error(`Failed to retrieve a PagerDuty service id for ${entityRef}: ${error}`);
126
+ }
127
+ }
64
128
  }
65
129
 
66
130
  var __defProp = Object.defineProperty;
@@ -69,6 +133,7 @@ var __publicField = (obj, key, value) => {
69
133
  __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
70
134
  return value;
71
135
  };
136
+ let client;
72
137
  class PagerDutyEntityProcessor {
73
138
  constructor({ logger, discovery }) {
74
139
  __publicField(this, "logger");
@@ -78,15 +143,15 @@ class PagerDutyEntityProcessor {
78
143
  });
79
144
  this.logger = logger;
80
145
  this.discovery = discovery;
146
+ client = new PagerDutyClient({ discovery: this.discovery, logger: this.logger });
81
147
  }
82
148
  getProcessorName() {
83
149
  return "PagerDutyEntityProcessor";
84
150
  }
85
151
  async postProcessEntity(entity) {
86
- var _a, _b;
152
+ var _a, _b, _c;
87
153
  if (this.shouldProcessEntity(entity)) {
88
154
  try {
89
- const client = new PagerDutyClient({ discovery: this.discovery, logger: this.logger });
90
155
  const mapping = await client.findServiceMapping({
91
156
  type: entity.kind.toLowerCase(),
92
157
  namespace: entity.metadata.namespace.toLowerCase(),
@@ -113,9 +178,22 @@ class PagerDutyEntityProcessor {
113
178
  this.logger.debug(`No mapping found for entity: ${entity.metadata.name}`);
114
179
  }
115
180
  if ((_a = entity.spec) == null ? void 0 : _a.dependsOn) {
116
- this.logger.info(`Processing dependencies for entity: ${entity.metadata.name}. Dependencies: ${JSON.stringify(entity.spec.dependsOn)}`);
181
+ const serviceId = entity.metadata.annotations["pagerduty.com/service-id"];
182
+ const dependencyAnnotations = JSON.parse(JSON.stringify((_b = entity.spec) == null ? void 0 : _b.dependsOn));
183
+ this.logger.info(`Existing dependencies for entity: ${entity.metadata.name}. Dependencies: ${JSON.stringify(dependencyAnnotations)}`);
184
+ if (serviceId && (dependencyAnnotations == null ? void 0 : dependencyAnnotations.length) > 0) {
185
+ const existingDependencies = await buildExistingDependencies(dependencyAnnotations);
186
+ const dependencies = await client.getServiceDependencies(serviceId);
187
+ this.logger.info(`Dependencies from PagerDuty service: ${serviceId}. Dependencies: ${JSON.stringify(dependencies)}`);
188
+ const newDependencies = dependencies.filter((dependency) => existingDependencies.includes(dependency.supporting_service.id));
189
+ if (newDependencies.length > 0) {
190
+ this.logger.info(`Updated dependencies for service: ${serviceId}. New dependencies: ${newDependencies}`);
191
+ }
192
+ }
193
+ } else {
194
+ this.logger.info(`No dependencies found for entity: ${entity.metadata.name}`);
117
195
  }
118
- if ((_b = entity.spec) == null ? void 0 : _b.dependencyOf) {
196
+ if ((_c = entity.spec) == null ? void 0 : _c.dependencyOf) {
119
197
  this.logger.info(`Processing dependents for entity: ${entity.metadata.name}. Dependents: ${JSON.stringify(entity.spec.dependencyOf)}`);
120
198
  }
121
199
  } catch (error) {
@@ -126,6 +204,16 @@ class PagerDutyEntityProcessor {
126
204
  return entity;
127
205
  }
128
206
  }
207
+ async function buildExistingDependencies(dependencyAnnotations) {
208
+ const dependencies = [];
209
+ dependencyAnnotations.map(async (dependency) => {
210
+ const foundServiceId = await client.getServiceIdAnnotationFromCatalog(dependency);
211
+ if (foundServiceId !== "") {
212
+ dependencies.push(foundServiceId);
213
+ }
214
+ });
215
+ return dependencies;
216
+ }
129
217
 
130
218
  const pagerDutyEntityProcessor = backendPluginApi.createBackendModule({
131
219
  pluginId: "catalog",
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../src/apis/client.ts","../src/processor/PagerDutyEntityProcessor.ts","../src/module.ts"],"sourcesContent":["import fetch from 'node-fetch';\nimport type { RequestInit, Response } from 'node-fetch';\nimport type { EntityMapping } from '../types';\nimport { DiscoveryService, LoggerService } from '@backstage/backend-plugin-api';\nimport { PagerDutyEntityMappingResponse } from '@pagerduty/backstage-plugin-common';\n\nexport interface PagerDutyClientOptions {\n discovery: DiscoveryService;\n logger: LoggerService;\n};\n\nexport type BackstageEntityRef = {\n type: string;\n namespace: string;\n name: string;\n}\n\nexport class PagerDutyClient {\n private discovery: DiscoveryService;\n private logger: LoggerService;\n private baseUrl: string = \"\";\n \n constructor({ discovery, logger }: PagerDutyClientOptions) {\n this.discovery = discovery;\n this.logger = logger;\n }\n\n async findServiceMapping({ type, namespace, name }: BackstageEntityRef): Promise<EntityMapping> {\n let response: Response;\n\n if (this.baseUrl === \"\") {\n this.baseUrl = await this.discovery.getBaseUrl('pagerduty');\n }\n\n const options: RequestInit = {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json; charset=UTF-8',\n Accept: 'application/json, text/plain, */*',\n },\n };\n\n const url = `${await this.discovery.getBaseUrl(\n 'pagerduty',\n )}/mapping/entity/${type}/${namespace}/${name}`;\n\n try {\n response = await fetch(url, options);\n\n const foundMapping: PagerDutyEntityMappingResponse = await response.json(); \n\n switch (response.status) {\n case 400: \n throw new Error(await response.text());\n case 404:\n return {};\n default: // 200\n this.logger.debug(`Found mapping for ${type}:${namespace}/${name}: ${JSON.stringify(foundMapping.mapping)}`);\n\n return {\n serviceId: foundMapping.mapping.serviceId,\n integrationKey: foundMapping.mapping.integrationKey,\n entityRef: foundMapping.mapping.entityRef,\n account: foundMapping.mapping.account,\n }\n }\n } catch (error) {\n this.logger.error(`Failed to retrieve mapping for ${type}:${namespace}/${name}: ${error}`);\n throw new Error(`Failed to retrieve mapping for ${type}:${namespace}/${name}: ${error}`);\n }\n }\n\n}","import { DiscoveryService, LoggerService } from \"@backstage/backend-plugin-api\";\nimport { Entity } from \"@backstage/catalog-model\";\nimport { CatalogProcessor } from \"@backstage/plugin-catalog-node\";\nimport { PagerDutyClient } from \"../apis/client\";\n\n/**\n * A function which given an entity, determines if it should be processed for linguist tags.\n * @public\n */\nexport type ShouldProcessEntity = (entity: Entity) => boolean;\n\nexport interface PagerDutyEntityProcessorOptions {\n logger: LoggerService;\n discovery: DiscoveryService;\n};\n\nexport class PagerDutyEntityProcessor implements CatalogProcessor {\n private logger: LoggerService;\n private discovery: DiscoveryService;\n\n private shouldProcessEntity: ShouldProcessEntity = (entity: Entity) => {\n return entity.kind === 'Component';\n }\n\n constructor({ logger, discovery }: PagerDutyEntityProcessorOptions) {\n this.logger = logger;\n this.discovery = discovery;\n }\n\n getProcessorName(): string {\n return \"PagerDutyEntityProcessor\";\n }\n\n async postProcessEntity(entity: Entity): Promise<Entity> {\n if (this.shouldProcessEntity(entity)) {\n try {\n // Initialize the PagerDuty client\n const client = new PagerDutyClient({ discovery: this.discovery, logger: this.logger });\n\n // Process service mapping overrides\n // Find the service mapping for the entity in database\n const mapping = await client.findServiceMapping({\n type: entity.kind.toLowerCase(),\n namespace: entity.metadata.namespace!.toLowerCase(),\n name: entity.metadata.name.toLowerCase(),\n });\n\n // If mapping exists add the annotations to the entity\n if (mapping.serviceId) { \n \n // If serviceId is present, add the annotations to the entity\n if (mapping.serviceId && mapping.serviceId !== \"\") {\n entity.metadata.annotations![\"pagerduty.com/service-id\"] = mapping.serviceId;\n }\n else {\n delete entity.metadata.annotations![\"pagerduty.com/service-id\"];\n }\n\n // If integrationKey is present, add the annotations to the entity\n if (mapping.integrationKey && mapping.integrationKey !== \"\") {\n entity.metadata.annotations![\"pagerduty.com/integration-key\"] = mapping.integrationKey;\n }\n else {\n delete entity.metadata.annotations![\"pagerduty.com/integration-key\"];\n }\n\n // If account is present, add the annotations to the entity\n if (mapping.account && mapping.account !== \"\") {\n entity.metadata.annotations![\"pagerduty.com/account\"] = mapping.account;\n }\n else {\n delete entity.metadata.annotations![\"pagerduty.com/account\"];\n }\n\n this.logger.debug(`Added annotations to entity ${entity.metadata.name} with service id: ${mapping.serviceId}, integration key: ${mapping.integrationKey} and account: ${mapping.account}`);\n } else {\n this.logger.debug(`No mapping found for entity: ${entity.metadata.name}`);\n }\n\n // Process service dependencies\n if(entity.spec?.dependsOn){\n this.logger.info(`Processing dependencies for entity: ${entity.metadata.name}. Dependencies: ${JSON.stringify(entity.spec.dependsOn)}`);\n }\n\n if(entity.spec?.dependencyOf){\n this.logger.info(`Processing dependents for entity: ${entity.metadata.name}. Dependents: ${JSON.stringify(entity.spec.dependencyOf)}`);\n }\n\n } catch (error) {\n this.logger.error(`Error processing entity: ${entity.metadata.name}`);\n this.logger.error(`${error}`);\n }\n }\n\n return entity;\n }\n}","import { coreServices, createBackendModule } from \"@backstage/backend-plugin-api\";\nimport { catalogProcessingExtensionPoint } from '@backstage/plugin-catalog-node/alpha';\nimport { PagerDutyEntityProcessor } from \"./processor\";\n\n/** @public */\nexport const pagerDutyEntityProcessor = createBackendModule({\n pluginId: 'catalog',\n moduleId: 'pagerduty-entity-processor',\n register(env) {\n env.registerInit({\n deps: {\n logger: coreServices.logger,\n catalog: catalogProcessingExtensionPoint,\n discovery: coreServices.discovery,\n },\n async init({ logger, discovery, catalog }) {\n catalog.addProcessor(new PagerDutyEntityProcessor({ logger, discovery}));\n },\n });\n },\n});\n"],"names":["__publicField","fetch","createBackendModule","coreServices","catalogProcessingExtensionPoint"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../src/apis/client.ts","../src/processor/PagerDutyEntityProcessor.ts","../src/module.ts"],"sourcesContent":["import fetch from 'node-fetch';\nimport type { RequestInit, Response } from 'node-fetch';\nimport type { EntityMapping } from '../types';\nimport { DiscoveryService, LoggerService } from '@backstage/backend-plugin-api';\nimport { PagerDutyEntityMappingResponse, PagerDutyServiceDependency, PagerDutyServiceDependencyResponse } from '@pagerduty/backstage-plugin-common';\n\nexport interface PagerDutyClientOptions {\n discovery: DiscoveryService;\n logger: LoggerService;\n};\n\nexport type BackstageEntityRef = {\n type: string;\n namespace: string;\n name: string;\n}\n\nexport class PagerDutyClient {\n private discovery: DiscoveryService;\n private logger: LoggerService;\n private baseUrl: string = \"\";\n \n constructor({ discovery, logger }: PagerDutyClientOptions) {\n this.discovery = discovery;\n this.logger = logger;\n }\n\n async findServiceMapping({ type, namespace, name }: BackstageEntityRef): Promise<EntityMapping> {\n let response: Response;\n\n if (this.baseUrl === \"\") {\n this.baseUrl = await this.discovery.getBaseUrl('pagerduty');\n }\n\n const options: RequestInit = {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json; charset=UTF-8',\n Accept: 'application/json, text/plain, */*',\n },\n };\n\n const url = `${await this.discovery.getBaseUrl(\n 'pagerduty',\n )}/mapping/entity/${type}/${namespace}/${name}`;\n\n try {\n response = await fetch(url, options);\n\n const foundMapping: PagerDutyEntityMappingResponse = await response.json(); \n\n switch (response.status) {\n case 400: \n throw new Error(await response.text());\n case 404:\n return {};\n default: // 200\n this.logger.debug(`Found mapping for ${type}:${namespace}/${name}: ${JSON.stringify(foundMapping.mapping)}`);\n\n return {\n serviceId: foundMapping.mapping.serviceId,\n integrationKey: foundMapping.mapping.integrationKey,\n entityRef: foundMapping.mapping.entityRef,\n account: foundMapping.mapping.account,\n }\n }\n } catch (error) {\n this.logger.error(`Failed to retrieve mapping for ${type}:${namespace}/${name}: ${error}`);\n throw new Error(`Failed to retrieve mapping for ${type}:${namespace}/${name}: ${error}`);\n }\n }\n\n async getServiceDependencies(serviceId: string): Promise<PagerDutyServiceDependency[]> {\n let response: Response;\n\n if (this.baseUrl === \"\") {\n this.baseUrl = await this.discovery.getBaseUrl('pagerduty');\n }\n\n const options: RequestInit = {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json; charset=UTF-8',\n Accept: 'application/json, text/plain, */*',\n },\n };\n\n const url = `${await this.discovery.getBaseUrl(\n 'pagerduty',\n )}/dependencies/service/${serviceId}`;\n\n try {\n response = await fetch(url, options);\n\n const foundDependencies: PagerDutyServiceDependencyResponse = await response.json();\n\n switch (response.status) {\n case 400:\n throw new Error(await response.text());\n case 404:\n return [];\n default: // 200\n this.logger.info(`Found mapping for ${serviceId}: ${JSON.stringify(foundDependencies.relationships)}`);\n\n return foundDependencies.relationships;\n }\n } catch (error) {\n this.logger.error(`Failed to retrieve mapping for ${serviceId}: ${error}`);\n throw new Error(`Failed to retrieve mapping for ${serviceId}: ${error}`);\n }\n }\n\n async getServiceIdAnnotationFromCatalog(entityRef: string): Promise<string> {\n let response: Response;\n\n if (this.baseUrl === \"\") {\n this.baseUrl = await this.discovery.getBaseUrl('pagerduty');\n }\n\n const options: RequestInit = {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json; charset=UTF-8',\n Accept: 'application/json, text/plain, */*',\n },\n };\n\n const url = `${await this.discovery.getBaseUrl(\n 'pagerduty',\n )}/catalog/entity/${entityRef}`;\n\n try {\n response = await fetch(url, options);\n\n const foundServiceId: string = await response.json();\n\n switch (response.status) {\n case 400:\n throw new Error(await response.text());\n case 404:\n return \"\";\n default: // 200\n this.logger.info(`Found serviceId for ${entityRef}: ${JSON.stringify(foundServiceId)}`);\n\n return foundServiceId;\n }\n } catch (error) {\n this.logger.error(`Failed to retrieve a PagerDuty service id for ${entityRef}: ${error}`);\n throw new Error(`Failed to retrieve a PagerDuty service id for ${entityRef}: ${error}`);\n }\n }\n\n}","import { DiscoveryService, LoggerService } from \"@backstage/backend-plugin-api\";\nimport { Entity } from \"@backstage/catalog-model\";\nimport { CatalogProcessor } from \"@backstage/plugin-catalog-node\";\nimport { PagerDutyClient } from \"../apis/client\";\n\n/**\n * A function which given an entity, determines if it should be processed for linguist tags.\n * @public\n */\nexport type ShouldProcessEntity = (entity: Entity) => boolean;\n\nexport interface PagerDutyEntityProcessorOptions {\n logger: LoggerService;\n discovery: DiscoveryService;\n};\n\nlet client : PagerDutyClient;\n\nexport class PagerDutyEntityProcessor implements CatalogProcessor {\n private logger: LoggerService;\n private discovery: DiscoveryService;\n\n private shouldProcessEntity: ShouldProcessEntity = (entity: Entity) => {\n return entity.kind === 'Component';\n }\n\n constructor({ logger, discovery }: PagerDutyEntityProcessorOptions) {\n this.logger = logger;\n this.discovery = discovery;\n\n client = new PagerDutyClient({ discovery: this.discovery, logger: this.logger });\n }\n\n getProcessorName(): string {\n return \"PagerDutyEntityProcessor\";\n }\n\n async postProcessEntity(entity: Entity): Promise<Entity> {\n if (this.shouldProcessEntity(entity)) {\n try {\n // Process service mapping overrides\n // Find the service mapping for the entity in database\n const mapping = await client.findServiceMapping({\n type: entity.kind.toLowerCase(),\n namespace: entity.metadata.namespace!.toLowerCase(),\n name: entity.metadata.name.toLowerCase(),\n });\n\n // If mapping exists add the annotations to the entity\n if (mapping.serviceId) { \n \n // If serviceId is present, add the annotations to the entity\n if (mapping.serviceId && mapping.serviceId !== \"\") {\n entity.metadata.annotations![\"pagerduty.com/service-id\"] = mapping.serviceId;\n }\n else {\n delete entity.metadata.annotations![\"pagerduty.com/service-id\"];\n }\n\n // If integrationKey is present, add the annotations to the entity\n if (mapping.integrationKey && mapping.integrationKey !== \"\") {\n entity.metadata.annotations![\"pagerduty.com/integration-key\"] = mapping.integrationKey;\n }\n else {\n delete entity.metadata.annotations![\"pagerduty.com/integration-key\"];\n }\n\n // If account is present, add the annotations to the entity\n if (mapping.account && mapping.account !== \"\") {\n entity.metadata.annotations![\"pagerduty.com/account\"] = mapping.account;\n }\n else {\n delete entity.metadata.annotations![\"pagerduty.com/account\"];\n }\n\n this.logger.debug(`Added annotations to entity ${entity.metadata.name} with service id: ${mapping.serviceId}, integration key: ${mapping.integrationKey} and account: ${mapping.account}`);\n } else {\n this.logger.debug(`No mapping found for entity: ${entity.metadata.name}`);\n }\n\n // Process service dependencies\n if(entity.spec?.dependsOn){\n // Check if ServiceId exists get service dependencies from PagerDuty \n const serviceId = entity.metadata.annotations![\"pagerduty.com/service-id\"];\n\n // Check if service has dependencies configured\n const dependencyAnnotations: string[] = JSON.parse(JSON.stringify(entity.spec?.dependsOn));\n this.logger.info(`Existing dependencies for entity: ${entity.metadata.name}. Dependencies: ${JSON.stringify(dependencyAnnotations)}`);\n\n if (serviceId && dependencyAnnotations?.length > 0) {\n const existingDependencies: string[] = await buildExistingDependencies(dependencyAnnotations);\n\n // Get dependencies from PagerDuty for the service\n const dependencies = await client.getServiceDependencies(serviceId);\n\n this.logger.info(`Dependencies from PagerDuty service: ${serviceId}. Dependencies: ${JSON.stringify(dependencies)}`);\n\n // compare dependencies with existing dependencies defined on the entity\n \n const newDependencies = dependencies.filter((dependency) => existingDependencies.includes(dependency.supporting_service.id));\n\n // Update dependencies on PagerDuty\n if (newDependencies.length > 0){\n // await client.updateServiceDependencies(serviceId, newDependencies);\n this.logger.info(`Updated dependencies for service: ${serviceId}. New dependencies: ${newDependencies}`);\n }\n }\n }\n else {\n this.logger.info(`No dependencies found for entity: ${entity.metadata.name}`);\n }\n\n if(entity.spec?.dependencyOf){\n this.logger.info(`Processing dependents for entity: ${entity.metadata.name}. Dependents: ${JSON.stringify(entity.spec.dependencyOf)}`);\n }\n\n } catch (error) {\n this.logger.error(`Error processing entity: ${entity.metadata.name}`);\n this.logger.error(`${error}`);\n }\n }\n\n return entity;\n }\n}\n\nasync function buildExistingDependencies(dependencyAnnotations: string[]): Promise<string[]> {\n const dependencies: string[] = [];\n\n // Get all service ids matching the dependency annotations\n dependencyAnnotations.map(async (dependency) => {\n const foundServiceId = await client.getServiceIdAnnotationFromCatalog(dependency);\n\n if (foundServiceId !== \"\") {\n dependencies.push(foundServiceId);\n }\n });\n\n return dependencies;\n\n}","import { coreServices, createBackendModule } from \"@backstage/backend-plugin-api\";\nimport { catalogProcessingExtensionPoint } from '@backstage/plugin-catalog-node/alpha';\nimport { PagerDutyEntityProcessor } from \"./processor\";\n\n/** @public */\nexport const pagerDutyEntityProcessor = createBackendModule({\n pluginId: 'catalog',\n moduleId: 'pagerduty-entity-processor',\n register(env) {\n env.registerInit({\n deps: {\n logger: coreServices.logger,\n catalog: catalogProcessingExtensionPoint,\n discovery: coreServices.discovery,\n },\n async init({ logger, discovery, catalog }) {\n catalog.addProcessor(new PagerDutyEntityProcessor({ logger, discovery}));\n },\n });\n },\n});\n"],"names":["__publicField","fetch","createBackendModule","coreServices","catalogProcessingExtensionPoint"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pagerduty/backstage-plugin-entity-processor",
3
- "version": "0.3.0-next.0",
3
+ "version": "0.3.0-next.1",
4
4
  "main": "dist/index.cjs.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "license": "Apache-2.0",
@@ -37,7 +37,7 @@
37
37
  "@backstage/catalog-model": "^1.5.0",
38
38
  "@backstage/config": "^1.2.0",
39
39
  "@backstage/plugin-catalog-node": "^1.12.2",
40
- "@pagerduty/backstage-plugin-common": "0.2.0",
40
+ "@pagerduty/backstage-plugin-common": "0.2.1-next.0",
41
41
  "@rjsf/core": "^5.14.3",
42
42
  "node-fetch": "^2.6.7",
43
43
  "winston": "^3.2.1",