{"version":3,"file":"config.mjs","sources":["../../src/config.ts"],"sourcesContent":["import { merge } from 'lodash';\n\nimport {\n  AuthSettings,\n  BootData,\n  BuildInfo,\n  DataSourceInstanceSettings,\n  FeatureToggles,\n  GrafanaConfig,\n  GrafanaTheme,\n  GrafanaTheme2,\n  LicenseInfo,\n  MapLayerOptions,\n  OAuthSettings,\n  PanelPluginMeta,\n  systemDateFormats,\n  SystemDateFormatSettings,\n  getThemeById,\n  AngularMeta,\n  PluginLoadingStrategy,\n  PluginDependencies,\n  PluginExtensions,\n} from '@grafana/data';\n\nexport interface AzureSettings {\n  cloud?: string;\n  clouds?: AzureCloudInfo[];\n  managedIdentityEnabled: boolean;\n  workloadIdentityEnabled: boolean;\n  userIdentityEnabled: boolean;\n  userIdentityFallbackCredentialsEnabled: boolean;\n  azureEntraPasswordCredentialsEnabled: boolean;\n}\n\nexport interface AzureCloudInfo {\n  name: string;\n  displayName: string;\n}\n\nexport type AppPluginConfig = {\n  id: string;\n  path: string;\n  version: string;\n  preload: boolean;\n  angular: AngularMeta;\n  loadingStrategy: PluginLoadingStrategy;\n  dependencies: PluginDependencies;\n  extensions: PluginExtensions;\n  moduleHash?: string;\n};\n\nexport type PreinstalledPlugin = {\n  id: string;\n  version: string;\n};\n\nexport class GrafanaBootConfig implements GrafanaConfig {\n  publicDashboardAccessToken?: string;\n  publicDashboardsEnabled = true;\n  snapshotEnabled = true;\n  datasources: { [str: string]: DataSourceInstanceSettings } = {};\n  panels: { [key: string]: PanelPluginMeta } = {};\n  apps: Record<string, AppPluginConfig> = {};\n  auth: AuthSettings = {};\n  minRefreshInterval = '';\n  appUrl = '';\n  appSubUrl = '';\n  namespace = 'default';\n  windowTitlePrefix = '';\n  buildInfo: BuildInfo;\n  newPanelTitle = '';\n  bootData: BootData;\n  externalUserMngLinkUrl = '';\n  externalUserMngLinkName = '';\n  externalUserMngInfo = '';\n  externalUserMngAnalytics = false;\n  externalUserMngAnalyticsParams = '';\n  allowOrgCreate = false;\n  feedbackLinksEnabled = true;\n  disableLoginForm = false;\n  defaultDatasource = ''; // UID\n  angularSupportEnabled = false;\n  authProxyEnabled = false;\n  exploreEnabled = false;\n  queryHistoryEnabled = false;\n  helpEnabled = false;\n  profileEnabled = false;\n  newsFeedEnabled = true;\n  ldapEnabled = false;\n  jwtHeaderName = '';\n  jwtUrlLogin = false;\n  sigV4AuthEnabled = false;\n  azureAuthEnabled = false;\n  secureSocksDSProxyEnabled = false;\n  samlEnabled = false;\n  samlName = '';\n  autoAssignOrg = true;\n  verifyEmailEnabled = false;\n  oauth: OAuthSettings = {};\n  rbacEnabled = true;\n  disableUserSignUp = false;\n  loginHint = '';\n  passwordHint = '';\n  loginError: string | undefined = undefined;\n  viewersCanEdit = false;\n  editorsCanAdmin = false;\n  disableSanitizeHtml = false;\n  trustedTypesDefaultPolicyEnabled = false;\n  cspReportOnlyEnabled = false;\n  liveEnabled = true;\n  /** @deprecated Use `theme2` instead. */\n  theme: GrafanaTheme;\n  theme2: GrafanaTheme2;\n  featureToggles: FeatureToggles = {};\n  anonymousEnabled = false;\n  anonymousDeviceLimit: number | undefined = undefined;\n  licenseInfo: LicenseInfo = {} as LicenseInfo;\n  rendererAvailable = false;\n  rendererVersion = '';\n  rendererDefaultImageWidth = 1000;\n  rendererDefaultImageHeight = 500;\n  rendererDefaultImageScale = 1;\n  secretsManagerPluginEnabled = false;\n  supportBundlesEnabled = false;\n  http2Enabled = false;\n  dateFormats?: SystemDateFormatSettings;\n  grafanaJavascriptAgent = {\n    enabled: false,\n    customEndpoint: '',\n    apiKey: '',\n    allInstrumentationsEnabled: false,\n    errorInstrumentalizationEnabled: true,\n    consoleInstrumentalizationEnabled: false,\n    webVitalsInstrumentalizationEnabled: false,\n    tracingInstrumentalizationEnabled: false,\n  };\n  pluginCatalogURL = 'https://grafana.com/grafana/plugins/';\n  pluginAdminEnabled = true;\n  pluginAdminExternalManageEnabled = false;\n  pluginCatalogHiddenPlugins: string[] = [];\n  pluginCatalogManagedPlugins: string[] = [];\n  pluginCatalogPreinstalledPlugins: PreinstalledPlugin[] = [];\n  pluginsCDNBaseURL = '';\n  expressionsEnabled = false;\n  awsAllowedAuthProviders: string[] = [];\n  awsAssumeRoleEnabled = false;\n  azure: AzureSettings = {\n    managedIdentityEnabled: false,\n    workloadIdentityEnabled: false,\n    userIdentityEnabled: false,\n    userIdentityFallbackCredentialsEnabled: false,\n    azureEntraPasswordCredentialsEnabled: false,\n  };\n  caching = {\n    enabled: false,\n  };\n  geomapDefaultBaseLayerConfig?: MapLayerOptions;\n  geomapDisableCustomBaseLayer?: boolean;\n  unifiedAlertingEnabled = false;\n  unifiedAlerting = {\n    minInterval: '',\n    alertStateHistoryBackend: undefined,\n    alertStateHistoryPrimary: undefined,\n  };\n  applicationInsightsConnectionString?: string;\n  applicationInsightsEndpointUrl?: string;\n  recordedQueries = {\n    enabled: true,\n  };\n  featureHighlights = {\n    enabled: false,\n  };\n  reporting = {\n    enabled: true,\n  };\n  analytics = {\n    enabled: true,\n  };\n  googleAnalyticsId: undefined;\n  googleAnalytics4Id: undefined;\n  googleAnalytics4SendManualPageViews = false;\n  rudderstackWriteKey: undefined;\n  rudderstackDataPlaneUrl: undefined;\n  rudderstackSdkUrl: undefined;\n  rudderstackConfigUrl: undefined;\n  rudderstackIntegrationsUrl: undefined;\n  analyticsConsoleReporting = false;\n  dashboardPerformanceMetrics: string[] = [];\n  sqlConnectionLimits = {\n    maxOpenConns: 100,\n    maxIdleConns: 100,\n    connMaxLifetime: 14400,\n  };\n  defaultDatasourceManageAlertsUiToggle = true;\n\n  tokenExpirationDayLimit: undefined;\n  enableFrontendSandboxForPlugins: string[] = [];\n  sharedWithMeFolderUID: string | undefined;\n  rootFolderUID: string | undefined;\n  localFileSystemAvailable: boolean | undefined;\n  cloudMigrationIsTarget: boolean | undefined;\n  cloudMigrationFeedbackURL = '';\n  cloudMigrationPollIntervalMs = 2000;\n  reportingStaticContext?: Record<string, string>;\n  exploreDefaultTimeOffset = '1h';\n  exploreHideLogsDownload: boolean | undefined;\n\n  /**\n   * Language used in Grafana's UI. This is after the user's preference (or deteceted locale) is resolved to one of\n   * Grafana's supported language.\n   */\n  language: string | undefined;\n\n  constructor(options: GrafanaBootConfig) {\n    this.bootData = options.bootData;\n\n    const defaults = {\n      datasources: {},\n      windowTitlePrefix: 'Grafana - ',\n      panels: {},\n      newPanelTitle: 'Panel Title',\n      playlist_timespan: '1m',\n      unsaved_changes_warning: true,\n      appUrl: '',\n      appSubUrl: '',\n      buildInfo: {\n        version: '1.0',\n        commit: '1',\n        env: 'production',\n      },\n      viewersCanEdit: false,\n      editorsCanAdmin: false,\n      disableSanitizeHtml: false,\n    };\n\n    merge(this, defaults, options);\n\n    this.buildInfo = options.buildInfo || defaults.buildInfo;\n\n    if (this.dateFormats) {\n      systemDateFormats.update(this.dateFormats);\n    }\n\n    overrideFeatureTogglesFromUrl(this);\n    overrideFeatureTogglesFromLocalStorage(this);\n\n    if (this.featureToggles.disableAngular) {\n      this.angularSupportEnabled = false;\n    }\n\n    // Creating theme after applying feature toggle overrides in case we need to toggle anything\n    this.theme2 = getThemeById(this.bootData.user.theme);\n    this.bootData.user.lightTheme = this.theme2.isLight;\n    this.theme = this.theme2.v1;\n  }\n}\n\n// localstorage key: grafana.featureToggles\n// example value: panelEditor=1,panelInspector=1\nfunction overrideFeatureTogglesFromLocalStorage(config: GrafanaBootConfig) {\n  const featureToggles = config.featureToggles;\n  const localStorageKey = 'grafana.featureToggles';\n  const localStorageValue = window.localStorage.getItem(localStorageKey);\n  if (localStorageValue) {\n    const features = localStorageValue.split(',');\n    for (const feature of features) {\n      const [featureName, featureValue] = feature.split('=');\n      const toggleState = featureValue === 'true' || featureValue === '1';\n      // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n      featureToggles[featureName as keyof FeatureToggles] = toggleState;\n      console.log(`Setting feature toggle ${featureName} = ${toggleState} via localstorage`);\n    }\n  }\n}\n\nfunction overrideFeatureTogglesFromUrl(config: GrafanaBootConfig) {\n  if (window.location.href.indexOf('__feature') === -1) {\n    return;\n  }\n\n  const isDevelopment = config.buildInfo.env === 'development';\n\n  // Although most flags can not be changed from the URL in production,\n  // some of them are safe (and useful!) to change dynamically from the browser URL\n  const safeRuntimeFeatureFlags = new Set(['queryServiceFromUI', 'dashboardSceneSolo']);\n\n  const params = new URLSearchParams(window.location.search);\n  params.forEach((value, key) => {\n    if (key.startsWith('__feature.')) {\n      const featureToggles = config.featureToggles as Record<string, boolean>;\n      const featureName = key.substring(10);\n\n      const toggleState = value === 'true' || value === ''; // browser rewrites true as ''\n      if (toggleState !== featureToggles[key]) {\n        if (isDevelopment || safeRuntimeFeatureFlags.has(featureName)) {\n          featureToggles[featureName] = toggleState;\n          console.log(`Setting feature toggle ${featureName} = ${toggleState} via url`);\n        } else {\n          console.log(`Unable to change feature toggle ${featureName} via url in production.`);\n        }\n      }\n    }\n  });\n}\n\nconst bootData = (window as any).grafanaBootData || {\n  settings: {},\n  user: {},\n  navTree: [],\n};\n\nconst options = bootData.settings;\noptions.bootData = bootData;\n\n/**\n * Use this to access the {@link GrafanaBootConfig} for the current running Grafana instance.\n *\n * @public\n */\nexport const config = new GrafanaBootConfig(options);\n"],"names":["options","config"],"mappings":"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"}