{"version":3,"file":"v0alpha1PanelMapper.mjs","sources":["../../../../../src/services/pluginMeta/mappers/v0alpha1PanelMapper.ts"],"sourcesContent":["import {\n  type PanelPluginMeta,\n  type PluginMetaInfo,\n  PluginSignatureStatus,\n  PluginState,\n  PluginType,\n} from '@grafana/data';\n\nimport type { PanelPluginMetas, PanelPluginMetasMapper, PluginMetasResponse } from '../types';\nimport type { Spec as v0alpha1Spec } from '../types/meta/types.spec.gen';\n\nimport { angularMapper, loadingStrategyMapper } from './shared';\n\nfunction toCDNUrl(spec: v0alpha1Spec, path: string): string {\n  try {\n    const normalizedBase = spec.baseURL.endsWith('/') ? spec.baseURL : `${spec.baseURL}/`;\n    const url = new URL(path, normalizedBase);\n    return url.toString();\n  } catch (error) {\n    return path; // plugin without proper CDN URL or builtin plugin\n  }\n}\n\nfunction screenshotsMapper(spec: v0alpha1Spec): PluginMetaInfo['screenshots'] {\n  if (!spec.pluginJson.info.screenshots) {\n    return [];\n  }\n\n  return spec.pluginJson.info.screenshots.map((s) => ({\n    ...s,\n    name: s.name ?? '',\n    path: toCDNUrl(spec, s.path ?? ''),\n  }));\n}\n\nfunction logosMapper(spec: v0alpha1Spec): PluginMetaInfo['logos'] {\n  return {\n    ...spec.pluginJson.info.logos,\n    large: toCDNUrl(spec, spec.pluginJson.info.logos.large),\n    small: toCDNUrl(spec, spec.pluginJson.info.logos.small),\n  };\n}\n\nfunction infoMapper(spec: v0alpha1Spec): PluginMetaInfo {\n  const { updated, version, description = '', keywords } = spec.pluginJson.info;\n  const author = { ...spec.pluginJson.info.author, name: spec.pluginJson.info.author?.name ?? '' };\n  const links = (spec.pluginJson.info.links || []).map((l) => ({ ...l, name: l.name ?? '', url: l.url ?? '' }));\n  const screenshots = screenshotsMapper(spec);\n  const build = {};\n  const logos = logosMapper(spec);\n\n  return {\n    author,\n    description,\n    links,\n    logos,\n    build,\n    screenshots,\n    updated,\n    version,\n    keywords,\n  };\n}\n\nfunction stateMapper(spec: v0alpha1Spec): PluginState | undefined {\n  const state = spec.pluginJson.state;\n\n  if (state === PluginState.alpha) {\n    return PluginState.alpha;\n  }\n\n  if (state === PluginState.beta) {\n    return PluginState.beta;\n  }\n\n  if (state === PluginState.deprecated) {\n    return PluginState.deprecated;\n  }\n\n  if (state === PluginState.stable) {\n    return PluginState.stable;\n  }\n\n  return;\n}\n\nconst idToSortMap: Record<string, number> = {\n  timeseries: 1,\n  barchart: 2,\n  stat: 3,\n  gauge: 4,\n  bargauge: 5,\n  table: 6,\n  singlestat: 7,\n  piechart: 8,\n  'state-timeline': 9,\n  heatmap: 10,\n  'status-history': 11,\n  histogram: 12,\n  graph: 13,\n  text: 14,\n  alertlist: 15,\n  dashlist: 16,\n  news: 17,\n};\n\nfunction sortMapper(spec: v0alpha1Spec): number {\n  return idToSortMap[spec.pluginJson.id] ?? 100;\n}\n\nfunction signatureMapper(spec: v0alpha1Spec): PluginSignatureStatus | undefined {\n  const signature = spec.signature?.status;\n  if (!signature) {\n    return;\n  }\n\n  if (signature === PluginSignatureStatus.internal) {\n    return PluginSignatureStatus.internal;\n  }\n\n  if (signature === PluginSignatureStatus.invalid) {\n    return PluginSignatureStatus.invalid;\n  }\n\n  if (signature === PluginSignatureStatus.modified) {\n    return PluginSignatureStatus.modified;\n  }\n\n  if (signature === PluginSignatureStatus.valid) {\n    return PluginSignatureStatus.valid;\n  }\n\n  return;\n}\n\nfunction specMapper(spec: v0alpha1Spec): PanelPluginMeta {\n  const { id, name, hideFromList = false, skipDataQuery = false, suggestions } = spec.pluginJson;\n  const state = stateMapper(spec);\n  const info = infoMapper(spec);\n  const loadingStrategy = loadingStrategyMapper(spec);\n  const sort = sortMapper(spec);\n  const type = PluginType.panel;\n  const module = spec.module.path;\n  const baseUrl = spec.baseURL;\n  const signature = signatureMapper(spec);\n  const angular = angularMapper(spec);\n  const translations = spec.translations;\n  const moduleHash = spec.module.hash;\n  const aliasIDs = spec.aliasIds;\n\n  return {\n    id,\n    name,\n    info,\n    hideFromList,\n    sort,\n    skipDataQuery,\n    suggestions,\n    state,\n    baseUrl,\n    signature,\n    module,\n    angular,\n    loadingStrategy,\n    type,\n    translations,\n    moduleHash,\n    aliasIDs,\n  };\n}\n\nexport const v0alpha1PanelMapper: PanelPluginMetasMapper<PluginMetasResponse> = (response) => {\n  const result: PanelPluginMetas = {};\n\n  return response.items.reduce((acc, curr) => {\n    if (curr.spec.pluginJson.type !== 'panel') {\n      return acc;\n    }\n\n    const config = specMapper(curr.spec);\n    acc[config.id] = config;\n    return acc;\n  }, result);\n};\n"],"names":["_a","_b"],"mappings":"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"}