{"version":3,"file":"v0alpha1SettingsMapper.cjs","sources":["../../../../../src/services/pluginSettings/mappers/v0alpha1SettingsMapper.ts"],"sourcesContent":["import {\n  type PluginInclude,\n  PluginIncludeType,\n  type KeyValue,\n  PluginSignatureType,\n  type PluginMeta,\n} from '@grafana/data';\n\nimport {\n  angularMapper,\n  dependenciesMapper,\n  extensionsMapper,\n  infoMapper,\n  loadingStrategyMapper,\n  pluginTypeMapper,\n  stateMapper,\n  signatureStatusMapper,\n} from '../../pluginMeta/mappers/shared';\nimport type { Include as v0alpha1Include, Spec as v0alpha1Spec } from '../../pluginMeta/types/meta/types.spec.gen';\nimport { logPluginSettingsWarning } from '../logging';\nimport {\n  type Settings as v0alpha1Settings,\n  type SettingsMapper,\n  type SettingsSpec as v0alpha1SettingsSpec,\n  type InlineSecureValues as v0alpha1InlineSecureValues,\n} from '../types';\n\nexport function settingsSpecMapper(data: Partial<PluginMeta>): Partial<v0alpha1SettingsSpec> {\n  const result: Partial<v0alpha1SettingsSpec> = {};\n\n  if (data.enabled !== undefined) {\n    result.enabled = data.enabled;\n  }\n\n  if (data.pinned !== undefined) {\n    result.pinned = data.pinned;\n  }\n\n  if (data.jsonData !== undefined) {\n    result.jsonData = data.jsonData;\n  }\n\n  return result;\n}\n\nexport function inlineSecureValuesMapper(data: Partial<PluginMeta>): v0alpha1InlineSecureValues {\n  const { secureJsonData = {}, secureJsonFields = {} } = data;\n\n  const result: v0alpha1InlineSecureValues = {};\n\n  for (const key of Object.keys(secureJsonData)) {\n    const secureValue = secureJsonData[key];\n\n    if (secureValue === undefined) {\n      continue;\n    }\n\n    // Key doesn't exist on the server, so we create it in-place by sending\n    // the new plaintext in `create`.\n    if (secureJsonFields?.[key] === undefined) {\n      result[key] = { create: secureValue };\n      continue;\n    }\n\n    // Key exists on the server but is marked for deletion, so we delete it in-place by sending `remove: true`.\n    if (secureJsonFields?.[key] === false) {\n      result[key] = { remove: true };\n      continue;\n    }\n\n    // Key already exists on the server, so we update it in-place by sending\n    // the new plaintext in `name`.\n    result[key] = { name: secureValue };\n  }\n\n  for (const key of Object.keys(secureJsonFields)) {\n    const secureValue = secureJsonFields[key];\n\n    // Key exists on the server but is marked for deletion, so we delete it in-place by sending `remove: true`.\n    if (secureValue === false) {\n      result[key] = { remove: true };\n    }\n  }\n\n  return result;\n}\n\nexport function secureJsonFieldsMapper(settings: v0alpha1Settings): KeyValue<boolean> {\n  const secure = settings.secure ?? {};\n  const secureJsonFields: KeyValue<boolean> = Object.keys(secure).reduce((acc: KeyValue<boolean>, curr) => {\n    const secureValue = secure[curr];\n    if (!secureValue) {\n      return acc;\n    }\n\n    acc[curr] = true;\n    return acc;\n  }, {});\n\n  return secureJsonFields;\n}\n\nexport function includeTypeMapper(include: v0alpha1Include, spec: v0alpha1Spec): PluginIncludeType {\n  if (!include.type) {\n    // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n    return '' as PluginIncludeType;\n  }\n\n  switch (include.type) {\n    case 'dashboard':\n      return PluginIncludeType.dashboard;\n    case 'page':\n      return PluginIncludeType.page;\n    case 'panel':\n      return PluginIncludeType.panel;\n    case 'datasource':\n      return PluginIncludeType.datasource;\n    default:\n      logPluginSettingsWarning(`includeTypeMapper: unknown PluginIncludeType ${include.type}`, {\n        pluginId: spec.pluginJson.id,\n        pluginType: spec.pluginJson.type,\n        includeType: include.type,\n      });\n      // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n      return '' as PluginIncludeType;\n  }\n}\n\nexport function slugMapper(include: v0alpha1Include): string {\n  const name = include.name ?? '';\n  return name\n    .toLowerCase()\n    .replace(/[^\\w ]+/g, '')\n    .replace(/ +/g, '-');\n}\n\nexport function includesMapper(spec: v0alpha1Spec): PluginInclude[] {\n  const includes = spec.pluginJson.includes ?? [];\n  return includes.map((i) => ({\n    ...i,\n    name: i.name ?? '',\n    type: includeTypeMapper(i, spec),\n    addToNav: i.addToNav ?? false,\n    component: i.component ?? '',\n    defaultNav: i.defaultNav ?? false,\n    icon: i.icon ?? '',\n    path: i.path ?? '',\n    role: i.role ?? '',\n    uid: i.uid ?? '',\n    slug: slugMapper(i),\n  }));\n}\n\nexport function signatureTypeMapper(spec: v0alpha1Spec): PluginSignatureType {\n  if (!spec.signature.type) {\n    // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n    return (spec.signature.type ?? '') as PluginSignatureType;\n  }\n\n  switch (spec.signature.type) {\n    case 'commercial':\n      return PluginSignatureType.commercial;\n    case 'community':\n      return PluginSignatureType.community;\n    case 'grafana':\n      return PluginSignatureType.grafana;\n    case 'private':\n      return PluginSignatureType.private;\n    default:\n      logPluginSettingsWarning(`signatureTypeMapper: unknown PluginSignatureType ${spec.signature.type}`, {\n        pluginId: spec.pluginJson.id,\n        pluginType: spec.pluginJson.type,\n        signatureType: spec.signature.type,\n      });\n      // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n      return '' as PluginSignatureType;\n  }\n}\n\nfunction v0alpha1SpecMapper(spec: v0alpha1Spec) {\n  const { aliasIds: aliasIDs, baseURL: baseUrl } = spec;\n  const { id, name } = spec.pluginJson;\n  const { org: signatureOrg = '' } = spec.signature;\n  const { path: module, hash: moduleHash } = spec.module;\n  const autoEnabled = spec.pluginJson.autoEnabled ?? false;\n  const hasUpdate = false;\n  const latestVersion = '';\n  const type = pluginTypeMapper(spec, logPluginSettingsWarning);\n  const info = infoMapper(spec);\n  const angular = angularMapper(spec);\n  const angularDetected = false;\n  const dependencies = dependenciesMapper(spec, logPluginSettingsWarning);\n  const extensions = extensionsMapper(spec);\n  const includes = includesMapper(spec);\n  const loadingStrategy = loadingStrategyMapper(spec);\n  const signature = signatureStatusMapper(spec, logPluginSettingsWarning);\n  const signatureType = signatureTypeMapper(spec);\n  const state = stateMapper(spec, logPluginSettingsWarning);\n\n  return {\n    autoEnabled,\n    baseUrl,\n    hasUpdate,\n    id,\n    info,\n    latestVersion,\n    module,\n    name,\n    type,\n    aliasIDs,\n    angular,\n    angularDetected,\n    dependencies,\n    extensions,\n    includes,\n    loadingStrategy,\n    moduleHash,\n    signature,\n    signatureOrg,\n    signatureType,\n    state,\n  };\n}\n\nexport const v0alpha1SettingsMapper: SettingsMapper = (spec, settings) => {\n  const specMappings = v0alpha1SpecMapper(spec);\n\n  if (spec.pluginJson.type === 'app' && settings) {\n    const { enabled, jsonData, pinned } = settings.spec;\n    const secureJsonFields = secureJsonFieldsMapper(settings);\n\n    return {\n      ...specMappings,\n      enabled: specMappings.autoEnabled ? true : enabled,\n      jsonData,\n      pinned: specMappings.autoEnabled ? true : pinned,\n      secureJsonFields,\n    };\n  }\n\n  return {\n    ...specMappings,\n    enabled: false,\n    pinned: false,\n    jsonData: {},\n    secureJsonFields: {},\n  };\n};\n"],"names":["PluginIncludeType","logPluginSettingsWarning","_a","PluginSignatureType","pluginTypeMapper","infoMapper","angularMapper","dependenciesMapper","extensionsMapper","loadingStrategyMapper","signatureStatusMapper","stateMapper"],"mappings":";;;;;;;;;AA2BO,SAAS,mBAAmB,IAAA,EAA0D;AAC3F,EAAA,MAAM,SAAwC,EAAC;AAE/C,EAAA,IAAI,IAAA,CAAK,YAAY,KAAA,CAAA,EAAW;AAC9B,IAAA,MAAA,CAAO,UAAU,IAAA,CAAK,OAAA;AAAA,EACxB;AAEA,EAAA,IAAI,IAAA,CAAK,WAAW,KAAA,CAAA,EAAW;AAC7B,IAAA,MAAA,CAAO,SAAS,IAAA,CAAK,MAAA;AAAA,EACvB;AAEA,EAAA,IAAI,IAAA,CAAK,aAAa,KAAA,CAAA,EAAW;AAC/B,IAAA,MAAA,CAAO,WAAW,IAAA,CAAK,QAAA;AAAA,EACzB;AAEA,EAAA,OAAO,MAAA;AACT;AAEO,SAAS,yBAAyB,IAAA,EAAuD;AAC9F,EAAA,MAAM,EAAE,cAAA,GAAiB,IAAI,gBAAA,GAAmB,IAAG,GAAI,IAAA;AAEvD,EAAA,MAAM,SAAqC,EAAC;AAE5C,EAAA,KAAA,MAAW,GAAA,IAAO,MAAA,CAAO,IAAA,CAAK,cAAc,CAAA,EAAG;AAC7C,IAAA,MAAM,WAAA,GAAc,eAAe,GAAG,CAAA;AAEtC,IAAA,IAAI,gBAAgB,KAAA,CAAA,EAAW;AAC7B,MAAA;AAAA,IACF;AAIA,IAAA,IAAA,CAAI,gBAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,gBAAA,CAAmB,UAAS,KAAA,CAAA,EAAW;AACzC,MAAA,MAAA,CAAO,GAAG,CAAA,GAAI,EAAE,MAAA,EAAQ,WAAA,EAAY;AACpC,MAAA;AAAA,IACF;AAGA,IAAA,IAAA,CAAI,gBAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,gBAAA,CAAmB,UAAS,KAAA,EAAO;AACrC,MAAA,MAAA,CAAO,GAAG,CAAA,GAAI,EAAE,MAAA,EAAQ,IAAA,EAAK;AAC7B,MAAA;AAAA,IACF;AAIA,IAAA,MAAA,CAAO,GAAG,CAAA,GAAI,EAAE,IAAA,EAAM,WAAA,EAAY;AAAA,EACpC;AAEA,EAAA,KAAA,MAAW,GAAA,IAAO,MAAA,CAAO,IAAA,CAAK,gBAAgB,CAAA,EAAG;AAC/C,IAAA,MAAM,WAAA,GAAc,iBAAiB,GAAG,CAAA;AAGxC,IAAA,IAAI,gBAAgB,KAAA,EAAO;AACzB,MAAA,MAAA,CAAO,GAAG,CAAA,GAAI,EAAE,MAAA,EAAQ,IAAA,EAAK;AAAA,IAC/B;AAAA,EACF;AAEA,EAAA,OAAO,MAAA;AACT;AAEO,SAAS,uBAAuB,QAAA,EAA+C;AAvFtF,EAAA,IAAA,EAAA;AAwFE,EAAA,MAAM,MAAA,GAAA,CAAS,EAAA,GAAA,QAAA,CAAS,MAAA,KAAT,IAAA,GAAA,EAAA,GAAmB,EAAC;AACnC,EAAA,MAAM,gBAAA,GAAsC,OAAO,IAAA,CAAK,MAAM,EAAE,MAAA,CAAO,CAAC,KAAwB,IAAA,KAAS;AACvG,IAAA,MAAM,WAAA,GAAc,OAAO,IAAI,CAAA;AAC/B,IAAA,IAAI,CAAC,WAAA,EAAa;AAChB,MAAA,OAAO,GAAA;AAAA,IACT;AAEA,IAAA,GAAA,CAAI,IAAI,CAAA,GAAI,IAAA;AACZ,IAAA,OAAO,GAAA;AAAA,EACT,CAAA,EAAG,EAAE,CAAA;AAEL,EAAA,OAAO,gBAAA;AACT;AAEO,SAAS,iBAAA,CAAkB,SAA0B,IAAA,EAAuC;AACjG,EAAA,IAAI,CAAC,QAAQ,IAAA,EAAM;AAEjB,IAAA,OAAO,EAAA;AAAA,EACT;AAEA,EAAA,QAAQ,QAAQ,IAAA;AAAM,IACpB,KAAK,WAAA;AACH,MAAA,OAAOA,sBAAA,CAAkB,SAAA;AAAA,IAC3B,KAAK,MAAA;AACH,MAAA,OAAOA,sBAAA,CAAkB,IAAA;AAAA,IAC3B,KAAK,OAAA;AACH,MAAA,OAAOA,sBAAA,CAAkB,KAAA;AAAA,IAC3B,KAAK,YAAA;AACH,MAAA,OAAOA,sBAAA,CAAkB,UAAA;AAAA,IAC3B;AACE,MAAAC,gCAAA,CAAyB,CAAA,6CAAA,EAAgD,OAAA,CAAQ,IAAI,CAAA,CAAA,EAAI;AAAA,QACvF,QAAA,EAAU,KAAK,UAAA,CAAW,EAAA;AAAA,QAC1B,UAAA,EAAY,KAAK,UAAA,CAAW,IAAA;AAAA,QAC5B,aAAa,OAAA,CAAQ;AAAA,OACtB,CAAA;AAED,MAAA,OAAO,EAAA;AAAA;AAEb;AAEO,SAAS,WAAW,OAAA,EAAkC;AAhI7D,EAAA,IAAA,EAAA;AAiIE,EAAA,MAAM,IAAA,GAAA,CAAO,EAAA,GAAA,OAAA,CAAQ,IAAA,KAAR,IAAA,GAAA,EAAA,GAAgB,EAAA;AAC7B,EAAA,OAAO,IAAA,CACJ,aAAY,CACZ,OAAA,CAAQ,YAAY,EAAE,CAAA,CACtB,OAAA,CAAQ,KAAA,EAAO,GAAG,CAAA;AACvB;AAEO,SAAS,eAAe,IAAA,EAAqC;AAxIpE,EAAA,IAAA,EAAA;AAyIE,EAAA,MAAM,QAAA,GAAA,CAAW,EAAA,GAAA,IAAA,CAAK,UAAA,CAAW,QAAA,KAAhB,YAA4B,EAAC;AAC9C,EAAA,OAAO,QAAA,CAAS,GAAA,CAAI,CAAC,CAAA,KAAG;AA1I1B,IAAA,IAAAC,GAAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AA0I8B,IAAA,OAAA;AAAA,MAC1B,GAAG,CAAA;AAAA,MACH,IAAA,EAAA,CAAMA,GAAAA,GAAA,CAAA,CAAE,IAAA,KAAF,OAAAA,GAAAA,GAAU,EAAA;AAAA,MAChB,IAAA,EAAM,iBAAA,CAAkB,CAAA,EAAG,IAAI,CAAA;AAAA,MAC/B,QAAA,EAAA,CAAU,EAAA,GAAA,CAAA,CAAE,QAAA,KAAF,IAAA,GAAA,EAAA,GAAc,KAAA;AAAA,MACxB,SAAA,EAAA,CAAW,EAAA,GAAA,CAAA,CAAE,SAAA,KAAF,IAAA,GAAA,EAAA,GAAe,EAAA;AAAA,MAC1B,UAAA,EAAA,CAAY,EAAA,GAAA,CAAA,CAAE,UAAA,KAAF,IAAA,GAAA,EAAA,GAAgB,KAAA;AAAA,MAC5B,IAAA,EAAA,CAAM,EAAA,GAAA,CAAA,CAAE,IAAA,KAAF,IAAA,GAAA,EAAA,GAAU,EAAA;AAAA,MAChB,IAAA,EAAA,CAAM,EAAA,GAAA,CAAA,CAAE,IAAA,KAAF,IAAA,GAAA,EAAA,GAAU,EAAA;AAAA,MAChB,IAAA,EAAA,CAAM,EAAA,GAAA,CAAA,CAAE,IAAA,KAAF,IAAA,GAAA,EAAA,GAAU,EAAA;AAAA,MAChB,GAAA,EAAA,CAAK,EAAA,GAAA,CAAA,CAAE,GAAA,KAAF,IAAA,GAAA,EAAA,GAAS,EAAA;AAAA,MACd,IAAA,EAAM,WAAW,CAAC;AAAA,KACpB;AAAA,EAAA,CAAE,CAAA;AACJ;AAEO,SAAS,oBAAoB,IAAA,EAAyC;AAzJ7E,EAAA,IAAA,EAAA;AA0JE,EAAA,IAAI,CAAC,IAAA,CAAK,SAAA,CAAU,IAAA,EAAM;AAExB,IAAA,OAAA,CAAQ,EAAA,GAAA,IAAA,CAAK,SAAA,CAAU,IAAA,KAAf,IAAA,GAAA,EAAA,GAAuB,EAAA;AAAA,EACjC;AAEA,EAAA,QAAQ,IAAA,CAAK,UAAU,IAAA;AAAM,IAC3B,KAAK,YAAA;AACH,MAAA,OAAOC,wBAAA,CAAoB,UAAA;AAAA,IAC7B,KAAK,WAAA;AACH,MAAA,OAAOA,wBAAA,CAAoB,SAAA;AAAA,IAC7B,KAAK,SAAA;AACH,MAAA,OAAOA,wBAAA,CAAoB,OAAA;AAAA,IAC7B,KAAK,SAAA;AACH,MAAA,OAAOA,wBAAA,CAAoB,OAAA;AAAA,IAC7B;AACE,MAAAF,gCAAA,CAAyB,CAAA,iDAAA,EAAoD,IAAA,CAAK,SAAA,CAAU,IAAI,CAAA,CAAA,EAAI;AAAA,QAClG,QAAA,EAAU,KAAK,UAAA,CAAW,EAAA;AAAA,QAC1B,UAAA,EAAY,KAAK,UAAA,CAAW,IAAA;AAAA,QAC5B,aAAA,EAAe,KAAK,SAAA,CAAU;AAAA,OAC/B,CAAA;AAED,MAAA,OAAO,EAAA;AAAA;AAEb;AAEA,SAAS,mBAAmB,IAAA,EAAoB;AAnLhD,EAAA,IAAA,EAAA;AAoLE,EAAA,MAAM,EAAE,QAAA,EAAU,QAAA,EAAU,OAAA,EAAS,SAAQ,GAAI,IAAA;AACjD,EAAA,MAAM,EAAE,EAAA,EAAI,IAAA,EAAK,GAAI,IAAA,CAAK,UAAA;AAC1B,EAAA,MAAM,EAAE,GAAA,EAAK,YAAA,GAAe,EAAA,KAAO,IAAA,CAAK,SAAA;AACxC,EAAA,MAAM,EAAE,IAAA,EAAM,MAAA,EAAQ,IAAA,EAAM,UAAA,KAAe,IAAA,CAAK,MAAA;AAChD,EAAA,MAAM,WAAA,GAAA,CAAc,EAAA,GAAA,IAAA,CAAK,UAAA,CAAW,WAAA,KAAhB,IAAA,GAAA,EAAA,GAA+B,KAAA;AACnD,EAAA,MAAM,SAAA,GAAY,KAAA;AAClB,EAAA,MAAM,aAAA,GAAgB,EAAA;AACtB,EAAA,MAAM,IAAA,GAAOG,uBAAA,CAAiB,IAAA,EAAMH,gCAAwB,CAAA;AAC5D,EAAA,MAAM,IAAA,GAAOI,kBAAW,IAAI,CAAA;AAC5B,EAAA,MAAM,OAAA,GAAUC,qBAAc,IAAI,CAAA;AAClC,EAAA,MAAM,eAAA,GAAkB,KAAA;AACxB,EAAA,MAAM,YAAA,GAAeC,yBAAA,CAAmB,IAAA,EAAMN,gCAAwB,CAAA;AACtE,EAAA,MAAM,UAAA,GAAaO,wBAAiB,IAAI,CAAA;AACxC,EAAA,MAAM,QAAA,GAAW,eAAe,IAAI,CAAA;AACpC,EAAA,MAAM,eAAA,GAAkBC,6BAAsB,IAAI,CAAA;AAClD,EAAA,MAAM,SAAA,GAAYC,4BAAA,CAAsB,IAAA,EAAMT,gCAAwB,CAAA;AACtE,EAAA,MAAM,aAAA,GAAgB,oBAAoB,IAAI,CAAA;AAC9C,EAAA,MAAM,KAAA,GAAQU,kBAAA,CAAY,IAAA,EAAMV,gCAAwB,CAAA;AAExD,EAAA,OAAO;AAAA,IACL,WAAA;AAAA,IACA,OAAA;AAAA,IACA,SAAA;AAAA,IACA,EAAA;AAAA,IACA,IAAA;AAAA,IACA,aAAA;AAAA,IACA,MAAA;AAAA,IACA,IAAA;AAAA,IACA,IAAA;AAAA,IACA,QAAA;AAAA,IACA,OAAA;AAAA,IACA,eAAA;AAAA,IACA,YAAA;AAAA,IACA,UAAA;AAAA,IACA,QAAA;AAAA,IACA,eAAA;AAAA,IACA,UAAA;AAAA,IACA,SAAA;AAAA,IACA,YAAA;AAAA,IACA,aAAA;AAAA,IACA;AAAA,GACF;AACF;AAEO,MAAM,sBAAA,GAAyC,CAAC,IAAA,EAAM,QAAA,KAAa;AACxE,EAAA,MAAM,YAAA,GAAe,mBAAmB,IAAI,CAAA;AAE5C,EAAA,IAAI,IAAA,CAAK,UAAA,CAAW,IAAA,KAAS,KAAA,IAAS,QAAA,EAAU;AAC9C,IAAA,MAAM,EAAE,OAAA,EAAS,QAAA,EAAU,MAAA,KAAW,QAAA,CAAS,IAAA;AAC/C,IAAA,MAAM,gBAAA,GAAmB,uBAAuB,QAAQ,CAAA;AAExD,IAAA,OAAO;AAAA,MACL,GAAG,YAAA;AAAA,MACH,OAAA,EAAS,YAAA,CAAa,WAAA,GAAc,IAAA,GAAO,OAAA;AAAA,MAC3C,QAAA;AAAA,MACA,MAAA,EAAQ,YAAA,CAAa,WAAA,GAAc,IAAA,GAAO,MAAA;AAAA,MAC1C;AAAA,KACF;AAAA,EACF;AAEA,EAAA,OAAO;AAAA,IACL,GAAG,YAAA;AAAA,IACH,OAAA,EAAS,KAAA;AAAA,IACT,MAAA,EAAQ,KAAA;AAAA,IACR,UAAU,EAAC;AAAA,IACX,kBAAkB;AAAC,GACrB;AACF;;;;;;;;;;;"}