{"version":3,"file":"shared.cjs","sources":["../../../../../src/services/pluginMeta/mappers/shared.ts"],"sourcesContent":["import {\n  type AngularMeta,\n  type PluginDependencies,\n  type PluginExtensions,\n  PluginLoadingStrategy,\n  type PluginMeta,\n  type PluginMetaInfo,\n  PluginSignatureStatus,\n  PluginState,\n  PluginType,\n} from '@grafana/data';\nimport { type LogContext } from '@grafana/faro-web-sdk';\n\nimport type { Spec as v0alpha1Spec } from '../types/meta/types.spec.gen';\n\ntype LogFunction = (message: string, context: LogContext) => void;\n\nexport function angularMapper(spec: v0alpha1Spec): AngularMeta {\n  // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n  return { detected: false } as AngularMeta;\n}\n\nexport function loadingStrategyMapper(spec: v0alpha1Spec): PluginLoadingStrategy {\n  const loadingStrategy = spec.module?.loadingStrategy ?? PluginLoadingStrategy.fetch;\n  if (loadingStrategy === PluginLoadingStrategy.script) {\n    return PluginLoadingStrategy.script;\n  }\n\n  return PluginLoadingStrategy.fetch;\n}\n\nfunction toCDNUrl(spec: v0alpha1Spec, path: string): string {\n  try {\n    const normalizedBase = normalizeEnd(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\nexport function infoMapper(spec: v0alpha1Spec): PluginMetaInfo {\n  const { updated, version, description = '', keywords } = spec.pluginJson.info;\n  const author = {\n    ...spec.pluginJson.info.author,\n    name: spec.pluginJson.info.author?.name ?? '',\n    url: spec.pluginJson.info.author?.url ?? '',\n  };\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\nexport function stateMapper(spec: v0alpha1Spec, logFn: LogFunction): PluginState {\n  if (!spec.pluginJson.state) {\n    // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n    return (spec.pluginJson.state ?? '') as PluginState;\n  }\n\n  switch (spec.pluginJson.state) {\n    case 'alpha':\n      return PluginState.alpha;\n    case 'beta':\n      return PluginState.beta;\n    case 'deprecated':\n      return PluginState.deprecated;\n    case 'stable':\n      return PluginState.stable;\n    default:\n      logFn(`stateMapper: unknown PluginState ${spec.pluginJson.state}`, {\n        pluginId: spec.pluginJson.id,\n        pluginType: spec.pluginJson.type,\n        pluginState: spec.pluginJson.state,\n      });\n      // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n      return '' as PluginState;\n  }\n}\n\nexport function signatureStatusMapper(spec: v0alpha1Spec, logFn: LogFunction): PluginSignatureStatus {\n  if (!spec.signature.status) {\n    // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n    return 'unsigned' as PluginSignatureStatus;\n  }\n\n  switch (spec.signature.status) {\n    case 'internal':\n      return PluginSignatureStatus.internal;\n    case 'invalid':\n      return PluginSignatureStatus.invalid;\n    case 'modified':\n      return PluginSignatureStatus.modified;\n    case 'valid':\n      return PluginSignatureStatus.valid;\n    default:\n      logFn(`signatureStatusMapper: unknown PluginSignatureStatus ${spec.signature.status}`, {\n        pluginId: spec.pluginJson.id,\n        pluginType: spec.pluginJson.type,\n        pluginSignatureStatus: spec.signature.status,\n      });\n      // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n      return 'unsigned' as PluginSignatureStatus;\n  }\n}\n\nfunction internalPluginTypeMapper(type: string, id: string, logFn: LogFunction): PluginType {\n  if (!type) {\n    // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n    return '' as PluginType;\n  }\n\n  switch (type) {\n    case 'app':\n      return PluginType.app;\n    case 'datasource':\n      return PluginType.datasource;\n    case 'panel':\n      return PluginType.panel;\n    case 'renderer':\n      return PluginType.renderer;\n    default:\n      logFn(`pluginTypeMapper: unknown PluginType ${type}`, {\n        pluginId: id,\n        pluginType: type,\n      });\n      // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n      return '' as PluginType;\n  }\n}\n\nexport function pluginTypeMapper(spec: v0alpha1Spec, logFn: LogFunction): PluginType {\n  return internalPluginTypeMapper(spec.pluginJson.type, spec.pluginJson.id, logFn);\n}\n\nexport function dependenciesMapper(spec: v0alpha1Spec, logFn: LogFunction): PluginDependencies {\n  const plugins = (spec.pluginJson.dependencies?.plugins ?? []).map((v) => ({\n    ...v,\n    type: internalPluginTypeMapper(v.type, spec.pluginJson.id, logFn),\n    version: '',\n  }));\n\n  const dependencies: PluginDependencies = {\n    ...spec.pluginJson.dependencies,\n    extensions: {\n      exposedComponents: spec.pluginJson.dependencies.extensions?.exposedComponents ?? [],\n    },\n    grafanaDependency: spec.pluginJson.dependencies.grafanaDependency,\n    grafanaVersion: spec.pluginJson.dependencies.grafanaVersion ?? '',\n    plugins,\n  };\n\n  return dependencies;\n}\n\nexport function extensionsMapper(spec: v0alpha1Spec): PluginExtensions {\n  const addedComponents = spec.pluginJson.extensions?.addedComponents ?? [];\n  const addedFunctions = spec.pluginJson.extensions?.addedFunctions ?? [];\n  const addedLinks = spec.pluginJson.extensions?.addedLinks ?? [];\n  const exposedComponents = (spec.pluginJson.extensions?.exposedComponents ?? []).map((v) => ({\n    ...v,\n    description: v.description ?? '',\n    title: v.title ?? '',\n  }));\n  const extensionPoints = (spec.pluginJson.extensions?.extensionPoints ?? []).map((v) => ({\n    ...v,\n    description: v.description ?? '',\n    title: v.title ?? '',\n  }));\n\n  const extensions: PluginExtensions = {\n    addedComponents,\n    addedFunctions,\n    addedLinks,\n    exposedComponents,\n    extensionPoints,\n  };\n\n  return extensions;\n}\n\nexport function isCorePlugin(spec: v0alpha1Spec): boolean {\n  return spec.class === 'core';\n}\n\nexport function isDecoupledCorePlugin(spec: v0alpha1Spec): boolean {\n  return isCorePlugin(spec) && !spec.module?.path?.startsWith('core:');\n}\n\nfunction normalizeEnd(url: string): string {\n  if (url.endsWith('/')) {\n    return url;\n  }\n\n  return `${url}/`;\n}\n\nfunction combinePathAndUrl(url: string, path: string): string {\n  const normalized = normalizeEnd(url);\n  try {\n    const returnUrl = new URL(path, normalized);\n    return returnUrl.toString();\n  } catch (error) {\n    return `${normalized}${path}`;\n  }\n}\n\nfunction getPublicPath(): string {\n  return typeof window !== 'undefined' && window.__grafana_public_path__ ? window.__grafana_public_path__ : '';\n}\n\nexport function prependPublicPathToCorePlugins<T extends PluginMeta>(meta: T, spec: v0alpha1Spec): T {\n  const publicPath = getPublicPath();\n\n  if (!publicPath) {\n    return meta;\n  }\n\n  return {\n    ...meta,\n    baseUrl: combinePathAndUrl(publicPath, spec.baseURL),\n    module: isDecoupledCorePlugin(spec) ? combinePathAndUrl(publicPath, spec.module.path) : spec.module.path,\n    info: {\n      ...meta.info,\n      logos: {\n        ...spec.pluginJson.info.logos,\n        large: combinePathAndUrl(publicPath, spec.pluginJson.info.logos.large),\n        small: combinePathAndUrl(publicPath, spec.pluginJson.info.logos.small),\n      },\n      screenshots: spec.pluginJson.info.screenshots\n        ? spec.pluginJson.info.screenshots.map((s) => ({\n            ...s,\n            name: s.name ?? '',\n            path: combinePathAndUrl(publicPath, s.path ?? ''),\n          }))\n        : [],\n    },\n  };\n}\n"],"names":["PluginLoadingStrategy","_a","_b","PluginState","PluginSignatureStatus","PluginType"],"mappings":"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"}