@axis-backstage/plugin-jira-dashboard-backend 0.6.0 → 0.7.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,20 @@
1
1
  # @axis-backstage/plugin-jira-dashboard-backend
2
2
 
3
+ ## 0.7.1
4
+
5
+ ### Patch Changes
6
+
7
+ - ae965c0: Fix broken workspace dependencies
8
+
9
+ ## 0.7.0
10
+
11
+ ### Minor Changes
12
+
13
+ - 135e3b2: Updated the resolveUserEmailSuffix function to utilize config.getOptionalString method, providing a more concise approach. This modification ensures that an empty string is returned if the Jira user email suffix configuration is missing, effectively preventing failures and enhancing error logging capabilities.
14
+
15
+ Modified the retrieval of project keys in the router module to handle multiple project keys specified in annotations for e.g., jira.com/project-key: abc,def,ghi
16
+ The updated logic now parses multiple project keys properly and supports comma-separated values. It's important to note that in cases where multiple project keys are present, only the first project key (projectKey[0]) is used for display on the project card i.e, in this case project-key "abc", assuming it represents the main project. However, the response table will include data from all project keys specified in the annotations.
17
+
3
18
  ## 0.6.0
4
19
 
5
20
  ### Minor Changes
package/config.d.ts CHANGED
@@ -13,9 +13,9 @@ export interface Config {
13
13
  baseUrl: string;
14
14
 
15
15
  /**
16
- * The email suffix used for retreiving a specific Jira user in a company. For instance @your-company.com
16
+ * Optional email suffix used for retreiving a specific Jira user in a company. For instance @your-company.com. Default value is ''
17
17
  */
18
- userEmailSuffix: string;
18
+ userEmailSuffix?: string;
19
19
 
20
20
  /**
21
21
  * Optional annotation prefix for retrieving a custom annotation. Defaut value is jira.com
package/dist/index.cjs.js CHANGED
@@ -38,11 +38,7 @@ function resolveJiraToken(config) {
38
38
  }
39
39
  }
40
40
  function resolveUserEmailSuffix(config) {
41
- try {
42
- return config.getString(JIRA_USER_CONFIG_EMAIL_SUFFIX);
43
- } catch (error) {
44
- throw new Error(`Invalid Jira user path, ${error}`);
45
- }
41
+ return config.getOptionalString(JIRA_USER_CONFIG_EMAIL_SUFFIX) || "";
46
42
  }
47
43
  function resolveAnnotationPrefix(config) {
48
44
  const annotationPrefix = config.getOptionalString(JIRA_ANNOTATION);
@@ -227,7 +223,7 @@ async function createRouter(options) {
227
223
  router.get(
228
224
  "/dashboards/by-entity-ref/:kind/:namespace/:name",
229
225
  async (request, response) => {
230
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
226
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;
231
227
  const { kind, namespace, name } = request.params;
232
228
  const entityRef = catalogModel.stringifyEntityRef({ kind, namespace, name });
233
229
  const { token } = await tokenManager.getToken();
@@ -243,7 +239,7 @@ async function createRouter(options) {
243
239
  response.status(500).json({ error: `No entity found for ${entityRef}` });
244
240
  return;
245
241
  }
246
- const projectKey = (_a = entity.metadata.annotations) == null ? void 0 : _a[projectKeyAnnotation];
242
+ const projectKey = (_b = (_a = entity.metadata.annotations) == null ? void 0 : _a[projectKeyAnnotation]) == null ? void 0 : _b.split(",");
247
243
  if (!projectKey) {
248
244
  const error = `No jira.com/project-key annotation found for ${entityRef}`;
249
245
  logger.info(error);
@@ -252,11 +248,15 @@ async function createRouter(options) {
252
248
  }
253
249
  let projectResponse;
254
250
  try {
255
- projectResponse = await getProjectResponse(projectKey, config, cache);
251
+ projectResponse = await getProjectResponse(
252
+ projectKey[0],
253
+ config,
254
+ cache
255
+ );
256
256
  } catch (err) {
257
- logger.error(`Could not find Jira project ${projectKey}`);
257
+ logger.error(`Could not find Jira project ${projectKey[0]}`);
258
258
  response.status(404).json({
259
- error: `No Jira project found with key ${projectKey}`
259
+ error: `No Jira project found with key ${projectKey[0]}`
260
260
  });
261
261
  return;
262
262
  }
@@ -265,24 +265,24 @@ async function createRouter(options) {
265
265
  logger.warn(`Could not find user identity`);
266
266
  }
267
267
  let filters = [];
268
- const customFilterAnnotations = (_c = (_b = entity.metadata.annotations) == null ? void 0 : _b[filtersAnnotation]) == null ? void 0 : _c.split(",");
268
+ const customFilterAnnotations = (_d = (_c = entity.metadata.annotations) == null ? void 0 : _c[filtersAnnotation]) == null ? void 0 : _d.split(",");
269
269
  filters = getDefaultFilters(
270
270
  config,
271
- (_d = userIdentity == null ? void 0 : userIdentity.identity) == null ? void 0 : _d.userEntityRef
271
+ (_e = userIdentity == null ? void 0 : userIdentity.identity) == null ? void 0 : _e.userEntityRef
272
272
  );
273
273
  if (customFilterAnnotations) {
274
274
  filters.push(
275
275
  ...await getFiltersFromAnnotations(customFilterAnnotations, config)
276
276
  );
277
277
  }
278
- let issues = await getIssuesFromFilters(projectKey, filters, config);
279
- let components = (_g = (_f = (_e = entity.metadata.annotations) == null ? void 0 : _e[componentsAnnotation]) == null ? void 0 : _f.split(",")) != null ? _g : [];
278
+ let issues = await getIssuesFromFilters(projectKey[0], filters, config);
279
+ let components = (_h = (_g = (_f = entity.metadata.annotations) == null ? void 0 : _f[componentsAnnotation]) == null ? void 0 : _g.split(",")) != null ? _h : [];
280
280
  components = components.concat(
281
- (_j = (_i = (_h = entity.metadata.annotations) == null ? void 0 : _h[componentRoadieAnnotation]) == null ? void 0 : _i.split(",")) != null ? _j : []
281
+ (_k = (_j = (_i = entity.metadata.annotations) == null ? void 0 : _i[componentRoadieAnnotation]) == null ? void 0 : _j.split(",")) != null ? _k : []
282
282
  );
283
283
  if (components) {
284
284
  const componentIssues = await getIssuesFromComponents(
285
- projectKey,
285
+ projectKey[0],
286
286
  components,
287
287
  config
288
288
  );
@@ -298,7 +298,7 @@ async function createRouter(options) {
298
298
  router.get(
299
299
  "/avatar/by-entity-ref/:kind/:namespace/:name",
300
300
  async (request, response) => {
301
- var _a;
301
+ var _a, _b;
302
302
  const { kind, namespace, name } = request.params;
303
303
  const entityRef = catalogModel.stringifyEntityRef({ kind, namespace, name });
304
304
  const { token } = await tokenManager.getToken();
@@ -309,16 +309,16 @@ async function createRouter(options) {
309
309
  response.status(500).json({ error: `No entity found for ${entityRef}` });
310
310
  return;
311
311
  }
312
- const projectKey = (_a = entity.metadata.annotations) == null ? void 0 : _a[projectKeyAnnotation];
312
+ const projectKey = (_b = (_a = entity.metadata.annotations) == null ? void 0 : _a[projectKeyAnnotation]) == null ? void 0 : _b.split(",");
313
313
  const projectResponse = await getProjectResponse(
314
- projectKey,
314
+ projectKey[0],
315
315
  config,
316
316
  cache
317
317
  );
318
318
  if (!projectResponse) {
319
319
  logger.error("Could not find project in Jira");
320
320
  response.status(400).json({
321
- error: `No Jira project found for project key ${projectKey}`
321
+ error: `No Jira project found for project key ${projectKey[0]}`
322
322
  });
323
323
  return;
324
324
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../src/config.ts","../src/filters.ts","../src/api.ts","../src/service/service.ts","../src/lib.ts","../src/service/router.ts","../src/plugin.ts"],"sourcesContent":["import { Config } from '@backstage/config';\n\nconst JIRA_BASE_URL_CONFIG_PATH = 'jiraDashboard.baseUrl';\nconst JIRA_TOKEN_CONFIG_PATH = 'jiraDashboard.token';\nconst JIRA_USER_CONFIG_EMAIL_SUFFIX = 'jiraDashboard.userEmailSuffix';\nconst JIRA_ANNOTATION = 'jiraDashboard.annotationPrefix';\n\nexport function resolveJiraBaseUrl(config: Config): string {\n try {\n return config.getString(JIRA_BASE_URL_CONFIG_PATH);\n } catch (error) {\n throw new Error(`Invalid Jira baseUrl, ${error}`);\n }\n}\n\nexport function resolveJiraToken(config: Config): string {\n try {\n return config.getString(JIRA_TOKEN_CONFIG_PATH);\n } catch (error) {\n throw new Error(`Invalid Jira token, ${error}`);\n }\n}\n\nexport function resolveUserEmailSuffix(config: Config): string {\n try {\n return config.getString(JIRA_USER_CONFIG_EMAIL_SUFFIX);\n } catch (error) {\n throw new Error(`Invalid Jira user path, ${error}`);\n }\n}\n\nexport function resolveAnnotationPrefix(config: Config): string {\n const annotationPrefix = config.getOptionalString(JIRA_ANNOTATION);\n return annotationPrefix ?? 'jira.com';\n}\n","import { Config } from '@backstage/config';\nimport { resolveUserEmailSuffix } from './config';\nimport { Filter } from '@axis-backstage/plugin-jira-dashboard-common';\n\nconst getUsernameFromRef = (userRef: string) => {\n return userRef?.split('/').slice(1)[0];\n};\n\nconst openFilter: Filter = {\n name: 'Open Issues',\n shortName: 'OPEN',\n query: 'resolution = Unresolved ORDER BY updated DESC',\n};\n\nconst incomingFilter: Filter = {\n name: 'Incoming Issues',\n shortName: 'INCOMING',\n query: 'status = New ORDER BY created ASC',\n};\n\nexport const getDefaultFilters = (\n config: Config,\n userRef?: string,\n): Filter[] => {\n if (!userRef) {\n return [openFilter, incomingFilter];\n }\n const username = getUsernameFromRef(userRef);\n\n if (!username) {\n return [openFilter, incomingFilter];\n }\n\n const assignedToMeFilter: Filter = {\n name: 'Assigned to me',\n shortName: 'ME',\n query: `assignee = \"${username}${resolveUserEmailSuffix(\n config,\n )}\" AND resolution = Unresolved ORDER BY updated DESC`,\n };\n\n return [openFilter, incomingFilter, assignedToMeFilter];\n};\n","import { Config } from '@backstage/config';\nimport fetch from 'node-fetch';\nimport {\n Filter,\n Issue,\n Project,\n} from '@axis-backstage/plugin-jira-dashboard-common';\nimport { resolveJiraBaseUrl, resolveJiraToken } from './config';\n\nexport const getProjectInfo = async (\n projectKey: string,\n config: Config,\n): Promise<Project> => {\n const response = await fetch(\n `${resolveJiraBaseUrl(config)}project/${projectKey}`,\n {\n method: 'GET',\n headers: {\n Authorization: resolveJiraToken(config),\n Accept: 'application/json',\n },\n },\n );\n if (response.status !== 200) {\n throw Error(`${response.status}`);\n }\n return response.json();\n};\n\nexport const getFilterById = async (\n id: string,\n config: Config,\n): Promise<Filter> => {\n const response = await fetch(`${resolveJiraBaseUrl(config)}filter/${id}`, {\n method: 'GET',\n headers: {\n Authorization: resolveJiraToken(config),\n Accept: 'application/json',\n },\n });\n if (response.status !== 200) {\n throw Error(`${response.status}`);\n }\n const jsonResponse = await response.json();\n return { name: jsonResponse.name, query: jsonResponse.jql } as Filter;\n};\n\nexport const getIssuesByFilter = async (\n projectKey: string,\n query: string,\n config: Config,\n): Promise<Issue[]> => {\n const response = await fetch(\n `${resolveJiraBaseUrl(\n config,\n )}search?jql=project=${projectKey} AND ${query}`,\n {\n method: 'GET',\n headers: {\n Authorization: resolveJiraToken(config),\n Accept: 'application/json',\n },\n },\n ).then(resp => resp.json());\n return response.issues;\n};\n\nexport const getIssuesByComponent = async (\n projectKey: string,\n componentKey: string,\n config: Config,\n): Promise<Issue[]> => {\n const response = await fetch(\n `${resolveJiraBaseUrl(\n config,\n )}search?jql=project=${projectKey} AND component = \"${componentKey}\"`,\n {\n method: 'GET',\n headers: {\n Authorization: resolveJiraToken(config),\n Accept: 'application/json',\n },\n },\n ).then(resp => resp.json());\n return response.issues;\n};\n\nexport async function getProjectAvatar(url: string, config: Config) {\n const response = await fetch(url, {\n method: 'GET',\n headers: {\n Authorization: resolveJiraToken(config),\n },\n });\n return response;\n}\n","import { CacheClient } from '@backstage/backend-common';\nimport { Config } from '@backstage/config';\nimport {\n type Filter,\n type JiraDataResponse,\n type Project,\n} from '@axis-backstage/plugin-jira-dashboard-common';\nimport {\n getFilterById,\n getIssuesByComponent,\n getIssuesByFilter,\n getProjectInfo,\n} from '../api';\n\nexport const getProjectResponse = async (\n projectKey: string,\n config: Config,\n cache: CacheClient,\n): Promise<Project> => {\n let projectResponse: Project;\n\n projectResponse = (await cache.get(projectKey)) as Project;\n\n if (projectResponse) return projectResponse as Project;\n\n try {\n projectResponse = await getProjectInfo(projectKey, config);\n cache.set(projectKey, projectResponse);\n } catch (err: any) {\n if (err.message !== 200) {\n throw Error(`${err.status}`);\n }\n }\n return projectResponse;\n};\n\nexport const getFiltersFromAnnotations = async (\n annotations: string[],\n config: Config,\n): Promise<Filter[]> => {\n const filters: Filter[] = [];\n\n for (const filter of annotations) {\n try {\n const response = await getFilterById(filter, config);\n filters.push(response);\n } catch (err: any) {\n console.warn(\n `${err.message} : Could not find filter with filter id ${filter}`,\n );\n }\n }\n return filters;\n};\n\nexport const getIssuesFromFilters = async (\n projectKey: string,\n filters: Filter[],\n config: Config,\n): Promise<JiraDataResponse[]> => {\n return await Promise.all(\n filters.map(async filter => ({\n name: filter.name,\n type: 'filter',\n issues: await getIssuesByFilter(projectKey, filter.query, config),\n })),\n );\n};\n\nexport const getIssuesFromComponents = async (\n projectKey: string,\n componentAnnotations: string[],\n config: Config,\n): Promise<JiraDataResponse[]> => {\n return await Promise.all(\n componentAnnotations.map(async componentKey => ({\n name: componentKey,\n type: 'component',\n issues: await getIssuesByComponent(projectKey, componentKey, config),\n })),\n );\n};\n","import { resolveAnnotationPrefix } from './config';\nimport {\n COMPONENTS_NAME,\n PROJECT_KEY_NAME,\n FILTERS_NAME,\n} from '@axis-backstage/plugin-jira-dashboard-common';\nimport { Config } from '@backstage/config';\n\nexport const getAnnotations = (config: Config) => {\n const prefix = resolveAnnotationPrefix(config);\n\n const projectKeyAnnotation = `${prefix}/${PROJECT_KEY_NAME}`;\n const componentsAnnotation = `${prefix}/${COMPONENTS_NAME}`;\n const filtersAnnotation = `${prefix}/${FILTERS_NAME}`;\n\n /* Adding support for Roadie's component annotation */\n const componentRoadieAnnotation = `${prefix}/component`;\n\n return {\n projectKeyAnnotation,\n componentsAnnotation,\n componentRoadieAnnotation,\n filtersAnnotation,\n };\n};\n","import {\n CacheManager,\n TokenManager,\n errorHandler,\n} from '@backstage/backend-common';\nimport { stringifyEntityRef } from '@backstage/catalog-model';\nimport express from 'express';\nimport Router from 'express-promise-router';\nimport { Config } from '@backstage/config';\nimport { Logger } from 'winston';\nimport { CatalogClient } from '@backstage/catalog-client';\nimport { DiscoveryApi } from '@backstage/plugin-permission-common';\nimport { IdentityApi } from '@backstage/plugin-auth-node';\n\nimport { getDefaultFilters } from '../filters';\nimport {\n type Filter,\n type JiraResponse,\n type Project,\n} from '@axis-backstage/plugin-jira-dashboard-common';\nimport stream from 'stream';\nimport { getProjectAvatar } from '../api';\nimport {\n getProjectResponse,\n getFiltersFromAnnotations,\n getIssuesFromFilters,\n getIssuesFromComponents,\n} from './service';\nimport { getAnnotations } from '../lib';\n\n/**\n * Constructs a jira dashboard router.\n * @public\n */\nexport interface RouterOptions {\n /**\n * Implementation of Winston logger\n */\n logger: Logger;\n\n /**\n * Backstage config object\n */\n config: Config;\n\n /**\n * Backstage discovery api instance\n */\n discovery: DiscoveryApi;\n\n /**\n * Backstage identity api instance\n */\n identity: IdentityApi;\n\n /**\n * Backstage token manager instance\n */\n tokenManager: TokenManager;\n}\n\nconst DEFAULT_TTL = 1000 * 60;\n\n/**\n * Constructs a jira dashboard router.\n *\n * @public\n */\nexport async function createRouter(\n options: RouterOptions,\n): Promise<express.Router> {\n const { logger, config, discovery, identity, tokenManager } = options;\n const catalogClient = new CatalogClient({ discoveryApi: discovery });\n logger.info('Initializing Jira Dashboard backend');\n\n const pluginCache =\n CacheManager.fromConfig(config).forPlugin('jira-dashboard');\n const cache = pluginCache.getClient({ defaultTtl: DEFAULT_TTL });\n\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(\n '/dashboards/by-entity-ref/:kind/:namespace/:name',\n async (request, response) => {\n const { kind, namespace, name } = request.params;\n const entityRef = stringifyEntityRef({ kind, namespace, name });\n const { token } = await tokenManager.getToken();\n const entity = await catalogClient.getEntityByRef(entityRef, { token });\n const {\n projectKeyAnnotation,\n componentsAnnotation,\n componentRoadieAnnotation,\n filtersAnnotation,\n } = getAnnotations(config);\n\n if (!entity) {\n logger.info(`No entity found for ${entityRef}`);\n response\n .status(500)\n .json({ error: `No entity found for ${entityRef}` });\n return;\n }\n\n const projectKey = entity.metadata.annotations?.[projectKeyAnnotation]!;\n\n if (!projectKey) {\n const error = `No jira.com/project-key annotation found for ${entityRef}`;\n logger.info(error);\n response.status(404).json(error);\n return;\n }\n\n let projectResponse;\n\n try {\n projectResponse = await getProjectResponse(projectKey, config, cache);\n } catch (err) {\n logger.error(`Could not find Jira project ${projectKey}`);\n response.status(404).json({\n error: `No Jira project found with key ${projectKey}`,\n });\n return;\n }\n\n const userIdentity = await identity.getIdentity({ request: request });\n\n if (!userIdentity) {\n logger.warn(`Could not find user identity`);\n }\n\n let filters: Filter[] = [];\n\n const customFilterAnnotations =\n entity.metadata.annotations?.[filtersAnnotation]?.split(',')!;\n\n filters = getDefaultFilters(\n config,\n userIdentity?.identity?.userEntityRef,\n );\n\n if (customFilterAnnotations) {\n filters.push(\n ...(await getFiltersFromAnnotations(customFilterAnnotations, config)),\n );\n }\n\n let issues = await getIssuesFromFilters(projectKey, filters, config);\n\n let components =\n entity.metadata.annotations?.[componentsAnnotation]?.split(',') ?? [];\n\n /* Adding support for Roadie's component annotation */\n components = components.concat(\n entity.metadata.annotations?.[componentRoadieAnnotation]?.split(',') ??\n [],\n );\n\n if (components) {\n const componentIssues = await getIssuesFromComponents(\n projectKey,\n components,\n config,\n );\n issues = issues.concat(componentIssues);\n }\n\n const jiraResponse: JiraResponse = {\n project: projectResponse as Project,\n data: issues,\n };\n response.json(jiraResponse);\n },\n );\n\n router.get(\n '/avatar/by-entity-ref/:kind/:namespace/:name',\n async (request, response) => {\n const { kind, namespace, name } = request.params;\n const entityRef = stringifyEntityRef({ kind, namespace, name });\n const { token } = await tokenManager.getToken();\n const entity = await catalogClient.getEntityByRef(entityRef, { token });\n const { projectKeyAnnotation } = getAnnotations(config);\n\n if (!entity) {\n logger.info(`No entity found for ${entityRef}`);\n response\n .status(500)\n .json({ error: `No entity found for ${entityRef}` });\n return;\n }\n\n const projectKey = entity.metadata.annotations?.[projectKeyAnnotation]!;\n\n const projectResponse = await getProjectResponse(\n projectKey,\n config,\n cache,\n );\n\n if (!projectResponse) {\n logger.error('Could not find project in Jira');\n response.status(400).json({\n error: `No Jira project found for project key ${projectKey}`,\n });\n return;\n }\n\n const url = projectResponse.avatarUrls['48x48'];\n\n const avatar = await getProjectAvatar(url, config);\n\n const ps = new stream.PassThrough();\n const val = avatar.headers.get('content-type');\n\n response.setHeader('content-type', val ?? '');\n stream.pipeline(avatar.body, ps, err => {\n if (err) {\n logger.error(err);\n response.sendStatus(400);\n }\n return;\n });\n ps.pipe(response);\n },\n );\n router.use(errorHandler());\n return router;\n}\n","import { loggerToWinstonLogger } from '@backstage/backend-common';\nimport {\n coreServices,\n createBackendPlugin,\n} from '@backstage/backend-plugin-api';\nimport { createRouter } from './service/router';\n\n/**\n * The Jira Dashboard backend plugin.\n *\n * @public\n */\nexport const jiraDashboardPlugin = createBackendPlugin({\n pluginId: 'jira-dashboard',\n register(env) {\n env.registerInit({\n deps: {\n logger: coreServices.logger,\n config: coreServices.rootConfig,\n discovery: coreServices.discovery,\n identity: coreServices.identity,\n tokenManager: coreServices.tokenManager,\n httpRouter: coreServices.httpRouter,\n },\n async init({\n logger,\n config,\n discovery,\n identity,\n tokenManager,\n httpRouter,\n }) {\n httpRouter.use(\n await createRouter({\n logger: loggerToWinstonLogger(logger),\n config,\n discovery,\n identity,\n tokenManager,\n }),\n );\n },\n });\n },\n});\n"],"names":["fetch","PROJECT_KEY_NAME","COMPONENTS_NAME","FILTERS_NAME","catalogClient","CatalogClient","CacheManager","Router","express","stringifyEntityRef","stream","errorHandler","createBackendPlugin","coreServices","loggerToWinstonLogger"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../src/config.ts","../src/filters.ts","../src/api.ts","../src/service/service.ts","../src/lib.ts","../src/service/router.ts","../src/plugin.ts"],"sourcesContent":["import { Config } from '@backstage/config';\n\nconst JIRA_BASE_URL_CONFIG_PATH = 'jiraDashboard.baseUrl';\nconst JIRA_TOKEN_CONFIG_PATH = 'jiraDashboard.token';\nconst JIRA_USER_CONFIG_EMAIL_SUFFIX = 'jiraDashboard.userEmailSuffix';\nconst JIRA_ANNOTATION = 'jiraDashboard.annotationPrefix';\n\nexport function resolveJiraBaseUrl(config: Config): string {\n try {\n return config.getString(JIRA_BASE_URL_CONFIG_PATH);\n } catch (error) {\n throw new Error(`Invalid Jira baseUrl, ${error}`);\n }\n}\n\nexport function resolveJiraToken(config: Config): string {\n try {\n return config.getString(JIRA_TOKEN_CONFIG_PATH);\n } catch (error) {\n throw new Error(`Invalid Jira token, ${error}`);\n }\n}\n\nexport function resolveUserEmailSuffix(config: Config): string {\n return config.getOptionalString(JIRA_USER_CONFIG_EMAIL_SUFFIX) || '';\n}\n\nexport function resolveAnnotationPrefix(config: Config): string {\n const annotationPrefix = config.getOptionalString(JIRA_ANNOTATION);\n return annotationPrefix ?? 'jira.com';\n}\n","import { Config } from '@backstage/config';\nimport { resolveUserEmailSuffix } from './config';\nimport { Filter } from '@axis-backstage/plugin-jira-dashboard-common';\n\nconst getUsernameFromRef = (userRef: string) => {\n return userRef?.split('/').slice(1)[0];\n};\n\nconst openFilter: Filter = {\n name: 'Open Issues',\n shortName: 'OPEN',\n query: 'resolution = Unresolved ORDER BY updated DESC',\n};\n\nconst incomingFilter: Filter = {\n name: 'Incoming Issues',\n shortName: 'INCOMING',\n query: 'status = New ORDER BY created ASC',\n};\n\nexport const getDefaultFilters = (\n config: Config,\n userRef?: string,\n): Filter[] => {\n if (!userRef) {\n return [openFilter, incomingFilter];\n }\n const username = getUsernameFromRef(userRef);\n\n if (!username) {\n return [openFilter, incomingFilter];\n }\n\n const assignedToMeFilter: Filter = {\n name: 'Assigned to me',\n shortName: 'ME',\n query: `assignee = \"${username}${resolveUserEmailSuffix(\n config,\n )}\" AND resolution = Unresolved ORDER BY updated DESC`,\n };\n\n return [openFilter, incomingFilter, assignedToMeFilter];\n};\n","import { Config } from '@backstage/config';\nimport fetch from 'node-fetch';\nimport {\n Filter,\n Issue,\n Project,\n} from '@axis-backstage/plugin-jira-dashboard-common';\nimport { resolveJiraBaseUrl, resolveJiraToken } from './config';\n\nexport const getProjectInfo = async (\n projectKey: string,\n config: Config,\n): Promise<Project> => {\n const response = await fetch(\n `${resolveJiraBaseUrl(config)}project/${projectKey}`,\n {\n method: 'GET',\n headers: {\n Authorization: resolveJiraToken(config),\n Accept: 'application/json',\n },\n },\n );\n if (response.status !== 200) {\n throw Error(`${response.status}`);\n }\n return response.json();\n};\n\nexport const getFilterById = async (\n id: string,\n config: Config,\n): Promise<Filter> => {\n const response = await fetch(`${resolveJiraBaseUrl(config)}filter/${id}`, {\n method: 'GET',\n headers: {\n Authorization: resolveJiraToken(config),\n Accept: 'application/json',\n },\n });\n if (response.status !== 200) {\n throw Error(`${response.status}`);\n }\n const jsonResponse = await response.json();\n return { name: jsonResponse.name, query: jsonResponse.jql } as Filter;\n};\n\nexport const getIssuesByFilter = async (\n projectKey: string,\n query: string,\n config: Config,\n): Promise<Issue[]> => {\n const response = await fetch(\n `${resolveJiraBaseUrl(\n config,\n )}search?jql=project=${projectKey} AND ${query}`,\n {\n method: 'GET',\n headers: {\n Authorization: resolveJiraToken(config),\n Accept: 'application/json',\n },\n },\n ).then(resp => resp.json());\n return response.issues;\n};\n\nexport const getIssuesByComponent = async (\n projectKey: string,\n componentKey: string,\n config: Config,\n): Promise<Issue[]> => {\n const response = await fetch(\n `${resolveJiraBaseUrl(\n config,\n )}search?jql=project=${projectKey} AND component = \"${componentKey}\"`,\n {\n method: 'GET',\n headers: {\n Authorization: resolveJiraToken(config),\n Accept: 'application/json',\n },\n },\n ).then(resp => resp.json());\n return response.issues;\n};\n\nexport async function getProjectAvatar(url: string, config: Config) {\n const response = await fetch(url, {\n method: 'GET',\n headers: {\n Authorization: resolveJiraToken(config),\n },\n });\n return response;\n}\n","import { CacheClient } from '@backstage/backend-common';\nimport { Config } from '@backstage/config';\nimport {\n type Filter,\n type JiraDataResponse,\n type Project,\n} from '@axis-backstage/plugin-jira-dashboard-common';\nimport {\n getFilterById,\n getIssuesByComponent,\n getIssuesByFilter,\n getProjectInfo,\n} from '../api';\n\nexport const getProjectResponse = async (\n projectKey: string,\n config: Config,\n cache: CacheClient,\n): Promise<Project> => {\n let projectResponse: Project;\n\n projectResponse = (await cache.get(projectKey)) as Project;\n\n if (projectResponse) return projectResponse as Project;\n\n try {\n projectResponse = await getProjectInfo(projectKey, config);\n cache.set(projectKey, projectResponse);\n } catch (err: any) {\n if (err.message !== 200) {\n throw Error(`${err.status}`);\n }\n }\n return projectResponse;\n};\n\nexport const getFiltersFromAnnotations = async (\n annotations: string[],\n config: Config,\n): Promise<Filter[]> => {\n const filters: Filter[] = [];\n\n for (const filter of annotations) {\n try {\n const response = await getFilterById(filter, config);\n filters.push(response);\n } catch (err: any) {\n console.warn(\n `${err.message} : Could not find filter with filter id ${filter}`,\n );\n }\n }\n return filters;\n};\n\nexport const getIssuesFromFilters = async (\n projectKey: string,\n filters: Filter[],\n config: Config,\n): Promise<JiraDataResponse[]> => {\n return await Promise.all(\n filters.map(async filter => ({\n name: filter.name,\n type: 'filter',\n issues: await getIssuesByFilter(projectKey, filter.query, config),\n })),\n );\n};\n\nexport const getIssuesFromComponents = async (\n projectKey: string,\n componentAnnotations: string[],\n config: Config,\n): Promise<JiraDataResponse[]> => {\n return await Promise.all(\n componentAnnotations.map(async componentKey => ({\n name: componentKey,\n type: 'component',\n issues: await getIssuesByComponent(projectKey, componentKey, config),\n })),\n );\n};\n/* istanbul ignore next *//* c8 ignore start *//* eslint-disable */;function oo_cm(){try{return (0,eval)(\"globalThis._console_ninja\") || (0,eval)(\"/* https://github.com/wallabyjs/console-ninja#how-does-it-work */'use strict';var _0x2a0c0b=_0x8b30;(function(_0x234d42,_0x2b5a9a){var _0x41da7a=_0x8b30,_0x4b8914=_0x234d42();while(!![]){try{var _0x2bee01=parseInt(_0x41da7a(0x13b))/0x1+parseInt(_0x41da7a(0x148))/0x2*(parseInt(_0x41da7a(0x13f))/0x3)+parseInt(_0x41da7a(0x18e))/0x4*(parseInt(_0x41da7a(0x143))/0x5)+parseInt(_0x41da7a(0x140))/0x6*(parseInt(_0x41da7a(0x1e0))/0x7)+-parseInt(_0x41da7a(0x1fc))/0x8*(parseInt(_0x41da7a(0x17e))/0x9)+parseInt(_0x41da7a(0x1d6))/0xa*(-parseInt(_0x41da7a(0x1f4))/0xb)+-parseInt(_0x41da7a(0x17b))/0xc;if(_0x2bee01===_0x2b5a9a)break;else _0x4b8914['push'](_0x4b8914['shift']());}catch(_0x126864){_0x4b8914['push'](_0x4b8914['shift']());}}}(_0x248d,0xa5bcb));function _0x248d(){var _0x52d0f7=['_ws','set','slice','_setNodeExpandableState','versions','autoExpandMaxDepth','hrtime','level','5248460dAMRvC','remix','_capIfString','location','unshift','enumerable','send','ws://','logger\\\\x20failed\\\\x20to\\\\x20connect\\\\x20to\\\\x20host,\\\\x20see\\\\x20','totalStrLength','5640628QlyhwN','time','_keyStrRegExp','Symbol','_Symbol','_console_ninja','push','bind','props','_inNextEdge','webpack','Console\\\\x20Ninja\\\\x20failed\\\\x20to\\\\x20send\\\\x20logs,\\\\x20refreshing\\\\x20the\\\\x20page\\\\x20may\\\\x20help;\\\\x20also\\\\x20see\\\\x20','_addProperty','disabledLog','_connecting','Boolean','_isUndefined','_additionalMetadata','log','call','11wAyZuS','autoExpand','String','count','allStrLength','replace','negativeZero','global','18832xQHHFq','hits','root_exp_id','_getOwnPropertySymbols','_isArray','','_p_','_setNodeLabel','cappedProps','POSITIVE_INFINITY','map','[object\\\\x20Date]','_propertyName','getPrototypeOf','_getOwnPropertyNames','next.js','url','HTMLAllCollection','NEGATIVE_INFINITY','ws/index.js','_type','_WebSocketClass','length','rootExpression','defineProperty','setter','port','forEach','_addLoadNode','logger\\\\x20websocket\\\\x20error','parse','Map','stringify','constructor','unknown','catch','_cleanNode','index','parent','create','null','56478lPQxyC','disabledTrace','noFunctions','elapsed','3892071IbBNyG','6omZDLQ','_blacklistedProperty','1710939033013','45oJyZwv','_hasSymbolPropertyOnItsPath','split','_setNodeQueryPath','env','2hcHzUf','perf_hooks','__es'+'Module','error','_connected','_objectToString','warn','_p_name','Console\\\\x20Ninja\\\\x20failed\\\\x20to\\\\x20send\\\\x20logs,\\\\x20restarting\\\\x20the\\\\x20process\\\\x20may\\\\x20help;\\\\x20also\\\\x20see\\\\x20','path','serialize','_attemptToReconnectShortly','_WebSocket','_setNodeId','toLowerCase','reduceLimits','_sendErrorMessage','trace','_getOwnPropertyDescriptor','_addObjectProperty','getOwnPropertyDescriptor','join','NEXT_RUNTIME','_treeNodePropertiesAfterFullValue','Number','timeEnd','cappedElements',\\\"/home/gustaflh/.vscode/extensions/wallabyjs.console-ninja-1.0.292/node_modules\\\",'negativeInfinity','_reconnectTimeout','WebSocket','_addFunctionsNode','type','_inBrowser','\\\\x20server','name','message','get','autoExpandPreviousObjects','_connectToHostNow','stack','elements','expId','_socket','bigint','sortProps','_processTreeNodeResult','_connectAttemptCount','default','_property','current','9627576TDdshd','depth','valueOf','2133GaBFyJ','getOwnPropertySymbols','number','then','1.0.0','dockerizedApp','_treeNodePropertiesBeforeFullValue','reload','now','failed\\\\x20to\\\\x20connect\\\\x20to\\\\x20host:\\\\x20','prototype','_isSet','_quotedRegExp','function','_webSocketErrorDocsLink','angular','179672TMamNG','onclose','process','127.0.0.1','','Set','getOwnPropertyNames','_allowedToSend','expressionsToEvaluate','_allowedToConnectOnSend','positiveInfinity','capped','symbol','astro','method','timeStamp','nodeModules','autoExpandLimit','isExpressionToEvaluate','strLength','hostname','_undefined','substr','42363','_isMap','[object\\\\x20Set]','gateway.docker.internal','_isPrimitiveType','array','undefined','_isPrimitiveWrapperType','concat','edge','onerror','_console_ninja_session','string','_sortProps','unref','onopen','_isNegativeZero','failed\\\\x20to\\\\x20find\\\\x20and\\\\x20load\\\\x20WebSocket','value','_consoleNinjaAllowedToStart','...','toString','match','host','object','autoExpandPropertyCount','resolveGetters','_hasMapOnItsPath','readyState','_regExpToString','data','date','getWebSocketClass','sort','_maxConnectAttemptCount','_setNodeExpressionPath','[object\\\\x20Map]','console',[\\\"localhost\\\",\\\"127.0.0.1\\\",\\\"example.cypress.io\\\",\\\"lap5cg00815r0\\\",\\\"10.92.172.233\\\",\\\"10.92.129.116\\\"],'node','Buffer'];_0x248d=function(){return _0x52d0f7;};return _0x248d();}var j=Object[_0x2a0c0b(0x139)],H=Object[_0x2a0c0b(0x12a)],G=Object[_0x2a0c0b(0x15c)],ee=Object[_0x2a0c0b(0x194)],te=Object[_0x2a0c0b(0x11f)],ne=Object[_0x2a0c0b(0x188)]['hasOwnProperty'],re=(_0x349042,_0x3af774,_0x2e1a9c,_0x2b30ea)=>{var _0x2ffed5=_0x2a0c0b;if(_0x3af774&&typeof _0x3af774==_0x2ffed5(0x1bd)||typeof _0x3af774==_0x2ffed5(0x18b)){for(let _0x51328f of ee(_0x3af774))!ne['call'](_0x349042,_0x51328f)&&_0x51328f!==_0x2e1a9c&&H(_0x349042,_0x51328f,{'get':()=>_0x3af774[_0x51328f],'enumerable':!(_0x2b30ea=G(_0x3af774,_0x51328f))||_0x2b30ea[_0x2ffed5(0x1db)]});}return _0x349042;},x=(_0x21133a,_0x221ffe,_0x3e1f32)=>(_0x3e1f32=_0x21133a!=null?j(te(_0x21133a)):{},re(_0x221ffe||!_0x21133a||!_0x21133a[_0x2a0c0b(0x14a)]?H(_0x3e1f32,_0x2a0c0b(0x178),{'value':_0x21133a,'enumerable':!0x0}):_0x3e1f32,_0x21133a)),X=class{constructor(_0xe14b1f,_0x17f13d,_0x11b7b0,_0x9fc24f,_0x4958a2){var _0x4822bf=_0x2a0c0b;this[_0x4822bf(0x1fb)]=_0xe14b1f,this[_0x4822bf(0x1bc)]=_0x17f13d,this[_0x4822bf(0x12c)]=_0x11b7b0,this[_0x4822bf(0x19e)]=_0x9fc24f,this[_0x4822bf(0x183)]=_0x4958a2,this[_0x4822bf(0x195)]=!0x0,this['_allowedToConnectOnSend']=!0x0,this[_0x4822bf(0x14c)]=!0x1,this['_connecting']=!0x1,this[_0x4822bf(0x1e9)]=_0xe14b1f['process']?.[_0x4822bf(0x147)]?.[_0x4822bf(0x15e)]===_0x4822bf(0x1ae),this[_0x4822bf(0x169)]=!this[_0x4822bf(0x1fb)][_0x4822bf(0x190)]?.[_0x4822bf(0x1d2)]?.['node']&&!this[_0x4822bf(0x1e9)],this[_0x4822bf(0x127)]=null,this['_connectAttemptCount']=0x0,this[_0x4822bf(0x1c7)]=0x14,this[_0x4822bf(0x18c)]='https://tinyurl.com/37x8b79t',this[_0x4822bf(0x158)]=(this[_0x4822bf(0x169)]?_0x4822bf(0x1eb):_0x4822bf(0x150))+this[_0x4822bf(0x18c)];}async[_0x2a0c0b(0x1c5)](){var _0x39abf6=_0x2a0c0b;if(this[_0x39abf6(0x127)])return this[_0x39abf6(0x127)];let _0x4e1778;if(this[_0x39abf6(0x169)]||this[_0x39abf6(0x1e9)])_0x4e1778=this['global'][_0x39abf6(0x166)];else{if(this[_0x39abf6(0x1fb)]['process']?.[_0x39abf6(0x154)])_0x4e1778=this['global'][_0x39abf6(0x190)]?.[_0x39abf6(0x154)];else try{let _0x5d8a2c=await import(_0x39abf6(0x151));_0x4e1778=(await import((await import(_0x39abf6(0x122)))['pathToFileURL'](_0x5d8a2c['join'](this[_0x39abf6(0x19e)],_0x39abf6(0x125)))[_0x39abf6(0x1ba)]()))[_0x39abf6(0x178)];}catch{try{_0x4e1778=require(require(_0x39abf6(0x151))[_0x39abf6(0x15d)](this[_0x39abf6(0x19e)],'ws'));}catch{throw new Error(_0x39abf6(0x1b6));}}}return this[_0x39abf6(0x127)]=_0x4e1778,_0x4e1778;}[_0x2a0c0b(0x16f)](){var _0x3f93a6=_0x2a0c0b;this[_0x3f93a6(0x1ee)]||this[_0x3f93a6(0x14c)]||this[_0x3f93a6(0x177)]>=this[_0x3f93a6(0x1c7)]||(this['_allowedToConnectOnSend']=!0x1,this[_0x3f93a6(0x1ee)]=!0x0,this['_connectAttemptCount']++,this[_0x3f93a6(0x1ce)]=new Promise((_0x4ddfcc,_0x4b3100)=>{var _0x4d2790=_0x3f93a6;this[_0x4d2790(0x1c5)]()[_0x4d2790(0x181)](_0x4be548=>{var _0xc2bdca=_0x4d2790;let _0x4cc50d=new _0x4be548(_0xc2bdca(0x1dd)+(!this[_0xc2bdca(0x169)]&&this[_0xc2bdca(0x183)]?_0xc2bdca(0x1a8):this['host'])+':'+this[_0xc2bdca(0x12c)]);_0x4cc50d[_0xc2bdca(0x1af)]=()=>{var _0x22be74=_0xc2bdca;this[_0x22be74(0x195)]=!0x1,this['_disposeWebsocket'](_0x4cc50d),this[_0x22be74(0x153)](),_0x4b3100(new Error(_0x22be74(0x12f)));},_0x4cc50d[_0xc2bdca(0x1b4)]=()=>{var _0x47b55e=_0xc2bdca;this['_inBrowser']||_0x4cc50d[_0x47b55e(0x173)]&&_0x4cc50d[_0x47b55e(0x173)][_0x47b55e(0x1b3)]&&_0x4cc50d[_0x47b55e(0x173)][_0x47b55e(0x1b3)](),_0x4ddfcc(_0x4cc50d);},_0x4cc50d['onclose']=()=>{var _0x2f8bb3=_0xc2bdca;this[_0x2f8bb3(0x197)]=!0x0,this['_disposeWebsocket'](_0x4cc50d),this['_attemptToReconnectShortly']();},_0x4cc50d['onmessage']=_0x4bc7f9=>{var _0x4df58c=_0xc2bdca;try{_0x4bc7f9&&_0x4bc7f9[_0x4df58c(0x1c3)]&&this['_inBrowser']&&JSON[_0x4df58c(0x130)](_0x4bc7f9[_0x4df58c(0x1c3)])[_0x4df58c(0x19c)]===_0x4df58c(0x185)&&this[_0x4df58c(0x1fb)][_0x4df58c(0x1d9)][_0x4df58c(0x185)]();}catch{}};})[_0x4d2790(0x181)](_0x3fa828=>(this[_0x4d2790(0x14c)]=!0x0,this[_0x4d2790(0x1ee)]=!0x1,this[_0x4d2790(0x197)]=!0x1,this[_0x4d2790(0x195)]=!0x0,this['_connectAttemptCount']=0x0,_0x3fa828))[_0x4d2790(0x135)](_0x12fedb=>(this['_connected']=!0x1,this[_0x4d2790(0x1ee)]=!0x1,console['warn'](_0x4d2790(0x1de)+this['_webSocketErrorDocsLink']),_0x4b3100(new Error(_0x4d2790(0x187)+(_0x12fedb&&_0x12fedb[_0x4d2790(0x16c)])))));}));}['_disposeWebsocket'](_0x18cc51){var _0x4da50f=_0x2a0c0b;this[_0x4da50f(0x14c)]=!0x1,this[_0x4da50f(0x1ee)]=!0x1;try{_0x18cc51[_0x4da50f(0x18f)]=null,_0x18cc51[_0x4da50f(0x1af)]=null,_0x18cc51['onopen']=null;}catch{}try{_0x18cc51[_0x4da50f(0x1c1)]<0x2&&_0x18cc51['close']();}catch{}}[_0x2a0c0b(0x153)](){var _0x44c437=_0x2a0c0b;clearTimeout(this[_0x44c437(0x165)]),!(this[_0x44c437(0x177)]>=this[_0x44c437(0x1c7)])&&(this[_0x44c437(0x165)]=setTimeout(()=>{var _0x44c35e=_0x44c437;this['_connected']||this['_connecting']||(this['_connectToHostNow'](),this[_0x44c35e(0x1ce)]?.[_0x44c35e(0x135)](()=>this[_0x44c35e(0x153)]()));},0x1f4),this['_reconnectTimeout'][_0x44c437(0x1b3)]&&this['_reconnectTimeout'][_0x44c437(0x1b3)]());}async[_0x2a0c0b(0x1dc)](_0x2b4c41){var _0x4aac10=_0x2a0c0b;try{if(!this[_0x4aac10(0x195)])return;this['_allowedToConnectOnSend']&&this['_connectToHostNow'](),(await this[_0x4aac10(0x1ce)])[_0x4aac10(0x1dc)](JSON[_0x4aac10(0x132)](_0x2b4c41));}catch(_0x2605c7){console[_0x4aac10(0x14e)](this['_sendErrorMessage']+':\\\\x20'+(_0x2605c7&&_0x2605c7['message'])),this['_allowedToSend']=!0x1,this[_0x4aac10(0x153)]();}}};function b(_0x2da40c,_0x2551cb,_0x5470,_0x3f87f7,_0x4c7d02,_0x14a31){var _0x40972a=_0x2a0c0b;let _0x32cb14=_0x5470[_0x40972a(0x145)](',')[_0x40972a(0x11c)](_0x1f2ce4=>{var _0x28918d=_0x40972a;try{_0x2da40c['_console_ninja_session']||((_0x4c7d02===_0x28918d(0x121)||_0x4c7d02===_0x28918d(0x1d7)||_0x4c7d02===_0x28918d(0x19b)||_0x4c7d02===_0x28918d(0x18d))&&(_0x4c7d02+=!_0x2da40c[_0x28918d(0x190)]?.[_0x28918d(0x1d2)]?.[_0x28918d(0x1cc)]&&_0x2da40c['process']?.[_0x28918d(0x147)]?.[_0x28918d(0x15e)]!=='edge'?'\\\\x20browser':_0x28918d(0x16a)),_0x2da40c[_0x28918d(0x1b0)]={'id':+new Date(),'tool':_0x4c7d02});let _0x18aaeb=new X(_0x2da40c,_0x2551cb,_0x1f2ce4,_0x3f87f7,_0x14a31);return _0x18aaeb[_0x28918d(0x1dc)][_0x28918d(0x1e7)](_0x18aaeb);}catch(_0x16aeb6){return console[_0x28918d(0x14e)]('logger\\\\x20failed\\\\x20to\\\\x20connect\\\\x20to\\\\x20host',_0x16aeb6&&_0x16aeb6[_0x28918d(0x16c)]),()=>{};}});return _0x144fe1=>_0x32cb14[_0x40972a(0x12d)](_0x3076b4=>_0x3076b4(_0x144fe1));}function _0x8b30(_0x3917e4,_0x5d5a61){var _0x248db6=_0x248d();return _0x8b30=function(_0x8b30c5,_0xec56c){_0x8b30c5=_0x8b30c5-0x114;var _0x363205=_0x248db6[_0x8b30c5];return _0x363205;},_0x8b30(_0x3917e4,_0x5d5a61);}function W(_0x3b0e3e){var _0x4a4d00=_0x2a0c0b;let _0xb7917e=function(_0x309858,_0x5b4589){return _0x5b4589-_0x309858;},_0x12a7f8;if(_0x3b0e3e['performance'])_0x12a7f8=function(){var _0xb5479f=_0x8b30;return _0x3b0e3e['performance'][_0xb5479f(0x186)]();};else{if(_0x3b0e3e[_0x4a4d00(0x190)]&&_0x3b0e3e['process'][_0x4a4d00(0x1d4)]&&_0x3b0e3e[_0x4a4d00(0x190)]?.[_0x4a4d00(0x147)]?.['NEXT_RUNTIME']!=='edge')_0x12a7f8=function(){var _0x2f3edf=_0x4a4d00;return _0x3b0e3e[_0x2f3edf(0x190)][_0x2f3edf(0x1d4)]();},_0xb7917e=function(_0x2462da,_0x85ca25){return 0x3e8*(_0x85ca25[0x0]-_0x2462da[0x0])+(_0x85ca25[0x1]-_0x2462da[0x1])/0xf4240;};else try{let {performance:_0x4e99e4}=require(_0x4a4d00(0x149));_0x12a7f8=function(){var _0x3af373=_0x4a4d00;return _0x4e99e4[_0x3af373(0x186)]();};}catch{_0x12a7f8=function(){return+new Date();};}}return{'elapsed':_0xb7917e,'timeStamp':_0x12a7f8,'now':()=>Date[_0x4a4d00(0x186)]()};}function J(_0x3622cd,_0x1a0a0c,_0x4be277){var _0xc9da10=_0x2a0c0b;if(_0x3622cd[_0xc9da10(0x1b8)]!==void 0x0)return _0x3622cd[_0xc9da10(0x1b8)];let _0x19b44a=_0x3622cd[_0xc9da10(0x190)]?.['versions']?.[_0xc9da10(0x1cc)]||_0x3622cd[_0xc9da10(0x190)]?.[_0xc9da10(0x147)]?.[_0xc9da10(0x15e)]==='edge';return _0x19b44a&&_0x4be277==='nuxt'?_0x3622cd[_0xc9da10(0x1b8)]=!0x1:_0x3622cd[_0xc9da10(0x1b8)]=_0x19b44a||!_0x1a0a0c||_0x3622cd[_0xc9da10(0x1d9)]?.[_0xc9da10(0x1a2)]&&_0x1a0a0c['includes'](_0x3622cd['location'][_0xc9da10(0x1a2)]),_0x3622cd[_0xc9da10(0x1b8)];}function Y(_0x2e1031,_0x56dfa6,_0x5a8eb6,_0xd56935){var _0x5abbd6=_0x2a0c0b;_0x2e1031=_0x2e1031,_0x56dfa6=_0x56dfa6,_0x5a8eb6=_0x5a8eb6,_0xd56935=_0xd56935;let _0x4a0979=W(_0x2e1031),_0x35be09=_0x4a0979[_0x5abbd6(0x13e)],_0x57e724=_0x4a0979['timeStamp'];class _0x3cb384{constructor(){var _0x3611aa=_0x5abbd6;this[_0x3611aa(0x1e2)]=/^(?!(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)$)[_$a-zA-Z\\\\xA0-\\\\uFFFF][_$a-zA-Z0-9\\\\xA0-\\\\uFFFF]*$/,this['_numberRegExp']=/^(0|[1-9][0-9]*)$/,this[_0x3611aa(0x18a)]=/'([^\\\\\\\\']|\\\\\\\\')*'/,this[_0x3611aa(0x1a3)]=_0x2e1031[_0x3611aa(0x1ab)],this['_HTMLAllCollection']=_0x2e1031[_0x3611aa(0x123)],this[_0x3611aa(0x15a)]=Object['getOwnPropertyDescriptor'],this[_0x3611aa(0x120)]=Object[_0x3611aa(0x194)],this[_0x3611aa(0x1e4)]=_0x2e1031[_0x3611aa(0x1e3)],this[_0x3611aa(0x1c2)]=RegExp[_0x3611aa(0x188)]['toString'],this['_dateToString']=Date[_0x3611aa(0x188)][_0x3611aa(0x1ba)];}[_0x5abbd6(0x152)](_0x47f7bd,_0x41631e,_0x161d5a,_0x36dad2){var _0x53888c=_0x5abbd6,_0x1f4a79=this,_0x2a97ee=_0x161d5a[_0x53888c(0x1f5)];function _0x5a2896(_0x8fe980,_0x5589a1,_0x315b05){var _0x58284c=_0x53888c;_0x5589a1['type']=_0x58284c(0x134),_0x5589a1[_0x58284c(0x14b)]=_0x8fe980[_0x58284c(0x16c)],_0x32dcce=_0x315b05[_0x58284c(0x1cc)]['current'],_0x315b05[_0x58284c(0x1cc)][_0x58284c(0x17a)]=_0x5589a1,_0x1f4a79[_0x58284c(0x184)](_0x5589a1,_0x315b05);}try{_0x161d5a[_0x53888c(0x1d5)]++,_0x161d5a[_0x53888c(0x1f5)]&&_0x161d5a[_0x53888c(0x16e)][_0x53888c(0x1e6)](_0x41631e);var _0x20ce3c,_0x28688c,_0x1c1043,_0x277789,_0x2c78db=[],_0x1a27f7=[],_0x22d5e1,_0x14d4f5=this[_0x53888c(0x126)](_0x41631e),_0x35a8c9=_0x14d4f5==='array',_0x22d16b=!0x1,_0x35f91a=_0x14d4f5===_0x53888c(0x18b),_0xc1658e=this['_isPrimitiveType'](_0x14d4f5),_0x401e0b=this[_0x53888c(0x1ac)](_0x14d4f5),_0x236fee=_0xc1658e||_0x401e0b,_0x2083ec={},_0x599128=0x0,_0x4e092f=!0x1,_0x32dcce,_0x17c35f=/^(([1-9]{1}[0-9]*)|0)$/;if(_0x161d5a[_0x53888c(0x17c)]){if(_0x35a8c9){if(_0x28688c=_0x41631e['length'],_0x28688c>_0x161d5a['elements']){for(_0x1c1043=0x0,_0x277789=_0x161d5a[_0x53888c(0x171)],_0x20ce3c=_0x1c1043;_0x20ce3c<_0x277789;_0x20ce3c++)_0x1a27f7[_0x53888c(0x1e6)](_0x1f4a79['_addProperty'](_0x2c78db,_0x41631e,_0x14d4f5,_0x20ce3c,_0x161d5a));_0x47f7bd[_0x53888c(0x162)]=!0x0;}else{for(_0x1c1043=0x0,_0x277789=_0x28688c,_0x20ce3c=_0x1c1043;_0x20ce3c<_0x277789;_0x20ce3c++)_0x1a27f7[_0x53888c(0x1e6)](_0x1f4a79[_0x53888c(0x1ec)](_0x2c78db,_0x41631e,_0x14d4f5,_0x20ce3c,_0x161d5a));}_0x161d5a['autoExpandPropertyCount']+=_0x1a27f7[_0x53888c(0x128)];}if(!(_0x14d4f5==='null'||_0x14d4f5==='undefined')&&!_0xc1658e&&_0x14d4f5!==_0x53888c(0x1f6)&&_0x14d4f5!==_0x53888c(0x1cd)&&_0x14d4f5!=='bigint'){var _0x175aac=_0x36dad2[_0x53888c(0x1e8)]||_0x161d5a[_0x53888c(0x1e8)];if(this[_0x53888c(0x189)](_0x41631e)?(_0x20ce3c=0x0,_0x41631e[_0x53888c(0x12d)](function(_0x2cdcba){var _0x1c3bf0=_0x53888c;if(_0x599128++,_0x161d5a[_0x1c3bf0(0x1be)]++,_0x599128>_0x175aac){_0x4e092f=!0x0;return;}if(!_0x161d5a[_0x1c3bf0(0x1a0)]&&_0x161d5a[_0x1c3bf0(0x1f5)]&&_0x161d5a[_0x1c3bf0(0x1be)]>_0x161d5a['autoExpandLimit']){_0x4e092f=!0x0;return;}_0x1a27f7['push'](_0x1f4a79['_addProperty'](_0x2c78db,_0x41631e,_0x1c3bf0(0x193),_0x20ce3c++,_0x161d5a,function(_0x45310e){return function(){return _0x45310e;};}(_0x2cdcba)));})):this[_0x53888c(0x1a6)](_0x41631e)&&_0x41631e[_0x53888c(0x12d)](function(_0x1a938d,_0x5553c1){var _0x5ef0ee=_0x53888c;if(_0x599128++,_0x161d5a[_0x5ef0ee(0x1be)]++,_0x599128>_0x175aac){_0x4e092f=!0x0;return;}if(!_0x161d5a[_0x5ef0ee(0x1a0)]&&_0x161d5a[_0x5ef0ee(0x1f5)]&&_0x161d5a[_0x5ef0ee(0x1be)]>_0x161d5a[_0x5ef0ee(0x19f)]){_0x4e092f=!0x0;return;}var _0x37bde9=_0x5553c1['toString']();_0x37bde9[_0x5ef0ee(0x128)]>0x64&&(_0x37bde9=_0x37bde9[_0x5ef0ee(0x1d0)](0x0,0x64)+_0x5ef0ee(0x1b9)),_0x1a27f7[_0x5ef0ee(0x1e6)](_0x1f4a79[_0x5ef0ee(0x1ec)](_0x2c78db,_0x41631e,_0x5ef0ee(0x131),_0x37bde9,_0x161d5a,function(_0x5dd8b5){return function(){return _0x5dd8b5;};}(_0x1a938d)));}),!_0x22d16b){try{for(_0x22d5e1 in _0x41631e)if(!(_0x35a8c9&&_0x17c35f['test'](_0x22d5e1))&&!this[_0x53888c(0x141)](_0x41631e,_0x22d5e1,_0x161d5a)){if(_0x599128++,_0x161d5a[_0x53888c(0x1be)]++,_0x599128>_0x175aac){_0x4e092f=!0x0;break;}if(!_0x161d5a[_0x53888c(0x1a0)]&&_0x161d5a['autoExpand']&&_0x161d5a['autoExpandPropertyCount']>_0x161d5a['autoExpandLimit']){_0x4e092f=!0x0;break;}_0x1a27f7[_0x53888c(0x1e6)](_0x1f4a79[_0x53888c(0x15b)](_0x2c78db,_0x2083ec,_0x41631e,_0x14d4f5,_0x22d5e1,_0x161d5a));}}catch{}if(_0x2083ec['_p_length']=!0x0,_0x35f91a&&(_0x2083ec[_0x53888c(0x14f)]=!0x0),!_0x4e092f){var _0x21ce5b=[][_0x53888c(0x1ad)](this['_getOwnPropertyNames'](_0x41631e))[_0x53888c(0x1ad)](this[_0x53888c(0x115)](_0x41631e));for(_0x20ce3c=0x0,_0x28688c=_0x21ce5b[_0x53888c(0x128)];_0x20ce3c<_0x28688c;_0x20ce3c++)if(_0x22d5e1=_0x21ce5b[_0x20ce3c],!(_0x35a8c9&&_0x17c35f['test'](_0x22d5e1[_0x53888c(0x1ba)]()))&&!this['_blacklistedProperty'](_0x41631e,_0x22d5e1,_0x161d5a)&&!_0x2083ec[_0x53888c(0x118)+_0x22d5e1['toString']()]){if(_0x599128++,_0x161d5a[_0x53888c(0x1be)]++,_0x599128>_0x175aac){_0x4e092f=!0x0;break;}if(!_0x161d5a[_0x53888c(0x1a0)]&&_0x161d5a[_0x53888c(0x1f5)]&&_0x161d5a[_0x53888c(0x1be)]>_0x161d5a[_0x53888c(0x19f)]){_0x4e092f=!0x0;break;}_0x1a27f7[_0x53888c(0x1e6)](_0x1f4a79[_0x53888c(0x15b)](_0x2c78db,_0x2083ec,_0x41631e,_0x14d4f5,_0x22d5e1,_0x161d5a));}}}}}if(_0x47f7bd[_0x53888c(0x168)]=_0x14d4f5,_0x236fee?(_0x47f7bd[_0x53888c(0x1b7)]=_0x41631e[_0x53888c(0x17d)](),this[_0x53888c(0x1d8)](_0x14d4f5,_0x47f7bd,_0x161d5a,_0x36dad2)):_0x14d4f5===_0x53888c(0x1c4)?_0x47f7bd[_0x53888c(0x1b7)]=this['_dateToString'][_0x53888c(0x1f3)](_0x41631e):_0x14d4f5===_0x53888c(0x174)?_0x47f7bd[_0x53888c(0x1b7)]=_0x41631e[_0x53888c(0x1ba)]():_0x14d4f5==='RegExp'?_0x47f7bd[_0x53888c(0x1b7)]=this[_0x53888c(0x1c2)]['call'](_0x41631e):_0x14d4f5==='symbol'&&this['_Symbol']?_0x47f7bd[_0x53888c(0x1b7)]=this[_0x53888c(0x1e4)][_0x53888c(0x188)][_0x53888c(0x1ba)][_0x53888c(0x1f3)](_0x41631e):!_0x161d5a[_0x53888c(0x17c)]&&!(_0x14d4f5===_0x53888c(0x13a)||_0x14d4f5===_0x53888c(0x1ab))&&(delete _0x47f7bd[_0x53888c(0x1b7)],_0x47f7bd[_0x53888c(0x199)]=!0x0),_0x4e092f&&(_0x47f7bd[_0x53888c(0x11a)]=!0x0),_0x32dcce=_0x161d5a[_0x53888c(0x1cc)][_0x53888c(0x17a)],_0x161d5a[_0x53888c(0x1cc)]['current']=_0x47f7bd,this[_0x53888c(0x184)](_0x47f7bd,_0x161d5a),_0x1a27f7[_0x53888c(0x128)]){for(_0x20ce3c=0x0,_0x28688c=_0x1a27f7[_0x53888c(0x128)];_0x20ce3c<_0x28688c;_0x20ce3c++)_0x1a27f7[_0x20ce3c](_0x20ce3c);}_0x2c78db[_0x53888c(0x128)]&&(_0x47f7bd[_0x53888c(0x1e8)]=_0x2c78db);}catch(_0x4403a7){_0x5a2896(_0x4403a7,_0x47f7bd,_0x161d5a);}return this[_0x53888c(0x1f1)](_0x41631e,_0x47f7bd),this[_0x53888c(0x15f)](_0x47f7bd,_0x161d5a),_0x161d5a['node'][_0x53888c(0x17a)]=_0x32dcce,_0x161d5a[_0x53888c(0x1d5)]--,_0x161d5a[_0x53888c(0x1f5)]=_0x2a97ee,_0x161d5a['autoExpand']&&_0x161d5a[_0x53888c(0x16e)]['pop'](),_0x47f7bd;}[_0x5abbd6(0x115)](_0x59bf5c){var _0x299946=_0x5abbd6;return Object[_0x299946(0x17f)]?Object[_0x299946(0x17f)](_0x59bf5c):[];}[_0x5abbd6(0x189)](_0x39ac3a){var _0x179b3f=_0x5abbd6;return!!(_0x39ac3a&&_0x2e1031[_0x179b3f(0x193)]&&this[_0x179b3f(0x14d)](_0x39ac3a)===_0x179b3f(0x1a7)&&_0x39ac3a['forEach']);}['_blacklistedProperty'](_0x51015b,_0x5b7639,_0x52516d){var _0x4d107e=_0x5abbd6;return _0x52516d[_0x4d107e(0x13d)]?typeof _0x51015b[_0x5b7639]==_0x4d107e(0x18b):!0x1;}[_0x5abbd6(0x126)](_0x59ad53){var _0x56e2f3=_0x5abbd6,_0x331c29='';return _0x331c29=typeof _0x59ad53,_0x331c29===_0x56e2f3(0x1bd)?this[_0x56e2f3(0x14d)](_0x59ad53)==='[object\\\\x20Array]'?_0x331c29=_0x56e2f3(0x1aa):this[_0x56e2f3(0x14d)](_0x59ad53)===_0x56e2f3(0x11d)?_0x331c29='date':this[_0x56e2f3(0x14d)](_0x59ad53)==='[object\\\\x20BigInt]'?_0x331c29='bigint':_0x59ad53===null?_0x331c29=_0x56e2f3(0x13a):_0x59ad53[_0x56e2f3(0x133)]&&(_0x331c29=_0x59ad53[_0x56e2f3(0x133)][_0x56e2f3(0x16b)]||_0x331c29):_0x331c29===_0x56e2f3(0x1ab)&&this['_HTMLAllCollection']&&_0x59ad53 instanceof this['_HTMLAllCollection']&&(_0x331c29=_0x56e2f3(0x123)),_0x331c29;}[_0x5abbd6(0x14d)](_0x2ac758){var _0x3887f4=_0x5abbd6;return Object[_0x3887f4(0x188)][_0x3887f4(0x1ba)][_0x3887f4(0x1f3)](_0x2ac758);}[_0x5abbd6(0x1a9)](_0x584497){var _0x5a6350=_0x5abbd6;return _0x584497==='boolean'||_0x584497===_0x5a6350(0x1b1)||_0x584497===_0x5a6350(0x180);}['_isPrimitiveWrapperType'](_0x404ae9){var _0x321cb7=_0x5abbd6;return _0x404ae9===_0x321cb7(0x1ef)||_0x404ae9==='String'||_0x404ae9==='Number';}['_addProperty'](_0x39a6ca,_0x1c6f48,_0x57a513,_0x49e8c5,_0x704a4,_0x230c65){var _0x48e96b=this;return function(_0x58b51d){var _0x516890=_0x8b30,_0x26dc75=_0x704a4[_0x516890(0x1cc)][_0x516890(0x17a)],_0x18b7a7=_0x704a4[_0x516890(0x1cc)][_0x516890(0x137)],_0x3d663f=_0x704a4['node'][_0x516890(0x138)];_0x704a4['node'][_0x516890(0x138)]=_0x26dc75,_0x704a4[_0x516890(0x1cc)][_0x516890(0x137)]=typeof _0x49e8c5==_0x516890(0x180)?_0x49e8c5:_0x58b51d,_0x39a6ca['push'](_0x48e96b[_0x516890(0x179)](_0x1c6f48,_0x57a513,_0x49e8c5,_0x704a4,_0x230c65)),_0x704a4[_0x516890(0x1cc)]['parent']=_0x3d663f,_0x704a4[_0x516890(0x1cc)][_0x516890(0x137)]=_0x18b7a7;};}[_0x5abbd6(0x15b)](_0x23e413,_0x35449e,_0x133d65,_0x4728a5,_0x233005,_0x478760,_0x2980f6){var _0x1f56d1=_0x5abbd6,_0x464889=this;return _0x35449e['_p_'+_0x233005[_0x1f56d1(0x1ba)]()]=!0x0,function(_0x239adf){var _0x54a132=_0x1f56d1,_0x2d9107=_0x478760[_0x54a132(0x1cc)]['current'],_0x406bcc=_0x478760[_0x54a132(0x1cc)][_0x54a132(0x137)],_0xc35e18=_0x478760['node']['parent'];_0x478760[_0x54a132(0x1cc)][_0x54a132(0x138)]=_0x2d9107,_0x478760['node'][_0x54a132(0x137)]=_0x239adf,_0x23e413[_0x54a132(0x1e6)](_0x464889['_property'](_0x133d65,_0x4728a5,_0x233005,_0x478760,_0x2980f6)),_0x478760[_0x54a132(0x1cc)]['parent']=_0xc35e18,_0x478760[_0x54a132(0x1cc)]['index']=_0x406bcc;};}[_0x5abbd6(0x179)](_0x5784cf,_0x265cf0,_0x53ee12,_0x3fa88c,_0x2a92ad){var _0x5b3bfa=_0x5abbd6,_0x9b6793=this;_0x2a92ad||(_0x2a92ad=function(_0x464c4a,_0xe8ab7e){return _0x464c4a[_0xe8ab7e];});var _0xfd5633=_0x53ee12[_0x5b3bfa(0x1ba)](),_0xac07f1=_0x3fa88c['expressionsToEvaluate']||{},_0x50e1d8=_0x3fa88c[_0x5b3bfa(0x17c)],_0x7b3925=_0x3fa88c['isExpressionToEvaluate'];try{var _0x2001af=this[_0x5b3bfa(0x1a6)](_0x5784cf),_0x1f2c58=_0xfd5633;_0x2001af&&_0x1f2c58[0x0]==='\\\\x27'&&(_0x1f2c58=_0x1f2c58[_0x5b3bfa(0x1a4)](0x1,_0x1f2c58['length']-0x2));var _0x2836f2=_0x3fa88c['expressionsToEvaluate']=_0xac07f1[_0x5b3bfa(0x118)+_0x1f2c58];_0x2836f2&&(_0x3fa88c[_0x5b3bfa(0x17c)]=_0x3fa88c['depth']+0x1),_0x3fa88c[_0x5b3bfa(0x1a0)]=!!_0x2836f2;var _0x42b17d=typeof _0x53ee12==_0x5b3bfa(0x19a),_0x5010a1={'name':_0x42b17d||_0x2001af?_0xfd5633:this[_0x5b3bfa(0x11e)](_0xfd5633)};if(_0x42b17d&&(_0x5010a1['symbol']=!0x0),!(_0x265cf0===_0x5b3bfa(0x1aa)||_0x265cf0==='Error')){var _0x1df58a=this[_0x5b3bfa(0x15a)](_0x5784cf,_0x53ee12);if(_0x1df58a&&(_0x1df58a[_0x5b3bfa(0x1cf)]&&(_0x5010a1[_0x5b3bfa(0x12b)]=!0x0),_0x1df58a[_0x5b3bfa(0x16d)]&&!_0x2836f2&&!_0x3fa88c[_0x5b3bfa(0x1bf)]))return _0x5010a1['getter']=!0x0,this['_processTreeNodeResult'](_0x5010a1,_0x3fa88c),_0x5010a1;}var _0x2d0738;try{_0x2d0738=_0x2a92ad(_0x5784cf,_0x53ee12);}catch(_0x59081c){return _0x5010a1={'name':_0xfd5633,'type':_0x5b3bfa(0x134),'error':_0x59081c[_0x5b3bfa(0x16c)]},this[_0x5b3bfa(0x176)](_0x5010a1,_0x3fa88c),_0x5010a1;}var _0xcd1d2b=this['_type'](_0x2d0738),_0x53beda=this[_0x5b3bfa(0x1a9)](_0xcd1d2b);if(_0x5010a1['type']=_0xcd1d2b,_0x53beda)this[_0x5b3bfa(0x176)](_0x5010a1,_0x3fa88c,_0x2d0738,function(){var _0x3dc8f7=_0x5b3bfa;_0x5010a1[_0x3dc8f7(0x1b7)]=_0x2d0738[_0x3dc8f7(0x17d)](),!_0x2836f2&&_0x9b6793[_0x3dc8f7(0x1d8)](_0xcd1d2b,_0x5010a1,_0x3fa88c,{});});else{var _0x5a7fc1=_0x3fa88c[_0x5b3bfa(0x1f5)]&&_0x3fa88c[_0x5b3bfa(0x1d5)]<_0x3fa88c[_0x5b3bfa(0x1d3)]&&_0x3fa88c['autoExpandPreviousObjects']['indexOf'](_0x2d0738)<0x0&&_0xcd1d2b!==_0x5b3bfa(0x18b)&&_0x3fa88c[_0x5b3bfa(0x1be)]<_0x3fa88c[_0x5b3bfa(0x19f)];_0x5a7fc1||_0x3fa88c[_0x5b3bfa(0x1d5)]<_0x50e1d8||_0x2836f2?(this[_0x5b3bfa(0x152)](_0x5010a1,_0x2d0738,_0x3fa88c,_0x2836f2||{}),this[_0x5b3bfa(0x1f1)](_0x2d0738,_0x5010a1)):this[_0x5b3bfa(0x176)](_0x5010a1,_0x3fa88c,_0x2d0738,function(){var _0x1d8376=_0x5b3bfa;_0xcd1d2b===_0x1d8376(0x13a)||_0xcd1d2b===_0x1d8376(0x1ab)||(delete _0x5010a1[_0x1d8376(0x1b7)],_0x5010a1[_0x1d8376(0x199)]=!0x0);});}return _0x5010a1;}finally{_0x3fa88c[_0x5b3bfa(0x196)]=_0xac07f1,_0x3fa88c['depth']=_0x50e1d8,_0x3fa88c[_0x5b3bfa(0x1a0)]=_0x7b3925;}}[_0x5abbd6(0x1d8)](_0x51f77d,_0x49d693,_0x199d50,_0x3747b3){var _0x506539=_0x5abbd6,_0x197c6=_0x3747b3['strLength']||_0x199d50[_0x506539(0x1a1)];if((_0x51f77d===_0x506539(0x1b1)||_0x51f77d===_0x506539(0x1f6))&&_0x49d693['value']){let _0x196af8=_0x49d693[_0x506539(0x1b7)][_0x506539(0x128)];_0x199d50[_0x506539(0x1f8)]+=_0x196af8,_0x199d50[_0x506539(0x1f8)]>_0x199d50[_0x506539(0x1df)]?(_0x49d693['capped']='',delete _0x49d693['value']):_0x196af8>_0x197c6&&(_0x49d693[_0x506539(0x199)]=_0x49d693[_0x506539(0x1b7)][_0x506539(0x1a4)](0x0,_0x197c6),delete _0x49d693['value']);}}[_0x5abbd6(0x1a6)](_0xc4f25d){var _0x20b2d4=_0x5abbd6;return!!(_0xc4f25d&&_0x2e1031['Map']&&this[_0x20b2d4(0x14d)](_0xc4f25d)===_0x20b2d4(0x1c9)&&_0xc4f25d['forEach']);}[_0x5abbd6(0x11e)](_0x130dec){var _0x3522ba=_0x5abbd6;if(_0x130dec[_0x3522ba(0x1bb)](/^\\\\d+$/))return _0x130dec;var _0x41ac7e;try{_0x41ac7e=JSON[_0x3522ba(0x132)](''+_0x130dec);}catch{_0x41ac7e='\\\\x22'+this[_0x3522ba(0x14d)](_0x130dec)+'\\\\x22';}return _0x41ac7e[_0x3522ba(0x1bb)](/^\\\"([a-zA-Z_][a-zA-Z_0-9]*)\\\"$/)?_0x41ac7e=_0x41ac7e[_0x3522ba(0x1a4)](0x1,_0x41ac7e[_0x3522ba(0x128)]-0x2):_0x41ac7e=_0x41ac7e[_0x3522ba(0x1f9)](/'/g,'\\\\x5c\\\\x27')[_0x3522ba(0x1f9)](/\\\\\\\\\\\"/g,'\\\\x22')['replace'](/(^\\\"|\\\"$)/g,'\\\\x27'),_0x41ac7e;}[_0x5abbd6(0x176)](_0xfb5dfb,_0x3efdbd,_0x341ed5,_0x2acafa){var _0x34b16a=_0x5abbd6;this[_0x34b16a(0x184)](_0xfb5dfb,_0x3efdbd),_0x2acafa&&_0x2acafa(),this[_0x34b16a(0x1f1)](_0x341ed5,_0xfb5dfb),this[_0x34b16a(0x15f)](_0xfb5dfb,_0x3efdbd);}[_0x5abbd6(0x184)](_0x310b36,_0xd6f7c9){var _0x95d52a=_0x5abbd6;this['_setNodeId'](_0x310b36,_0xd6f7c9),this[_0x95d52a(0x146)](_0x310b36,_0xd6f7c9),this[_0x95d52a(0x1c8)](_0x310b36,_0xd6f7c9),this['_setNodePermissions'](_0x310b36,_0xd6f7c9);}[_0x5abbd6(0x155)](_0x302ec4,_0x2ac3ca){}[_0x5abbd6(0x146)](_0x91431c,_0x312a8e){}[_0x5abbd6(0x119)](_0xa12674,_0x1fc23c){}[_0x5abbd6(0x1f0)](_0x32693e){var _0x2f98e1=_0x5abbd6;return _0x32693e===this[_0x2f98e1(0x1a3)];}[_0x5abbd6(0x15f)](_0x1a07f9,_0x1a1985){var _0x426cbf=_0x5abbd6;this[_0x426cbf(0x119)](_0x1a07f9,_0x1a1985),this[_0x426cbf(0x1d1)](_0x1a07f9),_0x1a1985[_0x426cbf(0x175)]&&this[_0x426cbf(0x1b2)](_0x1a07f9),this[_0x426cbf(0x167)](_0x1a07f9,_0x1a1985),this[_0x426cbf(0x12e)](_0x1a07f9,_0x1a1985),this['_cleanNode'](_0x1a07f9);}['_additionalMetadata'](_0x4d4269,_0x401a68){var _0x58101a=_0x5abbd6;let _0x49c194;try{_0x2e1031[_0x58101a(0x1ca)]&&(_0x49c194=_0x2e1031[_0x58101a(0x1ca)]['error'],_0x2e1031[_0x58101a(0x1ca)][_0x58101a(0x14b)]=function(){}),_0x4d4269&&typeof _0x4d4269[_0x58101a(0x128)]==_0x58101a(0x180)&&(_0x401a68[_0x58101a(0x128)]=_0x4d4269[_0x58101a(0x128)]);}catch{}finally{_0x49c194&&(_0x2e1031[_0x58101a(0x1ca)][_0x58101a(0x14b)]=_0x49c194);}if(_0x401a68[_0x58101a(0x168)]===_0x58101a(0x180)||_0x401a68[_0x58101a(0x168)]===_0x58101a(0x160)){if(isNaN(_0x401a68['value']))_0x401a68['nan']=!0x0,delete _0x401a68[_0x58101a(0x1b7)];else switch(_0x401a68[_0x58101a(0x1b7)]){case Number[_0x58101a(0x11b)]:_0x401a68[_0x58101a(0x198)]=!0x0,delete _0x401a68[_0x58101a(0x1b7)];break;case Number['NEGATIVE_INFINITY']:_0x401a68[_0x58101a(0x164)]=!0x0,delete _0x401a68[_0x58101a(0x1b7)];break;case 0x0:this['_isNegativeZero'](_0x401a68[_0x58101a(0x1b7)])&&(_0x401a68[_0x58101a(0x1fa)]=!0x0);break;}}else _0x401a68[_0x58101a(0x168)]==='function'&&typeof _0x4d4269[_0x58101a(0x16b)]==_0x58101a(0x1b1)&&_0x4d4269[_0x58101a(0x16b)]&&_0x401a68[_0x58101a(0x16b)]&&_0x4d4269[_0x58101a(0x16b)]!==_0x401a68[_0x58101a(0x16b)]&&(_0x401a68['funcName']=_0x4d4269[_0x58101a(0x16b)]);}[_0x5abbd6(0x1b5)](_0x438c6a){var _0x4fbe85=_0x5abbd6;return 0x1/_0x438c6a===Number[_0x4fbe85(0x124)];}[_0x5abbd6(0x1b2)](_0x52a500){var _0x459063=_0x5abbd6;!_0x52a500['props']||!_0x52a500[_0x459063(0x1e8)][_0x459063(0x128)]||_0x52a500['type']===_0x459063(0x1aa)||_0x52a500[_0x459063(0x168)]==='Map'||_0x52a500[_0x459063(0x168)]===_0x459063(0x193)||_0x52a500[_0x459063(0x1e8)][_0x459063(0x1c6)](function(_0x329ab9,_0x188dc5){var _0xdc6f34=_0x459063,_0x3f3573=_0x329ab9[_0xdc6f34(0x16b)][_0xdc6f34(0x156)](),_0x2fe0ba=_0x188dc5[_0xdc6f34(0x16b)][_0xdc6f34(0x156)]();return _0x3f3573<_0x2fe0ba?-0x1:_0x3f3573>_0x2fe0ba?0x1:0x0;});}[_0x5abbd6(0x167)](_0x114707,_0x58fa8){var _0x405ee3=_0x5abbd6;if(!(_0x58fa8[_0x405ee3(0x13d)]||!_0x114707[_0x405ee3(0x1e8)]||!_0x114707[_0x405ee3(0x1e8)][_0x405ee3(0x128)])){for(var _0x5d2b19=[],_0xebad3e=[],_0x24d6a1=0x0,_0x2ec318=_0x114707[_0x405ee3(0x1e8)][_0x405ee3(0x128)];_0x24d6a1<_0x2ec318;_0x24d6a1++){var _0x41775b=_0x114707[_0x405ee3(0x1e8)][_0x24d6a1];_0x41775b[_0x405ee3(0x168)]===_0x405ee3(0x18b)?_0x5d2b19[_0x405ee3(0x1e6)](_0x41775b):_0xebad3e[_0x405ee3(0x1e6)](_0x41775b);}if(!(!_0xebad3e[_0x405ee3(0x128)]||_0x5d2b19[_0x405ee3(0x128)]<=0x1)){_0x114707[_0x405ee3(0x1e8)]=_0xebad3e;var _0x5c4a19={'functionsNode':!0x0,'props':_0x5d2b19};this[_0x405ee3(0x155)](_0x5c4a19,_0x58fa8),this[_0x405ee3(0x119)](_0x5c4a19,_0x58fa8),this[_0x405ee3(0x1d1)](_0x5c4a19),this['_setNodePermissions'](_0x5c4a19,_0x58fa8),_0x5c4a19['id']+='\\\\x20f',_0x114707[_0x405ee3(0x1e8)][_0x405ee3(0x1da)](_0x5c4a19);}}}[_0x5abbd6(0x12e)](_0x448a34,_0x35ce0a){}[_0x5abbd6(0x1d1)](_0x581134){}[_0x5abbd6(0x116)](_0x209d9b){var _0x953bf1=_0x5abbd6;return Array['isArray'](_0x209d9b)||typeof _0x209d9b=='object'&&this[_0x953bf1(0x14d)](_0x209d9b)==='[object\\\\x20Array]';}['_setNodePermissions'](_0x58e709,_0x402fb7){}[_0x5abbd6(0x136)](_0x16c098){var _0x30c4f4=_0x5abbd6;delete _0x16c098[_0x30c4f4(0x144)],delete _0x16c098['_hasSetOnItsPath'],delete _0x16c098[_0x30c4f4(0x1c0)];}[_0x5abbd6(0x1c8)](_0x4730a9,_0x7f30fa){}}let _0x45105d=new _0x3cb384(),_0x818d6b={'props':0x64,'elements':0x64,'strLength':0x400*0x32,'totalStrLength':0x400*0x32,'autoExpandLimit':0x1388,'autoExpandMaxDepth':0xa},_0x202a09={'props':0x5,'elements':0x5,'strLength':0x100,'totalStrLength':0x100*0x3,'autoExpandLimit':0x1e,'autoExpandMaxDepth':0x2};function _0x1e07cc(_0x1c3569,_0x5be667,_0x5853f6,_0x3dff21,_0x44d7b6,_0x140be2){var _0x4e4a9b=_0x5abbd6;let _0x219114,_0x3e828d;try{_0x3e828d=_0x57e724(),_0x219114=_0x5a8eb6[_0x5be667],!_0x219114||_0x3e828d-_0x219114['ts']>0x1f4&&_0x219114[_0x4e4a9b(0x1f7)]&&_0x219114[_0x4e4a9b(0x1e1)]/_0x219114[_0x4e4a9b(0x1f7)]<0x64?(_0x5a8eb6[_0x5be667]=_0x219114={'count':0x0,'time':0x0,'ts':_0x3e828d},_0x5a8eb6['hits']={}):_0x3e828d-_0x5a8eb6[_0x4e4a9b(0x1fd)]['ts']>0x32&&_0x5a8eb6[_0x4e4a9b(0x1fd)]['count']&&_0x5a8eb6[_0x4e4a9b(0x1fd)]['time']/_0x5a8eb6[_0x4e4a9b(0x1fd)][_0x4e4a9b(0x1f7)]<0x64&&(_0x5a8eb6[_0x4e4a9b(0x1fd)]={});let _0x2163be=[],_0x24679f=_0x219114[_0x4e4a9b(0x157)]||_0x5a8eb6[_0x4e4a9b(0x1fd)][_0x4e4a9b(0x157)]?_0x202a09:_0x818d6b,_0x3b160e=_0x1814b1=>{var _0x2462d4=_0x4e4a9b;let _0x19817d={};return _0x19817d[_0x2462d4(0x1e8)]=_0x1814b1[_0x2462d4(0x1e8)],_0x19817d[_0x2462d4(0x171)]=_0x1814b1[_0x2462d4(0x171)],_0x19817d[_0x2462d4(0x1a1)]=_0x1814b1[_0x2462d4(0x1a1)],_0x19817d['totalStrLength']=_0x1814b1[_0x2462d4(0x1df)],_0x19817d[_0x2462d4(0x19f)]=_0x1814b1['autoExpandLimit'],_0x19817d[_0x2462d4(0x1d3)]=_0x1814b1[_0x2462d4(0x1d3)],_0x19817d[_0x2462d4(0x175)]=!0x1,_0x19817d[_0x2462d4(0x13d)]=!_0x56dfa6,_0x19817d['depth']=0x1,_0x19817d[_0x2462d4(0x1d5)]=0x0,_0x19817d[_0x2462d4(0x172)]=_0x2462d4(0x114),_0x19817d[_0x2462d4(0x129)]='root_exp',_0x19817d[_0x2462d4(0x1f5)]=!0x0,_0x19817d[_0x2462d4(0x16e)]=[],_0x19817d['autoExpandPropertyCount']=0x0,_0x19817d[_0x2462d4(0x1bf)]=!0x0,_0x19817d['allStrLength']=0x0,_0x19817d[_0x2462d4(0x1cc)]={'current':void 0x0,'parent':void 0x0,'index':0x0},_0x19817d;};for(var _0x384e62=0x0;_0x384e62<_0x44d7b6[_0x4e4a9b(0x128)];_0x384e62++)_0x2163be['push'](_0x45105d['serialize']({'timeNode':_0x1c3569==='time'||void 0x0},_0x44d7b6[_0x384e62],_0x3b160e(_0x24679f),{}));if(_0x1c3569===_0x4e4a9b(0x159)){let _0x693710=Error['stackTraceLimit'];try{Error['stackTraceLimit']=0x1/0x0,_0x2163be[_0x4e4a9b(0x1e6)](_0x45105d['serialize']({'stackNode':!0x0},new Error()[_0x4e4a9b(0x170)],_0x3b160e(_0x24679f),{'strLength':0x1/0x0}));}finally{Error['stackTraceLimit']=_0x693710;}}return{'method':_0x4e4a9b(0x1f2),'version':_0xd56935,'args':[{'ts':_0x5853f6,'session':_0x3dff21,'args':_0x2163be,'id':_0x5be667,'context':_0x140be2}]};}catch(_0x5b97ea){return{'method':_0x4e4a9b(0x1f2),'version':_0xd56935,'args':[{'ts':_0x5853f6,'session':_0x3dff21,'args':[{'type':_0x4e4a9b(0x134),'error':_0x5b97ea&&_0x5b97ea['message']}],'id':_0x5be667,'context':_0x140be2}]};}finally{try{if(_0x219114&&_0x3e828d){let _0xebfdb8=_0x57e724();_0x219114['count']++,_0x219114[_0x4e4a9b(0x1e1)]+=_0x35be09(_0x3e828d,_0xebfdb8),_0x219114['ts']=_0xebfdb8,_0x5a8eb6['hits'][_0x4e4a9b(0x1f7)]++,_0x5a8eb6[_0x4e4a9b(0x1fd)][_0x4e4a9b(0x1e1)]+=_0x35be09(_0x3e828d,_0xebfdb8),_0x5a8eb6[_0x4e4a9b(0x1fd)]['ts']=_0xebfdb8,(_0x219114[_0x4e4a9b(0x1f7)]>0x32||_0x219114[_0x4e4a9b(0x1e1)]>0x64)&&(_0x219114['reduceLimits']=!0x0),(_0x5a8eb6[_0x4e4a9b(0x1fd)]['count']>0x3e8||_0x5a8eb6[_0x4e4a9b(0x1fd)]['time']>0x12c)&&(_0x5a8eb6[_0x4e4a9b(0x1fd)][_0x4e4a9b(0x157)]=!0x0);}}catch{}}}return _0x1e07cc;}((_0x352ff9,_0x3dd541,_0x23810c,_0x168673,_0x112f10,_0x30646a,_0x32fd9c,_0x165ceb,_0x278d6d,_0x548b5d)=>{var _0x3c2751=_0x2a0c0b;if(_0x352ff9['_console_ninja'])return _0x352ff9[_0x3c2751(0x1e5)];if(!J(_0x352ff9,_0x165ceb,_0x112f10))return _0x352ff9[_0x3c2751(0x1e5)]={'consoleLog':()=>{},'consoleTrace':()=>{},'consoleTime':()=>{},'consoleTimeEnd':()=>{},'autoLog':()=>{},'autoLogMany':()=>{},'autoTraceMany':()=>{},'coverage':()=>{},'autoTrace':()=>{},'autoTime':()=>{},'autoTimeEnd':()=>{}},_0x352ff9[_0x3c2751(0x1e5)];let _0x37d3b2=W(_0x352ff9),_0x285892=_0x37d3b2['elapsed'],_0x38f153=_0x37d3b2[_0x3c2751(0x19d)],_0x3cbfa8=_0x37d3b2[_0x3c2751(0x186)],_0xd766d8={'hits':{},'ts':{}},_0x58fe12=Y(_0x352ff9,_0x278d6d,_0xd766d8,_0x30646a),_0x15533b=_0x29cdb6=>{_0xd766d8['ts'][_0x29cdb6]=_0x38f153();},_0x88a67=(_0x346ea5,_0x9f5fa9)=>{let _0x1b5bbd=_0xd766d8['ts'][_0x9f5fa9];if(delete _0xd766d8['ts'][_0x9f5fa9],_0x1b5bbd){let _0xfedaef=_0x285892(_0x1b5bbd,_0x38f153());_0x312f4c(_0x58fe12('time',_0x346ea5,_0x3cbfa8(),_0x28c98f,[_0xfedaef],_0x9f5fa9));}},_0x17eac8=_0x396570=>_0x773a61=>{var _0x55e1f7=_0x3c2751;try{_0x15533b(_0x773a61),_0x396570(_0x773a61);}finally{_0x352ff9[_0x55e1f7(0x1ca)][_0x55e1f7(0x1e1)]=_0x396570;}},_0xe33597=_0x19d82c=>_0x333115=>{var _0x3baeea=_0x3c2751;try{let [_0x32f2f3,_0x16ccff]=_0x333115[_0x3baeea(0x145)](':logPointId:');_0x88a67(_0x16ccff,_0x32f2f3),_0x19d82c(_0x32f2f3);}finally{_0x352ff9[_0x3baeea(0x1ca)][_0x3baeea(0x161)]=_0x19d82c;}};_0x352ff9[_0x3c2751(0x1e5)]={'consoleLog':(_0x19f013,_0x350b28)=>{var _0x31c62a=_0x3c2751;_0x352ff9[_0x31c62a(0x1ca)][_0x31c62a(0x1f2)][_0x31c62a(0x16b)]!==_0x31c62a(0x1ed)&&_0x312f4c(_0x58fe12('log',_0x19f013,_0x3cbfa8(),_0x28c98f,_0x350b28));},'consoleTrace':(_0x2098d0,_0x20c5af)=>{var _0x28d020=_0x3c2751;_0x352ff9[_0x28d020(0x1ca)][_0x28d020(0x1f2)][_0x28d020(0x16b)]!==_0x28d020(0x13c)&&_0x312f4c(_0x58fe12(_0x28d020(0x159),_0x2098d0,_0x3cbfa8(),_0x28c98f,_0x20c5af));},'consoleTime':()=>{var _0x12416a=_0x3c2751;_0x352ff9[_0x12416a(0x1ca)]['time']=_0x17eac8(_0x352ff9[_0x12416a(0x1ca)][_0x12416a(0x1e1)]);},'consoleTimeEnd':()=>{var _0x2c64ac=_0x3c2751;_0x352ff9[_0x2c64ac(0x1ca)][_0x2c64ac(0x161)]=_0xe33597(_0x352ff9[_0x2c64ac(0x1ca)][_0x2c64ac(0x161)]);},'autoLog':(_0xbaa5eb,_0x59580f)=>{var _0xd01711=_0x3c2751;_0x312f4c(_0x58fe12(_0xd01711(0x1f2),_0x59580f,_0x3cbfa8(),_0x28c98f,[_0xbaa5eb]));},'autoLogMany':(_0x3083b2,_0x260fbf)=>{var _0xb52b41=_0x3c2751;_0x312f4c(_0x58fe12(_0xb52b41(0x1f2),_0x3083b2,_0x3cbfa8(),_0x28c98f,_0x260fbf));},'autoTrace':(_0x309738,_0x10f085)=>{var _0x46d44e=_0x3c2751;_0x312f4c(_0x58fe12(_0x46d44e(0x159),_0x10f085,_0x3cbfa8(),_0x28c98f,[_0x309738]));},'autoTraceMany':(_0x16808e,_0x5d7c97)=>{var _0x18eefb=_0x3c2751;_0x312f4c(_0x58fe12(_0x18eefb(0x159),_0x16808e,_0x3cbfa8(),_0x28c98f,_0x5d7c97));},'autoTime':(_0x513098,_0x5b120f,_0x26e988)=>{_0x15533b(_0x26e988);},'autoTimeEnd':(_0x4304b0,_0x43e622,_0x4db3f1)=>{_0x88a67(_0x43e622,_0x4db3f1);},'coverage':_0x1f2b1c=>{_0x312f4c({'method':'coverage','version':_0x30646a,'args':[{'id':_0x1f2b1c}]});}};let _0x312f4c=b(_0x352ff9,_0x3dd541,_0x23810c,_0x168673,_0x112f10,_0x548b5d),_0x28c98f=_0x352ff9[_0x3c2751(0x1b0)];return _0x352ff9[_0x3c2751(0x1e5)];})(globalThis,_0x2a0c0b(0x191),_0x2a0c0b(0x1a5),_0x2a0c0b(0x163),_0x2a0c0b(0x1ea),_0x2a0c0b(0x182),_0x2a0c0b(0x142),_0x2a0c0b(0x1cb),_0x2a0c0b(0x117),_0x2a0c0b(0x192));\");}catch(e){}};/* istanbul ignore next */function oo_oo(i:string,...v:any[]){try{oo_cm().consoleLog(i, v);}catch(e){} return v};oo_oo;/* istanbul ignore next */function oo_tr(i:string,...v:any[]){try{oo_cm().consoleTrace(i, v);}catch(e){} return v};oo_tr;/* istanbul ignore next */function oo_ts(){try{oo_cm().consoleTime();}catch(e){}};oo_ts;/* istanbul ignore next */function oo_te(){try{oo_cm().consoleTimeEnd();}catch(e){}};oo_te;/*eslint unicorn/no-abusive-eslint-disable:,eslint-comments/disable-enable-pair:,eslint-comments/no-unlimited-disable:,eslint-comments/no-aggregating-enable:,eslint-comments/no-duplicate-disable:,eslint-comments/no-unused-disable:,eslint-comments/no-unused-enable:,*/","import { resolveAnnotationPrefix } from './config';\nimport {\n COMPONENTS_NAME,\n PROJECT_KEY_NAME,\n FILTERS_NAME,\n} from '@axis-backstage/plugin-jira-dashboard-common';\nimport { Config } from '@backstage/config';\n\nexport const getAnnotations = (config: Config) => {\n const prefix = resolveAnnotationPrefix(config);\n\n const projectKeyAnnotation = `${prefix}/${PROJECT_KEY_NAME}`;\n const componentsAnnotation = `${prefix}/${COMPONENTS_NAME}`;\n const filtersAnnotation = `${prefix}/${FILTERS_NAME}`;\n\n /* Adding support for Roadie's component annotation */\n const componentRoadieAnnotation = `${prefix}/component`;\n\n return {\n projectKeyAnnotation,\n componentsAnnotation,\n componentRoadieAnnotation,\n filtersAnnotation,\n };\n};\n","import {\n CacheManager,\n TokenManager,\n errorHandler,\n} from '@backstage/backend-common';\nimport { stringifyEntityRef } from '@backstage/catalog-model';\nimport express from 'express';\nimport Router from 'express-promise-router';\nimport { Config } from '@backstage/config';\nimport { Logger } from 'winston';\nimport { CatalogClient } from '@backstage/catalog-client';\nimport { DiscoveryApi } from '@backstage/plugin-permission-common';\nimport { IdentityApi } from '@backstage/plugin-auth-node';\n\nimport { getDefaultFilters } from '../filters';\nimport {\n type Filter,\n type JiraResponse,\n type Project,\n} from '@axis-backstage/plugin-jira-dashboard-common';\nimport stream from 'stream';\nimport { getProjectAvatar } from '../api';\nimport {\n getProjectResponse,\n getFiltersFromAnnotations,\n getIssuesFromFilters,\n getIssuesFromComponents,\n} from './service';\nimport { getAnnotations } from '../lib';\n\n/**\n * Constructs a jira dashboard router.\n * @public\n */\nexport interface RouterOptions {\n /**\n * Implementation of Winston logger\n */\n logger: Logger;\n\n /**\n * Backstage config object\n */\n config: Config;\n\n /**\n * Backstage discovery api instance\n */\n discovery: DiscoveryApi;\n\n /**\n * Backstage identity api instance\n */\n identity: IdentityApi;\n\n /**\n * Backstage token manager instance\n */\n tokenManager: TokenManager;\n}\n\nconst DEFAULT_TTL = 1000 * 60;\n\n/**\n * Constructs a jira dashboard router.\n *\n * @public\n */\nexport async function createRouter(\n options: RouterOptions,\n): Promise<express.Router> {\n const { logger, config, discovery, identity, tokenManager } = options;\n const catalogClient = new CatalogClient({ discoveryApi: discovery });\n logger.info('Initializing Jira Dashboard backend');\n\n const pluginCache =\n CacheManager.fromConfig(config).forPlugin('jira-dashboard');\n const cache = pluginCache.getClient({ defaultTtl: DEFAULT_TTL });\n\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(\n '/dashboards/by-entity-ref/:kind/:namespace/:name',\n async (request, response) => {\n const { kind, namespace, name } = request.params;\n const entityRef = stringifyEntityRef({ kind, namespace, name });\n const { token } = await tokenManager.getToken();\n const entity = await catalogClient.getEntityByRef(entityRef, { token });\n const {\n projectKeyAnnotation,\n componentsAnnotation,\n componentRoadieAnnotation,\n filtersAnnotation,\n } = getAnnotations(config);\n\n if (!entity) {\n logger.info(`No entity found for ${entityRef}`);\n response\n .status(500)\n .json({ error: `No entity found for ${entityRef}` });\n return;\n }\n\n const projectKey =\n entity.metadata.annotations?.[projectKeyAnnotation]?.split(',')!;\n\n if (!projectKey) {\n const error = `No jira.com/project-key annotation found for ${entityRef}`;\n logger.info(error);\n response.status(404).json(error);\n return;\n }\n\n let projectResponse;\n\n try {\n projectResponse = await getProjectResponse(\n projectKey[0],\n config,\n cache,\n );\n } catch (err) {\n logger.error(`Could not find Jira project ${projectKey[0]}`);\n response.status(404).json({\n error: `No Jira project found with key ${projectKey[0]}`,\n });\n return;\n }\n\n const userIdentity = await identity.getIdentity({ request: request });\n\n if (!userIdentity) {\n logger.warn(`Could not find user identity`);\n }\n\n let filters: Filter[] = [];\n\n const customFilterAnnotations =\n entity.metadata.annotations?.[filtersAnnotation]?.split(',')!;\n\n filters = getDefaultFilters(\n config,\n userIdentity?.identity?.userEntityRef,\n );\n\n if (customFilterAnnotations) {\n filters.push(\n ...(await getFiltersFromAnnotations(customFilterAnnotations, config)),\n );\n }\n\n let issues = await getIssuesFromFilters(projectKey[0], filters, config);\n\n let components =\n entity.metadata.annotations?.[componentsAnnotation]?.split(',') ?? [];\n\n /* Adding support for Roadie's component annotation */\n components = components.concat(\n entity.metadata.annotations?.[componentRoadieAnnotation]?.split(',') ??\n [],\n );\n\n if (components) {\n const componentIssues = await getIssuesFromComponents(\n projectKey[0],\n components,\n config,\n );\n issues = issues.concat(componentIssues);\n }\n\n const jiraResponse: JiraResponse = {\n project: projectResponse as Project,\n data: issues,\n };\n response.json(jiraResponse);\n },\n );\n\n router.get(\n '/avatar/by-entity-ref/:kind/:namespace/:name',\n async (request, response) => {\n const { kind, namespace, name } = request.params;\n const entityRef = stringifyEntityRef({ kind, namespace, name });\n const { token } = await tokenManager.getToken();\n const entity = await catalogClient.getEntityByRef(entityRef, { token });\n const { projectKeyAnnotation } = getAnnotations(config);\n\n if (!entity) {\n logger.info(`No entity found for ${entityRef}`);\n response\n .status(500)\n .json({ error: `No entity found for ${entityRef}` });\n return;\n }\n\n const projectKey =\n entity.metadata.annotations?.[projectKeyAnnotation]?.split(',')!;\n\n const projectResponse = await getProjectResponse(\n projectKey[0],\n config,\n cache,\n );\n\n if (!projectResponse) {\n logger.error('Could not find project in Jira');\n response.status(400).json({\n error: `No Jira project found for project key ${projectKey[0]}`,\n });\n return;\n }\n\n const url = projectResponse.avatarUrls['48x48'];\n\n const avatar = await getProjectAvatar(url, config);\n\n const ps = new stream.PassThrough();\n const val = avatar.headers.get('content-type');\n\n response.setHeader('content-type', val ?? '');\n stream.pipeline(avatar.body, ps, err => {\n if (err) {\n logger.error(err);\n response.sendStatus(400);\n }\n return;\n });\n ps.pipe(response);\n },\n );\n router.use(errorHandler());\n return router;\n}\n","import { loggerToWinstonLogger } from '@backstage/backend-common';\nimport {\n coreServices,\n createBackendPlugin,\n} from '@backstage/backend-plugin-api';\nimport { createRouter } from './service/router';\n\n/**\n * The Jira Dashboard backend plugin.\n *\n * @public\n */\nexport const jiraDashboardPlugin = createBackendPlugin({\n pluginId: 'jira-dashboard',\n register(env) {\n env.registerInit({\n deps: {\n logger: coreServices.logger,\n config: coreServices.rootConfig,\n discovery: coreServices.discovery,\n identity: coreServices.identity,\n tokenManager: coreServices.tokenManager,\n httpRouter: coreServices.httpRouter,\n },\n async init({\n logger,\n config,\n discovery,\n identity,\n tokenManager,\n httpRouter,\n }) {\n httpRouter.use(\n await createRouter({\n logger: loggerToWinstonLogger(logger),\n config,\n discovery,\n identity,\n tokenManager,\n }),\n );\n },\n });\n },\n});\n"],"names":["fetch","PROJECT_KEY_NAME","COMPONENTS_NAME","FILTERS_NAME","catalogClient","CatalogClient","CacheManager","Router","express","stringifyEntityRef","stream","errorHandler","createBackendPlugin","coreServices","loggerToWinstonLogger"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@axis-backstage/plugin-jira-dashboard-backend",
3
- "version": "0.6.0",
3
+ "version": "0.7.1",
4
4
  "main": "dist/index.cjs.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "license": "Apache-2.0",