{"version":3,"file":"plugins.mjs","sources":["../../../../src/services/pluginMeta/plugins.ts"],"sourcesContent":["import { config } from '../../config';\nimport { getFeatureFlagClient } from '../../internal/openFeature';\nimport { getCachedPromise } from '../../utils/getCachedPromise';\n\nimport type { PluginMetasResponse } from './types';\nimport { type Plugin } from './types/plugin/plugin_object_gen';\nimport { defaultSpec } from './types/plugin/types.spec.gen';\n\nfunction getApiVersion(): string {\n  return 'v0alpha1';\n}\n\nasync function loadPluginMetas(): Promise<PluginMetasResponse> {\n  if (!getFeatureFlagClient().getBooleanValue('useMTPlugins', false)) {\n    const result = { items: [] };\n    return result;\n  }\n\n  const metas = await fetch(`apis/plugins.grafana.app/${getApiVersion()}/namespaces/${config.namespace}/metas`);\n  if (!metas.ok) {\n    throw new Error(`Failed to load plugin metas ${metas.status}:${metas.statusText}`);\n  }\n\n  const result = await metas.json();\n  return result;\n}\n\nexport async function installPluginMeta(pluginId: string, version: string): Promise<void> {\n  if (!getFeatureFlagClient().getBooleanValue('useMTPlugins', false)) {\n    return;\n  }\n\n  const spec = { ...defaultSpec(), id: pluginId, version };\n  const metadata = { name: pluginId, namespace: config.namespace };\n  const data: Plugin = {\n    apiVersion: `plugins.grafana.app/${getApiVersion()}`,\n    kind: 'Plugin',\n    metadata,\n    spec,\n    status: {},\n  };\n\n  const result = await fetch(`apis/plugins.grafana.app/${getApiVersion()}/namespaces/${config.namespace}/plugins`, {\n    method: 'POST',\n    body: JSON.stringify(data),\n    headers: { 'content-type': 'application/json' },\n  });\n\n  if (!result.ok) {\n    throw new Error(`Failed to install plugin ${pluginId} ${result.status}:${result.statusText}`);\n  }\n}\n\nexport async function uninstallPluginMeta(pluginId: string): Promise<void> {\n  if (!getFeatureFlagClient().getBooleanValue('useMTPlugins', false)) {\n    return;\n  }\n\n  const result = await fetch(\n    `apis/plugins.grafana.app/${getApiVersion()}/namespaces/${config.namespace}/plugins/${pluginId}`,\n    {\n      method: 'DELETE',\n    }\n  );\n\n  if (!result.ok) {\n    throw new Error(`Failed to uninstall plugin ${pluginId} ${result.status}:${result.statusText}`);\n  }\n}\n\nexport function initPluginMetas(): Promise<PluginMetasResponse> {\n  return getCachedPromise(loadPluginMetas, { defaultValue: { items: [] } });\n}\n\nexport function refetchPluginMetas(): Promise<PluginMetasResponse> {\n  return getCachedPromise(loadPluginMetas, { defaultValue: { items: [] }, invalidate: true });\n}\n"],"names":["result"],"mappings":"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"}